Merge remote-tracking branch 'origin/tp31'
diff --git a/.gitignore b/.gitignore
index f4779c5..11ca63e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,4 @@
 doc/out
 docs/*.asciidoc
 ext/
+benchmarks/
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 8735a87..2714469 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -17,6 +17,301 @@
 TinkerPop3 CHANGELOG
 ====================
 
+TinkerPop 3.2.0 (Nine Inch Gremlins)
+------------------------------------
+
+image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/nine-inch-gremlins.png[width=185]
+
+[[release-3-2-2]]
+TinkerPop 3.2.2 (NOT OFFICIALLY RELEASED YET)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+* Fixed a potential leak of a `ReferenceCounted` resource in Gremlin Server.
+* Added class registrations for `Map.Entry` implementations to `GryoMapper`.
+
+[[release-3-2-1]]
+TinkerPop 3.2.1 (Release Date: July 18, 2016)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+This release also includes changes from <<release-3-1-3, 3.1.3>>.
+
+* `PathProcessor` steps now have the ability (if configured through a strategy) to drop `Traverser` path segments.
+* `MatchStep` in OLTP has a lazy barrier to increase the probability of bulking.
+* Added `PathRetractionStrategy` which will remove labeled path segments that will no longer be referenced.
+* Added `Path.retract()` to support retracting paths based on labels.
+* Optimized `ImmutablePath` and `MutablePath` equality code removing significant unnecessary object creation code.
+* Bumped to Groovy 2.4.7.
+* Added `RepeatUnrollStrategy` to linearize a `repeat()`-traversal if loop amount is known at compile time.
+* Fixed a bug in `BranchStep` around child integration during `clone()`.
+* Fixed a bug in `AbstractStep` around label set cloning.
+* Added `TraversalStrategyPerformanceTest` for verifying the performance gains of optimization-based traversal strategies.
+* `TraversalExplanation.prettyPrint()` exists which provides word wrapping and GremlinConsole is smart to use console width to control `toString()`.
+* `TraversalOpProcessor` (`RemoteConnection`) uses `HaltedTraverserStrategy` metadata to determine detachment procedure prior to returning results.
+* Allow DFS paths in `HADOOP_GREMLIN_LIBS`.
+* Added a safer serializer infrastructure for use with `SparkGraphComputer` that uses `KryoSerializer` and the new `GryoRegistrator`.
+* Added `HaltedTraverserStrategy` to allow users to get back different element detachments in OLAP.
+* Fixed a `NullPointerException` bug around nested `group()`-steps in OLAP.
+* Fixed a severe bug around halted traversers in a multi-job OLAP traversal chain.
+* Ensure a separation of `GraphComputer` and `VertexProgram` configurations in `SparkGraphComputer` and `GiraphGraphComputer`.
+* `PeerPressureVertexProgram` now supports dynamic initial vote strength calculations.
+* Added `EmptyMemory` for ease of use when no memory exists.
+* Updated `VertexComputing.generateProgram()` API to include `Memory`. (*breaking*)
+* `ImmutablePath.TailPath` is now serializable like `ImmutablePath`.
+* Added `ConfigurationCompilerProvider` which allows fine-grained control of some of the internal `GremlinGroovyScriptEngine` settings at the Groovy compilation level.
+* Intoduced the `application/vnd.gremlin-v1.0+gryo-lite` serialization type to Gremlin Server which users "reference" elements rather than "detached".
+* `GryoMapper` allows overrides of existing serializers on calls to `addCustom` on the builder.
+* Added a traversal style guide to the recipes cookbook.
+* Fixed a bug in master-traversal traverser propagation.
+* Added useful methods for custom `VertexPrograms` to be used with `program()`-step.
+* Increased the test coverage around traverser propagation within a multi-job OLAP traversal.
+* Added tests to validate the status of a transaction immediately following calls to close.
+* Added tests to ensure that threaded transactions cannot be re-used.
+* `GraphFilter` helper methods are now more intelligent when determining edge direction/label legality.
+* Added `GraphFilterStrategy` to automatically construct `GraphFilters` via traversal introspection in OLAP.
+* Updated the Gephi Plugin to support Gephi 0.9.x.
+* Increased the testing and scope of `TraversalHelper.isLocalStarGraph()`.
+* Changed signature of `get_g_VXlistXv1_v2_v3XX_name` and `get_g_VXlistX1_2_3XX_name` of `VertexTest` to take arguments for the `Traversal` to be constructed by extending classes.
+* Added `VertexProgramInterceptor` interface as a general pattern for `GraphComputer` providers to use for bypassing `GraphComputer` semantics where appropriate.
+* Added `SparkStarBarrierInterceptor` that uses Spark DSL for local star graph traversals that end with a `ReducingBarrierStep`.
+* Added `SparkInterceptorStrategy` which identifies which interceptor to use (if any) given the submitted `VertexProgram`.
+* Added `SparkSingleIterationStrategy` that does not partition nor cache the graph RDD if the traversal does not message pass.
+* Added more helper methods to `TraversalHelper` for handling scoped traversal children.
+* Deprecated all "performance" tests based on "JUnit Benchmarks".
+* `SparkGraphComputer` no longer shuffles empty views or empty outgoing messages in order to save time and space.
+* `TraversalVertexProgram` no longer maintains empty halted traverser properties in order to save space.
+* Added `List<P<V>>` constructors to `ConnectiveP`, `AndP`, and `OrP` for ease of use.
+* Added support for interactive (`-i`) and execute (`-e`) modes for Gremlin Console.
+* Displayed line numbers for script execution failures of `-e` and `-i`.
+* Improved messaging around script execution errors in Gremlin Console.
+* Added "help" support to Gremlin Console with the `-h` flag.
+* Added options to better control verbosity of Gremlin Console output with `-Q`, `-V` and `-D`.
+* Deprecated the `ScriptExecutor` - the `-e` option to `gremlin.sh` is now handled by `Console`.
+* `Traversal` now allows cancellation with `Thread.interrupt()`.
+* Added a Gremlin language variant tutorial teaching people how to embed Gremlin in a host programming language.
+
+Bugs
+^^^^
+
+* TINKERPOP-1281 Memory.HALTED_TRAVERSER transience is not sound.
+* TINKERPOP-1305 HALTED_TRAVERSERS hold wrong information
+* TINKERPOP-1307 NPE with OLTP nested group() in an OLAP group() traversal
+* TINKERPOP-1323 ComputerVerificationStrategy fails for nested match() steps
+* TINKERPOP-1341 UnshadedKryoAdapter fails to deserialize StarGraph when SparkConf sets spark.rdd.compress=true whereas GryoSerializer works
+* TINKERPOP-1348 TraversalInterruptionTest success dependent on iteration order
+
+Improvements
+^^^^^^^^^^^^
+
+* TINKERPOP-818 Consider a P.type()
+* TINKERPOP-946 Traversal respecting Thread.interrupt()
+* TINKERPOP-947 Enforce semantics of threaded transactions as manual *(breaking)*
+* TINKERPOP-1059 Add test to ensure transaction opening happens at read/write and not on close *(breaking)*
+* TINKERPOP-1071 Enhance pre-processor output
+* TINKERPOP-1091 Get KryoSerializer to work natively. *(breaking)*
+* TINKERPOP-1120 If there is no view nor messages, don't create empty views/messages in SparkExecutor
+* TINKERPOP-1144 Improve ScriptElementFactory
+* TINKERPOP-1155 gremlin.sh -e doesn't log line numbers for errors
+* TINKERPOP-1156 gremlin.sh could use a help text
+* TINKERPOP-1157 gremlin.sh should allow you to execute a script and go interactive on error or completion
+* TINKERPOP-1232 Write a tutorial demonstrating the 3 ways to write a Gremlin language variant.
+* TINKERPOP-1254 Support dropping traverser path information when it is no longer needed.
+* TINKERPOP-1268 Improve script execution options for console *(breaking)*
+* TINKERPOP-1273 Deprecate old performance tests
+* TINKERPOP-1276 Deprecate serializedResponseTimeout
+* TINKERPOP-1279 Add Iterable<V> parameter constructor to ConnectiveP subclasses
+* TINKERPOP-1282 Add more compliance tests around how memory and vertex compute keys are propagated in chained OLAP.
+* TINKERPOP-1286 Add Recipes documentation
+* TINKERPOP-1288 Support gremlin.spark.skipPartitioning configuration.
+* TINKERPOP-1290 Create VertexProgramInterceptor as a pattern for GraphComputer strategies.
+* TINKERPOP-1293 Implement GraphFilterStrategy as a default registration for GraphComputer
+* TINKERPOP-1294 Deprecate use of junit-benchmarks
+* TINKERPOP-1297 Gephi plugin on Gephi 0.9.x  *(breaking)*
+* TINKERPOP-1299 Refactor TraversalVertexProgram to make it easier to understand.
+* TINKERPOP-1308 Serialize to "reference" for Gremlin Server
+* TINKERPOP-1310 Allow OLAP to return properties as Detached
+* TINKERPOP-1321 Loosen coupling between TinkerPop serialization logic and shaded Kryo
+* TINKERPOP-1322 Provide fine-grained control of CompilerConfiguration
+* TINKERPOP-1328 Provide [gremlin-python] as an code executor in docs
+* TINKERPOP-1331 HADOOP_GREMLIN_LIBS can only point to local file system
+* TINKERPOP-1332 Improve .explain() Dialogue
+* TINKERPOP-1338 Bump to Groovy 2.4.7
+* TINKERPOP-1349 RepeatUnrollStrategy should unroll loops while maintaining equivalent semantics.
+* TINKERPOP-1355 Design HasContainer for extension
+
+[[release-3-2-0-incubating]]
+TinkerPop 3.2.0 (Release Date: April 8, 2016)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+This release also includes changes from <<release-3-1-2-incubating, 3.1.2-incubating>>.
+
+* Bumped to Neo4j 2.3.3.
+* Renamed variable `local` to `fs` in `HadoopGremlinPlugin` to avoid a naming conflict with `Scope.local`. (*breaking*)
+* Added `GraphTraversal.optional()` which will use the inner traversal if it returns results, else it won't.
+* `GroupStep` and `GroupSideEffectStep` make use of mid-traversal reducers to limit memory consumption in OLAP.
+* Added `GraphTraversal.program(VertexProgram)` to allow arbitrary user vertex programs in OLAP.
+* Added `GraphTraversal.project()` for creating a `Map<String,E>` given the current traverser and an arbitrary number of `by()`-modulators.
+* `HADOOP_GREMLIN_LIBS` can now reference a directory in HDFS and will be used if the directory does not exist locally.
+* Added `gremlin-benchmark` module with JMH benchmarking base classes that can be used for further benchmark development.
+* `TraversalStrategies.GlobalCache` supports both `Graph` and `GraphComputer` strategy registrations.
+* `select("a","b").by("name").by("age")`-style traversals now work in OLAP with new `PathProcessorStrategy`.
+* `DedupGlobalStep` can now handle star-bound `by()`-modulators and scoped keys on `GraphComputer`.
+* Added `Computer` which is a builder for `GraphComputers` that is serializable.
+* `PersistedOutputRDD` now implements `PersistResultGraphAware` and thus, no more unneeded warnings when using it.
+* Renamed `StandardTraversalMetrics` to `DefaultTraversalMetrics` given the `DefaultXXX`-convention throughout. (*breaking*)
+* Bumped to Apache Hadoop 2.7.2.
+* Fixed a bug around profiling and nested traversals.
+* Added `gremlin.hadoop.defaultGraphComputer` so users can use `graph.compute()` with `HadoopGraph`.
+* Added `gremlin.hadoop.graphReader` and `gremlin.hadoop.graphWriter` which can handled `XXXFormats` and `XXXRDDs`.
+* Deprecated `gremlin.hadoop.graphInputFormat`, `gremlin.hadoop.graphOutputFormat`, `gremlin.spark.graphInputRDD`, and `gremlin.spark.graphOutputRDD`.
+* If no configuration is provided to `HadoopPools` it uses the default configuration to create a pool once and only once per JVM.
+* Implemented `RemoteGraph`, `RemoteConnection`, and `RemoteStrategy`.
+* Added validation to `GryoMapper` Kryo identifiers before construction to prevent accidental duplicates.
+* Added `GraphStep.addIds()` which is useful for `HasContainer` "fold ins."
+* Added a static `GraphStep.processHashContainerIds()` helper for handling id-based `HasContainers`.
+* `GraphStep` implementations should have `g.V().hasId(x)` and `g.V(x)` compile equivalently. (*breaking*)
+* Optimized `ExpandableStepIterator` with simpler logic and increased the likelihood of bulking.
+* Optimized `TraverserRequirement` calculations.
+* `Step.addStart()` and `Step.addStarts()` now take `Traverser.Admin<S>` and `Traverser.Admin<S>`, respectively. (*breaking*)
+* `Step.processNextStart()` and `Step.next()` now return `Traverser.Admin<E>`. (*breaking*)
+* `Traversal.addTraverserRequirement()` method removed. (*breaking*)
+* Fixed a `hashCode()` bug in `OrderGlobalStep` and `OrderLocalStep`.
+* Added `OrderLimitStrategy` which will ensure that partitions are limited before being merged in OLAP.
+* `ComparatorHolder` now separates the traversal from the comparator. (*breaking*)
+* Bumped to Apache Spark 1.6.1.
+* If no Spark serializer is provided then `GryoSerializer` is the default, not `JavaSerializer`.
+* Added `Operator.sumLong` as a optimized binary operator intended to be used by `Memory` reducers that know they are dealing with longs.
+* Traversers from `ComputerResultStep` are no longer attached. Attaching is only used in TinkerPop's test suite via `System.getProperties()`.
+* Fixed a `hashCode()`/`equals()` bug in `MessageScope`.
+* Fixed a severe `Traversal` cloning issue that caused inconsistent `TraversalSideEffects`.
+* `TraversalSideEffects` remain consistent and usable across multiple chained OLAP jobs.
+* Added `MemoryTraversalSideEffects` which wraps `Memory` in a `TraversalSideEffects` for use in OLAP.
+* `TraversalSideEffects` are now fully functional in OLAP save that an accurate global view is possible at the start of an iteration (not during).
+* Updated the `TraversalSideEffects` API to support registered reducers and updated `get()`-semantics. (*breaking*)
+* Split existing `profile()` into `ProfileStep` and `ProfileSideEffectStep`.
+* The `profile()`-step acts like a reducing barrier and emits `TraversalMetrics` without the need for `cap()`. (*breaking*)
+* Added `LocalBarrier` interface to allow traversers to remain distributed during an iteration so as to reduce cluster traffic.
+* Added `NoOpBarrierStep` as a `LocalBarrier` implementation of `LambdaCollectingBarrierStep(noOp)`.
+* `AggregateStep` implements `LocalBarrier` and thus, doesn't needlessly communicate its barrier traversers.
+* Fixed an OLAP-based `Barrier` synchronization bug.
+* Fixed a semantic bug in `BranchStep` (and inheriting steps) where barriers reacted locally. (*breaking*)
+* Added `MemoryComputeKey` for specification of `Memory` keys in `VertexProgram`. (*breaking*)
+* Added `VertexComputeKey` for specification of vertex compute properties in `VertexProgram`. (*breaking*)
+* Added `and`, `or`, and `addAll` to `Operator`.
+* `Memory` API changed to support setting and adding values for reduction. (*breaking*)
+* `Memory` keys can be marked as broadcast and only those values are sent to workers on each iterator.
+* `Memory` keys can be marked transient and thus deleted at the end of the OLAP job.
+* Vertex compute keys can be marked transient and thus deleted at the end of the OLAP job.
+* `VertexProgram` API changed to support `MemoryComputeKey` and `VertexComputeKey`. (*breaking*)
+* `TraversalVertexProgram` able to execute OLAP and OLTP traversal sections dynamically within the same job.
+* Removed `FinalGet` interface as all post processing of reductions should be handled by the reducing step explicitly. (*breaking*)
+* Simplified all `SupplyingBarrierStep` implementations as they no longer require `MapReduce` in OLAP.
+* Simplified all `CollectingBarrierStep` implementations as they no longer require `MapReduce` in OLAP.
+* Simplified all `ReducingBarrierStep` implementations as they no longer require `MapReduce` in OLAP.
+* All steps in OLAP that used `MapReduce` now use `Memory` to do their reductions which expands the list of legal traversals.
+* `GroupStep` simplified with `GroupHelper.GroupMap` no longer being needed. Related to the removal of `FinalGet`.
+* OLAP side-effects that are no longer generated by `MapReduce` are simply stored in `ComputerResult.Memory` w/ no disk persistence needed. (*breaking*)
+* Added `Generate` step interface which states that there could be a final generating phase to a side-effect or reduction (e.g. `GroupStep`).
+* `Barrier` step interface is now the means by which non-parallel steps communicate with their counterparts in OLAP.
+* Added `MemoryComputing` step interface which states that the step uses `MemoryComputeKeys` for its computation in OLAP.
+* Added `PeerPressureVertexProgramStep` and `GraphTraversal.peerPressure()`.
+* Added `PureTraversal` for handling pure and compiled versions of a `Traversal`. Useful in OLAP.
+* Added `ScriptTraversal` which allows for delayed compilation of script-based `Traversals`.
+* Simplified `VertexProgram` implementations with a `PureTraversal`-model and deprecated `ConfigurationTraversal`.
+* Simplified script-based `Traversals` via `ScriptTraversal` and deprecated `TraversalScriptFunction` and `TraversalScriptHelper`.
+* Added `TimesModulating` interface which allows the `Step` to decide how a `times()`-modulation should be handled.
+* Added `ByModulating` interface which allows the `Step` to decide how a `by()`-modulation should be handled. (*breaking*)
+* Simplified the `by()`-modulation patterns of `OrderGlobalStep` and `OrderLocalStep`.
+* Added `GraphComputerTest.shouldSupportPreExistingComputeKeys()` to ensure existing compute keys are "revived." (*breaking*)
+* Added `GraphComputerTest.shouldSupportJobChaining()` to ensure OLAP jobs can be linearly chained. (*breaking*)
+* Fixed a bug in both `SparkGraphComputer` and `GiraphGraphComputer` regarding source data access in job chains.
+* Expanded job chaining test coverage for `GraphComputer` providers.
+* Added `TraversalHelper.onGraphComputer(traversal)`.
+* `MapReduce.map()` no longer has a default implementation. This method must be implemented. (*breaking*)
+* `TraversalVertexProgram` can work without a `GraphStep` start.
+* Added `PageRankVertexProgramStep` and `GraphTraversal.pageRank()`.
+* Added `TraversalVertexProgramStep` to support OLAP traversal job chaining.
+* Added `VertexProgramStrategy` which compiles multiple OLAP jobs into a single traversal.
+* Simplified the comparator model in `OrderGlobalStep` and `OrderLocalStep`.
+* Refactored `TraversalSource` model to allow fluent-method construction of `TraversalSources`.
+* Deprecated the concept of a `TraversalSource.Builder`.
+* Removed the concept of a `TraversalEngine`. All `Traversal` modulations are now mediated by `TraversalStrategies`. (*breaking*)
+* Added `SideEffectStrategy` for registering sideEffects in a spawned `Traversal`.
+* Added `SackStrategy` for registering a sack for a spawned `Traversal`.
+* Added `RequirementsStrategy` and `RequirementsStep` for adding dynamic `TraverserRequirements` to a `Traversal`.
+* Removed `EngineDependentStrategy`.
+* Renamed step interface `EngineDependent` to `GraphComputing` with method `onGraphComputer()`. (*breaking*)
+* Cleaned up various `TraversalStrategy` tests now that `TraversalEngine` no longer exists.
+* Added `GraphFilter` to support filtering out vertices and edges that won't be touched by an OLAP job.
+* Added `GraphComputer.vertices()` and `GraphComputer.edges()` for `GraphFilter` construction. (*breaking*)
+* `SparkGraphComputer`, `GiraphGraphComputer`, and `TinkerGraphComputer` all support `GraphFilter`.
+* Added `GraphComputerTest.shouldSupportGraphFilter()` which verifies all filtered graphs have the same topology.
+* Added `GraphFilterAware` interface to `hadoop-gremlin/` which tells the OLAP engine that the `InputFormat` handles filtering.
+* `GryoInputFormat` and `ScriptInputFormat` implement `GraphFilterAware`.
+* Added `GraphFilterInputFormat` which handles graph filtering for `InputFormats` that are not `GraphFilterAware`.
+* Fixed a bug in `TraversalHelper.isLocalStarGraph()` which allowed certain illegal traversals to pass.
+* Added `TraversalHelper.isLocalProperties()` to verify that the traversal does not touch incident edges.
+* `GraphReader` I/O interface now has `Optional<Vertex> readGraph(InputStream, GraphFilter)`. Default `UnsupportedOperationException`.
+* `GryoReader` does not materialize edges that will be filtered out and this greatly reduces GC and load times.
+* Created custom `Serializers` for `SparkGraphComputer` message-passing classes which reduce graph sizes significantly.
+
+Bugs
+^^^^
+
+* TINKERPOP-951 Barrier steps provide unexpected results in Gremlin OLAP
+* TINKERPOP-1057 GroupSideEffectStep doesn't use provided maps
+* TINKERPOP-1103 Two objects fighting for local variable name in Gremlin Console *(breaking)*
+* TINKERPOP-1149 TraversalXXXSteps Aren't Providing SideEffects
+* TINKERPOP-1181 select(Column) should not use a LambdaMapStep
+* TINKERPOP-1188 Semantics of BarrierSteps in TraversalParent global traversals is wrong. *(breaking)*
+* TINKERPOP-1194 explain() seems broken
+* TINKERPOP-1217 Repeated Logging of "The HadoopPools has not been initialized, using the default pool"
+
+Improvements
+^^^^^^^^^^^^
+
+* TINKERPOP-570 [Proposal] Provide support for OLAP to OLTP to OLAP to OLTP
+* TINKERPOP-575 Implement RemoteGraph
+* TINKERPOP-813 [Proposal] Make the Gremlin Graph Traversal Machine and Instruction Set Explicit
+* TINKERPOP-872 Remove GroupCountStep in favor of new Reduce-based GroupStep
+* TINKERPOP-890 Remove the concept of branch/ package. *(breaking)*
+* TINKERPOP-958 Improve usability of .profile() step.
+* TINKERPOP-962 Provide "vertex query" selectivity when importing data in OLAP. *(breaking)*
+* TINKERPOP-968 Add first class support for an optional traversal
+* TINKERPOP-971 TraversalSource should be fluent like GraphComputer *(breaking)*
+* TINKERPOP-1016 Replace junit-benchmarks with JMH
+* TINKERPOP-1021 Deprecate Order.valueIncr, Order.valueDecr, Order.keyIncr, and Order.keyDecr *(breaking)*
+* TINKERPOP-1032 Clean up the conf/hadoop configurations
+* TINKERPOP-1034 Bump to support Spark 1.5.2
+* TINKERPOP-1069 Support Spark 1.6.0
+* TINKERPOP-1082 INPUT_RDD and INPUT_FORMAT are bad, we should just have one key.
+* TINKERPOP-1112 Create GryoSerializers for the Spark Payload classes.
+* TINKERPOP-1121 FileSystemStorage needs to be smart about /.
+* TINKERPOP-1132 Messenger.receiveMessages() Iterator should .remove().
+* TINKERPOP-1140 TraversalVertexProgramStep in support of OLAP/OLTP conversions.
+* TINKERPOP-1153 Add ByModulating and TimesModulating interfaces.
+* TINKERPOP-1154 Create a ScriptTraversal which is Serializable and auto-compiles.
+* TINKERPOP-1162 Add VertexProgram.getTransientComputeKeys() for removing scratch-data. *(breaking)*
+* TINKERPOP-1163 GraphComputer's can have TraversalStrategies.
+* TINKERPOP-1164 ReducingBarriersSteps should use ComputerMemory, not MapReduce.
+* TINKERPOP-1166 Add Memory.reduce() as option to Memory implementations. *(breaking)*
+* TINKERPOP-1173 If no Serializer is provided in Configuration, use GryoSerializer by default (Spark)
+* TINKERPOP-1180 Add more optimized binary operators to Operator.
+* TINKERPOP-1192 TraversalSideEffects should support registered reducers (binary operators).
+* TINKERPOP-1193 Add a LocalBarrier interface.
+* TINKERPOP-1199 Use "MicroMetrics" as the mutator of the TraversalMetrics.
+* TINKERPOP-1206 ExpandableIterator can take a full TraverserSet at once -- Barriers.
+* TINKERPOP-1209 ComparatorHolder should returns a Pair<Traversal,Comparator>. *(breaking)*
+* TINKERPOP-1210 Provide an OrderLimitStep as an optimization.
+* TINKERPOP-1219 Create a test case that ensures the provider's compilation of g.V(x) and g.V().hasId(x) is identical *(breaking)*
+* TINKERPOP-1222 Allow default GraphComputer configuration
+* TINKERPOP-1223 Allow jars in gremlin.distributedJars to be read from HDFS
+* TINKERPOP-1225 Do a "rolling reduce" for GroupXXXStep in OLAP.
+* TINKERPOP-1227 Add Metrics for the TraversalOpProcessor
+* TINKERPOP-1234 program() step that takes arbitrary vertex programs
+* TINKERPOP-1236 SelectDenormalizationStrategy for select().by(starGraph) in OLAP.
+* TINKERPOP-1237 ProjectMap: For the Love of Die Faterland
+* TINKERPOP-1238 Re-use Client instances in RemoteGraph tests
+
 TinkerPop 3.1.0 (A 187 On The Undercover Gremlinz)
 --------------------------------------------------
 
diff --git a/docs/preprocessor/preprocess-file.sh b/docs/preprocessor/preprocess-file.sh
index 35b1f15..242cfe5 100755
--- a/docs/preprocessor/preprocess-file.sh
+++ b/docs/preprocessor/preprocess-file.sh
@@ -71,6 +71,13 @@
 trap cleanup INT
 
 function cleanup {
+  if [ -f "${output}" ]; then
+    if [ `wc -l "${output}" | awk '{print $1}'` -gt 0 ]; then
+      echo -e "\n\e[1mLast 10 lines of ${output}:\e[0m\n"
+      tail -n10 ${output}
+      echo
+    fi
+  fi
   rm -rf ${output} ${CONSOLE_HOME}/.ext
   exit 255
 }
diff --git a/docs/src/dev/developer/development-environment.asciidoc b/docs/src/dev/developer/development-environment.asciidoc
index 3bb6613..23df9ee 100644
--- a/docs/src/dev/developer/development-environment.asciidoc
+++ b/docs/src/dev/developer/development-environment.asciidoc
@@ -41,7 +41,7 @@
 ** Build AsciiDocs (but don't evaluate code blocks): `bin/process-docs.sh --dryRun`
 ** Build AsciiDocs (but don't evaluate code blocks in specific files): `bin/process-docs.sh --dryRun docs/src/reference/the-graph.asciidoc,docs/src/tutorial/getting-started,...`
 ** Build AsciiDocs (but evaluate code blocks only in specific files): `bin/process-docs.sh --fullRun docs/src/reference/the-graph.asciidoc,docs/src/tutorial/getting-started,...`
-** Process a single AsciiDoc file: +pass:[docs/preprocessor/preprocess-file.sh `pwd`/gremlin-console/target/apache-gremlin-console-*-standalone `pwd`/docs/src/xyz.asciidoc]+
+** Process a single AsciiDoc file: +pass:[docs/preprocessor/preprocess-file.sh `pwd`/gremlin-console/target/apache-gremlin-console-*-standalone "" "*" `pwd`/docs/src/xyz.asciidoc]+
 * Build JavaDocs: `mvn process-resources -Djavadoc`
 * Check for Apache License headers: `mvn apache-rat:check`
 * Check for newer dependencies: `mvn versions:display-dependency-updates` or `mvn versions:display-plugin-updates`
@@ -50,6 +50,7 @@
 ** Execute with the `-DincludeNeo4j` option to include transactional tests.
 ** Execute with the `-DuseEpoll` option to try to use Netty native transport (works on Linux, but will fallback to Java NIO on other OS).
 * Performance Tests: `mvn verify -DskipPerformanceTests=false`
+* Benchmarks: `mvn verify -DskipBenchmarks=false`
 
 [[docker-integration]]
 Docker Integration
diff --git a/docs/src/dev/developer/for-committers.asciidoc b/docs/src/dev/developer/for-committers.asciidoc
index 5f0713d..276db8c 100644
--- a/docs/src/dev/developer/for-committers.asciidoc
+++ b/docs/src/dev/developer/for-committers.asciidoc
@@ -200,6 +200,36 @@
 ** `checkResults(Arrays.asList("marko","josh"), traversal)`
 ** `checkMap(new HashMap<String,Long>() {{ put("marko",1l); }}, traversal.next())`
 
+Developing Benchmarks
+---------------------
+
+Benchmarks are a useful tool to track performance between TinkerPop versions and also as tools to aid development
+decision making. TinkerPop uses link:http://openjdk.java.net/projects/code-tools/jmh/[OpenJDK JMH] for benchmark development.
+The JMH framework provides tools for writing robust benchmarking code that avoid many of the pitfalls inherent in benchmarking
+JIT compiled code on the JVM.  Example JMH benchmarks can be found
+link:http://hg.openjdk.java.net/code-tools/jmh/file/tip/jmh-samples/src/main/java/org/openjdk/jmh/samples/[here].
+
+TinkerPop benchmarks live in the `gremlin-benchmark` module and can either be run from within your IDE or as a standalone
+uber-jar.  The uber-jar is the JMH recommended approach and also makes it easy to distribute artifacts to various environments
+to gather benchmarking numbers.  Having said that, in most cases it should be sufficient to run it from within the IDE.
+
+Benchmarks will not run by default because they are time consuming.  To enable benchmarks during the test phase do
+`-DskipBenchmarks=false`.  To change the number of warmup iterations, measurement iterations, and forks you can do
+`mvn clean test -DskipBenchmarks=false -DdefaultForks=5 -DmeasureIterations=20 -DwarmupIterations=20`.  Benchmark results
+will be output by default to the `benchmarks` directory in JSON format.
+
+Benchmarks may also be run from the command line using the JMH runner.  Build the uber-jar and simply run
+`java -jar gremlin-benchmark-TP-VERSION.jar`.  To see a list of JMH runner options, add the `-h` flag.
+
+The JUnit/JMH integration was inspired by the Netty projects microbenchmarking suite.  Please refer to the Netty
+link:http://netty.io/wiki/microbenchmarks.html[docs] for more details.  Presently there are 3 abstract benchmark classes
+that may be used as building blocks for your benchmarks; `AbstractBenchmarkBase`, `AbstractGraphBenchmark`, and
+`AbstractGraphMutateBenchmark`.
+
+* `AbstractBenchmarkBase` - extend when your benchmark does not require a graph instance
+* `AbstractGraphBenchmark` - extend when you are benchmarking read operations against a graph
+* `AbstractGraphMutateBenchmark` - extend when you are benchmarking graph mutation operations eg. `g.addV()`, `graph.addVertex()`
+
 [[rtc]]
 Review then Commit
 ------------------
diff --git a/docs/src/dev/developer/index.asciidoc b/docs/src/dev/developer/index.asciidoc
index f1c472f..1edca5e 100644
--- a/docs/src/dev/developer/index.asciidoc
+++ b/docs/src/dev/developer/index.asciidoc
@@ -14,7 +14,9 @@
 See the License for the specific language governing permissions and
 limitations under the License.
 ////
-image::apache-tinkerpop-logo.png[width=500]
+image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]
+
+*x.y.z*
 
 :toc-position: left
 
diff --git a/docs/src/dev/provider/index.asciidoc b/docs/src/dev/provider/index.asciidoc
index 7b876a1..90ab5c0 100644
--- a/docs/src/dev/provider/index.asciidoc
+++ b/docs/src/dev/provider/index.asciidoc
@@ -14,7 +14,9 @@
 See the License for the specific language governing permissions and
 limitations under the License.
 ////
-image::apache-tinkerpop-logo.png[width=500]
+image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]
+
+*x.y.z*
 
 :toc-position: left
 
@@ -320,10 +322,35 @@
 Note that the configurations for Hadoop are assumed to be in the `Graph.configuration()` object. If this is not the
 case, then the `Configuration` provided to `HadoopGraph.open()` should be dynamically created within the
 `compute()`-method. It is in the provided configuration that `HadoopGraph` gets the various properties which
-determine how to read and write data to and from Hadoop. For instance, `gremlin.hadoop.graphInputFormat` and
-`gremlin.hadoop.graphOutputFormat`.
+determine how to read and write data to and from Hadoop. For instance, `gremlin.hadoop.graphReader` and
+`gremlin.hadoop.graphWriter`.
 
-IMPORTANT: A graph system provider's `OutputFormat` should implement the `PersistResultGraphAware` interface which
+GraphFilterAware Interface
+++++++++++++++++++++++++++
+
+<<graph-filter,Graph filters>> by OLAP processors to only pull a subgraph of the full graph from the graph data source. For instance, the
+example below constructs a `GraphFilter` that will only pull the the "knows"-graph amongst people into the `GraphComputer`
+for processing.
+
+[source,java]
+----
+graph.compute().vertices(hasLabel("person")).edges(bothE("knows"))
+----
+
+If the provider has a custom `InputRDD`, they can implement `GraphFilterAware` and that graph filter will be provided to their
+`InputRDD` at load time. For providers that use an `InputFormat`, state but the graph filter can be accessed from the configuration
+as such:
+
+[source,java]
+----
+if (configuration.containsKey(Constants.GREMLIN_HADOOP_GRAPH_FILTER))
+  this.graphFilter = VertexProgramHelper.deserialize(configuration, Constants.GREMLIN_HADOOP_GRAPH_FILTER);
+----
+
+PersistResultGraphAware Interface
++++++++++++++++++++++++++++++++++
+
+A graph system provider's `OutputFormat` should implement the `PersistResultGraphAware` interface which
 determines which persistence options are available to the user. For the standard file-based `OutputFormats` provided
 by Hadoop-Gremlin (e.g. <<gryo-io-format,`GryoOutputFormat`>>, <<graphson-io-format,`GraphSONOutputFormat`>>,
 and <<script-io-format,`ScriptInputOutputFormat`>>) `ResultGraph.ORIGINAL` is not supported as the original graph
@@ -387,6 +414,26 @@
 implementation remotely don't need a full dependency on the entire `Graph` - just the IO components and related
 classes being serialized.
 
+[[remoteconnection-implementations]]
+RemoteConnection Implementations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A `RemoteConnection` is an interface that is important for usage with
+link:http://tinkerpop.apache.org/docs/x.y.z/reference/#connecting-via-remotegraph[RemoteGraph]. A `RemoteGraph` takes
+a `RemoteConnection` implementation and submits constructed traversals to it for processing through a single method:
+
+[source,java]
+public Iterator<Traverser> submit(final Traversal t) throws RemoteConnectionException;
+
+TinkerPop provides the `DriverRemoteConnection` as a useful and example implementation. `DriverRemoteConnection`
+serializes the `Traversal` and then submits it for remote processing on Gremlin Server. Gremlin Server rebinds the
+`Traversal` to a configured `Graph` instance and then iterates the results back as it would normally do.
+
+Implementing `RemoteConnection` is not something routinely done for those implementing `gremlin-core`. It is only
+something required if there is a need to exploit `RemoteGraph` in some way. If a graph provider has a "graph server"
+similar to Gremlin Server that can accept a serialized `Traversal` instance, then that would be one example of a
+reason to implement this interface.
+
 [[validating-with-gremlin-test]]
 Validating with Gremlin-Test
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -739,13 +786,13 @@
 |=========================================================
 
 OpProcessors Arguments
-^^^^^^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~~~~~~
 
 The following sections define a non-exhaustive list of available operations and arguments for embedded `OpProcessors`
 (i.e. ones packaged with Gremlin Server).
 
 Common
-++++++
+^^^^^^
 
 All `OpProcessor` instances support these arguments.
 
@@ -756,7 +803,7 @@
 |=========================================================
 
 Standard OpProcessor
-++++++++++++++++++++
+^^^^^^^^^^^^^^^^^^^^
 
 The "standard" `OpProcessor` handles requests for the primary function of Gremlin Server - executing Gremlin.
 Requests made to this `OpProcessor` are "sessionless" in the sense that a request must encapsulate the entirety
@@ -798,7 +845,7 @@
 |=========================================================
 
 Session OpProcessor
-+++++++++++++++++++
+^^^^^^^^^^^^^^^^^^^
 
 The "session" `OpProcessor` handles requests for the primary function of Gremlin Server - executing Gremlin. It is
 like the "standard" `OpProcessor`, but instead maintains state between sessions and allows the option to leave all
@@ -853,7 +900,7 @@
 |=========================================================
 
 Authentication
-^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~
 
 Gremlin Server supports link:https://en.wikipedia.org/wiki/Simple_Authentication_and_Security_Layer[SASL-based]
 authentication.  A SASL implementation provides a series of challenges and responses that a driver must comply with
diff --git a/docs/src/recipes/between-vertices.asciidoc b/docs/src/recipes/between-vertices.asciidoc
new file mode 100644
index 0000000..021e85b
--- /dev/null
+++ b/docs/src/recipes/between-vertices.asciidoc
@@ -0,0 +1,115 @@
+////
+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.
+////
+[[between-vertices]]
+Between Vertices
+----------------
+
+It is quite common to have a situation where there are two particular vertices of a graph and a need to execute some
+traversal on the paths found between them. Consider the following examples:
+
+[gremlin-groovy,modern]
+----
+g.V(1).bothE()                                   <1>
+g.V(1).bothE().where(otherV().hasId(2))          <2>
+v1 = g.V(1).next();[]
+v2 = g.V(2).next();[]
+g.V(v1).bothE().where(otherV().is(v2))           <3>
+g.V(v1).outE().where(inV().is(v2))               <4>
+g.V(1).outE().where(inV().has(id, within(2,3)))  <5>
+g.V(1).out().where(__.in().hasId(6))             <6>
+----
+
+<1> There are three edges from the vertex with the identifier of "1".
+<2> Filter those three edges using the `where()` step using the identifier of the vertex returned by `otherV()` to
+ensure it matches on the vertex of concern, which is the one with an identifier of "2".
+<3> Note that the same traversal will work if there are actual `Vertex` instances rather than just vertex identiers.
+<4> The vertex with identifier "1" has all outgoing edges, so it would also be acceptable to use the directional steps
+of `outE()` and `inV()` since the schema allows it.
+<5> There is also no problem with filtering the terminating side of the traversal on multiple vertices, in this case,
+vertices with identifiers "2" and "3".
+<6> There's no reason why the same pattern of exclusion used for edges with `where()` can't work for a vertex between
+two vertices.
+
+The basic pattern of using `where()` step to find the "other" known vertex can be applied in far more complex
+scenarios. For one such example, consider the following traversal that finds all the paths between a group of defined
+vertices:
+
+[gremlin-groovy,modern]
+----
+ids = [2,4,6].toArray()
+g.V(ids).as("a").
+  repeat(bothE().otherV().simplePath()).times(5).emit(hasId(within(ids))).as("b").
+  filter(select(last,"a","b").by(id).where("a", lt("b"))).
+  path().by().by(label)
+----
+
+For another example, consider the following schema:
+
+image:recipe-job-schema.png[width=750]
+
+Assume that the goal is to find information about a known job and a known person. Specifically, the idea would be
+to extract the known job, the company that created the job, the date it was created by the company and whether or not
+the known person completed an application.
+
+[gremlin-groovy]
+----
+vBob = graph.addVertex(label, "person", "name", "bob")
+vStephen = graph.addVertex(label, "person", "name", "stephen")
+vBlueprintsInc = graph.addVertex(label, "company", "name", "Blueprints, Inc")
+vRexsterLlc = graph.addVertex(label, "company", "name", "Rexster, LLC")
+vBlueprintsJob1 = graph.addVertex(label, "job", "name", "job1")
+vBlueprintsJob2 = graph.addVertex(label, "job", "name", "job2")
+vBlueprintsJob3 = graph.addVertex(label, "job", "name", "job3")
+vRexsterJob1 = graph.addVertex(label, "job", "name", "job4")
+vAppBob1 = graph.addVertex(label, "application", "name", "application1")
+vAppBob2 = graph.addVertex(label, "application", "name", "application2")
+vAppStephen1 = graph.addVertex(label, "application", "name", "application3")
+vAppStephen2 = graph.addVertex(label, "application", "name", "application4")
+vBob.addEdge("completes", vAppBob1)
+vBob.addEdge("completes", vAppBob2)
+vStephen.addEdge("completes", vAppStephen1)
+vStephen.addEdge("completes", vAppStephen2)
+vAppBob1.addEdge("appliesTo", vBlueprintsJob1)
+vAppBob2.addEdge("appliesTo", vBlueprintsJob2)
+vAppStephen1.addEdge("appliesTo", vRexsterJob1)
+vAppStephen2.addEdge("appliesTo", vBlueprintsJob3)
+vBlueprintsInc.addEdge("created", vBlueprintsJob1, "creationDate", "12/20/2015")
+vBlueprintsInc.addEdge("created", vBlueprintsJob2, "creationDate", "12/15/2015")
+vBlueprintsInc.addEdge("created", vBlueprintsJob3, "creationDate", "12/16/2015")
+vRexsterLlc.addEdge("created", vRexsterJob1, "creationDate", "12/18/2015")
+g.V(vRexsterJob1).as('job').
+  inE('created').as('created').
+  outV().as('company').
+  select('job').
+  coalesce(__.in('appliesTo').where(__.in('completes').is(vStephen)),
+           constant(false)).as('application').
+  select('job', 'company', 'created', 'application').
+    by().by().by('creationDate').by()
+g.V(vRexsterJob1, vBlueprintsJob1).as('job').
+  inE('created').as('created').
+  outV().as('company').
+  select('job').
+  coalesce(__.in('appliesTo').where(__.in('completes').is(vBob)),
+           constant(false)).as('application').
+  select('job', 'company', 'created', 'application').
+    by().by().by('creationDate').by()
+----
+
+While the traversals above are more complex, the pattern for finding "things" between two vertices is largely the same.
+Note the use of the `where()` step to terminate the traversers for a specific user. It is embedded in a `coalesce()`
+step to handle situations where the specified user did not complete an application for the specified job and will
+return `false` in those cases.
\ No newline at end of file
diff --git a/docs/src/recipes/centrality.asciidoc b/docs/src/recipes/centrality.asciidoc
new file mode 100644
index 0000000..eeee79d
--- /dev/null
+++ b/docs/src/recipes/centrality.asciidoc
@@ -0,0 +1,168 @@
+////
+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.
+////
+[[centrality]]
+Centrality
+----------
+
+There are many measures of link:https://en.wikipedia.org/wiki/Centrality[centrality] which are meant to help identify
+the most important vertices in a graph. As these measures are common in graph theory, this section attempts to
+demonstrate how some of these different indicators can be calculated using Gremlin.
+
+[[degree-centrality]]
+Degree Centrality
+~~~~~~~~~~~~~~~~~
+
+link:https://en.wikipedia.org/wiki/Centrality#Degree_centrality[Degree centrality] is a measure of the number of
+edges associated to each vertex.
+
+[gremlin-groovy,modern]
+----
+g.V().group().by().by(bothE().count())                <1>
+g.V().group().by().by(inE().count())                  <2>
+g.V().group().by().by(outE().count())                 <3>
+g.V().project("v","degree").by().by(bothE().count())  <4>
+g.V().project("v","degree").by().by(bothE().count()). <5>
+  order().by(select("degree"), decr).
+  limit(4)
+----
+
+<1> Calculation of degree centrality which counts all incident edges on each vertex to include those that are both
+incoming and outgoing.
+<2> Calculation of in-degree centrality which only counts incoming edges to a vertex.
+<3> Calculation of out-degree centrality which only counts outgoing edges from a vertex.
+<4> The previous examples all produce a single `Map` as their output. While that is a desireable output, producing a
+stream of `Map` objects can allow some greater flexibility.
+<5> For example, use of a stream enables use of an ordered limit that can be executed in a distributed fashion in
+OLAP traversals.
+
+NOTE: The link:http://tinkerpop.apache.org/docs/x.y.z/reference/#group-step[group] step takes up to two separate
+link:http://tinkerpop.apache.org/docs/x.y.z/reference/#by-step[by] modulators. The first `by()` tells `group()`
+what the key in the resulting `Map` will be (i.e. the value to group on). In the above examples, the `by()` is empty
+and as a result, the grouping will be on the incoming `Vertex` object itself. The second `by()` is the value to be
+stored in the `Map` for each key.
+
+[[betweeness-centrality]]
+Betweeness Centrality
+~~~~~~~~~~~~~~~~~~~~~
+
+link:https://en.wikipedia.org/wiki/Betweenness_centrality[Betweeness centrality] is a measure of the number of times
+a vertex is found between the <<shortest-path,shortest path>> of each vertex pair in a graph.  Consider the following
+graph for demonstration purposes:
+
+image:betweeness-example.png[width=600]
+
+[gremlin-groovy ]
+----
+a = graph.addVertex('name','a')
+b = graph.addVertex('name','b')
+c = graph.addVertex('name','c')
+d = graph.addVertex('name','d')
+e = graph.addVertex('name','e')
+a.addEdge('next',b)
+b.addEdge('next',c)
+c.addEdge('next',d)
+d.addEdge('next',e)
+g.withSack(0).V().store("x").repeat(both().simplePath()).emit().path(). <1>
+  group().by(project("a","b").by(limit(local, 1)).                      <2>
+                              by(tail(local, 1))).
+          by(order().by(count(local))).                                 <3>
+          select(values).as("shortestPaths").                           <4>
+          select("x").unfold().as("v").                                 <5>
+          select("shortestPaths").                                      <6>
+            map(unfold().filter(unfold().where(eq("v"))).count()).      <7>
+            sack(sum).sack().as("betweeness").        <8>
+          select("v","betweeness")
+----
+
+<1> Defines a Gremlin link:http://tinkerpop.apache.org/docs/x.y.z/reference/#sack-step[sack] with a value of zero,
+which represents the initial betweeness score for each vertex, and traverses on both incoming and outgoing edges
+avoiding <<cycle-detection, cyclic paths>>.
+<2> Group each path by the first and last vertex.
+<3> Reduce the list of paths to the shortest path between the first and last vertex by ordering on their lengths.
+<4> Recall that at this point, there is a `Map` keyed by first and last vertex and with a value of just the shortest
+path. Extract the shortest path with `select(values)`, since that's the only portion required for the remainder of
+the traversal.
+<5> The "x" key contains the list of vertices stored from step 1 - unfold that list into "v" for later use. This step
+will unwrap the vertex that is stored in the `Traverser` as
+link:http://tinkerpop.apache.org/javadocs/x.y.z/full/org/apache/tinkerpop/gremlin/process/traversal/step/util/BulkSet.html[BulkSet]
+so that it can be used directly in the `Traversal`.
+<6> Iterate the set of shortest paths. At this point, it is worth noting that the traversal is iterating each vertex
+in "v" and for each vertex in "v" it is iterating each `Path` in "shortestpaths".
+<7> For each path, transform it to a count of the number of times that "v" from step 5 is encountered.
+<8> Sum the counts for each vertex using `sack()`, normalize the value and label it as the "betweeness" to be the score.
+
+[[closeness-centrality]]
+Closeness Centrality
+~~~~~~~~~~~~~~~~~~~~
+
+link:https://en.wikipedia.org/wiki/Centrality[Closeness centrality] is a measure of the distance of one vertex to all
+other reachable vertices in the graph.
+
+[gremlin-groovy,modern]
+----
+g.withSack(1f).V().repeat(both().simplePath()).emit().path().                    <1>
+  group().by(project("a","b").by(limit(local, 1)).                               <2>
+                              by(tail(local, 1))).
+          by(order().by(count(local))).                                          <3>
+  select(values).unfold().                                                       <4>
+  project("v","length").
+    by(limit(local, 1)).                                                         <5>
+    by(count(local).sack(div).sack()).                                           <6>
+  group().by(select("v")).by(select("length").sum())                             <7>
+----
+
+<1> Defines a Gremlin link:http://tinkerpop.apache.org/docs/x.y.z/reference/#sack-step[sack] with a value of one,
+and traverses on both incoming and outgoing edges avoiding <<cycle-detection, cyclic paths>>.
+<2> Group each path by the first and last vertex.
+<3> Reduce the list of paths to the shortest path between the first and last vertex by ordering on their lengths.
+<4> Recall that at this point, there is a `Map` keyed by first and last vertex and with a value of just the shortest
+path. Extract the shortest path with `select(values)`, since that's the only portion required for the remainder of
+the traversal.
+<5> The first `by()` modulator for `project()` extracts the first vertex in the path.
+<6> The second `by()` modulator for `project()` extracts the path length and divides that distance by the value of
+the `sack()` which was initialized to 1 at the start of the traversal.
+<7> Group the resulting `Map` objects on "v" and sum their lengths to get the centrality score for each.
+
+[[eigenvector-centrality]]
+Eigenvector Centrality
+~~~~~~~~~~~~~~~~~~~~~~
+
+A calculation of link:https://en.wikipedia.org/wiki/Centrality#Eigenvector_centrality[eigenvector centrality] uses the
+relative importance of adjacent vertices to help determine their centrality. In other words, unlike
+<<degree-centrality, degree centrality>> the vertex with the greatest number of incident edges does not necessarily
+give it the highest rank. Consider the following example using the Grateful Dead graph:
+
+[gremlin-groovy]
+----
+graph.io(graphml()).readGraph('data/grateful-dead.xml')
+g.V().repeat(groupCount('m').by('name').out()).times(5).cap('m').                <1>
+  order(local).by(values, decr).limit(local, 10).next()                          <2>
+g.V().repeat(groupCount('m').by('name').out().timeLimit(100)).times(5).cap('m'). <3>
+  order(local).by(values, decr).limit(local, 10).next()
+----
+
+<1> The traversal iterates through each vertex in the graph and for each one repeatedly group counts each vertex that
+passes through using the vertex as the key. The `Map` of this group count is stored in a variable named "m". The
+`out()` traversal is repeated thirty times or until the paths are exhausted. Five iterations should provide enough
+time to converge on a solution. Calling `cap('m')` at the end simply extracts the `Map` side-effect stored in "m".
+<2> The entries in the `Map` are then iterated and sorted with the top ten most central vertices presented as output.
+<3> The previous examples can be expanded on a little bit by including a
+link:http://tinkerpop.apache.org/docs/current/reference/#timelimit-step[time limit]. The `timeLimit()` prevents the
+traversal from taking longer than one hundred milliseconds to execute (the previous example takes considerably longer
+than that). While the answer provided with the `timeLimit()` is not the absolute ranking, it does provide a relative
+ranking that closely matches the absolute one. The use of `timeLimit()` in certain algorithms (e.g. recommendations)
+can shorten the time required to get a reasonable and usable result.
\ No newline at end of file
diff --git a/docs/src/recipes/cycle-detection.asciidoc b/docs/src/recipes/cycle-detection.asciidoc
new file mode 100644
index 0000000..864b760
--- /dev/null
+++ b/docs/src/recipes/cycle-detection.asciidoc
@@ -0,0 +1,61 @@
+////
+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.
+////
+[[cycle-detection]]
+Cycle Detection
+---------------
+
+A cycle occurs in a graph where a path loops back on itself to the originating vertex. For example, in the graph
+depticted below Gremlin could be use to detect the cycle among vertices `A-B-C`.
+
+image:graph-cycle.png[width=250]
+
+[gremlin-groovy]
+----
+vA = graph.addVertex(id, 'a')
+vB = graph.addVertex(id, 'b')
+vC = graph.addVertex(id, 'c')
+vD = graph.addVertex(id, 'd')
+vA.addEdge("knows", vB)
+vB.addEdge("knows", vC)
+vC.addEdge("knows", vA)
+vA.addEdge("knows", vD)
+vC.addEdge("knows", vD)
+g.V().as("a").repeat(out().simplePath()).times(2).
+  where(out().as("a")).path()                          <1>
+g.V().as("a").repeat(out().simplePath()).times(2).
+  where(out().as("a")).path().
+  dedup().by(unfold().order().by(id).dedup().fold())   <2>
+----
+
+<1> Gremlin starts its traversal from a vertex labeled "a" and traverses `out()` from each vertex filtering on the
+`simplePath`, which removes paths with repeated objects. The steps going `out()` are repeated twice as in this case
+the length of the cycle is known to be three and there is no need to exceed that. The traversal filters with a
+`where()` to see only return paths that end with where it started at "a".
+<2> The previous query returned the `A-B-C` cycle, but it returned three paths which were all technically the same
+cycle. It returned three, because there was one for each vertex that started the cycle (i.e. one for `A`, one for `B`
+and one for `C`). This next line introduce deduplication to only return unique cycles.
+
+The above case assumed that the need was to only detect cycles over a path length of three. It also respected the
+directionality of the edges by only considering outgoing ones. What would need to change to detect cycles of
+arbitrary length over both incoming and outgoing edges in the modern graph?
+
+[gremlin-groovy,modern]
+----
+g.V().as("a").repeat(both().simplePath()).emit(loops().is(gt(1))).
+  both().where(eq("a")).path().
+  dedup().by(unfold().order().by(id).dedup().fold())
+----
\ No newline at end of file
diff --git a/docs/src/recipes/if-then-based-grouping.asciidoc b/docs/src/recipes/if-then-based-grouping.asciidoc
new file mode 100644
index 0000000..dc0025f
--- /dev/null
+++ b/docs/src/recipes/if-then-based-grouping.asciidoc
@@ -0,0 +1,71 @@
+////
+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.
+////
+[[if-then-based-grouping]]
+If-Then Based Grouping
+----------------------
+
+Consider the following traversal over the "modern" toy graph:
+
+[gremlin-groovy,modern]
+----
+g.V().hasLabel('person').groupCount().by('age')
+----
+
+The result is an age distribution that simply shows that every "person" in the graph is of a different age. In some
+cases, this result is exactly what is needed, but sometimes a grouping may need to be transformed to provide a
+different picture of the result. For example, perhaps a grouping on the value "age" would be better represented by
+a domain concept such as "young", "old" and "very old".
+
+[gremlin-groovy,modern]
+----
+g.V().hasLabel("person").groupCount().by(values("age").choose(
+  is(lt(28)),constant("young"),
+  choose(is(lt(30)),
+         constant("old"),
+         constant("very old"))))
+----
+
+Note that the `by` modulator has been altered from simply taking a string key of "age" to take a `Traversal`. That
+inner `Traversal` utilizes `choose` which is like an `if-then-else` clause. The `choose` is nested and would look
+like the following in Java:
+
+[source,java]
+----
+if (age < 28) {
+  return "young";
+} else {
+  if (age < 30) {
+    return "old";
+  } else {
+    return "very old";
+  }
+}
+----
+
+The use of `choose` is a good intutive choice for this `Traversal` as it is a natural mapping to `if-then-else`, but
+there is another option to consider with `coalesce`:
+
+[gremlin-groovy,modern]
+----
+g.V().hasLabel("person").
+  groupCount().by(values("age").
+  coalesce(is(lt(28)).constant("young"),
+           is(lt(30)).constant("old"),
+           constant("very old")))
+----
+
+The answer is the same, but this traversal removes the nested `choose`, which makes it easier to read.
\ No newline at end of file
diff --git a/docs/src/recipes/index.asciidoc b/docs/src/recipes/index.asciidoc
new file mode 100644
index 0000000..01a1209
--- /dev/null
+++ b/docs/src/recipes/index.asciidoc
@@ -0,0 +1,123 @@
+////
+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.
+////
+image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]
+
+*x.y.z*
+
+:toc-position: left
+
+Recipes
+=======
+
+image:gremlin-chef.png[width=120,float=left] All programming languages tend to have
+link:https://en.wikipedia.org/wiki/Software_design_pattern[patterns of usage] for commonly occurring problems. Gremlin
+is not different in that respect. There are many commonly occurring traversal themes that have general applicability
+to any graph. Gremlin Recipes present these common traversal patterns and methods of usage that will
+provide some basic building blocks for virtually any graph in any domain.
+
+Recipes assume general familiarity with Gremlin and the TinkerPop stack. Be sure to have read the
+link:http://tinkerpop.apache.org/docs/x.y.z/tutorials/getting-started[Getting Started] tutorial and the
+link:http://tinkerpop.apache.org/docs/x.y.z/tutorials/the-gremlin-console/[The Gremlin Console] tutorial.
+
+Traversal Recipes
+=================
+
+include::between-vertices.asciidoc[]
+
+include::shortest-path.asciidoc[]
+
+include::if-then-based-grouping.asciidoc[]
+
+include::cycle-detection.asciidoc[]
+
+include::centrality.asciidoc[]
+
+Implementation Recipes
+======================
+
+include::style-guide.asciidoc[]
+
+include::traversal-component-reuse.asciidoc[]
+
+[[contributing]]
+How to Contribute a Recipe
+==========================
+
+Recipes are generated under the same system as all TinkerPop documentation and is stored directly in the source code
+repository. TinkerPop documentation is all link:http://asciidoc.org/[asciidoc] based and can be generated locally with
+either link:http://tinkerpop.apache.org/docs/x.y.z/dev/developer/#building-testing[shell script/Maven] or
+link:http://tinkerpop.apache.org/docs/x.y.z/dev/developer/#docker-integration[Docker] build commands. Once
+changes are complete, submit a pull request for review by TinkerPop committers.
+
+NOTE: Please review existing recipes and attempt to conform to their writing and visual style. It may also be a good
+idea to discuss ideas for a recipe on the link:https://lists.apache.org/list.html?dev@tinkerpop.apache.org[developer mailing list]
+prior to starting work on it, as the community might provide insight on the approach and idea that would be helpful.
+It is preferable that a link:issues.apache.org/jira/browse/TINKERPOP[JIRA issue] be opened that describes the nature
+of the recipe so that the eventual pull request can be bound to that issue.
+
+To contribute a recipe, first clone the repository:
+
+[source, shell]
+git clone https://github.com/apache/tinkerpop.git
+
+The recipes can be found in this directory:
+
+[source, shell]
+ls docs/src/recipes
+
+Each recipe exists within a separate `.asciidoc` file.  The file name should match the name of the recipe. Recipe names
+should be short, but descriptive (as they need to fit in the left-hand table of contents when generated). The
+`index.asciidoc` is the parent document that "includes" the content of each individual recipe file. A recipe file is
+included in the `index.asciidoc` with an entry like this: `include::my-recipe.asciidoc[]`
+
+Documentation should be generated locally for review prior to submitting a pull request. TinkerPop documentation is
+"live" in that it is bound to a specific version when generated. Furthermore, code examples (those that are
+`gremlin-groovy` based) are executed at document generation time with the results written directly into the output.
+The following command will generate the documentation with:
+
+[source,shell]
+bin/process-docs.sh
+
+The generated documentation can be found at `target/docs/htmlsingle/recipes`. This process can be long on the first
+run of the documentation as it is generating all of the documentation locally (e.g. reference documentation,
+tutorials, etc). To generate just the recipes, follow this process:
+
+[source,shell]
+bin/process-docs.sh --dryRun               <1>
+rm -r target/postprocess-asciidoc/recipes  <2>
+bin/process-docs.sh                        <3>
+
+<1> That command will quickly generate all of the documentation, but it does not do the code example execution (which is
+the "slow" part).
+<2> Delete the recipes directory, which forces a fresh copy of the recipes to be generated.
+<3> Process all of the documentation that is "new" (i.e. the fresh copy of recipes).
+
+The `bin/process-docs.sh` approach requires that Hadoop is installed. To avoid that prerequisite, try using Docker:
+
+[source,shell]
+docker/build.sh -d
+
+The downside to using Docker is that the process will take longer as each run will require the entire documentation set
+to be generated.
+
+The final step to submitting a recipe is to issue a link:https://help.github.com/articles/using-pull-requests/[pull request through GitHub].
+It is helpful to prefix the name of the pull request with the JIRA issue number, so that TinkerPop's automation between
+GitHub and JIRA are linked.  As mentioned earlier in this section, the recipe will go under review by TinkerPop
+committers prior to merging. This process may take several days to complete. We look forward to receiving your
+submissions!
+
+
diff --git a/docs/src/recipes/shortest-path.asciidoc b/docs/src/recipes/shortest-path.asciidoc
new file mode 100644
index 0000000..3f380f1
--- /dev/null
+++ b/docs/src/recipes/shortest-path.asciidoc
@@ -0,0 +1,104 @@
+////
+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.
+////
+[[shortest-path]]
+Shortest Path
+-------------
+
+image:shortest-path.png[width=300]
+
+When working with a graph, it is often necessary to identify the
+link:https://en.wikipedia.org/wiki/Shortest_path_problem[shortest path] between two identified vertices. The following
+is a simple example that identifies the shortest path between vertex "1" and vertex "5" while traversing over out edges:
+
+[gremlin-groovy]
+----
+graph = TinkerGraph.open()
+v1 = graph.addVertex(T.id, 1)
+v2 = graph.addVertex(T.id, 2)
+v3 = graph.addVertex(T.id, 3)
+v4 = graph.addVertex(T.id, 4)
+v5 = graph.addVertex(T.id, 5)
+v1.addEdge("knows", v2)
+v2.addEdge("knows", v4)
+v4.addEdge("knows", v5)
+v2.addEdge("knows", v3)
+v3.addEdge("knows", v4)
+g = graph.traversal()
+g.V(1).repeat(out().simplePath()).until(hasId(5)).path().limit(1)     <1>
+g.V(1).repeat(out().simplePath()).until(hasId(5)).path().count(local) <2>
+g.V(1).repeat(out().simplePath()).until(hasId(5)).path().
+  group().by(count(local)).next()                                     <3>
+----
+
+<1> The traversal starts at vertex with the identifier of "1" and repeatedly traverses on out edges "until" it finds a
+vertex with an identifier of "5". The inclusion of `simplePath` within the `repeat` is present to filter out repeated
+paths. The traversal terminates with `limit` in this case as the first path returned will be the shortest one. Of
+course, it is possible for there to be more than one path in the graph of the same length (i.e. two or more paths of
+length three), but this example is not considering that.
+<2> It might be interesting to know the path lengths for all paths between vertex "1" and "5".
+<3> Alternatively, one might wish to do a path length distribution over all the paths.
+
+The previous example defines the length of the path by the number of vertices in the path, but the "path" might also
+be measured by data within the graph itself. The following example use the same graph structure as the previous example,
+but includes a "weight" on the edges, that will be used to help determine the "cost" of a particular path:
+
+[gremlin-groovy]
+----
+graph = TinkerGraph.open()
+v1 = graph.addVertex(T.id, 1)
+v2 = graph.addVertex(T.id, 2)
+v3 = graph.addVertex(T.id, 3)
+v4 = graph.addVertex(T.id, 4)
+v5 = graph.addVertex(T.id, 5)
+v1.addEdge("knows", v2, "weight", 1.25)
+v2.addEdge("knows", v4, "weight", 1.5)
+v4.addEdge("knows", v5, "weight", 0.25)
+v2.addEdge("knows", v3, "weight", 0.25)
+v3.addEdge("knows", v4, "weight", 0.25)
+g = graph.traversal()
+g.V(1).repeat(out().simplePath()).until(hasId(5)).path().
+  group().by(count(local)).next()                                                         <1>
+g.V(1).repeat(outE().inV().simplePath()).until(hasId(5)).
+  path().by(coalesce(values('weight'),
+                     constant(0.0))).
+  map(unfold().sum())                                                                     <2>
+g.V(1).repeat(outE().inV().simplePath()).until(hasId(5)).
+  path().by(constant(0.0)).by('weight').map(unfold().sum())                               <3>
+g.V(1).repeat(outE().inV().simplePath()).until(hasId(5)).
+  path().as('p').
+  map(unfold().coalesce(values('weight'),
+                        constant(0.0)).sum()).as('cost').
+  select('cost','p')                                                                      <4>
+----
+
+<1> Note that the shortest path as determined by the structure of the graph is the same.
+<2> Calculate the "cost" of the path as determined by the weight on the edges. As the "weight" data is on the edges
+between the vertices, it is necessary to change the contents of the `repeat` step to use `outE().inV()` so that the
+edge is included in the path. The path is then post-processed with a `by` modulator that extracts the "weight" value.
+The traversal uses `coalesce` as there is a mixture of vertices and edges in the path and the traversal is only
+interested in edge elements that can return a "weight" property. The final part of the traversal executes a map
+function over each path, unfolding it and summing the weights.
+<3> The same traversal as the one above it, but avoids the use of `coalesce` with the use of two `by` modulators. The
+`by` modulator is applied in a round-robin fashion, so the first `by` will always apply to a vertex (as it is the first
+item in every path) and the second `by` will always apply to an edge (as it always follows the vertex in the path).
+<4> The output of the previous examples of the "cost" wasn't terribly useful as it didn't include which path had the
+calculated cost. With some slight modifications given the use of `select` it becomes possible to include the path in
+the output. Note that the path with the lowest "cost" actually has a longer path length as determined by the graph
+structure.
+
+
+
diff --git a/docs/src/recipes/style-guide.asciidoc b/docs/src/recipes/style-guide.asciidoc
new file mode 100644
index 0000000..14cbad9
--- /dev/null
+++ b/docs/src/recipes/style-guide.asciidoc
@@ -0,0 +1,81 @@
+////
+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.
+////
+[[style-guide]]
+Style Guide
+-----------
+
+Gremlin is a data flow language where each new step concatenation alters the stream accordingly. This aspect of the
+language allows users to easily "build-up" a traversal (literally) step-by-step until the expected results are
+returned. For instance:
+
+[gremlin-groovy,modern]
+----
+g.V(1)
+g.V(1).out('knows')
+g.V(1).out('knows').out('created')
+g.V(1).out('knows').out('created').groupCount()
+g.V(1).out('knows').out('created').groupCount().by('name')
+----
+
+A drawback of building up a traversal is that users tend to create long, single line traversal that are hard to read.
+For simple traversals, a single line is fine. For complex traversals, there are few formatting patterns that should be followed
+which will yield cleaner, easier to understand traversals. For instance, the last traversal above would be written:
+
+[gremlin-groovy,modern]
+----
+g.V(1).out('knows').out('created').
+  groupCount().by('name')
+----
+
+Lets look at a complex traversal and analyze each line according to the recommended formatting rule is subscribes to.
+
+[gremlin-groovy,modern]
+----
+g.V().out('knows').out('created').  <1>
+  group().by('lang').by().          <2>
+    select('java').unfold().        <3>
+  in('created').hasLabel('person'). <4>
+  order().                          <5>
+    by(inE().count(),decr).         <6>
+    by('age',incr).
+  dedup().limit(10).values('name')  <7>
+----
+
+
+<1> A sequence of `ins().outs().filters().etc()` on a single line until it gets too long.
+<2> When a barrier (reducer, aggregator, etc.) is used, put it on a new line.
+<3> When a next line component is an "add on" to the previous line component, 2 space indent.
+The `select()`-step in this context is "almost like" a `by()`-modulator as its projecting data out of the `group()`.
+The `unfold()`-step is a data formatting necessity that should not be made too prominent.
+<4> Back to a series of `ins().outs().filters().etc()` on a single line.
+<5> `order()` is a barrier step and thus, should be on a new line.
+<6> If there is only one `by()`-modulator (or a series of short ones), keep it on one line, else each `by()` is a new line.
+<7> Back to a series `ins().outs().filters().etc()`.
+
+Style Guide Rules
+~~~~~~~~~~~~~~~~~
+
+A generalization of the specifics above are presented below.
+
+* Always use 2 space indent.
+* No newline should ever have the same indent as the line starting with the traversal source `g`.
+* Barrier steps should form line breaks unless they are simple (e.g. `sum()`).
+* Complex `by()`-modulators form indented "paragraphs."
+* Standard filters, maps, flatMaps remain on the same line until they get too long.
+
+Given the diversity of traversals and the complexities introduced by lambdas (for example), these rules will not always
+lead to optimal representations. However, by in large, the style rules above will help make 90% of traversals look great.
diff --git a/docs/src/recipes/traversal-component-reuse.asciidoc b/docs/src/recipes/traversal-component-reuse.asciidoc
new file mode 100644
index 0000000..2b65644
--- /dev/null
+++ b/docs/src/recipes/traversal-component-reuse.asciidoc
@@ -0,0 +1,71 @@
+////
+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.
+////
+[[traversal-component-reuse]]
+Traversal Component Reuse
+-------------------------
+
+Good software development practices require reuse to keep software maintainable. In Gremlin, there are often bits of
+traversal logic that could be represented as components that might be tested independently and utilized
+as part of other traversals. One approach to doing this would be to extract such logic into an anonymous traversal
+and provide it to a parent traversal through `flatMap()` step.
+
+Using the modern toy graph as an example, assume that there are number of traversals that are interested in filtering
+on edges where the "weight" property is greater than "0.5". A query like that might look like this:
+
+[gremlin-groovy,modern]
+----
+g.V(1).outE("knows").has('weight', P.gt(0.5d)).inV().both()
+----
+
+Repeatedly requiring that filter on "weight" could lead to a lot of duplicate code, which becomes difficult to
+maintain. It would be nice to extract that logic so as to centralize it for reuse in all places where needed. An
+anonymous traversal allows that to happen and can be created as follows.
+
+[gremlin-groovy,modern]
+----
+weightFilter = outE("knows").has('weight', P.gt(0.5d)).inV();[]
+g.V(1).flatMap(weightFilter).both()
+----
+
+The `weightFilter` is an anonymous traversal and it is created by way `__` class. The `__` is omitted above from
+initalization of `weightFilter` because it is statically imported to the Gremlin Console. The `weightFilter` gets
+passed to the "full" traversal by way for `flatMap()` step and the results are the same. Of course, there is a problem.
+If there is an attempt to use that `weightFilter` a second time, the traversal with thrown an exception because both
+the `weightFilter` and parent traversal have been "compiled" which prevents their re-use. A simple fix to this would
+be to clone the `weightFilter`.
+
+[gremlin-groovy,modern]
+----
+weightFilter = outE("knows").has('weight', P.gt(0.5d)).inV();[]
+g.V(1).flatMap(weightFilter.clone()).both()
+g.V(1).flatMap(weightFilter.clone()).bothE().otherV()
+g.V(1).flatMap(weightFilter.clone()).groupCount()
+----
+
+Now the `weightFilter` can be reused over and over again. Remembering to `clone()` might lead to yet another maintenance
+issue in that failing to recall that step would likely result in a bug. One option might be to wrap the `weightFilter`
+creation in a function that returns the clone. Another approach might be to parameterize that function to construct
+a new anonymous traversal each time with the idea being that this might gain even more flexibility in parameterizing
+the anonymous traversal itself.
+
+[gremlin-groovy,modern]
+----
+weightFilter = { w -> outE("knows").has('weight', P.gt(w)).inV() }
+g.V(1).flatMap(weightFilter(0.5d)).both()
+g.V(1).flatMap(weightFilter(0.5d)).bothE().otherV()
+g.V(1).flatMap(weightFilter(0.5d)).groupCount()
+----
\ No newline at end of file
diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc
index 488663f..2b85cb0 100644
--- a/docs/src/reference/gremlin-applications.asciidoc
+++ b/docs/src/reference/gremlin-applications.asciidoc
@@ -106,7 +106,7 @@
 The Gremlin Console is loaded and ready for commands. Recall that the console hosts the Gremlin-Groovy language.
 Please review link:http://groovy.codehaus.org/[Groovy] for help on Groovy-related constructs. In short, Groovy is a
 superset of Java. What works in Java, works in Groovy. However, Groovy provides many shorthands to make it easier
-to interact with the Java API.  Moreoever, Gremlin provides many neat shorthands to make it easier to express paths
+to interact with the Java API.  Moreover, Gremlin provides many neat shorthands to make it easier to express paths
 through a property graph.
 
 [gremlin-groovy]
@@ -121,7 +121,7 @@
 
 [gremlin-groovy]
 ----
-g = TinkerFactory.createModern().traversal(standard())
+g = TinkerFactory.createModern().traversal()
 g.V()
 g.V().values('name')
 g.V().has('name','marko').out('knows').values('name')
@@ -220,24 +220,22 @@
 contains the class names of the "active" plugins.  It is also possible to clear dependencies added by `:install` by
 deleting them from the `ext` directory.
 
-Script Executor
-~~~~~~~~~~~~~~~
+[[execution-mode]]
+Execution Mode
+~~~~~~~~~~~~~~
 
-For automated tasks and batch executions of Gremlin, it can be useful to execute Gremlin scripts from the command
-line.  Consider the following file named `gremlin.groovy`:
+For automated tasks and batch executions of Gremlin, it can be useful to execute Gremlin scripts in "execution" mode
+from the command line.  Consider the following file named `gremlin.groovy`:
 
 [source,groovy]
 ----
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.*
 graph = TinkerFactory.createModern()
 g = graph.traversal()
 g.V().each { println it }
 ----
 
-This script creates the toy graph and then iterates through all its vertices printing each to the system out.  Note
-that under this approach, "imports" need to be explicitly defined (except for "core" TinkerPop classes).  In addition,
-plugins and other dependencies should already be "installed" via console commands which cannot be used with this mode
-of execution.  To execute this script from the command line, `gremlin.sh` has the `-e` option used as follows:
+This script creates the toy graph and then iterates through all its vertices printing each to the system out.  To
+execute this script from the command line, `gremlin.sh` has the `-e` option used as follows:
 
 [source,bash]
 ----
@@ -257,7 +255,6 @@
 
 [source,groovy]
 ----
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.*
 graph = TinkerFactory.createModern()
 g = graph.traversal()
 g.V().has('name',args[0]).each { println it }
@@ -273,10 +270,49 @@
 v[2]
 ----
 
-NOTE: The `ScriptExecutor` is for Gremlin Groovy scripts only.  It is not possible to include Console plugin commands
-such as `:remote` or `:>` when using `-e` in these scripts. That does not mean that it is impossible to script such
-commands, it just means that they need to be scripted manually.  For example, instead of trying to use the `:remote`
-command, manually construct a <<connecting-via-java,Gremlin Driver>> `Client` and submit scripts from there.
+[[interactive-mode]]
+Interactive Mode
+~~~~~~~~~~~~~~~~
+
+The Gremlin Console can be started in an "interactive" mode. Interactive mode is like <<execution-mode, execution mode>>
+but the console will not exit at the completion of the script, even if the script completes unsuccessfully. In such a
+case, it will simply stop processing on the line that of the script that failed. In this way the state of the console
+is such that a user could examine the state of things up to the point of failure which might make the script easier to
+debug.
+
+In addition to debugging, interactive mode is a helpful way for users to initialize their console environment to
+avoid otherwise repetitive typing. For example, a user who spends a lot of time working with the TinkerPop "modern"
+graph might create a script called `init.groovy` like:
+
+[source,groovy]
+----
+graph = TinkerFactory.createModern()
+g = graph.traversal()
+----
+
+and then start Gremlin Console as follows:
+
+[source,text]
+----
+$ bin/gremlin.sh -i init.groovy
+
+         \,,,/
+         (o o)
+-----oOOo-(3)-oOOo-----
+plugin activated: tinkerpop.server
+plugin activated: tinkerpop.utilities
+plugin activated: tinkerpop.tinkergraph
+gremlin> g.V()
+==>v[1]
+==>v[2]
+==>v[3]
+==>v[4]
+==>v[5]
+==>v[6]
+----
+
+Note that the user can now reference `g` (and `graph` for that matter) at startup without having to directly type that
+variable initialization code into the console.
 
 [[gremlin-server]]
 Gremlin Server
@@ -771,6 +807,87 @@
 quite possible that such a script will generate `OutOfMemoryError` exceptions on the server.  Consider the default
 WebSockets configuration, which supports streaming, if that type of use case is required.
 
+[[connecting-via-remotegraph]]
+Connecting via RemoteGraph
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+[source,xml]
+----
+<dependency>
+   <groupId>org.apache.tinkerpop</groupId>
+   <artifactId>gremlin-driver</artifactId>
+   <version>x.y.z</version>
+</dependency>
+----
+
+image:remote-graph.png[width=145,float=left] `RemoteGraph` is a lightweight `Graph` implementation that acts as a
+proxy for sending traversals to Gremlin Server for remote execution. It is not a "full" implementation like
+`TinkerGraph` or `Neo4jGraph`, in that most of its methods are not implemented. For example, calls to most methods
+like, `addVertex()` or `edges()` will result in an `UnsupportedOperationException`. The only method used on
+`RemoteGraph` is `traversal()`, which generates a `GraphTraversalSource` that includes a `RemoteStrategy`. The
+`RemoteStrategy` submits takes traversals constructed from it, serializes them and submits them to Gremlin Server
+and the results are returned as though working with the `Graph` instance in embedded mode.
+
+`RemoteGraph` is an interesting alternative to the other methods for connecting to Gremlin Server in that all other
+methods involved construction of a `String` representation of the `Traversal` which is then submitted as a script
+to Gremlin Server (via driver or REST). This approach is quite akin to SQL, where query strings are embedded into code
+and submitted to a database server. While there are patterns for taking this approach that can lead to maintainable
+application code, using `RemoteGraph` could be a better method as it brings some good benefits with it:
+
+* Get auto-complete when writing traversals in an IDE.
+* Get compile-time errors in traversal writing.
+* Get the feel of working with an embedded database.
+
+One way to create a `RemoteGraph` instance is by configuration file. Here is an example of what that file looks like:
+
+[source,properties]
+----
+gremlin.remoteGraph.remoteConnectionClass=org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection
+gremlin.remoteGraph.driver.clusterFile=conf/remote-objects.yaml
+gremlin.remoteGraph.driver.graphName=graph
+----
+
+The `gremlin.remoteGraph.remoteConnectionClass` should be an implementation of the `RemoteConnection` interface in
+`gremlin-core`. In this case, it points at the `gremlin-driver` implementation, called `DriverRemoteConnection`. The
+other setting, `gremlin.remoteGraph.driver.clusterFile`, is a configuration to `DriverRemoteConnection`, and it
+provides a pointer to the config file to use to construct a `gremlin-driver` `Cluster` object to be utilized when
+connecting to Gremlin Server. Please see the <<connecting-via-java, "Connecting Via Java">> section for more
+information on those classes and their usage. Finally, the `gremlin.remoteGraph.driver.graphName` setting tells the
+`DriverRemoteConnection` the name of the graph in Gremlin Server to connect to.
+
+Gremlin Server needs to be running for this example to work. Use the following configuration:
+
+[source,bourne]
+$ bin/gremlin-server.sh conf/gremlin-server-modern.yaml
+
+`RemoteGraph` can be demonstrated in the Gremlin Console just like any other `Graph` instance:
+
+[gremlin-groovy]
+----
+graph = RemoteGraph.open('conf/remote-graph.properties')
+g = graph.traversal()
+g.V().valueMap(true)
+----
+
+If working with multiple `RemoteGraph` instances it is more efficient to construct your own `Cluster` object and
+re-use it.
+
+[gremlin-groovy]
+----
+cluster = Cluster.open('conf/remote-objects.yaml')
+graph = RemoteGraph.open(DriverRemoteConnection.using(cluster, "graph"))
+g = graph.traversal()
+g.V().valueMap(true)
+graph.close()
+cluster.close()
+----
+
+If the `Cluster` instance is supplied externally, as is shown above, then it is not closed implicitly by the close of
+the `RemoteGraph`.  In this case, the `Cluster` must be closed explicitly.
+
+WARNING: `RemoteGraph` does not support steps that use lambdas in the `Traversal`. Lambda expressions are not
+serializable and therefore can't be remotely executed.
+
 Configuring
 ~~~~~~~~~~~
 
@@ -847,7 +964,6 @@
 |serializers |A `List` of `Map` settings, where each `Map` represents a `MessageSerializer` implementation to use along with its configuration. |_none_
 |serializers[X].className |The full class name of the `MessageSerializer` implementation. |_none_
 |serializers[X].config |A `Map` containing `MessageSerializer` specific configurations. |_none_
-|serializedResponseTimeout |The amount of time in milliseconds before a response serialization times out.  The notion of "response serialization" refers to the time it takes for Gremlin Server to iterate an entire result after the script is evaluated in the `ScriptEngine`. |30000
 |ssl.enabled |Determines if SSL is turned on or not. |false
 |ssl.keyCertChainFile |The X.509 certificate chain file in PEM format. If this value is not present and `ssl.enabled` is `true` a self-signed certificate will be used (not suitable for production). |_none_
 |ssl.keyFile |The `PKCS#8` private key file in PEM format. If this value is not present and `ssl.enabled` is `true` a self-signed certificate will be used (not suitable for production). |_none_
@@ -866,8 +982,8 @@
 link:http://repo1.maven.org/maven2/org/acplt/oncrpc/1.0.7/[here] and copy it to the Gremlin Server `/lib` directory
 before starting the server.
 
-Security
-^^^^^^^^
+Security and Execution
+^^^^^^^^^^^^^^^^^^^^^^
 
 image:gremlin-server-secure.png[width=175,float=right] Gremlin Server provides for several features that aid in the
 security of the graphs that it exposes.  It has built in SSL support and a pluggable authentication framework using
@@ -1038,6 +1154,7 @@
 |=========================================================
 |Customizer |Description
 |`CompileStaticCustomizerProvider` |Applies `CompileStatic` annotations to incoming scripts thus removing dynamic dispatch. More information about static compilation can be found in the link:http://docs.groovy-lang.org/latest/html/documentation/#_static_compilation[Groovy Documentation].  It is possible to configure this `CustomizerProvider` by specifying a comma separated list of link:http://docs.groovy-lang.org/latest/html/documentation/#Typecheckingextensions-Workingwithextensions[type checking extensions] that can have the effect of securing calls to various methods.
+|`ConfigurationCustomizerProvider` |Allows configuration of the the Groovy `CompilerConfiguration` object by taking a `Map` of key/value pairs where the "key" is a property to set on the `CompilerConfiguration`.
 |`ThreadInterruptCustomizerProvider` |Injects checks for thread interruption, thus allowing the thread to potentially respect calls to `Thread.interrupt()`
 |`TimedInterruptCustomizerProvider` |Injects checks into loops to interrupt them if they exceed the configured timeout in milliseconds.
 |`TypeCheckedCustomizerProvider` |Similar to the above mentioned, `CompileStaticCustomizerProvider`, the `TypeCheckedCustomizerProvider` injects `TypeChecked` annotations to incoming scripts.  More information on the nature of this annotation can be found in the link:http://docs.groovy-lang.org/latest/html/documentation/#_the_code_typechecked_code_annotation[Groovy Documentation].  It too takes a comma separated list of link:http://docs.groovy-lang.org/latest/html/documentation/#Typecheckingextensions-Workingwithextensions[type checking extensions].
@@ -1249,6 +1366,9 @@
 * `op.eval` - the number of script evaluations, mean rate, 1, 5, and 15 minute rates, minimum, maximum, median, mean,
 and standard deviation evaluation times, as well as the 75th, 95th, 98th, 99th and 99.9th percentile evaluation times
 (note that these time apply to both sessionless and in-session requests).
+* `op.traversal` - the number of `Traveral` executions, mean rate, 1, 5, and 15 minute rates, minimum, maximum, median,
+mean, and standard deviation evaluation times, as well as the 75th, 95th, 98th, 99th and 99.9th percentile evaluation
+times.
 
 Best Practices
 ~~~~~~~~~~~~~~
@@ -1271,20 +1391,21 @@
 ** If the bulk of the scripts being processed are expected to be "fast", then a good starting point for this setting is `2*threadPoolWorker`.
 ** If the bulk of the scripts being processed are expected to be "slow", then a good starting point for this setting is `4*threadPoolWorker`.
 * Scripts that are "slow" can really hurt Gremlin Server if they are not properly accounted for.  `ScriptEngine`
-evaluations are blocking operations that aren't easily interrupted, so once a "slow" script is being evaluated in
+evaluations are blocking operations that aren't always easily interrupted, so once a "slow" script is being evaluated in
 the context of a `ScriptEngine` it must finish its work.  Lots of "slow" scripts will eventually consume the
 `gremlinPool` preventing other scripts from getting processed from the queue.
-** To limit the impact of this problem consider properly setting the `scriptEvaluationTimeout` and the `serializedResponseTimeout` to something "sane".
-** Test the traversals being sent to Gremlin Server and determine the maximum time they take to evaluate and iterate
-over results, then set these configurations accordingly.
-** Note that `scriptEvaluationTimeout` does not interrupt the evaluation on timeout.  It merely allows Gremlin Server
-to "ignore" the result of that evaluation, which means the thread in the `gremlinPool` will still be consumed after
-the timeout.
-** The `serializedResponseTimeout` will kill the result iteration process and prevent additional processing.  In most
-situations, the iteration and serialization process is the more costly step in this process as an errant script that
-returns a million or more results could send Gremlin Server into a long streaming cycle.  Script evaluation on the
-other hand is usually very fast, occurring on the order of milliseconds, but that is entirely dependent on the
-contents of the script itself.
+** To limit the impact of this problem, consider properly setting the `scriptEvaluationTimeout` to something "sane".
+In other words, test the traversals being sent to Gremlin Server and determine the maximum time they take to evaluate
+and iterate over results, then set the timeout value accordingly.
+** Note that `scriptEvaluationTimeout` can only attempt to interrupt the evaluation on timeout.  It allows Gremlin
+Server to "ignore" the result of that evaluation, which means the thread in the `gremlinPool` that did the evaluation
+may still be consumed after the timeout.
+* Graph element serialization for `Vertex` and `Edge` can be expensive, as their data structures are complex given the
+possible existence of multi-properties and meta-properties. When returning data from Gremlin Server only return the
+data that is required. For example, if only two properties of a `Vertex` are needed then simply return the two rather
+than returning the entire `Vertex` object itself. Even with an entire `Vertex`, it is typically much faster to issue
+the query as `g.V(1).valueMap(true)` than `g.V(1)`, as the former returns a `Map` of the same data as a `Vertex`, but
+without all the associated structure which can slow the response.
 
 [[parameterized-scripts]]
 Parameterized Scripts
@@ -1517,18 +1638,18 @@
 Gephi Plugin
 ~~~~~~~~~~~~
 
-image:gephi-logo.png[width=200, float=left] link:http://gephi.github.io/[Gephi] is an interactive visualization,
-exploration, and analysis platform for graphs. The link:https://marketplace.gephi.org/plugin/graph-streaming/[Graph Streaming]
-plugin for Gephi provides an link:https://wiki.gephi.org/index.php/Graph_Streaming[API] that can be leveraged to
-stream graphs and visualize traversals interactively through the Gremlin Gephi Plugin.
+image:gephi-logo.png[width=200, float=left] link:http://gephi.org/[Gephi] is an interactive visualization,
+exploration, and analysis platform for graphs. The link:https://gephi.org/plugins/#/plugin/graphstreaming[Graph Streaming]
+plugin for Gephi provides an API that can be leveraged to stream graph data to a running Gephi application. The Gephi
+plugin for Gremlin Console utilizes this API to allow for graph and traversal visualization.
 
-The following instructions assume that Gephi has been download and installed.  It further assumes that the Graph
-Streaming plugin has been installed (`Tools > Plugins`). The following instructions explain how to visualize a `Graph`
-and `Traversal`.
+The Gephi plugin for Gremlin Console is compatible with Gephi 0.9.x. The following instructions assume that Gephi
+has been download and installed.  It further assumes that the Graph Streaming plugin has been installed
+(`Tools > Plugins`). The following instructions explain how to visualize a `Graph` and `Traversal`.
 
 In Gephi, create a new project with `File > New Project`.  In the lower left view, click the "Streaming" tab, open the
 Master drop down, and right click `Master Server > Start` which starts the Graph Streaming server in Gephi and by
-default accepts requests at `http://localhost:8080/workspace0`:
+default accepts requests at `http://localhost:8080/workspace1`:
 
 image::gephi-start-server.png[width=800]
 
@@ -1573,12 +1694,15 @@
 :remote config visualTraversal graph                   <1>
 traversal = vg.V(2).in().out('knows').
                     has('age',gt(30)).outE('created').
-                    has('weight',gt(0.5d)).inV();null
-:> traversal                                           <2>
+                    has('weight',gt(0.5d)).inV();[]    <2>
+:> traversal                                           <3>
 ----
 
-<1> Configure a "visual traversal" from your "graph" - this must be a `Graph` instance.
-<2> Submit the `Traversal` to visualize to Gephi.
+<1> Configure a "visual traversal" from your "graph" - this must be a `Graph` instance. This command will create a
+new `TraversalSource` called "vg" that must be used to visualize any spawned traversals in Gephi.
+<2> Define the traversal to be visualized. Note that ending the line with `;[]` simply prevents iteration of
+the traversal before it is submitted.
+<3> Submit the `Traversal` to visualize to Gephi.
 
 When the `:>` line is called, each step of the `Traversal` that produces or filters vertices generates events to
 Gephi. The events update the color and size of the vertices at that step with `startRGBColor` and `startSize`
@@ -1610,7 +1734,7 @@
 [width="100%",cols="3,10,^2",options="header"]
 |=========================================================
 |Parameter |Description |Default
-|workspace |The name of the workspace that your Graph Streaming server is started for. |workspace0
+|workspace |The name of the workspace that your Graph Streaming server is started for. |workspace1
 |host |The host URL where the Graph Streaming server is configured for. |localhost
 |port |The port number of the URL that the Graph Streaming server is listening on. |8080
 |sizeDecrementRate |The rate at which the size of an element decreases on each step of the visualization. |0.33
@@ -1619,7 +1743,7 @@
 |startSize |The size an element should be when it is most recently visited. |20
 |colorToFade |A single char from the set `{r,g,b,R,G,B}` determining which color to fade for vertices visited in prior steps |g
 |colorFadeRate |A float value in the range `(0.0,1.0]` which is multiplied against the current `colorToFade` value for prior vertices; a `1.0` value effectively turns off the color fading of prior step visited vertices |0.7
-|visualTraversal |Creates a `TraversalSource` variable in the Console named `vg` which can be used for visualizing traversals. This configuration option takes two parameters.  The first is required and is the name of the `Graph` instance variable that will generate the `TraversalSource`.  The second parameter is the variable name that the `TraversalSource` should have when referenced in the Console.  If left unspecified, this value defaults to `vg`.
+|visualTraversal |Creates a `TraversalSource` variable in the Console named `vg` which can be used for visualizing traversals. This configuration option takes two parameters.  The first is required and is the name of the `Graph` instance variable that will generate the `TraversalSource`.  The second parameter is the variable name that the `TraversalSource` should have when referenced in the Console.  If left unspecified, this value defaults to `vg`. |vg
 |=========================================================
 
 [[server-plugin]]
diff --git a/docs/src/reference/implementations-hadoop.asciidoc b/docs/src/reference/implementations-hadoop.asciidoc
index b89c0a1..34e6f67 100644
--- a/docs/src/reference/implementations-hadoop.asciidoc
+++ b/docs/src/reference/implementations-hadoop.asciidoc
@@ -84,11 +84,13 @@
 ==>storage[DFS[DFSClient[clientName=DFSClient_NONMAPREDUCE_1229457199_1, ugi=user (auth:SIMPLE)]]] // GOOD
 ----
 
-The `HADOOP_GREMLIN_LIBS` references locations that contains jars that should be uploaded to a respective
+The `HADOOP_GREMLIN_LIBS` references locations that contain jars that should be uploaded to a respective
 distributed cache (link:http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html[YARN] or SparkServer).
-Note that the locations in `HADOOP_GREMLIN_LIBS` can be a colon-separated (`:`) and all jars from all locations will
-be loaded into the cluster. Typically, only the jars of the respective GraphComputer are required to be loaded (e.g.
-`GiraphGraphComputer` plugin lib directory).
+Note that the locations in `HADOOP_GREMLIN_LIBS` can be colon-separated (`:`) and all jars from all locations will
+be loaded into the cluster. Locations can be local paths (e.g. `/path/to/libs`), but may also be prefixed with a file
+scheme to reference files or directories in different file systems (e.g. `hdfs:///path/to/distributed/libs`).
+Typically, only the jars of the respective GraphComputer are required to be loaded (e.g. `GiraphGraphComputer` plugin lib
+directory).
 
 [source,shell]
 export HADOOP_GREMLIN_LIBS=/usr/local/gremlin-console/ext/giraph-gremlin/lib
@@ -97,26 +99,22 @@
 ~~~~~~~~~~~~~~~~
 
 `HadoopGraph` makes use of properties files which ultimately get turned into Apache configurations and/or
-Hadoop configurations. The example properties file presented below is located at `conf/hadoop/hadoop-gryo.properties`.
+Hadoop configurations.
 
 [source,text]
 gremlin.graph=org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph
 gremlin.hadoop.inputLocation=tinkerpop-modern.kryo
-gremlin.hadoop.graphInputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
+gremlin.hadoop.graphReader=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
 gremlin.hadoop.outputLocation=output
-gremlin.hadoop.graphOutputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat
+gremlin.hadoop.graphWriter=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat
 gremlin.hadoop.jarsInDistributedCache=true
+gremlin.hadoop.defaultGraphComputer=org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer
 ####################################
 # Spark Configuration              #
 ####################################
 spark.master=local[4]
 spark.executor.memory=1g
 spark.serializer=org.apache.tinkerpop.gremlin.spark.structure.io.gryo.GryoSerializer
-####################################
-# SparkGraphComputer Configuration #
-####################################
-gremlin.spark.graphInputRDD=org.apache.tinkerpop.gremlin.spark.structure.io.InputRDDFormat
-gremlin.spark.graphOutputRDD=org.apache.tinkerpop.gremlin.spark.structure.io.OutputRDDFormat
 gremlin.spark.persistContext=true
 #####################################
 # GiraphGraphComputer Configuration #
@@ -139,14 +137,13 @@
 |Property |Description
 |gremlin.graph |The class of the graph to construct using GraphFactory.
 |gremlin.hadoop.inputLocation |The location of the input file(s) for Hadoop-Gremlin to read the graph from.
-|gremlin.hadoop.graphInputFormat |The format that the graph input file(s) are represented in.
+|gremlin.hadoop.graphReader |The class that the graph input file(s) are read with (e.g. an `InputFormat`).
 |gremlin.hadoop.outputLocation |The location to write the computed HadoopGraph to.
-|gremlin.hadoop.graphOutputFormat |The format that the output file(s) should be represented in.
+|gremlin.hadoop.graphWriter |The class that the graph output file(s) are written with (e.g. an `OutputFormat`).
 |gremlin.hadoop.jarsInDistributedCache |Whether to upload the Hadoop-Gremlin jars to a distributed cache (necessary if jars are not on the machines' classpaths).
+|gremlin.hadoop.defaultGraphComputer |The default `GraphComputer` to use when `graph.compute()` is called. This is optional.
 |=========================================================
 
-
-
 Along with the properties above, the numerous link:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/core-default.xml[Hadoop specific properties]
 can be added as needed to tune and parameterize the executed Hadoop-Gremlin job on the respective Hadoop cluster.
 
@@ -242,11 +239,6 @@
 it is best to *not* have both Spark and Giraph plugins loaded in the same console session nor in the same Java
 project (though intelligent `<exclusion>`-usage can help alleviate conflicts in a Java project).
 
-WARNING: It is important to note that when doing an OLAP traversal, any resulting vertices, edges, or properties will be
-attached to the source graph. For Hadoop-based graphs, this may lead to linear search times on massive graphs. Thus,
-if vertex, edge, or property objects are to be returns (as a final result), it is best to `.id()` to get the id
-of the object and not the actual attached object.
-
 [[mapreducegraphcomputer]]
 MapReduceGraphComputer
 ^^^^^^^^^^^^^^^^^^^^^^
@@ -290,7 +282,7 @@
 [gremlin-groovy]
 ----
 graph = GraphFactory.open('conf/hadoop/hadoop-gryo.properties')
-g = graph.traversal(computer(SparkGraphComputer))
+g = graph.traversal().withComputer(SparkGraphComputer)
 g.V().count()
 g.V().out().out().values('name')
 ----
@@ -300,7 +292,7 @@
 [gremlin-groovy]
 ----
 graph = GraphFactory.open('conf/hadoop/hadoop-gryo.properties')
-g = graph.traversal(computer(SparkGraphComputer))
+g = graph.traversal().withComputer(SparkGraphComputer)
 :remote connect tinkerpop.hadoop graph g
 :> g.V().group().by{it.value('name')[1]}.by('name')
 ----
@@ -324,8 +316,8 @@
 [width="100%",cols="2,10",options="header"]
 |========================================================
 |Property |Description
-|gremlin.spark.graphInputRDD |A class for creating RDD's from underlying graph data, defaults to Hadoop `InputFormat`.
-|gremlin.spark.graphOutputRDD |A class for output RDD's, defaults to Hadoop `OutputFormat`.
+|gremlin.hadoop.graphReader |A class for reading a graph-based RDD (e.g. an `InputRDD` or `InputFormat`).
+|gremlin.hadoop.graphWriter |A class for writing a graph-based RDD (e.g. an `OutputRDD` or `OutputFormat`).
 |gremlin.spark.graphStorageLevel |What `StorageLevel` to use for the cached graph during job execution (default `MEMORY_ONLY`).
 |gremlin.spark.persistContext |Whether to create a new `SparkContext` for every `SparkGraphComputer` or to reuse an existing one.
 |gremlin.spark.persistStorageLevel |What `StorageLevel` to use when persisted RDDs via `PersistedOutputRDD` (default `MEMORY_ONLY`).
@@ -335,16 +327,14 @@
 ++++++++++++++++++++++
 
 If the provider/user does not want to use Hadoop `InputFormats`, it is possible to leverage Spark's RDD
-constructs directly. There is a `gremlin.spark.graphInputRDD` configuration that references a `Class<? extends
-InputRDD>`. An `InputRDD` provides a read method that takes a `SparkContext` and returns a graphRDD. Likewise, use
-`gremlin.spark.graphOutputRDD` and the respective `OutputRDD`.
+constructs directly. An `InputRDD` provides a read method that takes a `SparkContext` and returns a graphRDD. Likewise,
+and `OutputRDD` is used for writing a graphRDD.
 
 If the graph system provider uses an `InputRDD`, the RDD should maintain an associated `org.apache.spark.Partitioner`. By doing so,
 `SparkGraphComputer` will not partition the loaded graph across the cluster as it has already been partitioned by the graph system provider.
-This can save a significant amount of time and space resources.
-If the `InputRDD` does not have a registered partitioner, `SparkGraphComputer` will partition the graph using
-a `org.apache.spark.HashPartitioner` with the number of partitions being either the number of existing partitions in the input (e.g. input splits)
-or the user specified number of `GraphComputer.workers()`.
+This can save a significant amount of time and space resources. If the `InputRDD` does not have a registered partitioner,
+`SparkGraphComputer` will partition the graph using a `org.apache.spark.HashPartitioner` with the number of partitions
+being either the number of existing partitions in the input (i.e. input splits) or the user specified number of `GraphComputer.workers()`.
 
 Storage Levels
 ++++++++++++++
@@ -385,7 +375,7 @@
 ----
 hdfs.copyFromLocal('data/tinkerpop-modern.kryo', 'tinkerpop-modern.kryo')
 graph = GraphFactory.open('conf/hadoop/hadoop-gryo.properties')
-graph.configuration().setProperty('gremlin.hadoop.graphOutputFormat', 'org.apache.tinkerpop.gremlin.hadoop.structure.io.graphson.GraphSONOutputFormat')
+graph.configuration().setProperty('gremlin.hadoop.graphWriter', 'org.apache.tinkerpop.gremlin.hadoop.structure.io.graphson.GraphSONOutputFormat')
 graph.compute(SparkGraphComputer).program(BulkDumperVertexProgram.build().create()).submit().get()
 hdfs.ls('output')
 hdfs.head('output/~g')
@@ -422,7 +412,7 @@
 # Hadoop Graph Configuration
 #
 gremlin.graph=org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph
-gremlin.hadoop.graphInputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
+gremlin.hadoop.graphReader=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
 gremlin.hadoop.inputLocation=grateful-dead.kryo
 gremlin.hadoop.outputLocation=output
 gremlin.hadoop.jarsInDistributedCache=true
@@ -491,7 +481,7 @@
 [gremlin-groovy]
 ----
 graph = GraphFactory.open('conf/hadoop/hadoop-gryo.properties')
-g = graph.traversal(computer(GiraphGraphComputer))
+g = graph.traversal().withComputer(GiraphGraphComputer)
 g.V().count()
 g.V().out().out().values('name')
 ----
@@ -504,13 +494,11 @@
 [gremlin-groovy]
 ----
 graph = GraphFactory.open('conf/hadoop/hadoop-gryo.properties')
-g = graph.traversal(computer(GiraphGraphComputer))
+g = graph.traversal().withComputer(GiraphGraphComputer)
 :remote connect tinkerpop.hadoop graph g
 :> g.V().group().by{it.value('name')[1]}.by('name')
 result
 result.memory.runtime
-result.memory.keys()
-result.memory.get('~reducing')
 ----
 
 NOTE: If the user explicitly specifies `giraph.maxWorkers` and/or `giraph.numComputeThreads` in the configuration,
@@ -549,8 +537,8 @@
 # Hadoop Graph Configuration
 #
 gremlin.graph=org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph
-gremlin.hadoop.graphInputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
-gremlin.hadoop.graphOutputFormat=org.apache.hadoop.mapreduce.lib.output.NullOutputFormat
+gremlin.hadoop.graphReader=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
+gremlin.hadoop.graphWriter=org.apache.hadoop.mapreduce.lib.output.NullOutputFormat
 gremlin.hadoop.inputLocation=grateful-dead.kryo
 gremlin.hadoop.outputLocation=output
 gremlin.hadoop.jarsInDistributedCache=true
@@ -727,7 +715,7 @@
 ^^^^^^^^^^^^^^^^^^^^^
 
 The distributed file system of Hadoop is called link:http://en.wikipedia.org/wiki/Apache_Hadoop#Hadoop_distributed_file_system[HDFS].
-The results of any OLAP operation are stored in HDFS accessible via `hdfs`. For local file system access, there is `local`.
+The results of any OLAP operation are stored in HDFS accessible via `hdfs`. For local file system access, there is `fs`.
 
 [gremlin-groovy]
 ----
@@ -753,8 +741,7 @@
 ----
 Spark.create('local[4]')
 graph = GraphFactory.open('conf/hadoop/hadoop-gryo.properties')
-graph.configuration().setProperty('gremlin.spark.graphOutputRDD', PersistedOutputRDD.class.getCanonicalName())
-graph.configuration().clearProperty('gremlin.hadoop.graphOutputFormat')
+graph.configuration().setProperty('gremlin.hadoop.graphWriter', PersistedOutputRDD.class.getCanonicalName())
 graph.configuration().setProperty('gremlin.spark.persistContext',true)
 graph.compute(SparkGraphComputer).program(PeerPressureVertexProgram.build().create(graph)).mapReduce(ClusterCountMapReduce.build().memoryKey('clusterCount').create()).submit().get();
 spark.ls()
diff --git a/docs/src/reference/index.asciidoc b/docs/src/reference/index.asciidoc
index 0006403..eefbd00 100644
--- a/docs/src/reference/index.asciidoc
+++ b/docs/src/reference/index.asciidoc
@@ -14,7 +14,7 @@
 See the License for the specific language governing permissions and
 limitations under the License.
 ////
-image::apache-tinkerpop-logo.png[width=500]
+image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]
 
 *x.y.z*
 
diff --git a/docs/src/reference/intro.asciidoc b/docs/src/reference/intro.asciidoc
index a8c6a1a..01df052 100644
--- a/docs/src/reference/intro.asciidoc
+++ b/docs/src/reference/intro.asciidoc
@@ -274,7 +274,7 @@
 -----oOOo-(3)-oOOo-----
 gremlin> graph = TinkerFactory.createModern() // <1>
 ==>tinkergraph[vertices:6 edges:6]
-gremlin> g = graph.traversal(standard())        // <2>
+gremlin> g = graph.traversal()        // <2>
 ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
 gremlin> g.V().has('name','marko').out('knows').values('name') // <3>
 ==>vadas
diff --git a/docs/src/reference/the-graph.asciidoc b/docs/src/reference/the-graph.asciidoc
index e0e59f9..8b4916a 100644
--- a/docs/src/reference/the-graph.asciidoc
+++ b/docs/src/reference/the-graph.asciidoc
@@ -81,7 +81,7 @@
 [gremlin-groovy]
 ----
 graph = TinkerGraph.open()
-g = graph.traversal(standard())
+g = graph.traversal()
 v = g.addV('name','marko','name','marko a. rodriguez').next()
 g.V(v).properties('name').count() <1>
 v.property(list, 'name', 'm. a. rodriguez') <2>
@@ -740,7 +740,7 @@
 ==>org.apache.tinkerpop.gremlin.structure.io.graphson.LegacyGraphSONReader@64337702
 gremlin> r.readGraph(new FileInputStream('/tmp/tp2.json'), graph)
 ==>null
-gremlin> g = graph.traversal(standard())
+gremlin> g = graph.traversal()
 ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
 gremlin> g.E()
 ==>e[11][4-created->3]
diff --git a/docs/src/reference/the-graphcomputer.asciidoc b/docs/src/reference/the-graphcomputer.asciidoc
index f9116fb..25ae39e 100644
--- a/docs/src/reference/the-graphcomputer.asciidoc
+++ b/docs/src/reference/the-graphcomputer.asciidoc
@@ -82,8 +82,8 @@
 ----
 result = graph.compute().program(PageRankVertexProgram.build().create()).submit().get()
 result.memory().runtime
-g = result.graph().traversal(standard())
-g.V().valueMap('name',PageRankVertexProgram.PAGE_RANK)
+g = result.graph().traversal()
+g.V().valueMap()
 ----
 
 NOTE: This model of "vertex-centric graph computing" was made popular by Google's
@@ -140,7 +140,7 @@
 graph = TinkerFactory.createModern()
 result = graph.compute().program(PeerPressureVertexProgram.build().create()).mapReduce(ClusterPopulationMapReduce.build().create()).submit().get()
 result.memory().get('clusterPopulation')
-g = result.graph().traversal(standard())
+g = result.graph().traversal()
 g.V().values(PeerPressureVertexProgram.CLUSTER).groupCount().next()
 g.V().valueMap()
 ----
@@ -160,8 +160,8 @@
 
 IMPORTANT: The MapReduce model of TinkerPop3 does not support MapReduce chaining. Thus, the order in which the
 MapReduce jobs are executed is irrelevant. This is made apparent when realizing that the `map()`-stage takes a
-`Vertex` as its input and the `reduce()`-stage yields key/value pairs. Thus, the results of reduce can not feed back
-into map.
+`Vertex` as its input and the `reduce()`-stage yields key/value pairs. Thus, the results of reduce can not fed back
+into a `map()`.
 
 A Collection of VertexPrograms
 ------------------------------
@@ -186,54 +186,73 @@
 
 [source,java]
 ----
-public class PageRankVertexProgram implements VertexProgram<Double> { <1>
+public class PageRankVertexProgram implements VertexProgram<Double> {  <1>
 
-    private MessageScope.Local<Double> incidentMessageScope = MessageScope.Local.of(__::outE); <2>
-    private MessageScope.Local<Double> countMessageScope = MessageScope.Local.of(new MessageScope.Local.ReverseTraversalSupplier(this.incidentMessageScope));
-
-    public static final String PAGE_RANK = "gremlin.pageRankVertexProgram.pageRank"; <3>
-    public static final String EDGE_COUNT = "gremlin.pageRankVertexProgram.edgeCount";
-
+    public static final String PAGE_RANK = "gremlin.pageRankVertexProgram.pageRank";
+    private static final String EDGE_COUNT = "gremlin.pageRankVertexProgram.edgeCount";
+    private static final String PROPERTY = "gremlin.pageRankVertexProgram.property";
     private static final String VERTEX_COUNT = "gremlin.pageRankVertexProgram.vertexCount";
     private static final String ALPHA = "gremlin.pageRankVertexProgram.alpha";
     private static final String TOTAL_ITERATIONS = "gremlin.pageRankVertexProgram.totalIterations";
-    private static final String INCIDENT_TRAVERSAL_SUPPLIER = "gremlin.pageRankVertexProgram.incidentTraversalSupplier";
+    private static final String EDGE_TRAVERSAL = "gremlin.pageRankVertexProgram.edgeTraversal";
+    private static final String INITIAL_RANK_TRAVERSAL = "gremlin.pageRankVertexProgram.initialRankTraversal";
 
-    private ConfigurationTraversal<Vertex, Edge> configurationTraversal;
+    private MessageScope.Local<Double> incidentMessageScope = MessageScope.Local.of(__::outE); <2>
+    private MessageScope.Local<Double> countMessageScope = MessageScope.Local.of(new MessageScope.Local.ReverseTraversalSupplier(this.incidentMessageScope));
+    private PureTraversal<Vertex, Edge> edgeTraversal = null;
+    private PureTraversal<Vertex, ? extends Number> initialRankTraversal = null;
     private double vertexCountAsDouble = 1.0d;
     private double alpha = 0.85d;
     private int totalIterations = 30;
+    private String property = PAGE_RANK; <3>
+    private Set<VertexComputeKey> vertexComputeKeys;
 
-    private static final Set<String> COMPUTE_KEYS = new HashSet<>(Arrays.asList(PAGE_RANK, EDGE_COUNT));
+    private PageRankVertexProgram() {
 
-    private PageRankVertexProgram() {}
+    }
 
     @Override
     public void loadState(final Graph graph, final Configuration configuration) { <4>
-        if (configuration.containsKey(TRAVERSAL_SUPPLIER)) {
-                    this.configurationTraversal = ConfigurationTraversal.loadState(graph, configuration, TRAVERSAL_SUPPLIER);
-                    this.incidentMessageScope = MessageScope.Local.of(this.configurationTraversal);
-                    this.countMessageScope = MessageScope.Local.of(new MessageScope.Local.ReverseTraversalSupplier(this.incidentMessageScope));
-                }
+        if (configuration.containsKey(INITIAL_RANK_TRAVERSAL))
+            this.initialRankTraversal = PureTraversal.loadState(configuration, INITIAL_RANK_TRAVERSAL, graph);
+        if (configuration.containsKey(EDGE_TRAVERSAL)) {
+            this.edgeTraversal = PureTraversal.loadState(configuration, EDGE_TRAVERSAL, graph);
+            this.incidentMessageScope = MessageScope.Local.of(() -> this.edgeTraversal.get().clone());
+            this.countMessageScope = MessageScope.Local.of(new MessageScope.Local.ReverseTraversalSupplier(this.incidentMessageScope));
+        }
         this.vertexCountAsDouble = configuration.getDouble(VERTEX_COUNT, 1.0d);
         this.alpha = configuration.getDouble(ALPHA, 0.85d);
         this.totalIterations = configuration.getInt(TOTAL_ITERATIONS, 30);
+        this.property = configuration.getString(PROPERTY, PAGE_RANK);
+        this.vertexComputeKeys = new HashSet<>(Arrays.asList(VertexComputeKey.of(this.property, false), VertexComputeKey.of(EDGE_COUNT, true))); <5>
     }
 
     @Override
     public void storeState(final Configuration configuration) {
-        configuration.setProperty(VERTEX_PROGRAM, PageRankVertexProgram.class.getName());
+        VertexProgram.super.storeState(configuration);
         configuration.setProperty(VERTEX_COUNT, this.vertexCountAsDouble);
         configuration.setProperty(ALPHA, this.alpha);
         configuration.setProperty(TOTAL_ITERATIONS, this.totalIterations);
-        if (null != this.traversalSupplier) {
-            this.traversalSupplier.storeState(configuration);
-        }
+        configuration.setProperty(PROPERTY, this.property);
+        if (null != this.edgeTraversal)
+            this.edgeTraversal.storeState(configuration, EDGE_TRAVERSAL);
+        if (null != this.initialRankTraversal)
+            this.initialRankTraversal.storeState(configuration, INITIAL_RANK_TRAVERSAL);
     }
 
     @Override
-    public Set<String> getElementComputeKeys() { <5>
-        return COMPUTE_KEYS;
+    public GraphComputer.ResultGraph getPreferredResultGraph() {
+        return GraphComputer.ResultGraph.NEW;
+    }
+
+    @Override
+    public GraphComputer.Persist getPreferredPersist() {
+        return GraphComputer.Persist.VERTEX_PROPERTIES;
+    }
+
+    @Override
+    public Set<VertexComputeKey> getVertexComputeKeys() {   <6>
+        return this.vertexComputeKeys;
     }
 
     @Override
@@ -242,57 +261,73 @@
     }
 
     @Override
-    public Set<MessageScope> getMessageScopes(final int iteration) {
+    public Set<MessageScope> getMessageScopes(final Memory memory) {
         final Set<MessageScope> set = new HashSet<>();
-        set.add(0 == iteration ? this.countMessageScope : this.incidentMessageScope);
+        set.add(memory.isInitialIteration() ? this.countMessageScope : this.incidentMessageScope);
         return set;
     }
 
     @Override
+    public PageRankVertexProgram clone() {
+        try {
+            final PageRankVertexProgram clone = (PageRankVertexProgram) super.clone();
+            if (null != this.initialRankTraversal)
+                clone.initialRankTraversal = this.initialRankTraversal.clone();
+            return clone;
+        } catch (final CloneNotSupportedException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
+
+    @Override
     public void setup(final Memory memory) {
 
     }
 
-   @Override
-    public void execute(final Vertex vertex, Messenger<Double> messenger, final Memory memory) { <6>
-        if (memory.isInitialIteration()) {  <7>
-            messenger.sendMessage(this.countMessageScope, 1.0d);
-        } else if (1 == memory.getIteration()) {  <8>
-            double initialPageRank = 1.0d / this.vertexCountAsDouble;
+    @Override
+    public void execute(final Vertex vertex, Messenger<Double> messenger, final Memory memory) { <7>
+        if (memory.isInitialIteration()) {
+            messenger.sendMessage(this.countMessageScope, 1.0d); <8>
+        } else if (1 == memory.getIteration()) {
+            double initialPageRank = (null == this.initialRankTraversal ?
+                    1.0d :
+                    TraversalUtil.apply(vertex, this.initialRankTraversal.get()).doubleValue()) / this.vertexCountAsDouble;  <9>
             double edgeCount = IteratorUtils.reduce(messenger.receiveMessages(), 0.0d, (a, b) -> a + b);
-            vertex.property(PAGE_RANK, initialPageRank);
-            vertex.property(EDGE_COUNT, edgeCount);
-            messenger.sendMessage(this.incidentMessageScope, initialPageRank / edgeCount);
-        } else { <9>
-            double newPageRank = IteratorUtils.reduce(messenger.receiveMessages(), 0.0d, (a, b) -> a + b);
+            vertex.property(VertexProperty.Cardinality.single, this.property, initialPageRank);
+            vertex.property(VertexProperty.Cardinality.single, EDGE_COUNT, edgeCount);
+            if (!this.terminate(memory)) // don't send messages if this is the last iteration
+                messenger.sendMessage(this.incidentMessageScope, initialPageRank / edgeCount);
+        } else {
+            double newPageRank = IteratorUtils.reduce(messenger.receiveMessages(), 0.0d, (a, b) -> a + b); <10>
             newPageRank = (this.alpha * newPageRank) + ((1.0d - this.alpha) / this.vertexCountAsDouble);
-            vertex.property(PAGE_RANK, newPageRank);
-            messenger.sendMessage(this.incidentMessageScope, newPageRank / vertex.<Double>value(EDGE_COUNT));
+            vertex.property(VertexProperty.Cardinality.single, this.property, newPageRank);
+            if (!this.terminate(memory)) // don't send messages if this is the last iteration
+                messenger.sendMessage(this.incidentMessageScope, newPageRank / vertex.<Double>value(EDGE_COUNT));
         }
     }
 
     @Override
-    public boolean terminate(final Memory memory) { <10>
-        return memory.getIteration() >= this.totalIterations;
+    public boolean terminate(final Memory memory) {
+        return memory.getIteration() >= this.totalIterations;  <11>
     }
 
     @Override
     public String toString() {
-        return StringFactory.vertexProgramString(this, "alpha=" + this.alpha + ",iterations=" + this.totalIterations);
+        return StringFactory.vertexProgramString(this, "alpha=" + this.alpha + ", iterations=" + this.totalIterations);
     }
-}
 ----
 
 <1> `PageRankVertexProgram` implements `VertexProgram<Double>` because the messages it sends are Java doubles.
 <2> The default path of energy propagation is via outgoing edges from the current vertex.
-<3> The resulting PageRank values for the vertices are stored as a hidden property.
+<3> The resulting PageRank values for the vertices are stored as a vertex property.
 <4> A vertex program is constructed using an Apache `Configuration` to ensure easy dissemination across a cluster of JVMs.
-<5> A vertex program must define the "compute keys" that are the properties being operated on during the computation.
-<6> The "while"-loop of the vertex program.
-<7> In order to determine how to distribute the energy to neighbors, a "1"-count is used to determine how many incident vertices exist for the `MessageScope`.
-<8> Initially, each vertex is provided an equal amount of energy represented as a double.
-<9> Energy is aggregated, computed on according to the PageRank algorithm, and then disseminated according to the defined `MessageScope.Local`.
-<10> The computation is terminated after a pre-defined number of iterations.
+<5> `EDGE_COUNT` is a transient "scratch data" compute key while `PAGE_RANK` is not.
+<6> A vertex program must define the "compute keys" that are the properties being operated on during the computation.
+<7> The "while"-loop of the vertex program.
+<8> In order to determine how to distribute the energy to neighbors, a "1"-count is used to determine how many incident vertices exist for the `MessageScope`.
+<9> Initially, each vertex is provided an equal amount of energy represented as a double.
+<10> Energy is aggregated, computed on according to the PageRank algorithm, and then disseminated according to the defined `MessageScope.Local`.
+<11> The computation is terminated after a pre-defined number of iterations.
 
 The above `PageRankVertexProgram` is used as follows.
 
@@ -300,8 +335,17 @@
 ----
 result = graph.compute().program(PageRankVertexProgram.build().create()).submit().get()
 result.memory().runtime
-g = result.graph().traversal(standard())
-g.V().valueMap('name',PageRankVertexProgram.PAGE_RANK)
+g = result.graph().traversal()
+g.V().valueMap()
+----
+
+Note that `GraphTraversal` provides a <<pagerank-step,`pageRank()`>>-step.
+
+[gremlin-groovy,modern]
+----
+g = graph.traversal().withComputer()
+g.V().pageRank().valueMap()
+g.V().pageRank().by('pageRank').times(5).order().by('pageRank').valueMap()
 ----
 
 [[peerpressurevertexprogram]]
@@ -319,6 +363,15 @@
   .. If there is a tie, then the cluster with the lowest `toString()` comparison is selected.
  . Steps 3 and 4 repeat until either a max number of iterations has occurred or no vertex has adjusted its cluster anymore.
 
+Note that `GraphTraversal` provides a <<peerpressure-step,`peerPressure()`>>-step.
+
+[gremlin-groovy,modern]
+----
+g = graph.traversal().withComputer()
+g.V().peerPressure().by('cluster').valueMap()
+g.V().peerPressure().by(outE('knows')).by('cluster').valueMap()
+----
+
 [[bulkdumpervertexprogram]]
 BulkDumperVertexProgram
 ~~~~~~~~~~~~~~~~~~~~~~~
@@ -388,7 +441,7 @@
 ~~~~~~~~~~~~~~~~~~~~~~
 
 image:traversal-vertex-program.png[width=250,float=left] The `TraversalVertexProgram` is a "special" VertexProgram in
-that it can be executed via a `GraphTraversal` with a `ComputerTraversalEngine`. In Gremlin, it is possible to have
+that it can be executed via a `Traversal` and a `GraphComputer`. In Gremlin, it is possible to have
 the same traversal executed using either the standard OTLP-engine or the `GraphComputer` OLAP-engine. The difference
 being where the traversal is submitted.
 
@@ -398,9 +451,9 @@
 
 [gremlin-groovy,modern]
 ----
-g = graph.traversal(standard())
+g = graph.traversal()
 g.V().both().hasLabel('person').values('age').groupCount().next() // OLTP
-g = graph.traversal(computer())
+g = graph.traversal().withComputer()
 g.V().both().hasLabel('person').values('age').groupCount().next() // OLAP
 ----
 
@@ -416,33 +469,25 @@
  . `groupCount()`: Count how many times a particular age has been seen.
 
 While 5 iterations were presented, in fact, `TraversalVertexProgram` will execute the traversal in only
-3 iterations. The reason being is that `hasLabel('person').values('age').groupCount()` can all be executed in a
-single iteration as any message sent would simply be to the current executing vertex. Thus, a simple optimization
+2 iterations. The reason being is that `g.V().both()` and `hasLabel('person').values('age').groupCount()` can be
+executed in a single iteration as any message sent would simply be to the current executing vertex. Thus, a simple optimization
 exists in Gremlin OLAP called "reflexive message passing" which simulates non-message-passing BSP iterations within a
 single BSP iteration.
 
-When the computation is complete a <<mapreduce,MapReduce>> job executes which aggregates all the `groupCount()`
-sideEffect Map (i.e. "`HashMap`") objects on each vertex into a single local representation (thus, turning the
-distributed Map representation into a local Map representation).
-
-////
-The same OLAP traversal can be executed using the standard `g.compute()` model, though at the expense of verbosity.
+The same OLAP traversal can be executed using the standard `graph.compute()` model, though at the expense of verbosity.
 `TraversalVertexProgram` provides a fluent `Builder` for constructing a `TraversalVertexProgram`. The specified
-`traversal()` can be either a `Supplier<Traversal>` object, a `Supplier<Traversal>` class, or a
-link:http://en.wikipedia.org/wiki/Scripting_for_the_Java_Platform[JSR-223] script that will generate (i.e. supply) a
-`Traversal`. If `traversal()` is supplied a single string, it is assumed that "gremlin-groovy" is the `ScriptEngine`
-to use. If two strings are supplied, then the first string denotes the `ScriptEngine` to evaluate the second string
-script with in order to generate (i.e. supply) the `Traversal`.
+`traversal()` can be either a direct `Traversal` object or a
+link:http://en.wikipedia.org/wiki/Scripting_for_the_Java_Platform[JSR-223] script that will generate a
+`Traversal`. There is no benefit to using the model below. It is demonstrated to help elucidate how Gremlin OLAP traversals
+are ultimately compiled for execution on a `GraphComputer`.
 
 [gremlin-groovy,modern]
 ----
-//g.engine(computer())
-//result = g.compute().program(TraversalVertexProgram.build().traversal(g.V().both().hasLabel('person').values('age').groupCount('a')).create()).submit().get()
-//result.memory().a
-//result.memory().iteration
-//result.memory().runtime
+result = graph.compute().program(TraversalVertexProgram.build().traversal(g.V().both().hasLabel('person').values('age').groupCount('a')).create()).submit().get()
+result.memory().a
+result.memory().iteration
+result.memory().runtime
 ----
-////
 
 [[distributed-gremlin-gotchas]]
 Distributed Gremlin Gotchas
@@ -455,32 +500,51 @@
 Depth-first execution has a limited memory footprint due to link:http://en.wikipedia.org/wiki/Lazy_evaluation[lazy evaluation].
 On the other hand, Gremlin OLAP (via `TraversalVertexProgram`) leverages a
 link:http://en.wikipedia.org/wiki/Breadth-first_search[breadth-first] execution engine which maintains a larger memory
-footprint, but a better time complexity due to vertex-local traversers being able to be merged. The second difference
-is that Gremlin OLTP is executed in a serial fashion, while Gremlin OLAP is executed in a parallel fashion. These two
+footprint, but a better time complexity due to vertex-local traversers being able to be "bulked." The second difference
+is that Gremlin OLTP is executed in a serial/streaming fashion, while Gremlin OLAP is executed in a parallel/step-wise fashion. These two
 fundamental differences lead to the behaviors enumerated below.
 
 image::gremlin-without-a-cause.png[width=200,float=right]
 
-. Traversal sideEffects are represented as a distributed data structure across the graph's vertex set. It is not
-possible to get a global view of a sideEffect until it is aggregated via a <<mapreduce,MapReduce>> job. In some
-situations, the local vertex representation of the sideEffect is sufficient to ensure the intended semantics of the
+. Traversal sideEffects are represented as a distributed data structure across `GraphComputer` workers. It is not
+possible to get a global view of a sideEffect until after an iteration has occurred and global sideEffects are re-broadcasted to the workers.
+In some situations, a "stale" local representation of the sideEffect is sufficient to ensure the intended semantics of the
 traversal are respected. However, this is not generally true so be wary of traversals that require global views of a
-sideEffect.
+sideEffect. To ensure a fresh global representation, use `barrier()` prior to accessing the global sideEffect. Note that this
+only comes into play with custom steps and <<lambda-steps,lambda steps>>. The standard Gremlin step library is respective of OLAP semantics.
 . When evaluating traversals that rely on path information (i.e. the history of the traversal), practical
 computational limits can easily be reached due the link:http://en.wikipedia.org/wiki/Combinatorial_explosion[combinatoric explosion]
 of data. With path computing enabled, every traverser is unique and thus, must be enumerated as opposed to being
-counted/merged. The difference being a collection of paths vs. a single 64-bit long at a single vertex. For more
+counted/merged. The difference being a collection of paths vs. a single 64-bit long at a single vertex. In other words,
+ bulking is very unlikely with traversers that maintain path information. For more
 information on this concept, please see link:http://thinkaurelius.com/2012/11/11/faunus-provides-big-graph-data-analytics/[Faunus Provides Big Graph Data].
-. When traversals of the form `x.as('a').y.someSideEffectStep('a').z` are evaluated, the `a` object is stored in the
-path information of the traverser and thus, such traversals (may) turn on path calculations when executed on a
-`GraphComputer`
 . Steps that are concerned with the global ordering of traversers do not have a meaningful representation in
 OLAP. For example, what does <<order-step,`order()`>>-step mean when all traversers are being processed in parallel?
 Even if the traversers were aggregated and ordered, then at the next step they would return to being executed in
 parallel and thus, in an unpredictable order. When `order()`-like steps are executed at the end of a traversal (i.e
-the final step), the `TraverserMapReduce` job ensures the resultant serial representation is ordered accordingly.
-. Steps that are concerned with providing a global aggregate to the next step of computation do not have a correlate
-in OLAP. For example, <<fold-step,`fold()`>>-step can only fold up the objects at each executing vertex. Next, even
-if a global fold was possible, where would it go? Which vertex would be the host of the data structure? The
-`fold()`-step only makes sense as an end-step whereby a MapReduce job can generate the proper global-to-local data
-reduction.
+the final step), `TraversalVertexProgram` ensures a serial representation is ordered accordingly. Moreover, it is intelligent enough
+to maintain the ordering of `g.V().hasLabel("person").order().by("age").values("name")`. However, the OLAP traversal
+`g.V().hasLabel("person").order().by("age").out().values("name")` will lose the original ordering as the `out()`-step
+will rebroadcast traversers across the cluster.
+
+[[graph-filter]]
+Graph Filter
+------------
+
+Most OLAP jobs do not require the entire source graph to faithfully execute their `VertexProgram`. For instance, if
+`PageRankVertexProgram` is only going to compute the centrality of people in the friendship-graph, then the following
+`GraphFilter` can be applied.
+
+[source,java]
+----
+graph.computer().vertices(hasLabel("person")).edges(bothE("knows")).program(PageRankVertexProgram...)
+----
+
+There are two methods for constructing a `GraphFilter`.
+
+* `vertices(Traversal<Vertex,Vertex>)`: A traversal that will be used that can only analyze a vertex and its properties.
+If the traversal `hasNext()`, the input `Vertex` is passed to the `GraphComputer`.
+* `edges(Traversal<Vertex,Edge>)`: A traversal that will iterate all legal edges for the source vertex.
+
+`GraphFilter` is a "push-down predicate" that providers can reason on to determine the most efficient way to provide
+graph data to the `GraphComputer`.
diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc
index ca4c6be..d98a573 100644
--- a/docs/src/reference/the-traversal.asciidoc
+++ b/docs/src/reference/the-traversal.asciidoc
@@ -328,7 +328,7 @@
 ----
 graph = TinkerGraph.open()
 graph.io(graphml()).readGraph('data/grateful-dead.xml')
-g = graph.traversal(standard())
+g = graph.traversal()
 clockWithResult(1){g.V().both().both().both().count().next()} <1>
 clockWithResult(1){g.V().repeat(both()).times(3).count().next()} <2>
 clockWithResult(1){g.V().both().barrier().both().barrier().both().barrier().count().next()} <3>
@@ -349,7 +349,7 @@
 ----
 graph = TinkerGraph.open()
 graph.io(graphml()).readGraph('data/grateful-dead.xml')
-g = graph.traversal(GraphTraversalSource.build().with(LazyBarrierStrategy.instance()).engine(StandardTraversalEngine.build()))
+g = graph.traversal().withStrategies(LazyBarrierStrategy.instance())
 clockWithResult(1){g.V().both().both().both().count().next()}
 g.V().both().both().both().count().iterate().toString()  <1>
 ----
@@ -923,7 +923,7 @@
 [gremlin-groovy]
 ----
 graph.io(graphml()).readGraph('data/grateful-dead.xml')
-g = graph.traversal(standard())
+g = graph.traversal()
 g.V().match(
         __.as('a').has('name', 'Garcia'),
         __.as('a').in('writtenBy').as('b'),
@@ -1127,6 +1127,31 @@
 IMPORTANT: `min(local)` determines the min of the current, local object (not the objects in the traversal stream).
 This works for `Collection` and `Number`-type objects. For any other object, a min of `Double.NaN` is returned.
 
+[[optional-step]]
+Optional Step
+~~~~~~~~~~~~~
+
+The `optional()`-step (*map*) returns the result of the specified traversal if it yields a result else it returns the calling
+element, i.e. the `identity()`.
+
+[gremlin-groovy,modern]
+----
+g.V(2).optional(out('knows')) <1>
+g.V(2).optional(__.in('knows')) <2>
+----
+
+<1> vadas does not have an `out` "know" edge so vadas is returned.
+<2> vadas does have an `in` "knows" edge so marko is returned.
+
+`optional` is particularly useful for lifting entire graphs when used in conjunction with `path` or `tree`.
+
+[gremlin-groovy,modern]
+----
+g.V().hasLabel('person').optional(out("knows").optional(out("created"))).path() <1>
+----
+
+<1> Returns the paths of everybody followed by who they know followed by what they created.
+
 [[or-step]]
 Or Step
 ~~~~~~~
@@ -1215,6 +1240,37 @@
 
 NOTE: The `values` and `keys` enums are from `Column` which is used to select "columns" from a `Map`, `Map.Entry`, or `Path`.
 
+[[pagerank-step]]
+PageRank Step
+~~~~~~~~~~~~~
+
+The `pageRank()`-step (*map*/*sideEffect*) calculates link:http://en.wikipedia.org/wiki/PageRank[PageRank] using <<pagerankvertexprogram,`PageRankVertexProgram`>>.
+
+IMPORTANT: The `pageRank()`-step is a `VertexComputing`-step and as such, can only be used against a graph that supports `GraphComputer` (OLAP).
+
+[gremlin-groovy,modern]
+----
+g = graph.traversal().withComputer()
+g.V().pageRank().by('pageRank').values('pageRank')
+g.V().hasLabel('person').
+  pageRank().
+    by(outE('knows')).
+    by('friendRank').
+  order().by('friendRank',decr).valueMap('name','friendRank')
+----
+
+The <<explain-step,`explain()`>>-step can be used to understand how the traversal is compiled into multiple `GraphComputer` jobs.
+
+[gremlin-groovy,modern]
+----
+g = graph.traversal().withComputer()
+g.V().hasLabel('person').
+  pageRank().
+    by(outE('knows')).
+    by('friendRank').
+  order().by('friendRank',decr).valueMap('name','friendRank').explain()
+----
+
 [[path-step]]
 Path Step
 ~~~~~~~~~
@@ -1286,7 +1342,24 @@
 path.d == path.e
 ----
 
-[[profile-step]]
+[[peerpressure-step]]
+PeerPressure Step
+~~~~~~~~~~~~~~~~~
+
+The `peerPressure()`-step (*map*/*sideEffect*) clusters vertices using <<peerpressurevertexprogram,`PeerPressureVertexProgram`>>.
+
+IMPORTANT: The `peerPressure()`-step is a `VertexComputing`-step and as such, can only be used against a graph that supports `GraphComputer` (OLAP).
+
+[gremlin-groovy,modern]
+----
+g = graph.traversal().withComputer()
+g.V().peerPressure().by('cluster').values('cluster')
+g.V().hasLabel('person').
+  peerPressure().by('cluster').
+  group().by('cluster').by('name')
+----
+
+[profile-step]]
 Profile Step
 ~~~~~~~~~~~~
 
@@ -1298,7 +1371,7 @@
 
 [gremlin-groovy,modern]
 ----
-g.V().out('created').repeat(both()).times(3).hasLabel('person').values('age').sum().profile().cap(TraversalMetrics.METRICS_KEY)
+g.V().out('created').repeat(both()).times(3).hasLabel('person').values('age').sum().profile()
 ----
 
 The `profile()`-step generates a `TraversalMetrics` sideEffect object that contains the following information:
@@ -1315,8 +1388,132 @@
 bulks. On the other hand, the `Count` represents the sum of all `Traverser.bulk()` results and thus, expresses the
 number of "represented" (not enumerated) traversers. `Traversers` will always be less than or equal to `Count`.
 
+A side effect key can also be passed to the `profile()`-step for situations when it is important to iterate the normal
+results of the Traversal and retrieve the `TraversalMetrics` afterwards, as shown here:
+
+[gremlin-groovy,modern]
+----
+t = g.V().out('created').profile('metrics')
+t.iterate()
+metrics = t.getSideEffects().get('metrics')
+----
+
 For traversal compilation information, please see <<explain-step,`explain()`>>-step.
 
+[[project-step]]
+Project Step
+~~~~~~~~~~~~
+
+The `project()`-step (*map*) projects the current object into a `Map<String,Object>` keyed by provided labels. It is similar
+to <<select-step,`select()`>>-step, save that instead of retrieving and modulating historic traverser state, it modulates
+the current state of the traverser.
+
+[gremlin-groovy,modern]
+----
+g.V().out('created').
+  project('a','b').
+    by('name').
+    by(__.in('created').count()).
+  order().by(select('b'),decr).
+  select('a')
+----
+
+[[program-step]]
+Program Step
+~~~~~~~~~~~~
+
+The `program()`-step (*map*/*sideEffect*) is the "lambda" step for `GraphComputer` jobs. The step takes a
+<<vertexprogram,`VertexProgram`>> as an argument and will process the incoming graph accordingly. Thus, the user
+can create their own `VertexProgram` and have it execute within a traversal. The configuration provided to the
+vertex program includes:
+
+* `gremlin.vertexProgramStep.rootTraversal` is a serialization of a `PureTraversal` form of the root traversal.
+* `gremlin.vertexProgramStep.stepId` is the step string id of the `program()`-step being executed.
+
+The user supplied `VertexProgram` can leverage that information accordingly within their vertex program. Example uses
+are provided below.
+
+WARNING: Developing a `VertexProgram` is for expert users. Moreover, developing one that can be used effectively within
+a traversal requires yet more expertise. This information is recommended to advanced users with a deep understanding of the
+mechanics of Gremlin OLAP (<<graphcomputer,`GraphComputer`>>).
+
+[source,java]
+----
+private TraverserSet<Object> haltedTraversers;
+
+public void loadState(final Graph graph, final Configuration configuration) {
+  VertexProgram.super.loadState(graph, configuration);
+  this.traversal = PureTraversal.loadState(configuration, VertexProgramStep.ROOT_TRAVERSAL, graph);
+  this.programStep = new TraversalMatrix<>(this.traversal.get()).getStepById(configuration.getString(ProgramVertexProgramStep.STEP_ID));
+  // if the traversal sideEffects will be used in the computation, add them as memory compute keys
+  this.memoryComputeKeys.addAll(MemoryTraversalSideEffects.getMemoryComputeKeys(this.traversal.get()));
+  // if master-traversal traversers may be propagated, create a memory compute key
+  this.memoryComputeKeys.add(MemoryComputeKey.of(TraversalVertexProgram.HALTED_TRAVERSERS, Operator.addAll, false, false));
+  // returns an empty traverser set if there are no halted traversers
+  this.haltedTraversers = TraversalVertexProgram.loadHaltedTraversers(configuration);
+}
+
+public void storeState(final Configuration configuration) {
+  VertexProgram.super.storeState(configuration);
+  // if halted traversers is null or empty, it does nothing
+  TraversalVertexProgram.storeHaltedTraversers(configuration, this.haltedTraversers);
+}
+
+public void setup(final Memory memory) {
+  if(!this.haltedTraversers.isEmpty()) {
+    // do what you like with the halted master traversal traversers
+  }
+  // once used, no need to keep that information around (master)
+  this.haltedTraversers = null;
+}
+
+public void execute(final Vertex vertex, final Messenger messenger, final Memory memory) {
+  // once used, no need to keep that information around (workers)
+  if(null != this.haltedTraversers)
+    this.haltedTraversers = null;
+  if(vertex.property(TraversalVertexProgram.HALTED_TRAVERSERS).isPresent()) {
+    // haltedTraversers in execute() represent worker-traversal traversers
+    // for example, from a traversal of the form g.V().out().program(...)
+    TraverserSet<Object> haltedTraversers = vertex.value(TraversalVertexProgram.HALTED_TRAVERSERS);
+    // create a new halted traverser set that can be used by the next OLAP job in the chain
+    // these are worker-traversers that are distributed throughout the graph
+    TraverserSet<Object> newHaltedTraversers = new TraverserSet<>();
+    haltedTraversers.forEach(traverser -> {
+       newHaltedTraversers.add(traverser.split(traverser.get().toString(), this.programStep));
+    });
+    vertex.property(VertexProperty.Cardinality.single, TraversalVertexProgram.HALTED_TRAVERSERS, newHaltedTraversers);
+    // it is possible to create master-traversers that are localized to the master traversal (this is how results are ultimately delivered back to the user)
+    memory.add(TraversalVertexProgram.HALTED_TRAVERSERS,
+               new TraverserSet<>(this.traversal().get().getTraverserGenerator().generate("an example", this.programStep, 1l)));
+  }
+
+public boolean terminate(final Memory memory) {
+  // the master-traversal will have halted traversers
+  assert memory.exists(TraversalVertexProgram.HALTED_TRAVERSERS);
+  final TraverserSet<String> haltedTraversers = memory.get(TraversalVertexProgram.HALTED_TRAVERSERS);
+  // it will only have the traversers sent to the master traversal via memory
+  assert haltedTraversers.stream().map(Traverser::get).filter(s -> s.equals("an example")).findAny().isPresent();
+  // it will not contain the worker traversers distributed throughout the vertices
+  assert !haltedTraversers.stream().map(Traverser::get).filter(s -> !s.equals("an example")).findAny().isPresent();
+  return true;
+}
+----
+
+NOTE: The test case `ProgramTest` in `gremlin-test` has an example vertex program called `TestProgram` that demonstrates
+all the various ways in which traversal and traverser information is propagated within a vertex program and ultimately
+usable by other vertex programs (including `TraversalVertexProgram`) down the line in an OLAP compute chain.
+
+Finally, an example is provided using `PageRankVertexProgram` which doesn't use <<pagerank-step,`pageRank()`>>-step.
+
+[gremlin-groovy,modern]
+----
+g = graph.traversal().withComputer()
+g.V().hasLabel('person').
+  program(PageRankVertexProgram.build().property('rank').create(graph)).
+    order().by('rank', incr).
+  valueMap('name', 'rank')
+----
+
 [[range-step]]
 Range Step
 ~~~~~~~~~~
@@ -1693,7 +1890,7 @@
 [gremlin-groovy,modern]
 ----
 subGraph = g.E().hasLabel('knows').subgraph('subGraph').cap('subGraph').next() <1>
-sg = subGraph.traversal(standard())
+sg = subGraph.traversal()
 sg.E() <2>
 ----
 
@@ -1705,7 +1902,7 @@
 [gremlin-groovy,modern]
 ----
 subGraph = g.V(3).repeat(__.inE().subgraph('subGraph').outV()).times(3).cap('subGraph').next()  <1>
-sg = subGraph.traversal(standard())
+sg = subGraph.traversal()
 sg.E()
 ----
 
@@ -1718,8 +1915,8 @@
 ----
 t = g.V().outE('knows').subgraph('knowsG').inV().outE('created').subgraph('createdG').
           inV().inE('created').subgraph('createdG').iterate()
-t.sideEffects.get('knowsG').get().traversal(standard()).E()
-t.sideEffects.get('createdG').get().traversal(standard()).E()
+t.sideEffects.get('knowsG').traversal().E()
+t.sideEffects.get('createdG').traversal().E()
 ----
 
 IMPORTANT: The `subgraph()`-step only writes to graphs that support user supplied ids for its elements. Moreover,
@@ -2111,7 +2308,7 @@
 leverage a lambda in practice. It is advised that users only leverage a lambda if and only if there is no
 corresponding lambda-less step that encompasses the desired functionality. The reason being, lambdas can not be
 optimized by Gremlin's compiler strategies as they can not be programmatically inspected (see
-<<traversalstrategy,traversal strategies>>).
+<<traversalstrategy,traversal strategies>>). It is also not currently possible to send a lambda for remote execution to Gremlin-Server or a driver that supports remote execution. 
 
 In many situations where a lambda could be used, either a corresponding step exists or a traversal can be provided in
 its place. A `TraversalLambda` behaves like a typical lambda, but it can be optimized and it yields less objects than
@@ -2211,7 +2408,7 @@
 
     @Override
     public void apply(final Traversal.Admin<?, ?> traversal) {
-        if (traversal.getEngine().isComputer())
+        if (TraversalHelper.onGraphComputer(traversal))
             return;
 
         TraversalHelper.getStepsOfClass(GraphStep.class, traversal).forEach(originalGraphStep -> {
@@ -2281,7 +2478,7 @@
 ----
 graph = Neo4jGraph.open('/tmp/neo4j')
 strategy = ElementIdStrategy.build().create()
-g = GraphTraversalSource.build().with(strategy).create(graph)
+g = graph.traversal().withStrategies(strategy)
 g.addV().property(id, '42a').id()
 ----
 
@@ -2316,7 +2513,7 @@
 graph = TinkerFactory.createModern()
 l = new ConsoleMutationListener(graph)
 strategy = EventStrategy.build().addListener(l).create()
-g = GraphTraversalSource.build().with(strategy).create(graph)
+g = graph.traversal().withStrategies(strategy)
 g.addV('name','stephen')
 g.E().drop()
 ----
@@ -2354,9 +2551,9 @@
 graph = TinkerFactory.createModern()
 strategyA = PartitionStrategy.build().partitionKey("_partition").writePartition("a").addReadPartition("a").create()
 strategyB = PartitionStrategy.build().partitionKey("_partition").writePartition("b").addReadPartition("b").create()
-gA = GraphTraversalSource.build().with(strategyA).create(graph)
+gA = graph.traversal().withStrategies(strategyA)
 gA.addV() // this vertex has a property of {_partition:"a"}
-gB = GraphTraversalSource.build().with(strategyB).create(graph)
+gB = graph.traversal().withStrategies(strategyB)
 gB.addV() // this vertex has a property of {_partition:"b"}
 gA.V()
 gB.V()
@@ -2388,7 +2585,7 @@
 ----
 graph = TinkerFactory.createModern()
 strategy = SubgraphStrategy.build().edgeCriterion(hasId(8,9,10)).create()
-g = GraphTraversalSource.build().with(strategy).create(graph)
+g = graph.traversal().withStrategies(strategy)
 g.V() // shows all vertices as no filter for vertices was specified
 g.E() // shows only the edges defined in the edgeCriterion
 ----
diff --git a/docs/src/tutorials/getting-started/index.asciidoc b/docs/src/tutorials/getting-started/index.asciidoc
index 0893188..c026b0b 100644
--- a/docs/src/tutorials/getting-started/index.asciidoc
+++ b/docs/src/tutorials/getting-started/index.asciidoc
@@ -15,7 +15,9 @@
 limitations under the License.
 ////
 
-image::apache-tinkerpop-logo.png[width=500]
+image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]
+
+*x.y.z*
 
 Getting Started
 ---------------
diff --git a/docs/src/tutorials/gremlin-language-variants/index.asciidoc b/docs/src/tutorials/gremlin-language-variants/index.asciidoc
new file mode 100644
index 0000000..6101fae
--- /dev/null
+++ b/docs/src/tutorials/gremlin-language-variants/index.asciidoc
@@ -0,0 +1,782 @@
+////
+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.
+////
+
+image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]
+
+*x.y.z*
+
+Gremlin Language Variants
+-------------------------
+
+Gremlin is an embeddable query language able to represent itself within the constructs of a host programming language.
+Any programming language that supports link:https://en.wikipedia.org/wiki/Function_composition[function composition]
+(e.g. fluent chaining) and link:https://en.wikipedia.org/wiki/Nested_function[function nesting] (e.g. call stacks)
+can support Gremlin. Nearly every modern programming language is capable of meeting both requirements.
+With Gremlin, the distinction between a programming language and a query language is not be as strongly divided as they
+have historically been. For instance, with Gremlin-Java, the developer is able to have their application code and their
+graph database queries at the same level of abstraction -- both written in Java. A simple example is presented below
+where the `MyApplication` Java class contains both application-level and database-level code written in Java.
+
+image::gremlin-house-of-mirrors.png[width=1024]
+
+WARNING: This is an advanced tutorial intended for experts knowledgeable in Gremlin in particular and TinkerPop in general.
+Moreover, the audience should understand advanced programming language concepts such as reflection, meta-programming,
+source code generation, and virtual machines.
+
+[source,java]
+----
+public class MyApplication {
+
+  public static void run(final String[] args) {
+
+    // assumes args[0] is a configuration file location
+    Graph graph = GraphFactory.open(args[0]);
+    GraphTraversalSource g = graph.traversal();
+
+    // assumes that args[1] and args[2] are range boundaries
+    Iterator<Map<String,Double>> result =
+      g.V().hasLabel("product").
+        order().by("unitPrice", incr).
+        range(Integer.valueOf(args[1]), Integer.valueOf(args[2])).
+        valueMap("name", "unitPrice")
+
+    while(result.hasNext()) {
+      Map<String,Double> map = result.next();
+      System.out.println(map.get("name") + " " + map.get("unitPrice"));
+    }
+  }
+}
+----
+
+In query languages like link:https://en.wikipedia.org/wiki/SQL[SQL], the user must construct a string representation of
+their query and submit it to the database for evaluation. This is because SQL can be expressed in Java as they use fundamentally
+different constructs in their expression. The same example above is presented below using SQL and the
+link:https://en.wikipedia.org/wiki/Java_Database_Connectivity[JDBC] interface. The take home point is that Gremlin does
+not exist outside the programming language in which it will be used. Gremlin was designed to be able to easily be
+embedded in any modern programming language and thus, always free from the complexities of string manipulation as seen
+in other database and analytics query languages.
+
+[source,java]
+----
+public class MyApplication {
+
+  public static void run(final String[] args) {
+
+    // assumes args[0] is a URI to the database
+    Connection connection = DriverManager.getConnection(args[0])
+    Statement statement = connection.createStatement();
+
+    // assumes that args[1] and args[2] are range boundaries
+    ResultSet result = statement.executeQuery(
+      "SELECT Products.ProductName, Products.UnitPrice \n" +
+      "  FROM (SELECT ROW_NUMBER() \n" +
+      "                   OVER ( \n" +
+      "                     ORDER BY UnitPrice) AS [ROW_NUMBER], \n" +
+      "                 ProductID \n" +
+      "            FROM Products) AS SortedProducts \n" +
+      "      INNER JOIN Products \n" +
+      "              ON Products.ProductID = SortedProducts.ProductID \n" +
+      "   WHERE [ROW_NUMBER] BETWEEN " + args[1] + " AND " + args[2] + " \n" +
+      "ORDER BY [ROW_NUMBER]"
+
+    while(result.hasNext()) {
+      result.next();
+      System.out.println(result.getString("Products.ProductName") + " " + result.getDouble("Products.UnitPrice"));
+    }
+  }
+}
+----
+
+The purpose of this tutorial is to explain how to develop a _Gremlin language variant_. That is, for those developers that
+are interested in supporting Gremlin in their native language and there currently does not exist a (good) Gremlin variant in
+their language, they can develop one for the Apache TinkerPop community (and their language community in general). In this
+tutorial, link:https://www.python.org/[Python] will serve as the host language and two typical implementation models will be presented.
+
+1. <<using-jython-and-the-jvm,**Using Jython and the JVM**>>: This is perhaps the easiest way to produce a Gremlin
+language variant. With link:https://www.jcp.org/en/jsr/detail?id=223[JSR-223], any language compiler written for the JVM
+can directly access the JVM and any of its libraries (including Gremlin-Java).
+
+2. <<using-python-and-gremlin-server,**Using Python and GremlinServer**>>: This model requires that there exist a Python
+class that mimics Gremlin-Java's `GraphTraversal` API. With each method call of this Python class, a `ScriptEngine`
+string is constructed (e.g. Gremlin-Groovy). Ultimately, that constructed traversal string is submitted to a
+link:http://tinkerpop.apache.org/docs/x.y.z/reference/#gremlin-server[GremlinServer]-compliant graph system for evaluation.
+
+IMPORTANT: Apache TinkerPop's Gremlin-Java is considered the idiomatic, standard implementation of Gremlin.
+Any Gremlin language variant, regardless of the implementation model chosen, **must**, within the constraints of the
+host language, be in 1-to-1 correspondence with Gremlin-Java. This ensures that language variants are collectively
+consistent and easily leveraged by anyone versed in Gremlin.
+
+[[language-drivers-vs-language-variants]]
+Language Drivers vs. Language Variants
+--------------------------------------
+
+Before discussing how to implement a Gremlin language variant in Python, it is necessary to understand two concepts related to
+Gremlin language development. There is a difference between a _language driver_ and a _language variant_ and it is important
+that these two concepts (and their respective implementations) remain separated.
+
+Language Drivers
+~~~~~~~~~~~~~~~~
+
+image:language-drivers.png[width=375,float=right] A Gremlin language driver is a software library that is able to
+communicate with a TinkerPop-enabled graph system whether directly via the JVM or indirectly via
+link:http://tinkerpop.apache.org/docs/x.y.z/reference/#gremlin-server[Gremlin Server]. By in large, if a
+language driver is being developed, it is typically being developed to interact with GremlinServer or a
+link:http://tinkerpop.apache.org/docs/x.y.z/reference/#connecting-via-remotegraph[RemoteConnection].
+Language drivers are responsible for submitting Gremlin traversals to a TinkerPop-enabled graph system and
+returning results to the developer that are within the developer's language's type system.
+For instance, resultant doubles should be coerced to floats in Python.
+
+This tutorial is not about language drivers, but about language variants. Moreover, community libraries should make this
+distinction clear and **should not** develop libraries that serve both roles. Language drivers will be useful to a collection
+of Gremlin variants within a language community -- able to support `GraphTraversal`-variants as well as also other
+link:https://en.wikipedia.org/wiki/Domain-specific_language[DSL]-variants (e.g. `SocialTraversal`).
+
+NOTE: `GraphTraversal` is a particular Gremlin domain-specific language (link:https://en.wikipedia.org/wiki/Domain-specific_language[DSL]),
+albeit the most popular and foundational DSL. If another DSL is created, then the same techniques discussed in this tutorial
+for `GraphTraversal` apply to `XXXTraversal`.
+
+Language Variants
+~~~~~~~~~~~~~~~~~
+
+image:language-variants.png[width=375,float=right] A Gremlin language variant is a software library that allows a developer
+to write a Gremlin traversal within their native programming language. The language variant is responsible for
+creating a `Traversal` instance that will ultimately be evaluated by a TinkerPop-enabled graph system.
+The `Traversal` instance is either created directly on the JVM or as a String for ultimate conversion to a `Traversal` by
+a link:https://www.jcp.org/en/jsr/detail?id=223[JSR-223] `ScriptEngine` (typically, via GremlinServer).
+
+Every language variant, regardless of the implementation details, will have to account for the four core concepts below:
+
+1. `Graph` (**data**): The source of the graph data to be traversed and the interface which enables the creation of a
+`GraphTraversalSource` (via `graph.traversal()`).
+
+2. `GraphTraversalSource` (**compiler**): This is the typical `g` reference. A `GraphTraversalSource` maintains the
+`withXXX()`-strategy methods as well as the "traversal spawn"-methods such as `V()`, `E()`, `addV()`, etc.
+A traversal source's registered `TraversalStrategies` determine how the submitted traversal will be compiled prior to evaluation.
+
+3. `GraphTraversal` (**function composition**): A graph traversal maintains every the computational steps such as `out()`, `groupCount()`,
+`match()`, etc. This fluent interface supports method chaining and thus, a linear "left-to-right" representation of a traversal/query.
+
+4. `__` (**function nesting**) : The anonymous traversal class is used for passing a traversal as an argument to a parent step.
+For example, in `repeat(__.out())`, `__.out()` is an anonymous traversal passed to the traversal parent `repeat()`.
+Anonymous traversals enable the "top-to-bottom" representation of a traversal.
+
+Both `GraphTraversal` and `__` define the structure of the Gremlin language. Gremlin is a _two-dimensional language_ supporting
+linear, nested step sequences. Historically, many Gremlin language variants have failed to make the distinctions above clear
+and in doing so, either complicate their implementations or yield variants that are not in 1-to-1 correspondence with Gremlin-Java.
+
+IMPORTANT: The term "Gremlin-Java" denotes the language that is defined by `GraphTraversalSource`, `GraphTraversal`,
+and `__`. These three classes exist in `org.apache.tinkerpop.gremlin.process.traversal.dsl.graph` and form the definitive
+representation of the Gremlin traversal language.
+
+Gremlin-Jython and Gremlin-Python
+---------------------------------
+
+[[using-jython-and-the-jvm]]
+Using Jython and the JVM
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+image:jython-logo.png[width=200,float=left,link="http://www.jython.org/"] link:http://www.jython.org/[Jython] provides a
+link:https://www.jcp.org/en/jsr/detail?id=223[JSR-223] `ScriptEngine` implementation that enables the evaluation of
+Python on the link:https://en.wikipedia.org/wiki/Java_virtual_machine[Java virtual machine]. In other words, Jython's
+virtual machine is not the standard link:https://wiki.python.org/moin/CPython[CPython] reference implementation
+distributed with most operating systems, but instead the JVM. The benefit of Jython is that Python code and classes
+can easily interact with the Java API and any Java packages on the `CLASSPATH`. In general, any JSR-223 Gremlin language
+variant is trivial to "implement."
+
+[source,python]
+----
+Jython 2.7.0 (default:9987c746f838, Apr 29 2015, 02:25:11)
+[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_40
+Type "help", "copyright", "credits" or "license" for more information.
+>>> import sys
+# this list is longer than displayed, including all jars in lib/, not just Apache TinkerPop jars
+>>> sys.path.append("/usr/local/apache-gremlin-console-x.y.z-standalone/lib/gremlin-console-x.y.z.jar")
+>>> sys.path.append("/usr/local/apache-gremlin-console-x.y.z-standalone/lib/gremlin-core-x.y.z.jar")
+>>> sys.path.append("/usr/local/apache-gremlin-console-x.y.z-standalone/lib/gremlin-driver-x.y.z.jar")
+>>> sys.path.append("/usr/local/apache-gremlin-console-x.y.z-standalone/lib/gremlin-shaded-x.y.z.jar")
+>>> sys.path.append("/usr/local/apache-gremlin-console-x.y.z-standalone/ext/tinkergraph-gremlin/lib/tinkergraph-gremlin-x.y.z.jar")
+# import Java classes
+>>> from org.apache.tinkerpop.gremlin.tinkergraph.structure import TinkerFactory
+>>> from org.apache.tinkerpop.gremlin.process.traversal.dsl.graph import __
+>>> from org.apache.tinkerpop.gremlin.process.traversal import *
+>>> from org.apache.tinkerpop.gremlin.structure import *
+# create the toy "modern" graph and spawn a GraphTraversalSource
+>>> graph = TinkerFactory.createModern()
+>>> g = graph.traversal()
+# The Jython shell does not automatically iterate Iterators like the GremlinConsole
+>>> g.V().hasLabel("person").out("knows").out("created")
+[GraphStep(vertex,[]), HasStep([~label.eq(person)]), VertexStep(OUT,[knows],vertex), VertexStep(OUT,[created],vertex)]
+# toList() will do the iteration and return the results as a list
+>>> g.V().hasLabel("person").out("knows").out("created").toList()
+[v[5], v[3]]
+>>> g.V().repeat(__.out()).times(2).values("name").toList()
+[ripple, lop]
+# results can be interacted with using Python
+>>> g.V().repeat(__.out()).times(2).values("name").toList()[0]
+u'ripple'
+>>> g.V().repeat(__.out()).times(2).values("name").toList()[0][0:3].upper()
+u'RIP'
+>>>
+----
+
+Most every JSR-223 `ScriptEngine` language will allow the developer to immediately interact with `GraphTraversal`.
+The benefit of this model is that nearly every major programming language has a respective `ScriptEngine`:
+link:https://en.wikipedia.org/wiki/Nashorn_(JavaScript_engine)[JavaScript], link:http://groovy-lang.org/[Groovy],
+link:http://www.scala-lang.org/[Scala], Lisp (link:https://clojure.org/[Clojure]), link:http://jruby.org/[Ruby], etc. A
+list of implementations is provided link:https://en.wikipedia.org/wiki/List_of_JVM_languages[here].
+
+Traversal Wrappers
+^^^^^^^^^^^^^^^^^^
+
+While it is possible to simply interact with Java classes in a `ScriptEngine` implementation, such Gremlin language variants
+will not leverage the unique features of the host language. It is for this reason that JVM-based language variants such as
+link:https://github.com/mpollmeier/gremlin-scala[Gremlin-Scala] were developed. Scala provides many syntax niceties not
+available in Java. To leverage these niceties, Gremlin-Scala "wraps" `GraphTraversal` in order to provide Scala-idiomatic extensions.
+Another example is Apache TinkerPop's Gremlin-Groovy which does the same via the
+link:http://tinkerpop.apache.org/docs/x.y.z/reference/#sugar-plugin[Sugar plugin], but uses
+link:http://groovy-lang.org/metaprogramming.html[meta-programming] instead of object wrapping, where "behing the scenes,"
+Groovy meta-programming is doing object wrapping.
+
+The Jython classes below wrap `GraphTraversalSource` and `GraphTraversal`. In doing so, they add methods
+that apply Python-specific constructs to Gremlin. In particular, the `__getitem__` and `__getattr__` "magic methods" are leveraged.
+It is important to note that the classes below are **not complete** and only provide enough functionality to demonstrate this
+sub-sections tutorial material.
+
+[source,python]
+----
+# GraphTraversalSource (incomplete)
+class JythonGraphTraversalSource(object):
+  def __init__(self, traversalSource):
+    self.traversalSource = traversalSource
+  def V(self,*args):
+    return JythonGraphTraversal(self.traversalSource.V(*args))
+  def __repr__(self):
+    return self.traversalSource.toString()
+
+# GraphTraversal (incomplete)
+class JythonGraphTraversal(object):
+  def __init__(self, traversal):
+    self.traversal = traversal
+  def V(self,*args):
+    self.traversal = self.traversal.V(args)
+    return self
+  def values(self, *propertyKeys):
+    self.traversal = self.traversal.values(propertyKeys)
+    return self
+  def toList(self):
+    return self.traversal.toList()
+  def __repr__(self):
+    return self.traversal.toString()
+  def __getitem__(self,index):
+    if type(index) is int:
+      self.traversal = self.traversal.range(index,index+1)
+    elif type(index) is slice:
+        self.traversal = self.traversal.range(index.start,index.stop)
+    else:
+        raise TypeError("index must be int or slice")
+    return self
+  def __getattr__(self,key):
+    return self.values(key)
+----
+
+The two methods `__getitem__` and `__getattr__` support Python _slicing_ and _object attribute interception_, respectively.
+In this way, the host language is able to use its native constructs in a meaningful way within a Gremlin traversal.
+
+[source,python]
+----
+>>> graph
+tinkergraph[vertices:6 edges:6]
+>>> g = JythonGraphTraversalSource(graph.traversal())
+>>> g
+graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
+# Python slices are converted to range()-steps
+>>> g.V()[1:4]
+[GraphStep(vertex,[]), RangeGlobalStep(1,4)]
+# Python attribute selections are converted to values()-steps
+>>> g.V()[1:4].name
+[GraphStep(vertex,[]), RangeGlobalStep(1,4), PropertiesStep([name],value)]
+>>> g.V()[1:4].name.toList()
+[vadas, lop, josh]
+----
+
+IMPORTANT: Gremlin-Java serves as the standard/default representation of the Gremlin traversal language. Any Gremlin
+language variant **must** provide all the same functionality (methods) as `GraphTraversal`, but **can** extend it
+with host language specific constructs. This means that the extensions **must** compile to `GraphTraversal`-specific
+steps. A Gremlin language variant **should not** add steps/methods that do not exist in `GraphTraversal`. If an extension
+is desired, the language variant designer should submit a proposal to link:http://tinkerpop.apache.org[Apache TinkerPop]
+to have the extension added to a future release of Gremlin.
+
+Auto-Generated Traversal Wrappers
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+In the previous example, only a subset of the `GraphTraversalSource` and `GraphTraversal` methods were implemented in the
+corresponding Jython classes. Unfortunately, adding the near 200 `GraphTraversal` methods to a wrapper class is
+both tedious and error-prone. To alleviate this pain, Python classes can be dynamically created using Groovy and
+link:https://en.wikipedia.org/wiki/Reflection_(computer_programming)#Java[Java reflection].
+The Groovy code for constructing the `JythonGraphTraversal` class source is reviewed below. By simply executing this code
+in the link:http://tinkerpop.apache.org/docs/x.y.z/reference/#gremlin-console[Gremlin Console], the `gremlin-jython.py` file
+is generated and can be `execfile()`'d by Jython.
+
+NOTE: Any JVM language can use Java reflection to generate source code. The examples in this tutorial use Groovy because of
+its terse syntax and convenient multi-line string construct `""" """`. Moreover, the Gremlin Console is recommended for
+the Groovy script evaluation because all requisite TinkerPop libraries are pre-loaded and available at startup.
+
+[source,groovy]
+----
+pythonClass = new StringBuilder();
+pythonClass.append("from org.apache.tinkerpop.gremlin.process.traversal import *\n")
+pythonClass.append("from org.apache.tinkerpop.gremlin.structure import *\n")
+pythonClass.append("from org.apache.tinkerpop.gremlin.process.traversal.dsl.graph import __ as anon\n\n")
+//////////////////////////
+// GraphTraversalSource //
+//////////////////////////
+methods = GraphTraversalSource.getMethods().collect{it.name} as Set; []
+pythonClass.append(
+"""class JythonGraphTraversalSource(object):
+  def __init__(self, traversalSource):
+    self.traversalSource = traversalSource
+  def __repr__(self):
+    return self.traversalSource.toString()
+""")
+methods.each{ method ->
+  returnType = (GraphTraversalSource.getMethods() as Set).findAll{it.name.equals(method)}.collect{it.returnType}[0]
+  if(null != returnType && TraversalSource.isAssignableFrom(returnType)) {
+  pythonClass.append(
+"""  def ${method}(self, *args):
+    self.traversalSource = self.traversalSource.${method}(*args)
+    return self
+""")
+  } else if(null != returnType && Traversal.isAssignableFrom(returnType)) {
+  pythonClass.append(
+"""  def ${method}(self, *args):
+    return JythonGraphTraversal(self.traversalSource.${method}(*args))
+""")
+  } else {
+  pythonClass.append(
+"""  def ${method}(self, *args):
+    return self.traversalSource.${method}(*args)
+""")
+  }
+}; []
+pythonClass.append("\n\n")
+
+////////////////////
+// GraphTraversal //
+////////////////////
+methodMap = [as:"_as",in:"_in",and:"_and",or:"_or",is:"_is",not:"_not",from:"_from"].withDefault{ it }  //// <1>
+invertedMethodMap = [_as:"as",_in:"in",_and:"and",_or:"or",_is:"is",_not:"not",_from:"from"].withDefault{ it }
+pythonClass.append(                                                           //// <2>
+"""class JythonGraphTraversal(object):
+  def __init__(self, traversal):
+    self.traversal = traversal
+  def __repr__(self):
+    return self.traversal.toString()
+  def __getitem__(self,index):
+    if type(index) is int:
+      self.traversal = self.traversal.range(index,index+1)
+    elif type(index) is slice:
+        self.traversal = self.traversal.range(index.start,index.stop)
+    else:
+        raise TypeError("index must be int or slice")
+    return self
+  def __getattr__(self,key):
+    return self.values(key)
+""")
+methods = GraphTraversal.getMethods().collect{methodMap[it.name]} as Set; []  //// <3>
+methods.each{ method ->
+  returnType = (GraphTraversal.getMethods() as Set).findAll{it.name.equals(method)}.collect{it.returnType}[0]
+  if(null != returnType && Traversal.isAssignableFrom(returnType)) {          //// <4>
+  pythonClass.append(
+"""  def ${method}(self, *args):
+    self.traversal = self.traversal.${invertedMethodMap[method]}(*args)
+    return self
+""")
+  } else {
+  pythonClass.append(                                                         //// <5>
+"""  def ${method}(self, *args):
+    return self.traversal.${invertedMethodMap[method]}(*args)
+""")
+  }
+}; []
+pythonClass.append("\n\n")
+
+////////////////////////
+// AnonymousTraversal //
+////////////////////////
+methods = __.getMethods().collect{methodMap[it.name]} as Set; []
+pythonClass.append("class __(object):\n");
+methods.each{ method ->
+  pythonClass.append(
+"""  @staticmethod
+  def ${method}(*args):
+    return anon.${invertedMethodMap[method]}(*args)
+""")
+}; []
+pythonClass.append("\n\n")
+
+// save to a python file
+file = new File("/tmp/gremlin-jython.py")                                    //// <6>
+file.delete()
+pythonClass.eachLine{ file.append(it + "\n") }
+----
+
+<1> There are numerous `GraphTraversal` step names that are reserved words in Python. Prefixing these steps with `_` is the chosen workaround.
+<2> Add Gremlin-Jython specific methods to `JythonGraphTraversal`. These methods are idiomatic Python extensions, not step additions.
+<3> Use Java reflection to get all the methods of `GraphTraversal`.
+<4> If the method is a fluent traversal-method, then mutate the underlying/wrapped `GraphTraversal` instance accordingly.
+<5> If the method is not a fluent traversal-method, return the result of applying the method.
+<6> Save the string representation of the Jython source code to `gremlin-jython.py`.
+
+From the Jython console, `gremlin-jython.py` is loaded and a complete Gremlin language variant is born: **Gremlin-Jython**.
+The generated file is available at link:../../resources/gremlin-jython.py[gremlin-jython.py].
+
+[source,python]
+----
+Jython 2.7.0 (default:9987c746f838, Apr 29 2015, 02:25:11)
+[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_40
+Type "help", "copyright", "credits" or "license" for more information.
+>>> execfile("/tmp/gremlin-jython.py")
+>>> from org.apache.tinkerpop.gremlin.tinkergraph.structure import TinkerFactory
+>>> graph = TinkerFactory.createModern()
+>>> g = JythonGraphTraversalSource(graph.traversal())
+# using the Gremlin-Jython __getattr__ and __getitem__ extensions and anonymous traversals
+>>> g.V().repeat(__.both("created")).times(2).name[1:3].path().toList()
+[[v[1], v[3], v[4], josh], [v[1], v[3], v[6], peter]]
+# JythonGraphTraversalSource works as expected -- an example using Gremlin-Jython w/ OLAP
+>>> g = g.withComputer()
+>>> g
+graphtraversalsource[tinkergraph[vertices:6 edges:6], graphcomputer]
+>>> g.V().repeat(__.both("created")).times(2).name[1:3].path().toList()
+[[v[3], v[4], v[5], ripple], [v[1], v[4], v[5], ripple]]
+>>>
+----
+
+Gremlin-Jython was simple to create. Unfortunately, this simplicity is not without some problems. These problems are itemized below.
+The interested reader can solve the aforementioned problems as a training exercise.
+
+* The Gremlin-Jython API is non-informative as all methods take a tuple reference (`*args`).
+** The Gremlin-Java link:http://tinkerpop.apache.org/javadocs/x.y.z/full/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html[JavaDoc] would be a sufficient guide to Gremlin-Jython (minus the extensions).
+* Lambdas are not supported as `map(lambda x: x.get())` will throw an exception about not being able to coerce `lamba` into `java.util.function.Function`.
+** Python type inspection with a creation of `Function` lambda wrapper would solve this problem.
+* `__` is always required for anonymous traversals and thus, `repeat(__.both())` can not be replaced by `repeat(both())`.
+** By placing the `@staticmethods` outside of the `__` Jython class, the methods would be globally scoped (analogous to `import static` in Java).
+
+NOTE: Another technique that can be leveraged in most link:https://en.wikipedia.org/wiki/Dynamic_programming_language[dynamic languages]
+is to use meta-programming and intercept all method calls to the variant's traversal classes. From there, the name of the
+method that was called, along with its parameters, are used to dynamically construct a method call to the wrapped traversals.
+In this way, there is no need to create a wrapper method for each method in `GraphTraversalSource`, `GraphTraversal`, and `__`.
+The drawback of this technique is that not all methods are fluent and those that are not, might need special handling.
+Moreover, runtime reflection is typically not efficient.
+
+[[using-python-and-gremlin-server]]
+Using Python and GremlinServer
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+image:python-logo.png[width=125,float=left,link="https://www.python.org/"] The JVM is a wonderful piece of technology that has, over the years,
+become a meeting ground for developers from numerous language communities. However, not all applications will use the JVM.
+Given that Apache TinkerPop is a Java-framework, there must be a way for two different virtual machines to communicate
+traversals and their results. This section presents the second Gremlin language variant implementation model which does just that.
+
+NOTE: Apache TinkerPop is a JVM-based graph computing framework. Most graph databases and processors today are built
+on the JVM. This makes it easy for these graph system providers to implement Apache TinkerPop. However, TinkerPop is more
+than its graph API and tools -- it is also the Gremlin traversal machine and language. While Apache's Gremlin traversal
+machine was written for the JVM, its constructs are simple and can/should be ported to other VMs for those graph systems
+that are not JVM-based. A theoretical review of the concepts behind the Gremlin traversal machine is provided in
+link:http://arxiv.org/abs/1508.03843[this article].
+
+This section's Gremlin language variant design model does not leverage the JVM directly. Instead, it constructs a `String`
+representation of a `Traversal` that will ultimately be evaluated by a registered `ScriptEngine` at a GremlinServer
+or `RemoteConnection`. It is up to the language variant designer to choose a _language driver_ to use for submitting
+the generated String and coercing its results. The language driver is the means by which, for this example, the CPython
+VM communicates with the JVM. The link:https://github.com/davebshow/gremlinclient[gremlinclient]
+Python language driver is used and its installation via link:https://en.wikipedia.org/wiki/Pip_(package_manager)[pip]
+is provided below.
+
+[source,bash]
+----
+# sudo easy_install pip
+$ sudo pip install gremlinclient
+----
+
+IMPORTANT: When language drivers are separated from language variants, language variants can more easily choose a language
+driver to use. In fact, it is possible for multiple language drivers to be supported by a language variant as GremlinServer,
+for example, supports various interaction mechanisms such as WebSockets, REST, custom endpoints, etc.
+
+The Groovy source code below uses Java reflection to generate a Python class that is in 1-to-1 correspondence with
+Gremlin-Java.
+
+[source,groovy]
+----
+pythonClass = new StringBuilder()
+pythonClass.append("from tornado import gen\n")
+pythonClass.append("from tornado.ioloop import IOLoop\n")
+pythonClass.append("from gremlinclient.tornado_client import submit\n")
+pythonClass.append("""
+class Helper(object):
+  @staticmethod
+  def stringOrObject(arg):
+    if (type(arg) is str and
+       not(arg.startswith("P.")) and
+       not(arg.startswith("Order.")) and
+       not(arg.startswith("T.")) and
+       not(arg.startswith("Pop.")) and
+       not(arg.startswith("Column."))):
+      return "\\"" + arg + "\\""
+    elif type(arg) is bool:
+      return str(arg).lower()
+    else:
+      return str(arg)
+  @staticmethod
+  def stringify(*args):
+    if len(args) == 0:
+      return ""
+    elif len(args) == 1:
+      return Helper.stringOrObject(args[0])
+    else:
+      return ", ".join(Helper.stringOrObject(i) for i in args)
+  @staticmethod
+  @gen.coroutine
+  def submit(gremlinServerURI, traversalString):
+    response = yield submit(gremlinServerURI, traversalString)
+    while True:
+      result = yield response.read()
+      if result is None:
+        break
+      raise gen.Return(result.data)\n
+
+"""); //// <1>
+
+//////////////////////////
+// GraphTraversalSource //
+//////////////////////////
+methods = GraphTraversalSource.getMethods().collect{it.name} as Set; []
+pythonClass.append(
+"""class PythonGraphTraversalSource(object):
+  def __init__(self, gremlinServerURI, traversalSourceString):
+    self.gremlinServerURI = gremlinServerURI
+    self.traversalSourceString = traversalSourceString
+  def __repr__(self):
+    return "graphtraversalsource[" + self.gremlinServerURI + ", " + self.traversalSourceString + "]"
+""")
+methods.each{ method ->
+  returnType = (GraphTraversalSource.getMethods() as Set).findAll{it.name.equals(method)}.collect{it.returnType}[0]
+  if(null != returnType && Traversal.isAssignableFrom(returnType)) {
+  pythonClass.append(
+"""  def ${method}(self, *args):
+    return PythonGraphTraversal(self.traversalSourceString + ".${method}(" + Helper.stringify(*args) + ")", self.gremlinServerURI)
+""")
+  } else {
+  pythonClass.append(
+"""  def ${method}(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".${method}(" + Helper.stringify(*args) + ")")
+""")
+  }
+}; []
+pythonClass.append("\n\n")
+
+////////////////////
+// GraphTraversal //
+////////////////////
+methodMap = [as:"_as",in:"_in",and:"_and",or:"_or",is:"_is",not:"_not",from:"_from"].withDefault{ it }
+invertedMethodMap = [_as:"as",_in:"in",_and:"and",_or:"or",_is:"is",_not:"not",_from:"from"].withDefault{ it }
+methods = GraphTraversal.getMethods().collect{methodMap[it.name]} as Set; []
+methods.remove("toList")                                                                //// <2>
+pythonClass.append(
+"""class PythonGraphTraversal(object):
+  def __init__(self, traversalString, gremlinServerURI=None):
+    self.traversalString = traversalString
+    self.gremlinServerURI = gremlinServerURI
+  def __repr__(self):
+    return self.traversalString;
+  def __getitem__(self,index):
+    if type(index) is int:
+      return self.range(index,index+1)
+    elif type(index) is slice:
+      return self.range(index.start,index.stop)
+    else:
+      raise TypeError("index must be int or slice")
+  def __getattr__(self,key):
+    return self.values(key)
+  def toList(self):
+    return IOLoop.current().run_sync(lambda: Helper.submit(self.gremlinServerURI, self.traversalString))
+""")
+methods.each{ method ->
+  returnType = (GraphTraversal.getMethods() as Set).findAll{it.name.equals(invertedMethodMap[method])}.collect{it.returnType}[0]
+  if(null != returnType && Traversal.isAssignableFrom(returnType)) {
+    pythonClass.append(
+"""  def ${method}(self, *args):
+    self.traversalString = self.traversalString + ".${invertedMethodMap[method]}(" + Helper.stringify(*args) + ")"
+    return self
+""")
+  } else {
+    pythonClass.append(
+"""  def ${method}(self, *args):
+    self.traversalString = self.traversalString + ".${invertedMethodMap[method]}(" + Helper.stringify(*args) + ")"
+    return self.toList()
+""")
+  }
+}; []
+pythonClass.append("\n\n")
+
+////////////////////////
+// AnonymousTraversal //
+////////////////////////
+methods = __.getMethods().collect{methodMap[it.name]} as Set; []
+pythonClass.append("class __(object):\n");
+methods.each{ method ->
+  pythonClass.append(
+"""  @staticmethod
+  def ${method}(*args):
+    return PythonGraphTraversal("__").${method}(*args)
+""")
+}; []
+pythonClass.append("\n\n")
+
+// save to a python file
+file = new File("/tmp/gremlin-python.py")                                                //// <3>
+file.delete()
+pythonClass.eachLine{ file.append(it + "\n") }
+----
+
+<1> The `Helper` class contains static methods that are generally useful to the other classes. This could have been a separate file, but was included in the Groovy script so that the tutorial's code is consolidated.
+<2> `toList()`'s method `def` is not generated programmatically, but instead is hardcoded and uses the gremlinclient driver to communicate with GremlinServer.
+<3> Save the string representation of the Python source code to `gremlin-python.py`.
+
+When the above Groovy script is evaluated in GremlinConsole, **Gremlin-Python** is born.
+The generated file is available at link:../../resources/gremlin-python.py[gremlin-python.py]. Now, from any Python
+virtual machine (not just Jython), Gremlin traversals can be expressed in native Python and a legal Gremlin-Groovy
+string is created behind the scenes.
+
+NOTE: The string that is generated for submission to a GremlinServer or `RemoteConnection` does not have to be a
+Gremlin-Groovy string. However, it must be a string that has a respective `ScriptEngine` that is enabled on the remote
+location. It is recommended that a Gremlin-Groovy string be constructed as Gremlin-Groovy is maintained by
+Apache TinkerPop and is guaranteed to always be aligned with Gremlin-Java.
+
+Be sure that GremlinServer is running and has a link:http://tinkerpop.apache.org/docs/x.y.z/reference/#graphson-reader-writer[GraphSON]
+endpoint. The following serializers were added to `conf/gremlin-server-modern.yaml`.
+
+[source,yaml]
+- { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
+- { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
+
+Then GremlinServer was started.
+
+[source,bash]
+----
+$ bin/gremlin-server.sh conf/gremlin-server-modern.yaml
+[INFO] GremlinServer -
+         \,,,/
+         (o o)
+-----oOOo-(3)-oOOo-----
+
+[INFO] GremlinServer - Configuring Gremlin Server from conf/gremlin-server-modern.yaml
+[INFO] MetricManager - Configured Metrics Slf4jReporter configured with interval=180000ms and loggerName=org.apache.tinkerpop.gremlin.server.Settings$Slf4jReporterMetrics
+[INFO] GraphManager - Graph [graph] was successfully configured via [conf/tinkergraph-empty.properties].
+[INFO] ServerGremlinExecutor - Initialized Gremlin thread pool.  Threads in pool named with pattern gremlin-*
+[INFO] ScriptEngines - Loaded gremlin-groovy ScriptEngine
+[INFO] GremlinExecutor - Initialized gremlin-groovy ScriptEngine with scripts/generate-modern.groovy
+[INFO] ServerGremlinExecutor - Initialized GremlinExecutor and configured ScriptEngines.
+[INFO] ServerGremlinExecutor - A GraphTraversalSource is now bound to [g] with graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
+[INFO] OpLoader - Adding the standard OpProcessor.
+[INFO] OpLoader - Adding the control OpProcessor.
+[INFO] OpLoader - Adding the session OpProcessor.
+[INFO] OpLoader - Adding the traversal OpProcessor.
+[INFO] GremlinServer - Executing start up LifeCycleHook
+[INFO] Logger$info - Loading 'modern' graph data.
+[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
+[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo-stringd with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
+[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0
+[INFO] AbstractChannelizer - Configured application/json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0
+[INFO] GremlinServer$1 - Gremlin Server configured with worker thread pool of 1, gremlin pool of 8 and boss thread pool of 1.
+[INFO] GremlinServer$1 - Channel started at port 8182.
+----
+
+[source,python]
+----
+Python 2.7.2 (default, Oct 11 2012, 20:14:37)
+[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
+Type "help", "copyright", "credits" or "license" for more information.
+>>> execfile("/tmp/gremlin-python.py")
+# PythonGraphTraversalSource requires a GremlinServer endpoint and a traversal alias
+>>> g = PythonGraphTraversalSource("ws://localhost:8182/", "g")
+>>> g
+graphtraversalsource[ws://localhost:8182/, g]
+# nested traversal with Python slicing and attribute interception extensions
+>>> g.V().repeat(__.both("created")).times(2).name[1:3].path()
+g.V().repeat(__.both("created")).times(2).values("name").range(1, 3).path()
+>>> g.V().hasLabel("person").repeat(__.both()).times(2).name[0:2].toList()
+[u'marko', u'josh']
+# PythonGraphTraversalSource works as expected -- an example using Gremlin-Python w/ OLAP
+>>> g = g.withComputer()
+>>> g
+graphtraversalsource[ws://localhost:8182/, g.withComputer()]
+>>> g.V().hasLabel("person").repeat(__.both()).times(2).name[0:2].toList()
+[u'ripple', u'marko']
+# a complex, nested multi-line traversal
+>>> g.V().match( \
+...     __._as("a").out("created")._as("b"), \
+...     __._as("b")._in("created")._as("c"), \
+...     __._as("a").out("knows")._as("c")). \
+...   select("c"). \
+...   union(__._in("knows"),__.out("created")). \
+...   name.toList()
+[u'marko', u'ripple', u'lop']
+>>>
+----
+
+Finally, for the sake of brevity, Gremlin-Python is simple and as such, incurs a few peculiarities that the interested
+reader may want to remedy as an exercise.
+
+* `P`, `T`, `Order`, etc. are handled via string analysis and are used as `has("age","P.gt(36)")`. It would be better to create `P`, `T`, etc. Python classes that yield the appropriate string representation.
+* Results are retrieved using `toList()`. This simple implementation does not account for GremlinServer's result batching and is thus, is not optimal for large result sets.
+* While terminal methods such as `next()`, `hasNext()`, `toSet()`, etc. work, they simply rely on `toList()` in an awkward way.
+
+[[gremlin-language-variant-conventions]]
+Gremlin Language Variant Conventions
+------------------------------------
+
+Every programming language is different and a Gremlin language variant must ride the fine line between leveraging the
+conventions of the host language and ensuring consistency with Gremlin-Java. A collection of conventions for navigating
+this dual-language bridge are provided.
+
+* If camelCase is not an accepted method naming convention in the host language, then the host language's convention should be used instead. For instance, in a Gremlin-Ruby implementation, `outE("created")` should be `out_e("created")`.
+* If Gremlin-Java step names conflict with the host language's reserved words, then a consistent amelioration should be used. For instance, in Python `as` is a reserved word, thus, Gremlin-Python uses `_as`.
+* If the host language does not use dot-notion for method chaining, then its method chaining convention should be used instead of going the route of operator overloading. For instance, a Gremlin-PHP implementation should do `$g->V()->out()`.
+* If a programming language does not support method overloading, then varargs and type introspection should be used. In Gremlin-Python, `*args` does just this and that is why there are not 200 methods off of `PythonGraphTraversal`.
+
+As stated in <<language-drivers-vs-language-variants,"Language Drivers vs. Language Variants">>, drivers and variants should
+be separate libraries. A proposed naming convention for each library type is `gremlin-<language>-driver` and
+`gremlin-<language>`. Unfortunately, numerous drivers and languages already exist for Gremlin that don't use this convention.
+However, moving forward, it might be good to be explicit in the naming so its obvious to users what is what.
+
+Finally, note that Gremlin-Jython and Gremlin-Python (as presented in this tutorial) were only manually tested. This
+means that there are most likely errors in the translation and thus, some traversals may break. A future addition to this
+tutorial will explain how to leverage TinkerPop's `ProcessStandardSuite` and `ProcessComputerSuite` to test not only
+JVM-based language variants, but also non-JVM variants. In doing so, every Gremlin language variant's syntax and
+semantics will be validated and deemed an accurate representation of Gremlin-Java within another host language.
+
+Conclusion
+----------
+
+Gremlin is a simple language because it uses two fundamental programming language constructs: *function composition*
+and *function nesting*. Because of this foundation, it is relatively easy to implement Gremlin in any modern programming
+language. Two ways of doing this for the Python language were presented in this tutorial. One using Jython (on the JVM) and one using Python
+(on CPython). It is strongly recommended that language variant designers leverage (especially when not on the JVM)
+the reflection-based source code generation technique presented. This method ensures that the language
+variant is always in sync with the corresponding Apache TinkerPop Gremlin-Java release version. Moreover, it reduces
+the chance of missing methods or creating poorly implemented methods. While Gremlin is simple, there are nearly 200
+steps in `GraphTraversal`. As such, computational means of host language embedding are strongly advised.
\ No newline at end of file
diff --git a/docs/src/tutorials/the-gremlin-console/index.asciidoc b/docs/src/tutorials/the-gremlin-console/index.asciidoc
index 8159e92..8a90056 100644
--- a/docs/src/tutorials/the-gremlin-console/index.asciidoc
+++ b/docs/src/tutorials/the-gremlin-console/index.asciidoc
@@ -15,7 +15,9 @@
 limitations under the License.
 ////
 
-image::apache-tinkerpop-logo.png[width=500]
+image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]
+
+*x.y.z*
 
 The Gremlin Console
 -------------------
@@ -614,11 +616,12 @@
 ----
 
 TIP: If you find that you always work with a particular library, consider starting the console with an initialization
-script that prepares your environment for you. An "initialization script" is just a Groovy script that contains the
-initial commands to execute when the console starts.  Following the use case, it would be nice if the initialization
-script contained the `import` statement for the driver and possibly the code to get the `Session` object ready for use.
-Start the Gremlin Console with that script by just adding it as an argument on the command line:
-`bin/gremlin.sh init.groovy`.
+script that prepares your environment for you and start Gremlin Console in
+link:http://tinkerpop.apache.org/docs/x.y.z/reference/#interactive-mode[interactive mode]. An "initialization script"
+is just a Groovy script that contains the initial commands to execute when the console starts.  Following the use case,
+it would be nice if the initialization script contained the `import` statement for the driver and possibly the code to
+get the `Session` object ready for use. Start the Gremlin Console with that script by just adding it as an argument on
+the command line: `bin/gremlin.sh -i init.groovy`.
 
 This use case focused on using a Cassandra related library, but it should be evident that it would be equally
 straightforward to perform this same data dump to link:https://hbase.apache.org/[HBase],
diff --git a/docs/src/upgrade/index.asciidoc b/docs/src/upgrade/index.asciidoc
index e1d07db..59dd5e1 100644
--- a/docs/src/upgrade/index.asciidoc
+++ b/docs/src/upgrade/index.asciidoc
@@ -14,7 +14,7 @@
 See the License for the specific language governing permissions and
 limitations under the License.
 ////
-image::apache-tinkerpop-logo.png[width=500]
+image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]
 
 :toc-position: left
 
@@ -35,6 +35,8 @@
 * Graph Language Provider
 * Graph Plugin Provider
 
+include::release-3.2.x-incubating.asciidoc[]
+
 include::release-3.1.x-incubating.asciidoc[]
 
 include::release-3.0.x-incubating.asciidoc[]
\ No newline at end of file
diff --git a/docs/src/upgrade/release-3.2.x-incubating.asciidoc b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
new file mode 100644
index 0000000..f85012c
--- /dev/null
+++ b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
@@ -0,0 +1,606 @@
+////
+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.
+////
+
+TinkerPop 3.2.0
+===============
+
+image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/nine-inch-gremlins.png[width=225]
+
+*Nine Inch Gremlins*
+
+TinkerPop 3.2.1
+---------------
+
+*Release Date: July 18, 2016*
+
+Please see the link:https://github.com/apache/tinkerpop/blob/3.2.1/CHANGELOG.asciidoc#release-3-2-1[changelog] for a complete list of all the modifications that are part of this release.
+
+Upgrading for Users
+~~~~~~~~~~~~~~~~~~~
+
+Gephi Plugin
+^^^^^^^^^^^^
+
+The Gephi Plugin has been updated to support Gephi 0.9.x. Please upgrade to this latest version to use the Gephi Plugin
+for Gremlin Console.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1297[TINKERPOP-1297]
+
+GryoMapper Construction
+^^^^^^^^^^^^^^^^^^^^^^^
+
+It is now possible to override existing serializers with calls to `addCustom` on the `GryoMapper` builder. This option
+allows complete control over the serializers used by Gryo. Of course, this also makes it possible to produce completely
+non-compliant Gryo files. This feature should be used with caution.
+
+TraversalVertexProgram
+^^^^^^^^^^^^^^^^^^^^^^
+
+`TraversalVertexProgram` always maintained a `HALTED_TRAVERSERS` `TraverserSet` for each vertex throughout the life
+of the OLAP computation. However, if there are no halted traversers in the set, then there is no point in keeping that
+compute property around as without it, time and space can be saved. Users that have `VertexPrograms` that are chained off
+of `TraversalVertexProgram` and have previously assumed that `HALTED_TRAVERSERS` always exists at each vertex, should no
+longer assume that.
+
+[source,java]
+// bad code
+TraverserSet haltedTraversers = vertex.value(TraversalVertexProgram.HALTED_TRAVERSERS);
+// good code
+TraverserSet haltedTraversers = vertex.property(TraversalVertexProgram.HALTED_TRAVERSERS).orElse(new TraverserSet());
+
+Interrupting Traversals
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Traversals now better respect calls to `Thread.interrupt()`, which mean that a running `Traversal` can now be
+cancelled. There are some limitations that remain, but most OLTP-based traversals should cancel without
+issue. OLAP-based traversals for Spark will also cancel and clean up running jobs in Spark itself. Mileage may vary
+on other process implementations and it is possible that graph providers could potentially write custom step
+implementations that prevent interruption. If it is found that there are configurations or specific traversals that
+do not respect interruption, please mention them on the mailing list.
+
+See: https://issues.apache.org/jira/browse/TINKERPOP-946[TINKERPOP-946]
+
+Gremlin Console Flags
+^^^^^^^^^^^^^^^^^^^^^
+
+Gremlin Console had several methods for executing scripts from file at the start-up of `bin/gremlin.sh`. There were
+two options:
+
+[source,text]
+bin/gremlin.sh script.groovy    <1>
+bin/gremlin.sh -e script.groovy <2>
+
+<1> The `script.groovy` would be executed as a console initialization script setting the console up for use and leaving
+it open when the script completed successfully or closing it if the script failed.
+<2> The `script.groovy` would be executed by the `ScriptExecutor` which meant that commands for the Gremlin Console,
+such as `:remote` and `:>` would not be respected.
+
+Changes in this version of TinkerPop have added much more flexibility here and only a minor breaking change should be
+considered when using this version. First of all, recognize that hese two lines are currently equivalent:
+
+[source,text]
+bin/gremlin.sh script.groovy
+bin/gremlin.sh -i script.groovy
+
+but users should start to explicitly specify the `-i` flag as TinkerPop will eventually remove the old syntax. Despite
+the one used beware of the fact that neither will close the console on script failure anymore. In that sense, this
+behavior represents a breaking change to consider. To ensure the console closes on failure or success, a script will
+have to use the `-e` option.
+
+The console also has a number of new features in addition to `-e` and `-i`:
+
+* View the available flags for the console with `-h`.
+* Control console output with `-D`, `-Q` and -`V`
+* Get line numbers on script failures passed to `-i` and `-e`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1268[TINKERPOP-1268],
+link:https://issues.apache.org/jira/browse/TINKERPOP-1155[TINKERPOP-1155], link:https://issues.apache.org/jira/browse/TINKERPOP-1156[TINKERPOP-1156],
+link:https://issues.apache.org/jira/browse/TINKERPOP-1157[TINKERPOP-1157],
+link:http://tinkerpop.apache.org/docs/3.2.1/reference/#interactive-mode[Reference Documentation - Interactive Mode],
+link:http://tinkerpop.apache.org/docs/3.2.1/reference/#execution-mode[Reference Documentation - Execution Mode]
+
+Upgrading for Providers
+~~~~~~~~~~~~~~~~~~~~~~~
+
+Graph System Providers
+^^^^^^^^^^^^^^^^^^^^^^
+
+VertexComputing API Change
+++++++++++++++++++++++++++
+
+The `VertexComputing` API is used by steps that wrap a `VertexProgram`. There is a method called
+`VertexComputing.generateProgram()` that has changed which now takes a second argument of `Memory`. To  upgrade, simply
+fix the method signature of your `VertexComputing` implementations. The `Memory` argument can be safely ignored to
+effect the exact same semantics as prior. However, now previous OLAP job `Memory` can be leveraged when constructing
+the next `VertexProgram` in an OLAP traversal chain.
+
+Interrupting Traversals
++++++++++++++++++++++++
+
+Several tests have been added to the TinkerPop test suite to validate that a `Traversal` can be cancelled with
+`Thread.interrupt()`. The test suite does not cover all possible traversal scenarios. When implementing custom steps,
+providers should take care to not ignore an `InterruptionException` that might be thrown in their code and to be sure
+to check `Thread.isInterrupted()` as needed to ensure that the step remains cancellation compliant.
+
+See: https://issues.apache.org/jira/browse/TINKERPOP-946[TINKERPOP-946]
+
+Performance Tests
++++++++++++++++++
+
+All "performance" tests have been deprecated. In the previous 3.2.0-incubating release, the `ProcessPerformanceSuite`
+and `TraversalPerformanceTest` were deprecated, but some other tests remained. It is the remaining tests that have
+been deprecated on this release:
+
+* `StructurePerformanceSuite
+** `GraphReadPerformanceTest`
+** `GraphWriterPerformanceTest`
+* `GroovyEnvironmentPerformanceSuite`
+** `SugarLoaderPerformanceTest`
+** `GremlinExecutorPerformanceTest`
+* Gremlin Server related performance tests
+* TinkerGraph related performance tests
+
+Providers should implement their own performance tests and not rely on these deprecated tests as they will be removed
+in a future release along with the "JUnit Benchmarks" dependency.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1294[TINKERPOP-1294]
+
+Graph Database Providers
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Transaction Tests
++++++++++++++++++
+
+Tests and assertions were added to the structure test suite to validate that transaction status was in the appropriate
+state following calls to close the transaction with `commit()` or `rollback()`. It is unlikely that this change would
+cause test breaks for providers, unless the transaction status was inherently disconnected from calls to close the
+transaction somehow.
+
+In addition, other tests were added to enforce the expected semantics for threaded transactions. Threaded transactions
+are expected to behave like manual transactions. They should be open automatically when they are created and once
+closed should no longer be used. This behavior is not new and is the typical expected method for working with these
+types of transactions. The test suite just requires that the provider implementation conform to these semantics.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-947[TINKERPOP-947],
+link:https://issues.apache.org/jira/browse/TINKERPOP-1059[TINKERPOP-1059]
+
+GraphFilter and GraphFilterStrategy
++++++++++++++++++++++++++++++++++++
+
+`GraphFilter` has been significantly advanced where the determination of an edge direction/label legality is more stringent.
+Along with this, `GraphFilter.getLegallyPositiveEdgeLabels()` has been added as a helper method to make it easier for `GraphComputer`
+providers to know the space of labels being accessed by the traversal and thus, better enable provider-specific push-down predicates.
+
+Note that `GraphFilterStrategy` is now a default `TraversalStrategy` registered with `GraphComputer.` If `GraphFilter` is
+expensive for the underlying `GraphComputer` implementation, it can be deactivated as is done for `TinkerGraphComputer`.
+
+[source,java]
+----
+static {
+  TraversalStrategies.GlobalCache.registerStrategies(TinkerGraphComputer.class,
+    TraversalStrategies.GlobalCache.getStrategies(GraphComputer.class).clone().removeStrategies(GraphFilterStrategy.class));
+}
+----
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1293[TINKERPOP-1293]
+
+Graph Language Providers
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+VertexTest Signatures
++++++++++++++++++++++
+
+The method signatures of `get_g_VXlistXv1_v2_v3XX_name` and `get_g_VXlistX1_2_3XX_name` of `VertexTest` were changed
+to take arguments for the `Traversal` to be constructed by extending classes.
+
+TinkerPop 3.2.0
+---------------
+
+*Release Date: Release Date: April 8, 2016*
+
+Please see the link:https://github.com/apache/tinkerpop/blob/3.2.0-incubating/CHANGELOG.asciidoc#tinkerpop-320-release-date-april-8-2016[changelog] for a complete list of all the modifications that are part of this release.
+
+Upgrading for Users
+~~~~~~~~~~~~~~~~~~~
+
+Hadoop FileSystem Variable
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The `HadoopGremlinPlugin` defines two variables: `hdfs` and `fs`. The first is a reference to the HDFS `FileSystemStorage`
+and the latter is a reference to the the local `FileSystemStorage`. Prior to 3.2.x, `fs` was called `local`. However,
+there was a variable name conflict with `Scope.local`. As such `local` is now `fs`. This issue existed prior to 3.2.x,
+but was not realized until this release. Finally, this only effects Gremlin Console users.
+
+Hadoop Configurations
+^^^^^^^^^^^^^^^^^^^^^
+
+Note that `gremlin.hadoop.graphInputFormat`, `gremlin.hadoop.graphOutputFormat`, `gremlin.spark.graphInputRDD`, and
+`gremlin.spark.graphOuputRDD` have all been deprecated. Using them still works, but moving forward, users only need to
+leverage `gremlin.hadoop.graphReader` and `gremlin.hadoop.graphWriter`. An example properties file snippet is provided
+below.
+
+```
+gremlin.graph=org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph
+gremlin.hadoop.graphReader=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
+gremlin.hadoop.graphWriter=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat
+gremlin.hadoop.jarsInDistributedCache=true
+gremlin.hadoop.defaultGraphComputer=org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer
+```
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1082[TINKERPOP-1082],
+link:https://issues.apache.org/jira/browse/TINKERPOP-1222[TINKERPOP-1222]
+
+TraversalSideEffects Update
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+There were changes to `TraversalSideEffect` both at the semantic level and at the API level. Users that have traversals
+of the form `sideEffect{...}` that leverage global side-effects should read the following carefully. If the user's traversals do
+not use lambda-based side-effect steps (e.g. `groupCount("m")`), then the changes below will not effect them. Moreover, if user's
+traversal only uses `sideEffect{...}` with closure (non-`TraversalSideEffect`) data references, then the changes below will not effect them.
+If the user's traversal uses sideEffects in OLTP only, the changes below will not effect them. Finally, providers should not be
+effected by the changes save any tests cases.
+
+TraversalSideEffects Get API Change
++++++++++++++++++++++++++++++++++++
+
+`TraversalSideEffects` can now logically operate within a distributed OLAP environment. In order to make this possible,
+it is necessary that each side-effect be registered with a reducing `BinaryOperator`. This binary operator will combine
+distributed updates into a single global side-effect at the master traversal. Many of the methods in `TraversalSideEffect`
+have been `Deprecated`, but they are backwards compatible save that `TraversalSideEffects.get()` no longer returns an `Optional`,
+but instead throws an `IllegalArgumentException`. While the `Optional` semantics could have remained, it was deemed best to
+directly return the side-effect value to reduce object creation costs and because all side-effects must be registered apriori,
+there is never a reason why an unknown side-effect key would be used. In short:
+
+[source,java]
+----
+// change
+traversal.getSideEffects().get("m").get()
+// to
+traversal.getSideEffects().get("m")
+----
+
+TraversalSideEffects Registration Requirement
++++++++++++++++++++++++++++++++++++++++++++++
+
+All `TraversalSideEffects` must be registered upfront. This is because, in OLAP, side-effects map to `Memory` compute keys
+and as such, must be declared prior to the execution of the `TraversalVertexProgram`. If a user's traversal creates a
+side-effect mid-traversal, it will fail. The traversal must use `GraphTraversalSource.withSideEffect()` to declare
+the side-effects it will use during its execution lifetime. If the user's traversals use standard side-effect Gremlin
+steps (e.g. `group("m")`), then no changes are required.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1192[TINKERPOP-1192]
+
+TraversalSideEffects Add Requirement
+++++++++++++++++++++++++++++++++++++
+
+In a distributed environment, a side-effect can not be mutated and be expected to exist in the mutated form at the final,
+aggregated, master traversal. For instance, if the side-effect "myCount" references a `Long`, the `Long` can not be updated
+directly via `sideEffects.set("myCount", sideEffects.get("myCount") + 1)`. Instead, it must rely on the registered reducer
+to do the merging and thus, the `Step` must do `sideEffect.add("mySet",1)`, where the registered reducer is `Operator.sum`.
+Thus, the below will increment "a". If no operator was provided, then the operator is assumed `Operator.assign` and the
+final result of "a" would be 1. Note that `Traverser.sideEffects(key,value)` uses `TraversalSideEffect.add()`.
+
+[source,groovy]
+----
+gremlin> traversal = g.withSideEffect('a',0,sum).V().out().sideEffect{it.sideEffects('a',1)}
+==>v[3]
+==>v[2]
+==>v[4]
+==>v[5]
+==>v[3]
+==>v[3]
+gremlin> traversal.getSideEffects().get('a')
+==>6
+gremlin> traversal = g.withSideEffect('a',0).V().out().sideEffect{it.sideEffects('a',1)}
+==>v[3]
+==>v[2]
+==>v[4]
+==>v[5]
+==>v[3]
+==>v[3]
+gremlin> traversal.getSideEffects().get('a')
+==>1
+----
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1192[TINKERPOP-1192],
+https://issues.apache.org/jira/browse/TINKERPOP-1166[TINKERPOP-1166]
+
+ProfileStep Update and GraphTraversal API Change
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The `profile()`-step has been refactored into 2 steps -- `ProfileStep` and `ProfileSideEffectStep`. Users who previously
+used the `profile()` in conjunction with `cap(TraversalMetrics.METRICS_KEY)` can now simply omit the cap step. Users who
+retrieved `TraversalMetrics` from the side-effects after iteration can still do so, but will need to specify a side-effect
+key when using the `profile()`. For example, `profile("myMetrics")`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-958[TINKERPOP-958]
+
+BranchStep Bug Fix
+^^^^^^^^^^^^^^^^^^
+
+There was a bug in `BranchStep` that also rears itself in subclass steps such as `UnionStep` and `ChooseStep`.
+For traversals with branches that have barriers (e.g. `count()`, `max()`, `groupCount()`, etc.), the traversal needs to be updated.
+For instance, if a traversal is of the form  `g.V().union(out().count(),both().count())`, the result is now different
+(the bug fix yields a different output). In order to yield the same result, the traversal should be rewritten as
+`g.V().local(union(out().count(),both().count()))`. Note that if a branch does not have a barrier, then no changes are required.
+For instance, `g.V().union(out(),both())` does not need to be updated. Moreover, if the user's traversal already used
+the `local()`-form, then no change are required either.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1188[TINKERPOP-1188]
+
+MemoryComputeKey and VertexComputeKey
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Users that have custom `VertexProgram` implementations will need to change their implementations to support the new
+`VertexComputeKey` and `MemoryComputeKey` classes. In the `VertexPrograms` provided by TinkerPop, these changes were trivial,
+taking less than 5 minutes to make all the requisite updates.
+
+* `VertexProgram.getVertexComputeKeys()` returns a `Set<VertexComputeKey>`. No longer a `Set<String>`.
+Use `VertexComputeKey.of(String key,boolean transient)` to generate a `VertexComputeKey`.
+Transient keys were not supported in the past, so to make the implementation semantically equivalent,
+the boolean transient should be false.
+
+* `VertexProgram.getMemoryComputeKeys()` returns a `Set<MemoryComputeKey>`. No longer a `Set<String>`.
+Use `MemoryComputeKey.of(String key, BinaryOperator reducer, boolean broadcast, boolean transient)` to generate a `MemoryComputeKey`.
+Broadcasting and transients were not supported in the past so to make the implementation semantically equivalent,
+the boolean broadcast should be true and the boolean transient should be false.
+
+An example migration looks as follows. What might currently look like:
+
+```
+public Set<String> getMemoryComputeKeys() {
+   return new HashSet<>(Arrays.asList("a","b","c"))
+}
+```
+
+Should now look like:
+
+```
+public Set<MemoryComputeKey> getMemoryComputeKeys() {
+  return new HashSet<>(Arrays.asList(
+    MemoryComputeKey.of("a", Operator.and, true, false),
+    MemoryComputeKey.of("b", Operator.sum, true, false),
+    MemoryComputeKey.of("c", Operator.or, true, false)))
+}
+```
+
+A similar patterns should also be used for `VertexProgram.getVertexComputeKeys()`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1162[TINKERPOP-1162]
+
+SparkGraphComputer and GiraphGraphComputer Persistence
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The `MapReduce`-based steps in `TraversalVertexProgram` have been removed and replaced using a new `Memory`-reduction model.
+`MapReduce` jobs always created a persistence footprint, e.g. in HDFS. `Memory` data was never persisted to HDFS.
+As such, there will be no data on the disk that is accessible. For instance, there is no more `~reducing`, `~traversers`,
+and specially named side-effects such as `m` from a `groupCount('m')`. The data is still accessible via `ComputerResult.memory()`,
+it simply does not have a corresponding on-disk representation.
+
+RemoteGraph
+^^^^^^^^^^^
+
+`RemoteGraph` is a lightweight `Graph` implementation that acts as a proxy for sending traversals to Gremlin Server for
+remote execution. It is an interesting alternative to the other methods for connecting to Gremlin Server in that all
+other methods involved construction of a `String` representation of the `Traversal` which is then submitted as a script
+to Gremlin Server (via driver or REST).
+
+[source,groovy]
+----
+gremlin> graph = RemoteGraph.open('conf/remote-graph.properties')
+==>remotegraph[DriverServerConnection-localhost/127.0.0.1:8182 [graph='graph]]
+gremlin> g = graph.traversal()
+==>graphtraversalsource[remotegraph[DriverServerConnection-localhost/127.0.0.1:8182 [graph='graph]], standard]
+gremlin> g.V().valueMap(true)
+==>[name:[marko], label:person, id:1, age:[29]]
+==>[name:[vadas], label:person, id:2, age:[27]]
+==>[name:[lop], label:software, id:3, lang:[java]]
+==>[name:[josh], label:person, id:4, age:[32]]
+==>[name:[ripple], label:software, id:5, lang:[java]]
+==>[name:[peter], label:person, id:6, age:[35]]
+----
+
+Note that `g.V().valueMap(true)` is executing in Gremlin Server and not locally in the console.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-575[TINKERPOP-575],
+link:http://tinkerpop.apache.org/docs/3.2.0-incubating/reference/#connecting-via-remotegraph[Reference Documentation - Remote Graph]
+
+Upgrading for Providers
+~~~~~~~~~~~~~~~~~~~~~~~
+
+Graph System Providers
+^^^^^^^^^^^^^^^^^^^^^^
+
+GraphStep Compilation Requirement
++++++++++++++++++++++++++++++++++
+
+OLTP graph providers that have a custom `GraphStep` implementation should ensure that `g.V().hasId(x)` and `g.V(x)` compile
+to the same representation. This ensures a consistent user experience around random access of elements based on ids
+(as opposed to potentially the former doing a linear scan). A static helper method called `GraphStep.processHasContainerIds()`
+has been added. `TinkerGraphStepStrategy` was updated as such:
+
+```
+((HasContainerHolder) currentStep).getHasContainers().forEach(tinkerGraphStep::addHasContainer);
+```
+
+is now
+
+```
+((HasContainerHolder) currentStep).getHasContainers().forEach(hasContainer -> {
+  if (!GraphStep.processHasContainerIds(tinkerGraphStep, hasContainer))
+    tinkerGraphStep.addHasContainer(hasContainer);
+});
+```
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1219[TINKERPOP-1219]
+
+Step API Update
++++++++++++++++
+
+The `Step` interface is fundamental to Gremlin. `Step.processNextStart()` and `Step.next()` both returned `Traverser<E>`.
+We had so many `Traverser.asAdmin()` and direct typecast calls throughout (especially in `TraversalVertexProgram`) that
+it was deemed prudent to have `Step.processNextStart()` and `Step.next()` return `Traverser.Admin<E>`. Moreover it makes
+sense as this is internal logic where `Admins` are always needed. Providers with their own step definitions will simply
+need to change the method signatures of `Step.processNextStart()` and `Step.next()`. No logic update is required -- save
+that `asAdmin()` can be safely removed if used. Also, `Step.addStart()` and `Step.addStarts()` take `Traverser.Admin<S>`
+and `Iterator<Traverser.Admin<S>>`, respectively.
+
+Traversal API Update
+++++++++++++++++++++
+
+The way in which `TraverserRequirements` are calculated has been changed (for the better). The ramification is that post
+compilation requirement additions no longer make sense and should not be allowed. To enforce this,
+`Traversal.addTraverserRequirement()` method has been removed from the interface. Moreover, providers/users should never be able
+to add requirements manually (this should all be inferred from the end compilation). However, if need be, there is always
+`RequirementStrategy` which will allow the provider to add a requirement at strategy application time
+(though again, there should not be a reason to do so).
+
+ComparatorHolder API Change
++++++++++++++++++++++++++++
+
+Providers that either have their own `ComparatorHolder` implementation or reason on `OrderXXXStep` will need to update their code.
+`ComparatorHolder` now returns `List<Pair<Traversal,Comparator>>`. This has greatly reduced the complexity of comparison-based
+steps like `OrderXXXStep`. However, its a breaking API change that is trivial to update to, just some awareness is required.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1209[TINKERPOP-1209]
+
+GraphComputer Semantics and API
++++++++++++++++++++++++++++++++
+
+Providers that have a custom `GraphComputer` implementation will have a lot to handle. Note that if the graph system
+simply uses `SparkGraphComputer` or `GiraphGraphComputer` provided by TinkerPop, then no updates are required. This
+only effects providers that have their own custom `GraphComputer` implementations.
+
+`Memory` updates:
+
+* Any `BinaryOperator` can be used for reduction and is made explicit in the `MemoryComputeKey`.
+* `MemoryComputeKeys` can be marked transient and must be removed from the resultant `ComputerResult.memory()`.
+* `MemoryComputeKeys` can be specified to not broadcast and thus, must not be available to workers to read in `VertexProgram.execute()`.
+* The `Memory` API has been changed. No more `incr()`, `and()`, etc. Now its just `set()` (setup/terminate) and `add()` (execute).
+
+`VertexProgram` updates:
+
+* `VertexComputeKeys` can be marked transient and must be removed from the resultant `ComputerResult.graph()`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1166[TINKERPOP-1166],
+link:https://issues.apache.org/jira/browse/TINKERPOP-1164[TINKERPOP-1164],
+link:https://issues.apache.org/jira/browse/TINKERPOP-951[TINKERPOP-951]
+
+Operational semantic test cases have been added to `GraphComputerTest` to ensure that all the above are implemented correctly.
+
+Barrier Step Updates
+++++++++++++++++++++
+
+The `Barrier` interface use to simply be a marker interface. Now it has methods and it is the primary means by which
+distributed steps across an OLAP job are aggregated and distributed. It is unlikely that `Barrier` was ever used
+directly by a provider's custom step. Instead, a provider most likely extended `SupplyingBarrierStep`, `CollectingBarrierStep`,
+and/or `ReducingBarrierStep`.
+
+Providers that have custom extensions to these steps or that use `Barrier` directly will need to adjust their implementation slightly to
+accommodate a new API that reflects the `Memory` updates above. This should be a simple change. Note that `FinalGet`
+no longer exists and such post-reduction processing is handled by the reducing step (via the new `Generating` interface).
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1164[TINKERPOP-1164]
+
+Performance Tests
++++++++++++++++++
+
+The `ProcessPerformanceSuite` and `TraversalPerformanceTest` have been deprecated.  They are still available, but going forward,
+providers should implement their own performance tests and not rely on the built-in JUnit benchmark-based performance test suite.
+
+Graph Processor Providers
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+GraphFilter and GraphComputer
++++++++++++++++++++++++++++++
+
+The `GraphComputer` API has changed with the addition of `GraphComputer.vertices(Traversal)` and `GraphComputer.edges(Traversal)`.
+These methods construct a `GraphFilter` object which is also new to TinkerPop 3.2.0. `GraphFilter` is a "push-down predicate"
+used to selectively retrieve subgraphs of the underlying graph to be OLAP processed.
+
+* If the graph system provider relies on an existing `GraphComputer` implementations such as `SparkGraphComputer` and/or `GiraphGraphComputer`,
+then there is no immediate action required on their part to remain TinkerPop-compliant. However, they may wish to update
+their `InputFormat` or `InputRDD` implementation to be `GraphFilterAware` and handle the `GraphFilter` filtering at the disk/database
+level. It is advisable to do so in order to reduce OLAP load times and memory/GC usage.
+
+* If the graph system provider has their own `GraphComputer` implementation, then they should implement the two new methods
+and ensure that `GraphFilter` is processed correctly. There is a new test case called `GraphComputerTest.shouldSupportGraphFilter()`
+which ensures the semantics of `GraphFilter` are handled correctly. For a "quick and easy" way to move forward, look to
+`GraphFilterInputFormat` as a way of wrapping an existing `InputFormat` to do filtering prior to `VertexProgram` or `MapReduce`
+execution.
+
+NOTE: To quickly move forward, the `GraphComputer` implementation can simply set `GraphComputer.Features.supportsGraphFilter()`
+to `false` and ensure that `GraphComputer.vertices()` and `GraphComputer.edges()` throws `GraphComputer.Exceptions.graphFilterNotSupported()`.
+This is not recommended as its best to support `GraphFilter`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-962[TINKERPOP-962]
+
+Job Chaining and GraphComputer
+++++++++++++++++++++++++++++++
+
+TinkerPop 3.2.0 has integrated `VertexPrograms` into `GraphTraversal`. This means, that a single traversal can compile to multiple
+`GraphComputer` OLAP jobs. This requires that `ComputeResults` be chainable. There was never any explicit tests to verify if a
+provider's `GraphComputer` could be chained, but now there are. Given a reasonable implementation, it is likely that no changes
+are required of the provider. However, to ensure the implementation is "reasonable" `GraphComputerTests` have been added.
+
+* For providers that support their own `GraphComputer` implementation, note that there is a new `GraphComputerTest.shouldSupportJobChaining()`.
+This tests verifies that the `ComputerResult` output of one job can be fed into the input of a subsequent job. Only linear chains are tested/required
+currently. In the future, branching DAGs may be required.
+
+* For providers that support their own `GraphComputer` implementation, note that there is a new `GraphComputerTest.shouldSupportPreExistingComputeKeys()`.
+When chaining OLAP jobs together, if an OLAP job requires the compute keys of a previous OLAP job, then the existing compute keys must be accessible.
+A simple 2 line change to `SparkGraphComputer` and `TinkerGraphComputer` solved this for TinkerPop. `GiraphGraphComputer` did not need an update as
+this feature was already naturally supported.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-570[TINKERPOP-570]
+
+Graph Language Providers
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+ScriptTraversal
++++++++++++++++
+
+Providers that have custom Gremlin language implementations (e.g. Gremlin-Scala), there is a new class called `ScriptTraversal`
+which will handle script-based processing of traversals. The entire `GroovyXXXTest`-suite was updated to use this new class.
+The previous `TraversalScriptHelper` class has been deprecated so immediate upgrading is not required, but do look into
+`ScriptTraversal` as TinkerPop will be using it as a way to serialize "String-based traversals" over the network moving forward.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1154[TINKERPOP-1154]
+
+ByModulating and Custom Steps
++++++++++++++++++++++++++++++
+
+If the provider has custom steps that leverage `by()`-modulation, those will now need to implement `ByModulating`.
+Most of the methods in `ByModulating` are `default` and, for most situations, only `ByModulating.modulateBy(Traversal)`
+needs to be implemented. Note that this method's body will most like be identical the custom step's already existing
+`TraversalParent.addLocalChild()`. It is recommended that the custom step not use `TraversalParent.addLocalChild()`
+as this method may be deprecated in a future release. Instead, barring any complex usages, simply rename the
+`CustomStep.addLocalChild(Traversal)` to `CustomStep.modulateBy(Traversal)`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1153[TINKERPOP-1153]
+
+TraversalEngine Deprecation and GraphProvider
++++++++++++++++++++++++++++++++++++++++++++++
+
+The `TraversalSource` infrastructure has been completely rewritten. Fortunately for users, their code is backwards compatible.
+Unfortunately for graph system providers, a few tweaks to their implementation are in order.
+
+* If the graph system supports more than `Graph.compute()`, then implement `GraphProvider.getGraphComputer()`.
+* For custom `TraversalStrategy` implementations, change `traverser.getEngine().isGraphComputer()` to `TraversalHelper.onGraphComputer(Traversal)`.
+* For custom `Steps`, change `implements EngineDependent` to `implements GraphComputing`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-971[TINKERPOP-971]
diff --git a/docs/static/images/betweeness-example.png b/docs/static/images/betweeness-example.png
new file mode 100644
index 0000000..650ee53
--- /dev/null
+++ b/docs/static/images/betweeness-example.png
Binary files differ
diff --git a/docs/static/images/graph-cycle.png b/docs/static/images/graph-cycle.png
new file mode 100644
index 0000000..967e0ad
--- /dev/null
+++ b/docs/static/images/graph-cycle.png
Binary files differ
diff --git a/docs/static/images/gremlin-chef.png b/docs/static/images/gremlin-chef.png
new file mode 100644
index 0000000..f728a56
--- /dev/null
+++ b/docs/static/images/gremlin-chef.png
Binary files differ
diff --git a/docs/static/images/gremlin-gym.png b/docs/static/images/gremlin-gym.png
index 00b453b..ada4a52 100644
--- a/docs/static/images/gremlin-gym.png
+++ b/docs/static/images/gremlin-gym.png
Binary files differ
diff --git a/docs/static/images/gremlin-house-of-mirrors.png b/docs/static/images/gremlin-house-of-mirrors.png
new file mode 100644
index 0000000..efe854c
--- /dev/null
+++ b/docs/static/images/gremlin-house-of-mirrors.png
Binary files differ
diff --git a/docs/static/images/jython-logo.png b/docs/static/images/jython-logo.png
new file mode 100644
index 0000000..4a705fe
--- /dev/null
+++ b/docs/static/images/jython-logo.png
Binary files differ
diff --git a/docs/static/images/language-drivers.png b/docs/static/images/language-drivers.png
new file mode 100644
index 0000000..61e3a88
--- /dev/null
+++ b/docs/static/images/language-drivers.png
Binary files differ
diff --git a/docs/static/images/language-variants.png b/docs/static/images/language-variants.png
new file mode 100644
index 0000000..2c6ee8b
--- /dev/null
+++ b/docs/static/images/language-variants.png
Binary files differ
diff --git a/docs/static/images/nine-inch-gremlins.png b/docs/static/images/nine-inch-gremlins.png
new file mode 100644
index 0000000..3509922
--- /dev/null
+++ b/docs/static/images/nine-inch-gremlins.png
Binary files differ
diff --git a/docs/static/images/olap-traversal.png b/docs/static/images/olap-traversal.png
index e2cb601..783ad18 100644
--- a/docs/static/images/olap-traversal.png
+++ b/docs/static/images/olap-traversal.png
Binary files differ
diff --git a/docs/static/images/python-logo.png b/docs/static/images/python-logo.png
new file mode 100644
index 0000000..f503912
--- /dev/null
+++ b/docs/static/images/python-logo.png
Binary files differ
diff --git a/docs/static/images/recipe-job-schema.png b/docs/static/images/recipe-job-schema.png
new file mode 100755
index 0000000..2952c0b
--- /dev/null
+++ b/docs/static/images/recipe-job-schema.png
Binary files differ
diff --git a/docs/static/images/remote-graph.png b/docs/static/images/remote-graph.png
new file mode 100644
index 0000000..561c499
--- /dev/null
+++ b/docs/static/images/remote-graph.png
Binary files differ
diff --git a/docs/static/images/shortest-path.png b/docs/static/images/shortest-path.png
new file mode 100644
index 0000000..52f1d47
--- /dev/null
+++ b/docs/static/images/shortest-path.png
Binary files differ
diff --git a/docs/static/images/tinkerpop3.graffle b/docs/static/images/tinkerpop3.graffle
index 0561820..11a1a94 100644
--- a/docs/static/images/tinkerpop3.graffle
+++ b/docs/static/images/tinkerpop3.graffle
@@ -4,8 +4,8 @@
 <dict>
 	<key>ApplicationVersion</key>
 	<array>
-		<string>com.omnigroup.OmniGrafflePro</string>
-		<string>139.18.0.187838</string>
+		<string>com.omnigroup.OmniGraffle6</string>
+		<string>169.14.0.260934</string>
 	</array>
 	<key>CreationDate</key>
 	<string>2014-05-12 16:00:33 +0000</string>
@@ -14,19 +14,39706 @@
 	<key>FileType</key>
 	<string>flat</string>
 	<key>GraphDocumentVersion</key>
-	<integer>8</integer>
+	<integer>12</integer>
 	<key>GuidesLocked</key>
 	<string>NO</string>
 	<key>GuidesVisible</key>
 	<string>YES</string>
 	<key>ImageCounter</key>
-	<integer>102</integer>
+	<integer>121</integer>
 	<key>Images</key>
 	<array>
 		<dict>
 			<key>Extension</key>
 			<string>tiff</string>
 			<key>ID</key>
+			<integer>120</integer>
+			<key>RawData</key>
+			<data>
+			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
+			AAAAJgAAAah0aFRIAAAAJgAAAahlc1hMAAAAJgAAAahkZURFAAAA
+			JgAAAahlblVTAAAAJgAAAahwdEJSAAAAJgAAAahwbFBMAAAAJgAA
+			AahlbEdSAAAAJgAAAahzdlNFAAAAJgAAAah0clRSAAAAJgAAAahq
+			YUpQAAAAJgAAAahwdFBUAAAAJgAAAagAVABoAHUAbgBkAGUAcgBi
+			AG8AbAB0ACAARABpAHMAcABsAGEAeQAAdGV4dAAAAABDb3B5cmln
+			aHQgQXBwbGUgSW5jLiwgMjAxNgAAWFlaIAAAAAAAAPMWAAEAAAAB
+			FspYWVogAAAAAAAAccAAADmKAAABZ1hZWiAAAAAAAABhIwAAueYA
+			ABP2WFlaIAAAAAAAACPyAAAMkAAAvdBjdXJ2AAAAAAAABAAAAAAF
+			AAoADwAUABkAHgAjACgALQAyADYAOwBAAEUASgBPAFQAWQBeAGMA
+			aABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8AowCoAK0AsgC3ALwAwQDG
+			AMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB
+			OAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB
+			AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcC
+			cQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4
+			A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAE
+			LQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6
+			BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoG
+			ewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfS
+			B+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8J
+			ZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsL
+			CyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM
+			8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7u
+			DwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMR
+			MRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxOD
+			E6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMW
+			JhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjV
+			GPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib
+			2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p
+			HxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7Iici
+			VSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH
+			JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWsp
+			nSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12
+			Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIx
+			ujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9
+			Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6
+			sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9h
+			P6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdE
+			ikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mp
+			SfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP
+			SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1Tb
+			VShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa
+			9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8
+			YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1n
+			k2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4S
+			bmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1
+			KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwh
+			fIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eD
+			uoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw
+			i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOT
+			TZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtC
+			m6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj
+			5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axc
+			rNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1
+			irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6E
+			vv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/I
+			Pci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+
+			0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc
+			BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN
+			5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw
+			5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3
+			/Af8mP0p/br+S/7c/23//3BhcmEAAAAAAAMAAAACZmYAAPKnAAAN
+			WQAAE9AAAAoOdmNndAAAAAAAAAABAAEAAAAAAAAAAQAAAAEAAAAA
+			AAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAAAAAAAAA2AACnQAAAVYAA
+			AEzAAACewAAAJYAAAAzAAABQAAAAVEAAAjMzAAIzMwACMzMAAAAA
+			AAAAAHNmMzIAAAAAAAEMcgAABfj///MdAAAHugAA/XL///ud///9
+			pAAAA9kAAMBxbW1vZAAAAAAAAAYQAACSJxgxFZ/QpAMAAAAAAAAA
+			AAAAAAAAAAAAAA==
+			</data>
+		</dict>
+		<dict>
+			<key>Extension</key>
+			<string>tiff</string>
+			<key>ID</key>
+			<integer>119</integer>
+			<key>RawData</key>
+			<data>
+			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
+			SlwAAEGbAAAACAAASmQAAQABAAEAAQAADLhhcHBsAhAAAG1udHJS
+			R0IgWFlaIAfgAAEABAAOABgALGFjc3BBUFBMAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBwbAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWRl
+			c2MAAAFQAAAAYmRzY20AAAG0AAABnmNwcnQAAANUAAAAJHd0cHQA
+			AAN4AAAAFHJYWVoAAAOMAAAAFGdYWVoAAAOgAAAAFGJYWVoAAAO0
+			AAAAFHJUUkMAAAPIAAAIDGFhcmcAAAvUAAAAIHZjZ3QAAAv0AAAA
+			MG5kaW4AAAwkAAAAPmNoYWQAAAxkAAAALG1tb2QAAAyQAAAAKGJU
+			UkMAAAPIAAAIDGdUUkMAAAPIAAAIDGFhYmcAAAvUAAAAIGFhZ2cA
+			AAvUAAAAIGRlc2MAAAAAAAAACERpc3BsYXkAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAA
+			AB4AAAAMc2tTSwAAACYAAAF4Y2FFUwAAACYAAAF4aGVJTAAAACYA
+			AAF4cHRCUgAAACYAAAF4aXRJVAAAACYAAAF4aHVIVQAAACYAAAF4
+			dWtVQQAAACYAAAF4a29LUgAAACYAAAF4bmJOTwAAACYAAAF4Y3ND
+			WgAAACYAAAF4emhUVwAAACYAAAF4ZGVERQAAACYAAAF4cm9STwAA
+			ACYAAAF4c3ZTRQAAACYAAAF4emhDTgAAACYAAAF4amFKUAAAACYA
+			AAF4YXIAAAAAACYAAAF4ZWxHUgAAACYAAAF4cHRQVAAAACYAAAF4
+			bmxOTAAAACYAAAF4ZnJGUgAAACYAAAF4ZXNFUwAAACYAAAF4dGhU
+			SAAAACYAAAF4dHJUUgAAACYAAAF4ZmlGSQAAACYAAAF4aHJIUgAA
+			ACYAAAF4cGxQTAAAACYAAAF4cnVSVQAAACYAAAF4ZW5VUwAAACYA
+			AAF4ZGFESwAAACYAAAF4AFQAaAB1AG4AZABlAHIAYgBvAGwAdAAg
+			AEQAaQBzAHAAbABhAHkAAHRleHQAAAAAQ29weXJpZ2h0IEFwcGxl
+			LCBJbmMuLCAyMDE2AFhZWiAAAAAAAADzFgABAAAAARbKWFlaIAAA
+			AAAAAHHAAAA5igAAAWdYWVogAAAAAAAAYSMAALnmAAAT9lhZWiAA
+			AAAAAAAj8gAADJAAAL3QY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZ
+			AB4AIwAoAC0AMgA2ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcA
+			fACBAIYAiwCQAJUAmgCfAKMAqACtALIAtwC8AMEAxgDLANAA1QDb
+			AOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFFAUwB
+			UgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHh
+			AekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4C
+			mAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNm
+			A3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUE
+			YwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3
+			BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8G
+			wAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgf
+			CDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJ
+			ugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtp
+			C4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUAN
+			Wg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9e
+			D3oPlg+zD88P7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwR
+			qhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQG
+			FCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8W
+			shbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlr
+			GZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIc
+			exyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+U
+			H78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0j
+			CiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaH
+			Jrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUq
+			aCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5M
+			LoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMy
+			mzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbp
+			NyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7
+			qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0Bk
+			QKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVF
+			mkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrE
+			SwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQ
+			cVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYP
+			VlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+Vc
+			NVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJ
+			Ypxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo
+			7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94
+			b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52
+			m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2h
+			fgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOF
+			R4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zK
+			jTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU
+			9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3
+			nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTil
+			qaYapoum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4t
+			rqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3
+			aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBw
+			wOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnK
+			OMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG
+			1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3Zbe
+			HN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy
+			6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozz
+			GfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26
+			/kv+3P9t//9wYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAK
+			DnZjZ3QAAAAAAAAAAQABAAAAAAAAAAEAAAABAAAAAAAAAAEAAAAB
+			AAAAAAAAAAEAAG5kaW4AAAAAAAAANgAAp0AAAFWAAABMwAAAnsAA
+			ACWAAAAMwAAAUAAAAFRAAAIzMwACMzMAAjMzAAAAAAAAAABzZjMy
+			AAAAAAABDHIAAAX4///zHQAAB7oAAP1y///7nf///aQAAAPZAADA
+			cW1tb2QAAAAAAAAGEAAAkicYMRWf0KQDAAAAAAAAAAAAAAAAAAAA
+			AAA=
+			</data>
+		</dict>
+		<dict>
+			<key>Extension</key>
+			<string>tiff</string>
+			<key>ID</key>
+			<integer>118</integer>
+			<key>RawData</key>
+			<data>
+			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
+			dWMAAAAAAAAAHgAAAAxza1NLAAAAJgAAAXhjYUVTAAAAJgAAAXho
+			ZUlMAAAAJgAAAXhwdEJSAAAAJgAAAXhpdElUAAAAJgAAAXhodUhV
+			AAAAJgAAAXh1a1VBAAAAJgAAAXhrb0tSAAAAJgAAAXhuYk5PAAAA
+			JgAAAXhjc0NaAAAAJgAAAXh6aFRXAAAAJgAAAXhkZURFAAAAJgAA
+			AXhyb1JPAAAAJgAAAXhzdlNFAAAAJgAAAXh6aENOAAAAJgAAAXhq
+			YUpQAAAAJgAAAXhhcgAAAAAAJgAAAXhlbEdSAAAAJgAAAXhwdFBU
+			AAAAJgAAAXhubE5MAAAAJgAAAXhmckZSAAAAJgAAAXhlc0VTAAAA
+			JgAAAXh0aFRIAAAAJgAAAXh0clRSAAAAJgAAAXhmaUZJAAAAJgAA
+			AXhockhSAAAAJgAAAXhwbFBMAAAAJgAAAXhydVJVAAAAJgAAAXhl
+			blVTAAAAJgAAAXhkYURLAAAAJgAAAXgAVABoAHUAbgBkAGUAcgBi
+			AG8AbAB0ACAARABpAHMAcABsAGEAeQAAdGV4dAAAAABDb3B5cmln
+			aHQgQXBwbGUsIEluYy4sIDIwMTYAWFlaIAAAAAAAAPMWAAEAAAAB
+			FspYWVogAAAAAAAAccAAADmKAAABZ1hZWiAAAAAAAABhIwAAueYA
+			ABP2WFlaIAAAAAAAACPyAAAMkAAAvdBjdXJ2AAAAAAAABAAAAAAF
+			AAoADwAUABkAHgAjACgALQAyADYAOwBAAEUASgBPAFQAWQBeAGMA
+			aABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8AowCoAK0AsgC3ALwAwQDG
+			AMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB
+			OAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB
+			AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcC
+			cQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4
+			A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAE
+			LQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6
+			BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoG
+			ewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfS
+			B+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8J
+			ZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsL
+			CyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM
+			8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7u
+			DwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMR
+			MRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxOD
+			E6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMW
+			JhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjV
+			GPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib
+			2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p
+			HxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7Iici
+			VSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH
+			JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWsp
+			nSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12
+			Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIx
+			ujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9
+			Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6
+			sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9h
+			P6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdE
+			ikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mp
+			SfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP
+			SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1Tb
+			VShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa
+			9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8
+			YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1n
+			k2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4S
+			bmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1
+			KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwh
+			fIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eD
+			uoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw
+			i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOT
+			TZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtC
+			m6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj
+			5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axc
+			rNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1
+			irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6E
+			vv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/I
+			Pci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+
+			0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc
+			BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN
+			5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw
+			5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3
+			/Af8mP0p/br+S/7c/23//3BhcmEAAAAAAAMAAAACZmYAAPKnAAAN
+			WQAAE9AAAAoOdmNndAAAAAAAAAABAAEAAAAAAAAAAQAAAAEAAAAA
+			AAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAAAAAAAAA2AACnQAAAVYAA
+			AEzAAACewAAAJYAAAAzAAABQAAAAVEAAAjMzAAIzMwACMzMAAAAA
+			AAAAAHNmMzIAAAAAAAEMcgAABfj///MdAAAHugAA/XL///ud///9
+			pAAAA9kAAMBxbW1vZAAAAAAAAAYQAACSJxgxFZ/QpAMAAAAAAAAA
+			AAAAAAAAAAAAAA==
+			</data>
+		</dict>
+		<dict>
+			<key>Extension</key>
+			<string>tiff</string>
+			<key>ID</key>
+			<integer>117</integer>
+			<key>RawData</key>
+			<data>
+			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
+			AAAAAQAEAAABFgADAAAAAQAgAAABFwAEAAAAEAABKrIBHAADAAAA
+			AQABAAABPQADAAAAAQACAAABUgADAAAAAQABAAABUwADAAAABAAB
+			KzKHcwAHAAAMuAABKzoAAAAAAAgACAAIAAgAAAPaAAAH1QAACbgA
+			AA6wAAAP1gAAHK8AAC8oAAAhTwAAE8sAABxhAAATCAAAEdQAABNJ
+			AAARaQAACukAAAQyAAAACAAAA+IAAAu3AAAVbwAAJB8AADP1AABQ
+			pAAAf8wAAKEbAAC05gAA0UcAAORPAAD2IwABCWwAARrVAAElvgAB
+			AAEAAQABAAAMuGFwcGwCEAAAbW50clJHQiBYWVogB+AAAQAEAA4A
+			GAAsYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbW
+			AAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAARZGVzYwAAAVAAAABiZHNjbQAA
+			AbQAAAGeY3BydAAAA1QAAAAkd3RwdAAAA3gAAAAUclhZWgAAA4wA
+			AAAUZ1hZWgAAA6AAAAAUYlhZWgAAA7QAAAAUclRSQwAAA8gAAAgM
+			YWFyZwAAC9QAAAAgdmNndAAAC/QAAAAwbmRpbgAADCQAAAA+Y2hh
+			ZAAADGQAAAAsbW1vZAAADJAAAAAoYlRSQwAAA8gAAAgMZ1RSQwAA
+			A8gAAAgMYWFiZwAAC9QAAAAgYWFnZwAAC9QAAAAgZGVzYwAAAAAA
+			AAAIRGlzcGxheQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAAHgAAAAxza1NLAAAAJgAA
+			AXhjYUVTAAAAJgAAAXhoZUlMAAAAJgAAAXhwdEJSAAAAJgAAAXhp
+			dElUAAAAJgAAAXhodUhVAAAAJgAAAXh1a1VBAAAAJgAAAXhrb0tS
+			AAAAJgAAAXhuYk5PAAAAJgAAAXhjc0NaAAAAJgAAAXh6aFRXAAAA
+			JgAAAXhkZURFAAAAJgAAAXhyb1JPAAAAJgAAAXhzdlNFAAAAJgAA
+			AXh6aENOAAAAJgAAAXhqYUpQAAAAJgAAAXhhcgAAAAAAJgAAAXhl
+			bEdSAAAAJgAAAXhwdFBUAAAAJgAAAXhubE5MAAAAJgAAAXhmckZS
+			AAAAJgAAAXhlc0VTAAAAJgAAAXh0aFRIAAAAJgAAAXh0clRSAAAA
+			JgAAAXhmaUZJAAAAJgAAAXhockhSAAAAJgAAAXhwbFBMAAAAJgAA
+			AXhydVJVAAAAJgAAAXhlblVTAAAAJgAAAXhkYURLAAAAJgAAAXgA
+			VABoAHUAbgBkAGUAcgBiAG8AbAB0ACAARABpAHMAcABsAGEAeQAA
+			dGV4dAAAAABDb3B5cmlnaHQgQXBwbGUsIEluYy4sIDIwMTYAWFla
+			IAAAAAAAAPMWAAEAAAABFspYWVogAAAAAAAAccAAADmKAAABZ1hZ
+			WiAAAAAAAABhIwAAueYAABP2WFlaIAAAAAAAACPyAAAMkAAAvdBj
+			dXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADYAOwBA
+			AEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8A
+			owCoAK0AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH
+			AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMB
+			iwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQIm
+			Ai8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC
+			6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPH
+			A9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE
+			0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2
+			BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0H
+			TwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+
+			CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK
+			agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwq
+			DEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMO
+			Lg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBD
+			EGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQS
+			oxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUS
+			FTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X
+			0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqe
+			GsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkd
+			wx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw
+			IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0k
+			fCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgN
+			KD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9Es
+			BSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+
+			MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0
+			ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjI
+			OQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9
+			oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJy
+			QrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH
+			wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0C
+			TUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxS
+			x1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9
+			WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxe
+			vV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTp
+			ZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09r
+			p2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJL
+			cqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5
+			iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co
+			gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI
+			aYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAG
+			kG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CY
+			TJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBp
+			oNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSp
+			N6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHW
+			skuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7
+			LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRR
+			xM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO
+			Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg
+			2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4czi
+			U+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG
+			7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3
+			ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//3BhcmEAAAAA
+			AAMAAAACZmYAAPKnAAANWQAAE9AAAAoOdmNndAAAAAAAAAABAAEA
+			AAAAAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAA
+			AAAAAAA2AACnQAAAVYAAAEzAAACewAAAJYAAAAzAAABQAAAAVEAA
+			AjMzAAIzMwACMzMAAAAAAAAAAHNmMzIAAAAAAAEMcgAABfj///Md
+			AAAHugAA/XL///ud///9pAAAA9kAAMBxbW1vZAAAAAAAAAYQAACS
+			JxgxFZ/QpAMAAAAAAAAAAAAAAAAAAAAAAA==
+			</data>
+		</dict>
+		<dict>
+			<key>Extension</key>
+			<string>tiff</string>
+			<key>ID</key>
+			<integer>116</integer>
+			<key>RawData</key>
+			<data>
+			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
+			AAAAAQGQAAABAgADAAAABAAAg14BAwADAAAAAQAFAAABBgADAAAA
+			AQACAAABEQAEAAAABQAAg3oBEgADAAAAAQABAAABFQADAAAAAQAE
+			AAABFgADAAAAAQBRAAABFwAEAAAABQAAg2YBHAADAAAAAQABAAAB
+			PQADAAAAAQACAAABUgADAAAAAQABAAABUwADAAAABAAAg46HcwAH
+			AAAMuAAAg5YAAAAAAAgACAAIAAgAAA/sAAAZeQAAIxQAACSmAAAR
+			fAAAAAgAAA/0AAApbQAATIEAAHEnAAEAAQABAAEAAAy4YXBwbAIQ
+			AABtbnRyUkdCIFhZWiAH4AABAAQADgAYACxhY3NwQVBQTAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAABFkZXNjAAABUAAAAGJkc2NtAAABtAAAAZ5jcHJ0AAADVAAA
+			ACR3dHB0AAADeAAAABRyWFlaAAADjAAAABRnWFlaAAADoAAAABRi
+			WFlaAAADtAAAABRyVFJDAAADyAAACAxhYXJnAAAL1AAAACB2Y2d0
+			AAAL9AAAADBuZGluAAAMJAAAAD5jaGFkAAAMZAAAACxtbW9kAAAM
+			kAAAAChiVFJDAAADyAAACAxnVFJDAAADyAAACAxhYWJnAAAL1AAA
+			ACBhYWdnAAAL1AAAACBkZXNjAAAAAAAAAAhEaXNwbGF5AAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1
+			YwAAAAAAAAAeAAAADHNrU0sAAAAmAAABeGNhRVMAAAAmAAABeGhl
+			SUwAAAAmAAABeHB0QlIAAAAmAAABeGl0SVQAAAAmAAABeGh1SFUA
+			AAAmAAABeHVrVUEAAAAmAAABeGtvS1IAAAAmAAABeG5iTk8AAAAm
+			AAABeGNzQ1oAAAAmAAABeHpoVFcAAAAmAAABeGRlREUAAAAmAAAB
+			eHJvUk8AAAAmAAABeHN2U0UAAAAmAAABeHpoQ04AAAAmAAABeGph
+			SlAAAAAmAAABeGFyAAAAAAAmAAABeGVsR1IAAAAmAAABeHB0UFQA
+			AAAmAAABeG5sTkwAAAAmAAABeGZyRlIAAAAmAAABeGVzRVMAAAAm
+			AAABeHRoVEgAAAAmAAABeHRyVFIAAAAmAAABeGZpRkkAAAAmAAAB
+			eGhySFIAAAAmAAABeHBsUEwAAAAmAAABeHJ1UlUAAAAmAAABeGVu
+			VVMAAAAmAAABeGRhREsAAAAmAAABeABUAGgAdQBuAGQAZQByAGIA
+			bwBsAHQAIABEAGkAcwBwAGwAYQB5AAB0ZXh0AAAAAENvcHlyaWdo
+			dCBBcHBsZSwgSW5jLiwgMjAxNgBYWVogAAAAAAAA8xYAAQAAAAEW
+			ylhZWiAAAAAAAABxwAAAOYoAAAFnWFlaIAAAAAAAAGEjAAC55gAA
+			E/ZYWVogAAAAAAAAI/IAAAyQAAC90GN1cnYAAAAAAAAEAAAAAAUA
+			CgAPABQAGQAeACMAKAAtADIANgA7AEAARQBKAE8AVABZAF4AYwBo
+			AG0AcgB3AHwAgQCGAIsAkACVAJoAnwCjAKgArQCyALcAvADBAMYA
+			ywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4
+			AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEB
+			yQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJx
+			AnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgD
+			QwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQt
+			BDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToF
+			SQVYBWcFdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7
+			BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeGB5kHrAe/B9IH
+			5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJTwlk
+			CXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsL
+			Igs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2Qzz
+			DQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4P
+			CQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPURExEx
+			EU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MT
+			pBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYm
+			FkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY
+			+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshva
+			HAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+Hukf
+			Ex8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJV
+			IoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl
+			9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymd
+			KdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYt
+			qy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6
+			MfIyKjJjMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02
+			NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85vDn5OjY6dDqy
+			Ou87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/
+			oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SK
+			RM5FEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ
+			8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9J
+			T5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtV
+			KFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1
+			W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxh
+			T2GiYfViSWKcYvBjQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeT
+			Z+loP2iWaOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25bhJu
+			a27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUo
+			dYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8
+			gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6
+			hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCL
+			lov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NN
+			k7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kb
+			r5wcnImc951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPm
+			pFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKrdavprFys
+			0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WK
+			tgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+
+			/796v/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9
+			yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7S
+			P9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF
+			3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3m
+			lucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl
+			8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8
+			B/yY/Sn9uv5L/tz/bf//cGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1Z
+			AAAT0AAACg52Y2d0AAAAAAAAAAEAAQAAAAAAAAABAAAAAQAAAAAA
+			AAABAAAAAQAAAAAAAAABAABuZGluAAAAAAAAADYAAKdAAABVgAAA
+			TMAAAJ7AAAAlgAAADMAAAFAAAABUQAACMzMAAjMzAAIzMwAAAAAA
+			AAAAc2YzMgAAAAAAAQxyAAAF+P//8x0AAAe6AAD9cv//+53///2k
+			AAAD2QAAwHFtbW9kAAAAAAAABhAAAJInGDEVn9CkAwAAAAAAAAAA
+			AAAAAAAAAAAA
+			</data>
+		</dict>
+		<dict>
+			<key>Extension</key>
+			<string>tiff</string>
+			<key>ID</key>
+			<integer>115</integer>
+			<key>RawData</key>
+			<data>
+			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
+			iEj4uxkDuF2EYNDdUIAwDOJYbQCAJAaBLkl2Fwsj5y0VjiyDu83Z
+			DzxUZ4Nj8rXdwxULD5+qC6VuNjvSGmZFtVx5puyNHdQ5I1RlSNlo
+			8fXocINgWQkgijyHINgXmZCEi4E0DMXARweATCOznNuN9NZYNNlO
+			N8ls6ypzu7Eeo9x+j1AiD0YoEX6v3O0AcB4FgQAxDUJob+j8hZKx
+			rpHc2ccl7Lu5kbAur5w6W1ZsnIOnN6aXvjqDTtQzx3j3Zsiz+rdX
+			bH1Xo7gm9t4YCkTp9v4/h+j7X+wEfw+x9D114QgaoswdDVBUCMBg
+			KtR6ixlwrDmTNmXfhts/Z2+cPEHByF4Z4ORkDSHkpM6iSkmAiCUk
+			h4l+8q6Nv9ZrdG6nB6mkJvzEdqeD9D3vWLUkoNlcL3jy/gWOsgIt
+			4NwPk2b+mb9UpBLc/VIgbz6t0I2g9R1DhGYNUVgiQa8ZIWPAZIQh
+			4APAaAQB/KOS3h4LqrSXKbVuo6V0fInCCBh1EeN4OojBQjjEYdoE
+			gTQ4ijAoCwH4XMZ9d4DlrxBhacUk5HhrpPUaw6wgd0Dv6hD35wwJ
+			4Xhm6+seC61u/1PaOi+r0n0vfHY+ve99jyfWSEh0DSF+JEcQxBVh
+			w7kQZ6z2HtBCe7u7DPsuE3w9n2fZudPYal8P04gosRgDsFiFAOA1
+			QoHaBkkgcYBlgqd+v0+73g1ERl9z8DwPfcnf41j2D+rn7RbrJdzh
+			rfbdr0i8kATTD3beC/TfzTy/rsj+L38BKwj7DOStAbgXQToLAdwb
+			gZoVL5ogoFYEgBgFYagWQHQajwz20ADzbfTf7/kCqBL7r2r3jz4h
+			IdQdwfYdQC4IQYwC424BICYDgFAF4MwSga73SnT+b3D7Tkjzr00B
+			Tq68EGjqT4T/z1kFr30J0Gzqb27+kLL6r/MKMCCm7JcBsAMF7KTe
+			r+UCULjsrIsL8Jpv4f4fwZwT4O4C4fgfAegdkEIgjYTYjXzYCykF
+			j1UN0CxLzHL7blcKsKStUOQlxIwZIEQb4cofDcozQC444NQEII4M
+			4SqYUFzUcR0RkMz+8Cj1DojU8VMMUOEVrGkJROL1q4cAsRcJ77MG
+			8QsV0SMNEUbwDl0CLzkJkWDdLsxoKNw8geodYcQZoaoVYRAGkP4g
+			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
+			atbBz9dq6m1szbfz1lzLO3ruZ92RoTOW6M6Snxe/1z23dAaPutmC
+			1KBttHRH8P0fY+h5jvHIZAd44h8jzHaOHgY7Rwb8MlwAcQ971jZm
+			lq7iV8AzBVA4GYSofAUCVRAiLXcxNDU92HC+oMGcv6C3hvbZWLeW
+			bzJIC0MQjRoAKAsCAF+kcL70zhUndOOrQY55Hr7RVwudXI5VvHn2
+			xNz7V6RVitu2eP3Nunzjnu8uicozziUqWltMGwaVpceLV9VDwH4P
+			ceg6x+D4HoOztI9R2j77N2wfHbu0jzHWPoeo8RzcKHCPvvI5zYb5
+			4n4PwhFQ7r/DuIcOAJRDtkbN1E7mvei9JoNvfBHQem7U6n5DQe69
+			wEtBcGUSQ1wEgTA2CjO+wvJ2ntXhzqu3Oqbk2P0PEG4j4eW3r7jl
+			Oh0X75H534eA5+2ju7SPQdvxfj9m7f2odo/e5ju312rto7x/Uq0s
+			Pkeg/h9j5HrSr6n2x6IY30SIfg+h7dh8D4X9X6/2ft/d+/+H8f5E
+			ZAWAkAYCxPiFBWJ8KoRgLgqq6uQPVNzNKIWvdOdtttJvLugMCvWv
+			OuriXgYA0hLhvgDgHuariumQFM5ult2OlOjiAACBQOCQWDAB/weF
+			QuGQ2HQ+IRGHQmJRWLQKKReNRGMxuPR+QR6OxaRyGTSeCyWUSuWQ
+			uVQiWzGZReXzOUSV/v9/P19PJ2uF8PB0tx8PF1N19PN2uJ80pxT1
+			2OF8z5wvt6vBzzmdzauV2vV+wWGxWOyWWzWe0Wm1Wu2W23W+4XG5
+			XO6XW7Xe8XcQBsEiBYpQYLEXCUGC63TW8xLESLE2TFynG3Oc5G34
+			+DZbKSbMRrN5mD52Z6DJYnRV7Sx4YmtNOMDA0JhyXWDT57OWLZ2v
+			b7SKzjdS3c43f7/ew/hSviyzj8PiYzlQ3k72X8/m7G4Tt+Pl7u1y
+			NV7OtxtHsuVqvh3uht0F0NqiutvP9+vx9dP5fP6fX7ff8fn9fv+f
+			3/P/AEAwEi4chgB4clYR4XlYDQKgODTDv66SMQGiDOwnATJwq40L
+			Q2hkMQo/0QN25URpjEyNxQhYZDYThzAKBgIgyyCvxU6DbNpGzdN5
+			DyCR03CQR+z0hOWyseo45j8yIujoyPDqwH8fh9nwep1HAZp6HObh
+			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
+			cDAIDy6CP+BTqcT2OTyIUCfUOdyahUSQ0efUqkQ6mU2nUin1CfyC
+			p1SXVeDVqsV2d1yvV2wACx2GR2WJ2izUGh2qw26e3CS3K1wW6Wm6
+			yi70WKCEnM0QuBzvlwXnDYfEYnFYvGY3HY/IZHJZPKZXLZfMZnNZ
+			vOZ3PZ+kTCZTSbVm+aCrRK95vVwrW3nX1XG7GcbSMba17jT6i2Q/
+			dbyBv/f8Dd67iVGk7zhxHlyrmx/nxTo0u9ceD6vWiIns4RN9zPhv
+			9bxePyeXzef0en1ev2e33e/4fH5fP3aKZzWbymedPOW7+MW5b/ri
+			qEBOgyECuMz7fwQxK0QYzDhPohixwe2CRQq0zqMjDC8LfCDqvUuT
+			bO07jvPBCUURTFUVxZFsXRfGEYxlGcaRrG0Zvs0j8pI/cXv89sAs
+			9DkEsRIaMyM4rWR49cHRjCMnORJkLuUtrJSQ3yzSujz/y0psRJCE
+			YoGcEZvHKfBvRvNM1TXNk2zdN84TjOU5zpOs7InHL8SmskfNVIE9
+			v6r0uyi2apNA59BqJJsYSfRlCPTILUSNRLpSLLMPpPSkNT8kgSCi
+			ZwSG6ch8G7O9TVPVFU1VVdWVbV1X1hWL6Ty0qOx7F0fvY6dNI1TV
+			eITX9HtrQ8lxC3sfWDSyG2TDLU0lKsN2VQVArPKUOpPT1QVFUlZW
+			7b1v3BcNxXHcly3Nc8U1pHaL1vFtc2tYtMKxZi7QPQ0FXi9FF2RG
+			UKPi3F6NlAdosPX+AorRF4OYloSikZwSm4cZ8G5dGK4ti+MYzjWN
+			45juPVfdSLXbFi74Oo2TszXzFZM697yFfLz33XGWQ9Zd/y3KlNsf
+			mk+KpnljuTY1rpdhuH4jieP6TpWl6ZpunafqGo6kkmQ4Xnt3ZFSG
+			UWpl2C3tRViWroVhRXRs+5s+GAZzgev5XeeuLnmNKqQE2HBMbeJG
+			3qe975vu/b/wHA8FwcVarCckxTkutbizsu5Zn7g67uFncXskVbNX
+			HLcqjfIbntmdsZRPO7RrbyS+rATimZ4Tm0cR7m1wnY9l2fadr23b
+			9x3M8Ji+9aoQpXR2boby13l8vbd0GwXxsXN6BxPg8lYGb1ttfldD
+			6+fcn5nTc8r3U9X1vX918fyfL83z/R9P1Tlw3I3ry+s310rNcd5D
+			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
+			AAcAAAy4AAGuHgAAAAAACAAIAAgACAAAC2UAAArhAAAM8QAAC6oA
+			AAv7AAAJwQAACEkAAAZYAAAOpQAADqoAAA8gAAAQGQAAETUAABCw
+			AAAP3AAAEE4AABCYAAAQYgAAEWYAABFVAAAQMwAADzcAAA98AAAO
+			mgAAB2wAAAiMAAALFgAAC98AAA0EAAANRAAAC0AAAAzMAAAACAAA
+			C20AABZOAAAjPwAALukAADrkAABEpQAATO4AAFNGAABh6wAAcJUA
+			AH+1AACPzgAAoQMAALGzAADBjwAA0d0AAOJ1AADy1wABBD0AARWS
+			AAElxQABNPwAAUR4AAFTEgABWn4AAWMKAAFuIAABef8AAYcDAAGU
+			RwABn4cAAQABAAEAAQAADLhhcHBsAhAAAG1udHJSR0IgWFlaIAfg
+			AAEABAAOABgALGFjc3BBUFBMAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAD21gABAAAAANMtYXBwbAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWRlc2MAAAFQAAAA
+			YmRzY20AAAG0AAABnmNwcnQAAANUAAAAJHd0cHQAAAN4AAAAFHJY
+			WVoAAAOMAAAAFGdYWVoAAAOgAAAAFGJYWVoAAAO0AAAAFHJUUkMA
+			AAPIAAAIDGFhcmcAAAvUAAAAIHZjZ3QAAAv0AAAAMG5kaW4AAAwk
+			AAAAPmNoYWQAAAxkAAAALG1tb2QAAAyQAAAAKGJUUkMAAAPIAAAI
+			DGdUUkMAAAPIAAAIDGFhYmcAAAvUAAAAIGFhZ2cAAAvUAAAAIGRl
+			c2MAAAAAAAAACERpc3BsYXkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAB4AAAAMc2tT
+			SwAAACYAAAF4Y2FFUwAAACYAAAF4aGVJTAAAACYAAAF4cHRCUgAA
+			ACYAAAF4aXRJVAAAACYAAAF4aHVIVQAAACYAAAF4dWtVQQAAACYA
+			AAF4a29LUgAAACYAAAF4bmJOTwAAACYAAAF4Y3NDWgAAACYAAAF4
+			emhUVwAAACYAAAF4ZGVERQAAACYAAAF4cm9STwAAACYAAAF4c3ZT
+			RQAAACYAAAF4emhDTgAAACYAAAF4amFKUAAAACYAAAF4YXIAAAAA
+			ACYAAAF4ZWxHUgAAACYAAAF4cHRQVAAAACYAAAF4bmxOTAAAACYA
+			AAF4ZnJGUgAAACYAAAF4ZXNFUwAAACYAAAF4dGhUSAAAACYAAAF4
+			dHJUUgAAACYAAAF4ZmlGSQAAACYAAAF4aHJIUgAAACYAAAF4cGxQ
+			TAAAACYAAAF4cnVSVQAAACYAAAF4ZW5VUwAAACYAAAF4ZGFESwAA
+			ACYAAAF4AFQAaAB1AG4AZABlAHIAYgBvAGwAdAAgAEQAaQBzAHAA
+			bABhAHkAAHRleHQAAAAAQ29weXJpZ2h0IEFwcGxlLCBJbmMuLCAy
+			MDE2AFhZWiAAAAAAAADzFgABAAAAARbKWFlaIAAAAAAAAHHAAAA5
+			igAAAWdYWVogAAAAAAAAYSMAALnmAAAT9lhZWiAAAAAAAAAj8gAA
+			DJAAAL3QY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0A
+			MgA2ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQ
+			AJUAmgCfAKMAqACtALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA
+			9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFFAUwBUgFZAWABZwFu
+			AXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMC
+			DAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLB
+			AssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YD
+			ogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASa
+			BKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUF
+			xQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcH
+			BxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4I
+			ggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woR
+			CicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL
+			4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3D
+			Dd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P
+			7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxIm
+			EkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsU
+			rRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdB
+			F2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQa
+			KhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0e
+			HUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEg
+			bCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPC
+			I/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kn
+			eierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2
+			K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQv
+			Wi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMymzLUMw0zRjN/
+			M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4
+			FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTyk
+			POM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpB
+			rEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0ar
+			RvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JM
+			KkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGb
+			UeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RX
+			klfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114
+			XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj
+			62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpI
+			ap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBx
+			OnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gR
+			eG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/
+			hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobX
+			hzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaO
+			zo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU9JVflcmWNJaf
+			lwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6f
+			HZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adu
+			p+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACw
+			dbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blK
+			ucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C
+			28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1
+			zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHW
+			VdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A2
+			4L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq
+			5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ
+			9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//9w
+			YXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKDnZjZ3QAAAAA
+			AAAAAQABAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAAAAAAEA
+			AG5kaW4AAAAAAAAANgAAp0AAAFWAAABMwAAAnsAAACWAAAAMwAAA
+			UAAAAFRAAAIzMwACMzMAAjMzAAAAAAAAAABzZjMyAAAAAAABDHIA
+			AAX4///zHQAAB7oAAP1y///7nf///aQAAAPZAADAcW1tb2QAAAAA
+			AAAGEAAAkicYMRWf0KQDAAAAAAAAAAAAAAAAAAAAAAA=
+			</data>
+		</dict>
+		<dict>
+			<key>Extension</key>
+			<string>tiff</string>
+			<key>ID</key>
+			<integer>113</integer>
+			<key>RawData</key>
+			<data>
+			TU0AKgAS39SAACBQOCQWDQeEQmFQuGQ2HQ+IRGJROKRWLReMRmNR
+			uOR2PR+QSGRSOSSWTSeUSmVSuWS2XS+YTGZTOaTWbTecTmdTueT2
+			fT+gUGhUOiUWjUekUmlUumU2nU+oVGpVOqVWrVesVmtVuuV2vV+w
+			WGxWOyWWzWe0Wm1Wu2W23W+4XG5XO6XW7Xe8Xm9Xu+X2/X/AYHBY
+			PCYXDYfEYnFYvGY3HY/IZHJZPKZXLZfMZnNZvOZ3PZ/QaHRaPSaX
+			TafUanVavWa3Xa/YbHZbPabXbbfcbndbveb3fb/gcHhcPicXjcfk
+			cnlcvmc3nc/odHpdPqdXrdfsdntdvud3vd/weHxePyeXzef0en1e
+			v2e33e/4fH5fP6fX7ff8fn9fv+f3/P/AEAwFAcCQLA0DwRBMFQXB
+			kGwdB8IQjCUJwpCsLQvDEMw1DcOQ7D0PxBEMRRHEkSxNE8URTFUV
+			xZFsXRfGEYxlGcaRrG0bxxHMdR3Hkex9H8gSDIUhyJIsjSPJEkyV
+			JcmSbJ0nyhKMpSnKkqytK8sSzLUty5LsvS/MEwzFMcyTLM0zzRNM
+			1TXNk2zdN84TjOU5zpOs7TvPE8z1Pc+T7P0/0BQNBUHQlC0NQ9EU
+			TRVF0ZRtHUfSFI0lSdKUrS1L0xTNNU3TlO09T9QVDUVR1JUtTVPV
+			FU1VVdWVbV1X1hWNZVnWla1tW9cVzXVd15XtfV/YFg2FYdiWLY1j
+			2RZNlWXZlm2dZ9oWjaVp2patrWvbFs21bduW7b1v3BcNxXHcly3N
+			c90XTdV13Zdt3XfeF43led6Xre173xfN9VqgIIAAIFA4JBYNB4RC
+			YVC4ZDYdD4hEYlE4pFYtF4xGY1G45HY9H5BIZFI5JJZNJ5RKZVK5
+			ZLZdL5hMZlM5pNZtN5xOZ1O55PZ9P6BQaFQ6JRaNR6RSaVS6ZTad
+			T6hUalU6pVatV6xWa1W65Xa9X7BYbFY7JZbNZ7RabVa7Zbbdb7hc
+			blc7pdbtd7xeb1e75fb9f8BgcFg8JhcNh8RicVi8Zjcdj8hkclk8
+			plctl8xmc1m85nc9n9BodFo9JpdNp9RqdVq9Zrddr9hsdls9ptdt
+			t9xud1u95vd9v+BweFw+JxeNx+RyeVy+Zzedz+h0el0+p1et1+x2
+			e12+53e93/B4fF4/J5fN5/R6fV6/Z7fd7/h8fl8/p9ft9/x+f1+/
+			5/f8/8AQDAUBwJAsDQPBEEwVBcGQbB0HwhCMJQnCkKwtC8MQzDUN
+			w5DsPQ/EEQxFEcSRLE0TxRFMVRXFkWxdF8YRjGUZxpGsbRvHEcx1
+			HceR7H0fyBIMhSHIkiyNI8kSTJUlyZJsnSfKEoylKcqNMTBMEiAI
+			0DQN5/yrL8wTDMUxzJMszTPNE0zVNc2TSQBEEAAJ8HgeIAEQRBHy
+			9Ns9z5Ps/T/QFA0FQdCULQ1D0QuxEkkRIAgTR4AH0eJ9AAe9LAAd
+			B7HQABKkOSs9IMKoqiYAJVlWWh/htVQAn9VoAGZWB/hoGgXADWBp
+			VBRL7BEEYOACghvG6clc11YqAACBQOCQWDQeEQmFQuGQ2HQ+IRGJ
+			ROKRWLReMRmNRuOR2PR+QSGRSOSSWTSeUSmVSuWS2XS+YTGZTOaT
+			WbTecTmdTueT2fT+gUGhUOiUWjUekUmlUumU2nU+oVGpVOqVWrVe
+			sVmtTw910A18AgB6vx3ABHohLP8tmAtgF+Px7AB7PZ7wJ9vwAPp9
+			PsAPN5vgAMZjMl/1vDYfEYnFU8QiINAEBgIBABuNxyYXF5nNZvOZ
+			3PZ/QaHRaPSaXTafUanVavWa3Xa/YbHZbPabXbbfcbndbveb3fb/
+			gcHhcPicXjcfkcnlcvmc3nc/odHpdPqdXrdfsdntdvud3vd/weHx
+			ePyeXzef0en1ev2e33e/4fH5fP6fX7ff8fn9fv+f3/P/AEAwFAcC
+			QLA0DwRBMFQXBkGwdB8IQjCUJwpCsLQvDEMw1DcOQ7D0PxBEMRRH
+			EkSxNE8URTFUVxZFsXRfGEYxlGcaRrG0bxxHMdR3Hkex9H8gSDIU
+			hyJIsjSPJEkyVJcmSbJ0nyhKMpSnKkqytK8sSzLUty5LsvS/MEwz
+			FMcyTLM0zzRNM1TXNk2zczRATiAM4kAzCHCTPAAlvPc7TfP0/0BQ
+			NBUHQlC0NQ9EUTRVF0ZRtHUfSFI0lSdKUrS1L0wh6AiAACBQOCQW
+			DQeEQmFQuGQ2HQ+IRGJROKRWLReMRmNRuOR2PR+QSGRSOSSWTSeU
+			SmVSuWS2XS+YTGZTOaTWbTecTmdTueT2fT+SBehAF00V/0CkUmlU
+			umU2nU+oVGpVOqVWrVesVmtVuuV2vV+wWGxWOyWWzWe0Wm1Wu2W2
+			3W+4XG5XO6XW7Xe8Xm9Xu+X2/X/AYG2BTCAF2Yej4LFYvGY3HY/I
+			ZHJZPKZXLZfMZnNZvOZ3PZ/QaHRaPSaXTafUanVavWa3XZRAbEA7
+			FAYmVEbcAF67sAPzfb3fvjhAB98UAPfkAB/cvlcxz89/ikUhcAtd
+			runba/tdvud3vd/weHxePyeXzef0en1ev2e33e/4fH5fP6fX7feM
+			AGGbSC7Tso4IAgAAAJgGAADshhBIAn7BiCmnB5/g/CQAuKfbmn8A
+			B0Q0/78Q7D0PxBEMRRHEkSxNE8URTFUVxZFsXRfGEYxlGcaRq8r9
+			IVDiPBAIAQACcBgHBHQABBIsfnBIQSSUAJ/yaABuyhIcbSnKkqyt
+			K8sSzLUty5LsvS/MEwzFMcyTLM0zzRMkcQOoAMTcAMNHRKU0zpOs
+			7TvPE8z1Pc+T7P0/0BQNBUHQlC0NQ8YNpNYABVRqCitSE5otAMBg
+			aBoNAAWZZnMf4d08ALfH44FRGbUtJAAFwXOoaRpOxRFX1hWNZVnW
+			la1tW9cVzXVd15XtfV/YFgqTRSCP8jgkiTAaCFuW82IOG4bhIAJk
+			mSblT2FbFs21bduW7b1v3BcNxXHcly3Nc90XSi8AiBAkC2vdV43l
+			ed6Xre173xfN9X3fl+39f+AYDgWB4JguDYPhGE4VheGYbh2H4hiO
+			JP6QAqgCdp2noAB5nme6C4wedMlmZt4Ynk2T5RlOVZXlmW5dl+YZ
+			jmWZ5om1FYwduNnmaePnbkNNZJmuhaHomi6No+kaTpWl6Zpunae+
+			Y26kAJJ6rkuoaxrOta3rmu69r+wbDsWx7JsuzbPtG07Vte2bbt23
+			7huO5bms5F7s3TeWK2Or7pvu/b/wHA8FwfCcLw3D8Rk5E8WAI78d
+			vnE8jyXJ8pyvLcvzHM81zfOc7z3P9B0PRdH0nS9N0/UdT1XV9Z1v
+			Xdf2HY9l2fadr23b9x3Pdd33ne993/geD4Xh+J4vjeP5Hk+V5fme
+			b53n+h6Ppen6nq+t6/sez7Xt+57vve/8Hw/F8fyfL83z/R9P1fX9
+			n2osgICAACBQOCQWDQeEQmFQuGQ2HQ+IRGJROKRWLReMRmNRuOR2
+			PR+QSGRSOSSWTSeUSmVSuWS2XS+YTGZTOaTWbTecTmdTueT2fT+g
+			UGhUOiUWjUekUmlUumU2nU+oVGpVOqVWrVesVmtVuuV2vV+wWGxW
+			OyWWzWe0Wm1Wu2W23W+4XG5XO6XW7Xe8Xm9Xu+X2/X/AYHBYPCYX
+			DYfEYnFYvGY3HY/IZHJZPKZXLZfMZnNZvOZ3PZ/QaHRaPSaXTafU
+			anVavWa3Xa/YbHZbPabXbbfcbndbveb3fb/gcHhcPicXjcfkcnlc
+			vmc3nc/odHpdPqdXrdfsdntdvud3vd/weHxePyeXzef0en1ev2e3
+			3e/4fH5fP6fX7ff8fn9fv+f3/P/AEAwFAcCQLA0DwRBMFQXBkGwd
+			B8IQjCUJwpCsLQvDEMw1DcOQ7D0PxBEMRRHEkSxNE8URTFUVxZFs
+			XRfGEYxlGcaRrG0bxxHMdR3Hkex9H8gSDIUhyJIsjSPJEkyVJcmS
+			bJ0nyhKMpSnKkqytK8sSzLUty5LsvS/MEwzFMcyTLM0zzRNM1TXN
+			k2zdN84TjOU5zpOs7TvPE8z1Pc+T7P0/0BQNBUHQlC0NQ9EUTRVF
+			0ZRtHUfSFI0lSdKUrS1L0xTNNU3TlO09T9QVDUVR1JUtTVPVFU1V
+			VdWVbV1X1hWNZVnWla1tW9cVzXVd15XtfV/YFg2FYdiWLY1j2RZN
+			lWXZlm2dZ9oWjaVp2patrWvbFs21bduW7b1v3BcNxXHcly3Nc90X
+			TdV13Zdt3XfeF43led6Xre173xfN9VqgIIAAIFA4JBYNB4RCYVC4
+			ZDYdD4hEYlE4pFYtF4xGY1G45HY9H5BIZFI5JJZNJ5RKZVK5ZLZd
+			L5hMZlM5pNZtN5xOZ1O55PZ9P6BQaFQ6JRaNR6RSaVS6ZTadT6hU
+			alU6pVatV6xWa1W65Xa9X7BYbFY7JZbNZ7RabVa7Zbbdb7hcblc7
+			pdbtd7xeb1e75fb9f8BgcFg8JhcNh8RicVi8Zjcdj8hkclk8plct
+			l8xmc1m85nc9n9BodFo9JpdNp9RqdVq9Zrddr9hsdls9ptdtt9xu
+			d1u95vd9v+BweFw+JxeNx+RyeVy+Zzedz+h0el0+p1et1+x2e12+
+			53e93/B4fF4/J5fN5/R6fV6/Z7fd7/h8fl8/p9ft9/x+f1+/5/f8
+			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
+			FbvKOx113YvE1Dhkovw76/R/SfS/TfT/UfU/VfV/WfW/XfXoJAFA
+			GVSE0jiuS4gwzRxn0kIkEMCq9CgjilZOIDuGFJRi6D0oeId0q/kl
+			BELioC5AB1IELcY45DyCf4yQ+jaESxAkr4wY6lLAEEYcRDH4wjoR
+			DjK/s07otk1Q2cKY+ECf2jYCqtKaRo3i1RL9YLWluOjXECAAAAwI
+			AQUAv8AQiEwWGQIAwMBgIBwaDQ+CRABxOHwOBRMBAKKwMBRyLRSH
+			QWFQmUymGQiFP+VwuYxyKw2bTZ/P6FyiWy1/S6YSqTQKPgCRyADg
+			cEw6Bw+QQ1+v1+UKeymmxehwyN0wAAQCU+ZQqcwh+Pup2MAP2f2l
+			/VOo1N+XG03KCTaRUaLAGR1wDgYEUaMgCM02SyW63mGTmdT+dP19
+			Weg4uUWR+TqYS+dQ1/ySb53PQOWVrNS7PaWbzTD3m9Q6QR+QAnYA
+			AEgil3rCSDQy+eQag0EAY3JwmczsAWapv/h8jJQi25a1v4A5mX8i
+			q5vTwitxONTTV3WJSCrw/SS2abrd561P2b7rLWHNXXO5yT1iH9vt
+			9iLAMCduCyPuKw+DEPW0bRKKoiQAQA6/o+iCvPgn7cuSxJ/PU5CE
+			H2fbLOonjFOKfZ9KotUNJctaYQrCj4pqk7CoI1yjKKraSoisCDRg
+			1TCIa7amxo/rOuwqicuOoK4vU86bw6hsYosAoCgO+atoowzONQuy
+			tL2k7/K6wKvAJFSGKkuCouE5jevc38xQoqcjLZIzfNNN6et/DaWt
+			6oKoxGtJ+qAychT26rzPHOE4M48EkoLCExuExbqMulSEKk9R+TE8
+			aYplSydtsrgBgCic4UC96eQwzKwtC77RMCmqDy80TTU5TtWVTWD5
+			s+q83zLWygVy4jPUbQVfUEqzQoTKj4LtQtVpDYrDV/HzIuHUFHNN
+			N1DL08FOSrONP2ZQUoWwhkDVahyrWlKltQIqieN85lDwql9VV3N9
+			iPDALTvkjjMpI8LrKCh9Rw1PSBJfgAATVgh/zvL8vsufbxH4oMMt
+			+faGRAox+IsfVNgKfSN4sg56IMeiYACdyLZIgZ1IYdKGZQgp3oYe
+			SgnslGKTzCp4ZvYVt51neeTgrwCoOsS1pRYmeWnNbR6Pnul6Zpun
+			aem4UBSEYArLiS0UliVGzElSdHwe56zlH7+r2Ai+q4iVOsyfR8av
+			FCo3agp5nme+c6hu+8bzvW975vu/b/wHA8FwfCcLw3D8RxPFcXxn
+			G8dx/IcjyXJ8pyvLcvzHM81zfOc7z3P9B0PRdH0nS9N0/UdT1XV9
+			YhgFgc8US2gf8aWq/yNyZoCN9smgBLGASFeBPXgIQjTBIXtQCSW7
+			EZgEA0mAM7YDSWpvookAzXeUka/oKAyFgQsYDLXJyYAQy4DsUA6Y
+			H8A3zz0f4EzT8yf/ag/yH+BSXAKhnzT19pCXvEDAKf6AanADu4Ic
+			p0AIBQDPRPsU15RIjsJXSuoZYZK2lGiIwfyDRFiPo6MAtZZJJYKm
+			dUQ3ZOp7VKqDSo0VdDSFok7aURlLpWykm1NW0VSUKlDqjXKvBWp/
+			zBIGPMtEspkEyHMTEW9ghUi5pFWIlko6qSLF9ScRk7RgUoEcPGag
+			gaIlFMEH2epDpP0KkLMcu00h5llopaISZTMLVvF2jkqxWpDSnxTK
+			caxA4ACkpOARA2PhW1zJxhiWItJwU5KWSItF9ZwSoxJJVGdOhuyW
+			LBSeP+BSyT4F7O5G1d5pW7EFPSrslkPFptjSqvmKh/YcrXKMj+Da
+			mkWQaSTEImy7ljH4JBA1JyDCiSbYCoGR5QkNmMTykJQ6zidNWkgm
+			VEiJ08GlRuVwrcUkDTVU2YRHZT0pzWIkgFeSPiCErico0yp0j8JU
+			SQVqasvi8TujnLdbhhY7n7iyq+eTcGayOTqoFCh6p+HlIUwNN1B1
+			uTkh6qORSjU0rRLUn4mEyjftDhktqUcMlfl3WKSg551JkIWWjMif
+			ikCqLmOnQxF83iCkReNC5S8uSelxJir1b64CRADIUSVcZRlYU9I7
+			PqjpWY2mfnorxc6nldUZhi55Fyg6jt3MireS1GpFHEiFDlGE5Iit
+			FZzOOFtRaO1ilXKGmEpl4J+qSnRXSh6TrwrgvQux1jwtFi5N8prY
+			6815kNBghKRThSkTsdEsZMGJSkQmciw5yiEM0H2f5hhDx+EjAKPk
+			jdj3gWHACxQAI9yGDzINaBlpDBykMHOyshg7lDjxJQPcqIAR9mXH
+			6PG2lTHWzueVDCodu4irQrjPUgpXiQD6H0wO26bwKAUAfAsA0NZX
+			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
+			1JXvWq2TNNquKrZdlgP2M+cGRqmkXOSPJi4yH0Tla31cn8HuHsTe
+			nY86nLngWSO2bsO68+4gm5tdeCo21esglumJfNlmm0pqPLOMLTnj
+			lGQgUq5897qhZ2k9LaWCOuZZb2RE6otNan2SSiQpVNNtyZodykPM
+			vXl7OEUuuAY9OG3snIj1ck7tsIVERQPrMRlbLE9LcSjmRTlcktEG
+			cI0f2GfOtnWnlfQ8cTa/MglS1xXQth2u2fHQb/t0ar0I3N4eWcuF
+			mWbhkwcprldjnsM5ltzBcT3qNBYGViVx0jQC1jcEIOdIUhqEsClf
+			c/dYVy4rPy2sdjhk6da8rcuBdVPWIM9y+tWmpQaRQebor3Oet8bp
+			0f0Ub9cjG3rSQursTZmUPPMb3vscZ5t7r2t4+QlR7BWNtqIp5Vsh
+			siIptbzncQ4OtFeiIloffRLOuG1xMm+rSp4OsVAndRd1q0bXaFfc
+			u37YIYkls460pR4nJP7cJQkN8bssm76JqdQIPL1VOXYmmEtU99rF
+			GBBQaWY59DuhigNtBgShBaJ6r9BuKCTKTgQSw2J3vJuyv4OBgvu1
+			g59uIEeFR6AAHmKDvQAB+BvYeaIFvev4Nov3t/SdhwfuA0A4ApD2
+			UjmTTgLaHeHZhvwt+z+1+3+5+7+9+//B/D/F/H/J/LTJCkAYdSkc
+			02L600+mTcNEiVUmLaLwLaAULyhpjMIHxeAgIAAACAAjAgADwBCQ
+			gAH/B4GAQdCQADIkBYMCQIBgIBQEAQCBI6AQPHgBFn+/gI/4aA39
+			KgJEgFBpfCZAAQGA4lOIlMIYAJ1BoHOwFKp3A5PBphHYFJJvL5JD
+			H/A5vMQMBotCZjT4TDa1SJ3Pa3En9CQDDa/EqNZLRa58A5fIYZQY
+			eAJjMaQBLxS6DZp2/b9UITLa3RH2+n1UIa/r/KobfMYAH9Y7Pcpz
+			dqXX47OI2BrVdM9HrTO65Qa/ZsdPb5osFkNTqNdj7BZ8nXdZstXs
+			qJkNvgX8/NlZ6jorZPdJnaJoM7ReLZADdspy89QLpzc7c+RzYGAu
+			106zJORN81br1443Tup2u7Upv47dM5Jin7ULHhsO/cjuvjJ4a+ny
+			+YY+59n4xqiJU3zHr807GtKo7ftK6EHqe4rSOytCnqU37YNM1rdL
+			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
+			JZZJJxr4yCScgRfJ/MfEqyCSMZPYj7uydhQBbSWcvY/JjAu0nCJy
+			oxIBaxQ6s6jSxj3hVzxcAKTw2bzcRztEo5PpCCOSwBFxFpILx5fr
+			vh1UzSpMnjnahyTymqSLN5Vhjg6E0qno5cRo5ZZkUaT8tbGrzr08
+			wiAr0iryE0jaaD0YnhH0PLTJfrmCPooSNJOyJ8vbJqh6jBaEZah0
+			tBJcSAohnU67xZUcOo37JqKg2L4r4BpqzZJDOq0ayRM4fg0Bvz7A
+			lSGL6wxq0C0BrL777IgS2j8i0Jsgki1IhK2z7oqT9IAD91BwrYeL
+			+Rt1BL7SzKKktZ3oDYDgCqETh6h6eaKY6QvgdIc4d8BMEFFNFVFd
+			FlFtF1F9GFGNGVGdGlGtG1G9HFHNHVHZ0ICACMGiUJnTowAQ/gfp
+			6wnxm6gaDjEp+EGR8whJ+YAC6IhMHYhsHYgYCsHguLDAhoCIogBg
+			o55wjwBKPgA4jYtw7B/cJ4mw0An4y1N5oJfp6cbzzca8q5yMxQra
+			SLNcwQvENLqQpQt0FzurJUdRUE6zaTnA6EO8LrWQ5rR9RyF5c6i6
+			rKR7X7VRQQxRVKEQ1KaaixMRMDHynpebgLU6JSxyGbm818aiOE08
+			REKcfZXCHgfgfRAyiCJsQjQTlhZBdom8NL08qagcwjOymJGjHydC
+			BaPAkk0ouxGUTKVsS5LzhzVZWa4gxc8RJpWTXM8BhEZiYFRCF8aE
+			5otUkVUNX46c1SIBejVQfsbpOCfQwRbUrgwVdpo1W5EjUY19fBXY
+			jzJ4jzexlUXKKcjkLqBaH5hssUy70TsbgdhEsUvQfchZJBxYfKG8
+			hpGIqjdyFTIhTFV1EaJ0yBkLTsXTZApjdyDNdRMEkDR0N8nbpKhj
+			XLXBbaTpKUpBhKAyqpBSWbhBHUzKrSUTM8uhkrkSx6eRNbPVURQl
+			absiXCL4yqNaTjYpEzL8tMnRGiBLV436LY3xANWzo6qr0aq8pyho
+			r6SZQNarj64g1dFFpicFiZV0t6mRzEmr2jWyHRaAwSUqTCblRpTT
+			qje6WLQ7mYwasTQqmxQKw5jEipl9nZfIykMBMbvBjMBJAkQRU1nU
+			o4z6phyMPqqirbRDRcgrLEKZ3RhkShI109hg2U8bsrngpZRbRraA
+			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
+			f8ThsYlb9lswAD6fT5lD+oUojcDAD9l0og0nn01m0lAc6j0hi0EA
+			QAr8XpsDfb9pdTqlekMHtltptMk9xp0Ft9Mk13jFdj9slNSsdxk1
+			zlVEvt4jGHj0ii0jvUPhk+AQCx8kAMntkPsMJvUxhMSxEUn2Hi0D
+			h+Ww2niOmzsesWWn2j1lqy9gtdtmFNoktoWFqV3fT83O43dy28Ds
+			1TxFz0UIrWx2MhzPMtehy+UhG8glQmFQ4fIyMj6Oe2cNAcgve0zN
+			5jnW2ddyPtyudkto1VOuuEgc929Rs23qSlKExasoO96sgI1iRK+y
+			Svqy8z5og1TUI4tKIOo1K/J+iKlOKk6oKSlS0AAsp9wwlrAo2fh+
+			n0wKkuQyzXK7CqNsUm7JPknUaAKAiGM8yqws2vDNr6ly3wivKIK+
+			jqCwG5gAKzH7Gwyz6CsIukMgI6cKx2trOM88seInIqyH6fkWL6yy
+			VsAobcs1BDay49adru+sPQ3Mz8uUpiYJdPcQpepbgyKp7gLtQrkp
+			U00XvU10rSo+q3IJPreQjRSWyNLklOdKUosZN1Moa18K0068qo20
+			a4vi3s7Lel1SLHMr7KdUUDx69MgUi4LDrrEqqMWi8aJAAVTPe784
+			OqmUJRBPjdNvDyBQ4AB+H5FdnrhKdr2wz9bo/bds29b882+xCSo7
+			BNxMOyL03HC10y6jF22u7FrPo1Nw3Pe84tBa7wUPXN4rkz9JvFbT
+			5QtC2BrpPDBxPddO3peWIYUp7juXh13wKhawWI99dYleVpOAlc9z
+			TKkJoLMqDtys8SIIfbS5RaKC5YorMZnFaDqQgmbn+e6Cn1Z57Z8g
+			p8IKfKBADnIAaIgml6VSObgBnqCakAB5oLqyCHhq+t6miuXIe7So
+			3xseyIMBIFSw0oAbOBeNQZjiCzJWCBnYdh50vsu871ve+b7v2/8B
+			wPBcHwnC8Nw/EcTxXF8ZxvHcfyHI8lyfKcry3L8xzPNc3znO89z/
+			QdD0XR9J0vTdP1HU9V1fWdb13X9CBQGgMAMyJ6f5+p7kEeScllaA
+			AA6CgSgoFLWByCgiiYJImCDJACCyIAqgoKI55KDgetnjoIBrvgTB
+			PiumkTyscirJYy5iw1MiaF94z/crOk5/Ou3rRW5Nsky66cpPk5K/
+			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
+			xjnENUTkNNlSVS7OP9EXwa52WjvIUzymnrUg5oZhPBw4Sg7k62Om
+			p+NHSRI0IIraS9e+s7exGwOPorIWUeR7yXxIuJe1zwQluvHbWFS8
+			S4wi/OdrjWn/0GugOxfNrTG2VEwrbeIyi7eZ0xc1QqRTtGJWMWRi
+			vqu8YqJa8gltr7dKQ227gTq6AYH6OioIy2LaAGH9UwASy4yPyUsO
+			MGL+MQIpDfCmKiHiIgHWL2HSJWHIJWHEJWHMJRK0AAHazqXSHyQE
+			yeV4gwGYGUGrhnigb+AQeaOoOwHsHoml3F3X3Z3b3d3f3h3j3l3n
+			3p3r3t3v3w1LikFUACCt38H+E/4CADgOe4Gt4MAAHN4SAAGUGUF0
+			2OovirV+MYHwHwZkNIM0JzYMAO4D4wR4LqdezAxuAD4oHzj6IrNd
+			f+OM3A86ZSdg2wJLj/kPN6ONBrkKIXOP4GJROiH/kjkf4GIg3YIf
+			krOY3WfIr5kbk8AEfSQI6Od+ILlG4HuOQ/mRYH0+w4UqXoJFW6Sb
+			D/uHn5GLn4UR06Vxnw/pU+x+ociiNwUajiiPgIMm47BKvA5jJPPi
+			ky9oogihbKkn0dfTeqUaWXALQZq3BtUD75pPytnybbevy4jJRpyq
+			WoUqig9lecq+kzygIPnjHJzvP7ChRLH/u33CiMhvbsxyumlDlqVF
+			BdI2qPcDV1xHQqa7f1xqKFodjYiHxNoi8ZsdI+nHo7r8vhuid9NI
+			/OWXXoLBTuqPJgdwTei3AlA3z2lMT1eWpPIowVSaIWrimTWHXUI5
+			vLRd64hwrWj3Tz1wjaNXCJ/NVyIIAUlyluytrAl3X4NmSvtmIhtj
+			AhQJv8TWSSIAAIE/3+/gBBH+AH2+36AH9BAA/H0+oPAosAQBGIEB
+			AMBoyAYwAwEAgABwOCAAEQgEQABAKBJLJwBI5IBZsAAHOQABgPHo
+			FGIxCYPGH9BorQos/H7DX4/n5B4hCIi/Ke/H3VaVEYZEX7T6XT3y
+			+HyALE+ABS4NRYTVqfBYTBqRAgNLpmAgHO57OAHGJcBZbLwADAWC
+			pnIpwBZJFoOAobGcVQo1GbjP7fBanT4XDXs9XtDqLU4bRYa+X0+6
+			hCaJOAFMASB8ICQThAQBwTA9tt8VUItEK7BqVcN3QgKA79ILuBLp
+			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
+			bO2+Lt20wOWwvqCuNC/77IfZYv5XVZXeZrQmSC2a6VCAPodPT0jw
+			j8ptorSdrM+kjaCyk3lz1aTq2c9YlCz2ptcdiWJoDCFulet/NLLs
+			8G1rE4vEdhm0G7D6JUlrOx4TJH6ivIDR9ZeKlsMU1zp299qJFif1
+			iX+9GjKQc2m7YMR4RdV1gm0l6RB/ADPw4hlwCW+AMb+4E64+gGEf
+			H6Ag74BTQACnK5XYcvHi+WyA6fX7pYk7ckN5/0HofRej9IuAni5i
+			WmBwGYYnEHi1u6gMyj1MB4HetmpAtIMF4QK8m+8aCM1PgMadzqe4
+			d+EhQWXJBQoUCSl8mJaAMvHaoXwSKjUF3awpcy3qn57zDYWieU2Z
+			5fbOpNPXWWcpYmSREumkiZFCkLHuOxT2s99W0am4qD/xFjdVSdYx
+			Ve652tsR0iiKUsEagZmzgNCI6Tk7EmMn4KWegToPCtoHsNaUyQu4
+			C9KdaKUO6JsfUMcGCfcTrAzBGSQDeAABOKXBQIGCyKWCxBIdeggA
+			AA2AiLe9UIIAOL2IepWQU9a5mxWYgXtB0MKN8ySgM9YK8KJBs9OM
+			MdjCU9aJ4LGZSgKgKMKLS5A90nCLUU6R8PMgOmVC2+Y+e0Sdqgiy
+			RBfDPDQdUi0icM6jgmLAgwMmGNWWOahDq2gRKJQijD1AMu9D6I5D
+			wjwmSNWYGNCMmPwKQegmIP2H1EOJYHwOyiiHuH25aJI64IoKMvBE
+			AP2qYivEfD8vAROPg3hDTFJFKdCpSKgPGk0VkbQPIlUlakelgfgI
+			QHqKoYwkoKQAKHyaAH6opF6IaLwAKlC8kK8H+LUH+SArSM6HyHmU
+			rEIVq+gXQ245q/wSevOgQsI707wiE/KToXG06JERKji37G9DYSq+
+			KZ2gIxsbWLaMGycUBACVm2SNEbI6ugiK+SAaqo4a+2CX+0ojxAQT
+			ozeVEiaSw4PGsaIdsveTOUQ+s98UYMnIII4sWKwlotW/GR+L9GyK
+			OM2Kss7DutoZCRyV6KzCgWWwEJsqGMGK+ZWLAhO6WLANy0ONEPyO
+			wM2myr4REM+x4iMZbGuJuzCnm4SKmAEL8PKSAUGeqY+vKTBDoImM
+			lIkXeXrKM7YLWL7HdCSOcbSTGr+2ISKZCP0OsOuWQWQ3KxO6qZwV
+			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
+			5+TH0sb2skg7epYBADgPCOBN9nLvVE3USZks7U5XJq6uPhuKOlK1
+			AW6heNvw8z2TXas7zK8KWYI/LgVU9VZrux72MbTzvzNq8TPHbMFa
+			tSS9OeqTPLXki7n4uNNKlvlW28/jOIe3U4V+3tdYBbtqSHgYCoHI
+			vGO4mUjMZg7TU1SrUZK6dyKdLZ8nzLTU0MhassDCjX1vauPvyikr
+			tMrindjv7p9r07VVE7mcYBat7pVbeBQlD+0bQzaZzCtMu1XRFUti
+			x3fYGAacODU6VU/ZlVPw2843E5a/Js+craRlVXzBdfT2K/sX7K/c
+			Efc7c7aI68e0e8TDtZNu0UlsTh9RST/U+n+NKpiAag2EGMdqhshq
+			dH1nDNkoeASiW5Irf0h0iTJH1n8WJAoxxx4HH7VorJWqdIFKsb03
+			UvyGYIwGZkvAjyrGEPsU6mtnKKl4t5NGU9ip5SEAJAQAp3iozyJu
+			O8eA8kP1Qnfe2oBDbenAkNZUpeEpdTlmmJ0upDaWGKj1HqPJph/1
+			9gFNuAoBwC2DONe299V64lXujOSppGhW3AICSUZGCi+H0GNM0+M/
+			i5HRGBUXD1grh3GHqaUoEf8KDOvHL0XYpx6kIM6AAA2Sio21L8Jw
+			7pRZiTyJTOOlsfS6XAmpK431lqW3SMpLxHxS0AWPuIQqhaACiHAr
+			3gW/iALVDKu/RSitexky7j5icZkoZWzSJTXYnIrLfzjl/Kkjce7T
+			IMoQeA/ZfaDCVmzNhJJNbllALGc8+VVpd5QmklCW86MX3JHqX4mx
+			jsdQCgGce/U/aW4Gy2VGio3SC1Gm4bC/FOCmSnTlXMc5mazTvmFP
+			Inl1Z3Vbu/hsfpJcGX1LGRjLU4xZ3NUXWGcp5TZZmKJWMf2WKjp/
+			oTVUqOeL8pvrmj4ZktT3aMw6XUaefEdU/y7bW4SWMC0wrIJWvo3r
+			H6HG1Y4s2eJwGAnnPuQgA4DUiAETSv1BZKgGgSZ2AglQCAGm3O+S
+			oBgDqvAHJYA4CaDapL7AOYVfoAgGKhJWQce5NycqjKeAEl5Xzbj7
+			H+bczBKihmgfgrSQNOSUWHsRYmxViyEVSKGecu4EQEljAkAgsYCw
+			DGkswaQg77EWMdsZaG0Vo7SWltNae1FqbVWJGoOQqw1bXAAGmOQd
+			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
+			WaKohAhTyWWak8OjA8kFX+JbE8kq3jTkH63a6yn7mbh7RKL1NtSd
+			GVbcMiOhUC6qCRVKU9EwlcyrRSVrj2patcgDL8qo9WMEfo9bZBGF
+			VjhOhh+FGCTZ4zJEraOGjmsVMFCrVyp5SsQGiZbVI4jhbstRwIyx
+			PshQpqgrUAyycEtwBhEKdyG4Bku8u0twCFb2vxH0w5c4y0x7lB65
+			CIASfYzh6EyLRdqrjo2xuL+hvRmQAgiYDIBi3SOAtIB4BZTyyEoS
+			j8N0/O1G1O1W1e1m1qs8sAh0dYiYZgb8YCpBqAWIZocWMwfDFW1y
+			l58ojCDIl4PZH05xRQcAAARhy+3+5u525+6CvqsE9ZTxIpqAMQlW
+			7AjACQjO7m6Mowm80ZQgFwDu7gD6igAAJQF4Dctygu7+9++G+Kyc
+			/ZmQlFbwfu9hdVAYewhAfAe4hAaAZYbS1dBvAhMZypTwey11DZoA
+			eVCtDJN50IeQd7KC4rBoimrKSuTzYmZ5MhZRMEdZ9rdETRjw+shb
+			n7kpGK74jpTrPCRqZ6PNmeDhFi9Y+4zMyBGpMtldoo7TCwjJLyYh
+			19Y3ETzKS7HtLcNRSwn0otoaZzwmtDjdT2XMqvKbDXJZA0g7CeLN
+			LgpjUFhI81e5viKLJJWaQx16K0tRuaFZbq/g5Vm1TSJFlWhkplTf
+			ESzLX8Sp4kbiGtwBDBuWLw+fE1sqaAjG/1lBUHNyQPEZkSYtflyz
+			Su049qWck47OWZAqJJHIl7pdSag1ssriRQuWhvNZ+lasR1XKO6Sd
+			m0MZV6kViCgyj3Jj9/NQ8BVmYomAxcDUWcQTSyBA82915klyV8qB
+			0rCC+LTaKhGunKAUrluixq9h60oI0K/A9Y9dAg6zKSRiUC79Qgja
+			Cd6rlIq7NjN1gwntfRb7IHPaJMbZGopQwGd0+Yxp4uUnL9SWYluz
+			Zxn4kzfEacU5y4esz+oh0FWopUZLHl1w+hIIsMekhcr/fgfAfS3X
+			ahZo5g5yFQ1sYrKETuoVmkfDfNnHKDfxFQ/lnwqbCD9x/56T92tg
+			iw8TFkWZfSRIxbXooncG0pTki0DTXol1fwyjf/TFOU0DNxHQsgo7
+			SY8jAGxvdhHUrN/EOSdfMpI9GjYroUu7n/ZpCC7h7LcPQXQUhlkE
+			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
+			+HQiDwMCP+QyR/v9/ACTv0APh8PQAP1+vyYv59TGZS18viavsAPp
+			9TyZzSgvYAPl9zx4vJ2yp+yl/VGMgaDgaNQ2PgKCQOsw+BViDSiU
+			yeUvx+Td9vx8zF/yyxTGgACoyx/W2DwaMgOKw6MAWKVyDU+oXUAP
+			u44K5SeQweUYyQgHFYqVZOVSTCYu7ySOQMAxjKSnGY2zzST5rIXL
+			CTO3YqzSzOwaCwYCAOBXqv4+QRaOV/NYuo4Ox5Hhb2D2bSZLMaGT
+			cjk7TbweLxjY5jp9Pk8nS9flZXiaiU9PoxyDc7udry9rf97zyH09
+			n3czMeTzSGF3uN+HtdWE4vs4uZNcvDHP44jewCu7Tru8Tru6qSSv
+			nB8IMW8Lwr8AoAQq6iEqemiZOO5aDoWgTpopCzXsS0DFP+yrgLkk
+			p/polTQI+AaPgYB8LAIAqBAaB4EpEgwDAQjEcoMCILKpIipowA4E
+			owB8jwuAyDASBaMAGAqMSo2QCymBy9q+AkZgJIAFoir79tpK0xs3
+			A6QO6zb9wjOU5zpOs7TvPE8z1Pc+T7P0/0BQNBUHQlC0NQ9AHqfK
+			aHqfSaFmZxxgAcZ2nqABuHUeYAHofEYURT9QMwkiWIEmCSG2yZOp
+			AY4AEcABo1DWNZVnWla1tW9cVzXVd15XrFkAhQAHeAAZoaAAUMmR
+			KQgskEDV9Z7zAcBMLAcBULCMFgNAAIwW21HUrTjaFxXHcly3NQze
+			n6BCDn9CwAHsC6VH3dZ7Hom57nsm5lmIbQAHWdB4gAdRz4DfCfHu
+			elRn6kh8noukUH8vDNJkzzNPSqKSJcoz2s0viFRygcaSiirJQ6nC
+			WJcniyMrA7x5E+aMIc27YIS6byPI6aTVEyLH5qkC6tA9ipRVjDQw
+			SrGY5EiiKs7mL9rxoq3sklDLMa7Oosof6wxa7LawU7LrI3BLYNRq
+			udbM8r3MJortIugTwoKz1mo2/YBa1NrtJJZ22vMzTFH0mcYpSfZ+
+			p8/sGsntjJvBkSrRKh6Pt02kLQmvWjao8uTLqkzUn4lkVau0y8P1
+			mmydG6DaQU63R7vuufNhkW45C6XIdpIACqpNnTsYy7HsVzafrNwS
+			jn1w2sqgxqop9rLcdLo7KNzZzu7Ixb9blBeIVE/m5dH6mWeaALn+
+			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
+			gAYBI+7A5dSFAqBjYxRAjfhfwwkxMGq7RisFcFLfZlUbFLlLtL1L
+			9MFMMa7nbijBLCwvzQ7409bjJrDjh0QiQegeDvrmw34eA3jmYAAe
+			dOR/QpLj5spWx/Z6JrDlQyQ3S2BuRwgwIrrUIyBYo7hvQybCzVAy
+			NRyS4fpyNSZ1rWLppx4o5cNSZ3o1otwhABwBwDUy4h88oCAhIAK8
+			Q1Q0QiZsxBZ06+InLyTtTNonk3Ipw3Y3j1p4goROAg04Q6I278oo
+			pqhqKxsH53NZI/KwLILmjujyUnTyRByOq/dGImYnKzhOIu5LpNdb
+			haaVJdzxo9D4Q7cjIsZJbwr1KUj5BQp+pJL1o/j1JTA/hQg/geQe
+			Stz5Ao53AywiMpIvBij36CqH74VDI6bdtgQpRP7KIpJtFdp40wIv
+			LMEkJ1SQ4ug78n821Pp5bSpQg+FgkATYg2qWB7ap6S7CJPawA/jB
+			gs1k8zROElLw4/D+LE6+iQyiErgojv9RY9pTFn6x8Cgp7+jYD+sI
+			DgbObJ66iy1YpMo6UCS0rZZk43R6JVqTSP0DdLEI7g0Ilb8wiNC0
+			tkqMhD85tYLMcssFJG8rk/aANAj7xWL7pMYxsHhZ59jxNbEsq1zU
+			VR80w7piLEiWCTi3AvpQdX6WR+QuZ8sOMKYBMOKCgBBacLYC5Xad
+			aZVDQkQBoCRCya7XSaoqtz4BQByawmgBgB51iZMl8OrXQByHsORO
+			1FNzDA8P1sUsy56nNMV3d3l3tMCf794ZQbwdgAF4V4gcAdg4QcId
+			ZT93xlpQ724kQYgkYaMcYAARgAATQADwt517t71798F3oNpOQkal
+			whAKIkcZQzQNAkam13V3zLQDgCY1oCKpsY4GimQD4CjOCpqKoq98
+			OAGAKyaq4rKXwfIDAiar0cccR5g+4YoX4asdMdYdIcit0eAigfUe
+			ZwYfKDRwYfUfSAaWotaNo+ksUFs4aTx9A6gyR3JPUsVp7uqFB4TU
+			S/U5bC7QbDTKYliQDnBP8IA5DALGa78o1uc2r7VxRQElCOYrjF0E
+			FChdz8dAovxwiOSvwi1WbmlQ7cBY46IhAqy/uLhXEn5H54xPOMol
+			kDyzEkUo6BkpVgMksppIFgbb0zQA4A1YiV8qZ35883cmb/4rlmMv
+			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
+			7U4eUthBoqIewfJQM5yixC5driQvxGM85GQAACYBQ64CQBUXICoB
+			gCoAACwBigwBAAgvwBIAo6IjxDUExmYjbSLwULhKhuTSRLYeA1bT
+			lArT4c7UJN5J4fKf1CQcwc7VRMA0pezV5Q4eJCJPIegeg0kLY4Yz
+			wfgxoes6ULjYBiUN0S6iZhRS0TRzKJTrxk6oTqZoxTRUyQpsTaRJ
+			YjDajtza7ajyKKxNaTS0gx8yBFpJgjBYBypso7DgyZaHZaVLDdpa
+			DoxUzbyIxbMghYMkJw7nq4rx7rDyQjxpZUiIYx70cIZgKXSJJlSx
+			Ie4fE8Kw6YJjQA6UDcw9iHrizblCbkqVLjrdzj68aciYhQpPBhBS
+			LgRsySCUppx1jcxbIrjmIsLmcd7trm50A4yLCW1UDyioMDZsZTro
+			jqENrpFQ8q8K6v0JzxIltMbtAqpzcUDxrrDFTnCKjtCJKoS9LsLs
+			dSppJdpjSh5jNKpd5rhUhxkShBiitF8LrfsMJvKuaPbZNOFbTvi4
+			pvNY9LkYpudArwjuEVZgK4kH9WhrpxFXdRTx1FgfpcFahqFU9UxR
+			yarzcSp1aH5EiHBVB14rD0R6IfZEgfQxb1IrAeqtgeaMweatgeUh
+			IfCsQBofAKNiwbp5YE4ekeweqpYA1OxxwZh6gdgI1koe9e85llNl
+			Vldllltl1l9mFmNmVmdmlmtm1m9nB978b8oAJ6IDAd4egeAGwdQe
+			AdgELhYewDqDoBiEsAD/YzQBb/gfwBaLL/YqYBJeUAgl4BR6gA5Z
+			wAiK6H4zSIKVaH6asCkCiIRb9alHVHBgBtgxxeEMiJiOEnhY6ddU
+			1AEE5a6TREy38EMFsMluaUNupUdLqLJN6nYy5EcFqJkIAjrpprkF
+			VJ7RSKBFSvEI5JkJNSTy8Jpk1xiV0NhSBW8Khs0KybqKxPNFpCTe
+			CbMEzl4jLsQvT0aOLrhKrm7ndMt0VV5gxRTbJg0RZtFbCL5wQw8D
+			SV9FxlZKrFTuUnbZpUEYVd15d6cLtVzfcT1Vac8QTKB0D5dGoqiZ
+			KTShic9RVUdNkSTRkng5a4YsV9Yqc/qeIAwmZF414AQAzXhK4xgA
+			ZNoAqeBIoFAt4HAIUXIC4DwvyItKcCx0DziaEYzj5hRDlCZDaixJ
+			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
+			w4UkOWPMucO0IIihBM0tKVLyQ0MbI2joxvKe0gTHL7Da+OzO0I2K
+			6S9gy6y2+eVS0NNFXA7cTUgpTaz2TAkE++7AIKKCIcJMkE/KfW/Q
+			kQKA50oO5ikaIcq0I6AiAqI6kqqcAg/oAqJeKCIy/6oOATACbulR
+			OWK+35J+OwiaQSuvLcQap2HaOSmUIUG+HGmHIUIZY6uGHkHkIIHa
+			sOSpYuLYmomiVAmvZcU9BYwuU8ZFQqpRBkNlBonE0nDKTQYMYNHF
+			JyneTOoQnuownNCRCMJfCKo2oeoRacobQgsqabamMrCLCK3MJXCK
+			oQoRC8o3a9CBDHCGT6iRDMnMVZV2y4i9UhRNbablHUpc5TDnDlDo
+			AAEmFaEmAAG0HCG0AAHAG8HALmqHEIqKmuU6VAbYWkI2qYfoAYAc
+			fUqkqoJXEwAAA4BHEnEqBJatE4rAA3FAI7FE+Wz/bZHLFQO6wvAW
+			HnZRFeAAHNF2HuHpY4GmLkOqIVD6sHF6AAHeHUPuhGKrdZLjGMbn
+			GTWVeKoPGaKSAgKGAaJWDQCWDQAABSA8BSAABMBGBMojCm3ANTay
+			og847zBvbXfFbdfIbhHU95Ve00p+t2wPSYt8OwOVHnHrO2ITH+vG
+			AAHOmOuqluQNf2HPIIuYLYHsOTJWdEIOPSIUu/MSQCQg0+IcRoTm
+			hTAXEQQGSaOEQTK8VvMW+BNY6gm4S1N4VnZ/K0AJDMPnJYQKt4jO
+			IQfTNIwkiOjXW3KewpNZJ6yJJ+w2Qmzqtuw+z1OuS/KTNXW7KfKd
+			VTVs7cU8U5NQtqj7V6XdUKYvgzNOhOx6YmOXLKioQCm2K1OgP9O5
+			HThvfpUlBJLmQOVEUwTaeWmyYuSUeuKc6QvwNbUQgWpEwQzCWeU4
+			WWPcsRi00FXONfXNNXJgKbZ4Q9hHbIzifCYiUVjRVi0Qj1jZiTND
+			g4YSKsi/NVU7ZsMPXAvpOIImv6KfTAguiSVHNzMIW+hsUi09U6UI
+			WhOxg7k9Z9TS6kz+xFDbjzjzOc1jg0MROnUu1xOslSInfaOdHi1+
+			gtbTYWZPiSxAiY36ZiH5ToH1jlPUXQrePIHiPIH2HgjaHyfOH026
+			AgHiApnIHkA8A8A6HeBNnWHgR+HmKOHlCWGMBPnoHYBznuPKO6H+
+			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
+			z1QigfV/odQeFvFu4AAcgdQhocodY4AdYd43PNI3Ih8/1tgfyxsJ
+			xDqZtwcVyZpBiZqanO559xrdMV0L/P8MKyXQmtjTdzpp2DdzPRF0
+			V1qi92nReDkNl1UN0h8ffRCfRI8Fxqed/Q6kZGF1nT8Q929DImvU
+			kSmM8Sys+L8miVjVxL3V6/GgM8+ZszUVxut6QiIBYBh7IA4m4DID
+			wrcEQk4D4FA9gBkY0YQEaqQBQBgmoCgDIr8C4m/ZCsnJzFheHQ3Q
+			qGxPiPnLAzIeaugg+AIAAdQcg66+cdAb9uQdo64ZwaQdiA8egi+C
+			dwp59L7k+DGHGGvfZYvRXTKe6itzUl4jUlt0uFTxfS2EuGUlGHUg
+			WIcPyi8k4lrZeHIn46ovWHqOKda3Yrcg+ICOuF+Fa5C1F2WlR+SE
+			OJOJIfCWo2/liPYfAg2J2KeKMVEVUpGJ2fUpoiD6LV9xORu/gj+e
+			JpzwWow9ABIA8sYA6NQAgAo9xWu1RcDYa30Qp60CM+piGQFCF1Ax
+			7uBKY+r3MTW3jUzcRBMyzEd59CUTDb9epIo+Zg5g+/CyTJm/aDWM
+			s4WUalG9zA00uVfsMz3UE0TSHwDIWj8y8KSlLAlCWW9C4zLiOM+b
+			gzZTBNbNUqaHDZY6M3yD0/ZE0weZXQOzz7TQhP05DzXa5cDxHfl0
+			GfpbBEXvA0JZBDmMyDr5PvhXnkx8pp92pFRemdgjkxDZfxM8LKBB
+			m+aCWe2Vkx/nTNsPWf2JHOObWeQ/Wgmzce5Lv19WhFXppB5VJVe1
+			2h6EvtCVeieM+iqVVETT+jLz7aek+9ekyFv93TrLGkqlNFOlFfZD
+			+lZBYvulwgD/gT9AMFgkFfQAhT8AcNfEKAD8iD2goBe7+jDphoFe
+			4Fjz6DweDjnFUlc4IlD5BkrfMQdUVdQHmTmRs1c0QnAAir9nM9n0
+			/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFh
+			sVjslls1ntFptVrtltt1vuFxuVzul1u1hQF5AUlFQHkIeB0rCAqe
+			DweYIer1egHWy2WQaaeRDWFegKxL1BUCfwJhT/BD+fj+DD+f79DM
+			CAIEfz9foDfj7foLfwAf4Ff86Ab/2YB3T/Am3f4C2k64YBfsYAOz
+			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
+			vffe/+B8H4Xw/ifF+N8f5HyflfL+Z8353z/ofRN5LoQEvABj7AeA
+			llgKSHgqmIPUBEzx5gKGaM0ZwIpnjxAYPnIQCTxJDLxNohhqUjFF
+			AGPQeY+QGoDnK07USdwlaJJuS9SjhfRRLNQuRMJhCJQvqdRwEBgu
+			RfC7xuQsigRQrXxRyOyuQsZTh6w7zso8xzC7CC4jgqqihzJ4yGrv
+			RIidEATa8BpujWyD6e0GJfbpa7C16lrjqFYmzLphSkx74nIoStCn
+			CDRLhcrozoqipycIQoyoZHykAl42yqR77hIuY/gq7JUE6pxFQrDh
+			A/yucFhPQBQu50pk417iLcAjgup36Dhhx3ipTUjBg8ZGLDhvh0JN
+			gwquagpHgBIhYA7UCwyvoywzA0gBYy6vwzxKgCAyo06w0RQBCvrC
+			IsCxpqyx6xzpL6UTUTcTiybPQ3A6ytzli7hUcNLPJvDLo8hUDJTd
+			zPRwgozEw7rEYo5U0Vp8BCi2BV48IiLHK5A7S2CiEXhFK55arJRX
+			ClQhjehc8KRL507hbNrvTrLDrtB3yFxfx5B/QocUQgZJzEwvjpoA
+			cVy1bfrfsEbNhNBug7giLnjCZLhL7Q6JJhxQzfpIUeKuyeJ0oxaK
+			ZihJbfrDSyDda8B3pdSHMTsgyWcDo3Zgi6wwSzBULNJF47rgzL6L
+			g/hz8OJVZyYpJU8YS07Lokiqwqg+S4Zda5EXq5ZEqqxVw9xERVIr
+			YiZChCjHI7x2JyrNJ0JwpcKM0WUOg7C60Xx2ZEo649AmpXB70HC1
+			4/pWZFStpu5vCeqLi8cnC76/bgCKY10q8CsfjSqrRQxP6gbTTShJ
+			hJaPKhBkTRsCpIjvZPQBKdxIgfprRgRqA84loeQdIlocAbIeQAAb
+			wbQeAAAdgdLVYe4e6H5eCeJJgjosacyojTAAQxgvDXwAZnZKBrTY
+			ZsCsBrSsEDheYd4eYdhFjZ41onsxaJhqCeBhRusEknJvLgTrBupN
+			UOA2ilMnRw0rBLpvRgZGp9MqJz0Epc03wh5aJy4mwqo8qFK6roI2
+			o2KkqEE1CjJ3RvrEZzDxSFopyH6lw5zhZ3U58gZGDZMUixwwCerh
+			8qYocUzkR5qLiqTxZEYfjkDlCoMLrjxaKMcEc4s3jla7MEqSc3hy
+			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
+			83X5fF+33/H5/X7/n9/zCuTADXNQw76tsw0Ap6m6CMI37mIo8boo
+			OgztQWibot8hB+puiyVn82sPoQfioJpCboIzB7EII3KgvA9wAH2f
+			aNRA3cYH5CsNILEKFnzGaVn3EaDQWfkdRKjjgxXBDZwUxz5MA5Tw
+			pIAT4sElMpAGkCrJQAatgKkiZJAAwES4AQCJIr8uJEki9JBNSsTI
+			7CiPenDsO8eoEowkiMpIex4oKdhwpucJuHmABxm+eIAHid59IWfT
+			TS4m0uIFSahJqf6VL+nT1p0AgCAQAADAKu1RVAjywTa4QAH0iJ5H
+			qeTpyxTKrTpSNaNlOUM103UoALXyQgJSqeME083NlA6jRZB8MwNA
+			byMLLCaMWhLZx1CENRvD6lQ7BaHoOgiCobRrvNIv8yVowKiPBKcs
+			1oq0yJhASJOA4ELKVICKILDdeSwkDAzbdDwJ9OTnPY+rAxbGrqQ/
+			GbaocqF6Q8imHtI219H9canYYg1woaiSFH6fZ829Gd9H7kal5G7L
+			SS4gqQI04TSH8i6CRuoFpPDfym18nS/2JdS+PXZzDoZijc5xfMAQ
+			DXalIjpjIr/L9PTnqOqOXJMMsU1sEuo+TVO5drrwG+SRUrsTWOi3
+			boSY6iGYawcHKA+rDIZm2ZIPqu8vBTyVa+19wOHBdvoPZmvMNqu/
+			atZ92JxKc575OckuoiyFcltSd6QxEYxHDMVtTKYAn3dh/JMA579B
+			fYBRugR8L4dzfH08B7U8AR8gNMR2V8Ax7ggCAGHUA4DgMfQGAYCJ
+			6gl5J6Cb5hxd6CB7gV6R9XAc58+udAE+0fog+71b//B8PxfH8ny/
+			N8/0fT9X1/Z9v3ff+H4/l+f6fr+37/x/P9f3/n+/8/+ABlxRQDAW
+			SYBACgHQJA61EDw7IHAIHNBEBYsRYi3BCOsdY7AGj6HqPgBZFh/A
+			GAIAkA4F1ggBAUv8BKKwDjwHcPIDY+kgF2Jw3xLzVSrNCJwSFLEP
+			FzqRACSNnx5G5IpNOuk06WU4nYPUnOIppkpONTaSkvJMiQq/WCTo
+			lJOmslBKWjcpbRlVHIN0eNbRzSRqVKqu5gKUnHLmMHEpn6cy+E9b
+			O4Y8jVSBuCO0kVHTFWZIXRCa09hAzeswSi1ZdRr1clOXIRpELG3A
+			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
+			jgrf44w50aIxgHwEwCwADRuKBKjgUrbgSWMlti0bSMmTIiZaJkZc
+			t0qcbVNkdkK7pQpWFbpNy7tlJZJUTkofE+wySdAxIA5XR1MVSc8l
+			4BLe4e7IACj2NxIAr8Q77mooYd4cAqoeIcY5wegdoqqHDpwfg75T
+			D6Fqqk7lT0DVI/MiCb68sjcjaWbxMviuzX92GWsgFzpW1tS7i3in
+			Sn85d7dt0673LUqrxcWTzuczVsK3TwEzRyU/rwttTwT2c19wmnN7
+			RlCoKrGlz7enRY82piVyqtxTWkRlM/al91E3trDvd3bz0okn1cw2
+			KUunNsFZpJD9hgTupghZVyMh5jxwFxRf1uBUCt5C8cD0qRofl415
+			YySHCfxhq1afxHd4F081xjknE9V99BLY7V13oqJ0Y8rKU5TVJu1Z
+			btWnN8T2j8OkBld6Y+RTj08cNAmxBt1z6kYh0jmjLY2URmE+5xMA
+			mAjYhcgfZZZcmscB4gQuogV/geI9ofas4fB2QBAfADG3Idas9FFF
+			IeRaoeC+wA4aoCICICgcQHm5IcYCG5gfTA7AJi7dgIAIAMBNd7+W
+			+7G7O7W7e7m7u727+8G8O8W8e7QOQAAGIgYHBX4MQowEggZKlMjQ
+			wCo7YAAsBLQGuK4AG/AxCAw7+XV0dZWHhDIyhHQygSYXQa4AAbIc
+			42GzolwxQxlQ9Q4UALIPoAAvYvuSJ9JCLdhhofF04aAcwbQ0NSIA
+			ATgZIWeMwdYcQ1Iew2A2VDB6SYSNKnpJb180I/qWEdXB28nHvH2L
+			j/I6Kog5SfIqJi5MRbG+YpSPklQ42Yjgor5KjSOYyLuwsVS43DS8
+			V/y7s9baJ1Dj49JQpwmbTmxBJOBmGtxwakC15JAApSLmwAlnNtb8
+			+wacwAmd7kAn4BYC4yhQIoWylkb6Dj4dQaufocOgAdyaDppg2g4f
+			hQjq7qLrN6zXPLxYszQgSv+iaW+dS7L+BBtB0u8d2jier0dAF7Jb
+			0x0617Vk5ten+zE5JlOls0CpZgtvhdVv2nOvS2M/k/hjxv+j1bD5
+			5uEyPYVyZohv5Fpse1aLLz54s2yt1utzJeUicB19SQr9ly9anXbb
+			Css4z8GlRblybxxgl+jxZnSzTyD1vchmigJdtaT+BeZFuuied5F4
+			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
+			IEIMIUIcIkIsI0I8JA/7eAjxTKERKJI4ioHIgoJYgoHAgqwxo6AR
+			pD9ggy9TgBsgipNcJiIJSa5Sy5LwHQErmRfqDYiqFDpwhRN4jwBJ
+			RRGg17ky3JPIYwbwABP4s4aIcYdxaofbUhGpNxLwGC0oAAFIDZMQ
+			FLhSy4kK4AkTwsJMS0S8TETK6b17JZoBj5eAho9YgaQLOwgRc5q7
+			rxQrsD3BaLrKOCPxcCPxq6giQwow57tD9QtDKghQjrNbtAAwBAhB
+			dJii/7tAtLysUwfrypghWxoMUhkiUJjrEAmTojEA9aUjFjv7Grz4
+			nzLZIaZrLYpbD7SAwonZkRmw272idJKQxTNSWY2cTj+SXhf5kwgq
+			YZzIkzISiQjhaYAKZi08ACYg2r1rRh0j2DMpprKwgYxhWzGUfKUx
+			qMiL/R0KNolQuwpxOIjw1btKKCkz1yW5QofY476A46e76gliLgnq
+			gAyYpyeJar78kJwAr0UYwLvykjCB052DLI26Z4nqiz1ZuzThp8j0
+			gRf7UhV5maFowsgxeZzz4D4EcR0bB4pzsZfQfo4Yh53MA8BoAgeY
+			0I6BnUrwxZPA9grZZjaDWwf4fSrwerX4FMt4ckEAB4fIC8upa4jo
+			fQB0vQcZqYeYFsv4dbY4fgJMwh1wz6tA07zkTUxcxkxsx0x8yEyM
+			yUycykysy0y6KYOTmAgoKQmIJwgreQgSO70SYpVBpExSUzi7B5KS
+			FjigipKojwBxLoAABbhkMpSS0ZMc2oABTBMwBhRoAC5RIUOUL6iQ
+			pcqpEzNopwW4aQcy2C2SHIayHgeyHxGY0bmc3oAAHwFBIoFgDYCB
+			L5MMiEzE8k8s8085FaarJQwCaEU0TsUpewg4irohv8VDtBZjAQhS
+			OpqggS9IAAe0rzPwgTqBfkmiQA1DAEXhaZc6NLI0XwioBIBouofA
+			j0VLAAipdpsS8RYq8iRYwLxzoqjBXAq5xEUQ3cmcdYrqfglT8qf7
+			OqWYxzwyDEcCVLKjtZ2oz6NJ2C6AniR6cjvhu6aJk7zTsbziVzNK
+			Ti7lGKS5m5rBfgkIgUf66EqMTpkDG7SULLsbQ6WKYLKrDAk4kqaI
+			nZyCNjip0TLwxCdY3b7wrBshZD4pYwAkf5zMgoqEmb6CHD6CexuS
+			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
+			8IKgsKwrp0JbkI73qMpbJbiJp2x2qXxSkGp1cJZbyhJ0RcjTyyEG
+			idcFheyx5fJjyI4nCWp3YiJHMaSKgrphxPpf54yIZ5AqBz6ccYyJ
+			xxSIRxguJlYyURpDgxwtIsicCcJwAhZmBzACAB5PQtYyR+CVrdyQ
+			wAogkgZVACcgYwgBxPQDwEKCCB4EwtQBZTZfCDEb8ZwmhG4fbkAz
+			jnYuMdRYRBQmIlAoByopJlhXyrIySHrAgZIZQZg6IZgZoAAc6GTu
+			IeCzAfBxRbhaSIyI6LsFyNcX6Wpbp0LWA8RgRc8GUYsYQjyZSSqE
+			Zzin0ZB0rWEeBx0KCdBzpN0I4ngqyfi48LxF4uiq5dZzZ3hZR7Ra
+			aXiOpag8jWwnsf8XSP6xghEah+BUCPY8kJKsxZ5KRlggpy6TciZm
+			UNkcRXwcocTAgcocy7QdYdhRsoSqyq5ZyR6b5qaR6WRzh0hZMSTT
+			53zdZhCJ53L+yRiDApCZR2J4gosFqOAqJMBHJbZ8KKIuqhAlIq53
+			p3qs6QbW8z5FgixGiayuBwQnZj0qpYSdMETdJj0KR0S5Ma6JSfrd
+			Kj6e5zxg7ThhReZ2K5UaaKzT6uCSESKj65Rk5ZaO7SSiMdKj8b8H
+			kab5L4pfxkqI51sj6MR0507fMdRzpgieyd8Yp0qXkL74pMAAYlSa
+			5c5HZkQkKv5wJdkrYhMk4Ao3RwQA0hR3pYQoJB81zWxrpXwjAixr
+			qV6wCQw1pmSp6rymAiAcwbpB9GY3U5oCwDZXwDQEK3gCAkIDYEoy
+			wCQoc4JX0jsNzWojprYiwcQbQiAXYUooYeAdg4qFDxVK6Q4iwHAJ
+			AyQHAIxzABQBwi1MQkrdx44uTFzZCMokoeSu5prchvQbY3QXIUkV
+			YeAmICwDhzDlq3ggYAAEgGIkIEgGBFFI84h3oArSCFSCwbwaokoX
+			4VQvVRwvqroC4DhVABdMY3YDQiwHwKQiwBhDiOCL7Y4pL8RYwcYd
+			ovQdwepB4W4Zjyge4bBPQAQeYtMtoAIeykYe4Bg04c4DwcQiJICf
+			RGQf5XwAwfxXwAYe4hACAaoCghLFjq4fj5omgBol4AVbLA9bQ8jG
+			BKQd5KrBIr8/EaQf6EFc88kLCfpQAf0WAn85jesqBj44j5YrzFBF
+			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
+			Plmtm1m9nFnNnVndnlntn1n9oFoNoVodoloto1o9pFpNpVpdplpt
+			p1p7M4LILIMABRxweoBAd4d4dgLkaYHYpABgfMIIDaV4foCsEAfo
+			BgfgCQfllYBrUwAkBIAYe7CLWh6wfoBYrYfgBBAbSoh5D7WIlpQo
+			wFk4vAfJCx0xHoplfJEAp7YTaZ8CdZ0BYVk1TzXkDRiRUZJJ5NKY
+			r6XIvFKZZyUyySc4e4eKaqxiN6GIqohxeolqrarpAAq4e5Nc9lAB
+			A8Op06gBmBfoj7AqkyNBngBABa7dVAlyswDAEAugDgERCVY4AAcQ
+			bQlQb4aotUVRNL5wvi44h4CICggarAukvh0os0gp+db4+yPohwe4
+			eUXAegxBzAvFIQmzYLYQ56WY74loBwCpuMbN94fAey2wnwl4loDw
+			Ewg6AQsqh6ah8Aijage4kQEQFwgYi4nQfAegyBAtTAkQ1KGQewuI
+			C4loE4GQgYCIC4hbnoh4ChRKs7oTJLr4AAWzsS1TsshZCYslCUG4
+			DAnQIQLAloCkI7uuFlFyd4codFbgawkQaQZYkwdIciGQdSReJ5KQ
+			A6owD6igeYEZr4f4A0gNGY3xTCxoeJpwCIeRp1gAnwd4p4eDChDT
+			Fz64qQCyxQCYxApTU4eqroew3g4IfVNwjIeA4Mzy24nQmRCTHB57
+			Ap3BmhUja5E5FQBT2ArIBlb4EAt1kArJ6ZTQo5VYAge68YeIu4A0
+			Hghge5FQ+AhhbofACItQeIEpxAfACTHsy1zaccb53AiooYArxwAA
+			DAdaSgBAexuJuYvAdopbXJKTx40QE4dUA5G708EDCBWIhwAgfoAo
+			fbWOXBGxgx6ZRxgxARiJ99GGLqXB2KWgsy5Ag7Sq8xC6D7ZyqYA0
+			FqiFIhX4Bss0TIBhQwB6DiCAAZcIfbBpKTAoD0T4xrQIBVPwplEZ
+			k4yAfgdxMgeQcSEwdIbwhYdAcxdgc+i4k4dT+QdodpdhxyJqYJTx
+			3kOxkLEc/h9L3J78gahFGUgBk6J0AB1kDrdikhoSXh7M6GnGl75h
+			6xPJijzBjCM5nSY7D59t3lkyLagqf6XJh91liIBxtoxoDCEwFxqA
+			AAIwJII8TmqorIfrw7jkLqqK9CNYpVLZwosF0NBx5IkA8gcIbobQ
+			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
+			rqpycw1bHwkavyeCdjaUKSvsfSjaj6molKda+glRCqjyuUcxEpCy
+			Ygy5bDoKY5EMiQ9626lCcseKKCZ6J8migagCTpvgtInzksXiow9c
+			gapRDMhymZhCZyzo9iZaFr5qDkeqlkqJD0gygheo9TYSsSgyKCHh
+			cBKUnIlcgklSdquLEbnzIQn44MWSYRgCFgqh7JCgfxK44JvyJisy
+			gS5RVgfpkiHavJ3Z3AfAAKVBbYe0wQeYBAdwf4djPgfYCKQZVgC7
+			U4gUeiwEu6YIAgiAeIA7JAdwBqG8HpvUUhHYpwgoCgfY6YA5aQlL
+			qJ4wdwphHkIYiAeYDEIQA4tQfIAi0hKK0g4IkYCAeJugCAeRuhgJ
+			4sWBbBg4fIBQ8Ifix5FMzJqwBoigEYDLxYCYAJlAB4eBugfkwUes
+			tT+E3ED6WAtR+wgoCoDpmBmR9y8x96j4kZsQjAc4bsZaWslIljCk
+			CwkYGwJaH5p4BIlABABg8znww4eLRoAAXYUIiAcgbKUQyoeYeAnx
+			x4nwEQFwqYKYODD4C54pN4fIewlgZgXYnwZoXQtQsw9ikSlwB4Cg
+			hgIwL4ggDwE9AxNz98aAmQnoAAYgWRs4XgU5jx4b1IJg+puSErPB
+			PNEAjAdQcYjAXgUJjQd4dInweAdy0gd4dg8IpYhgHgKCJAHwKKJB
+			689yqynhKyiStBM4boaAigVgRZtdKUFTLsjAA5uwGIIgj4GRVUCg
+			kYd4dUgidwgojTP5aaj7LkNrBQiIcAnwZIWglgdIdArwdodgigcI
+			ahjxbKHoCEDABwghXIjAfAA5jQfABA8LYA1ScKTihoAZiwBYfbxc
+			3wn6ChvcaSgsfajyloAICIoICDngzCtSl0eYoLJrpo9jZSr5j6Jg
+			fodQ9Zd53ZUiFQlSryYU5wfQfaIhEKHao6mIa6vwfIBCK4L4b4bY
+			aQbMVNc9dFdNdVdddldtd1d9eFeNeVedelete0U4G4HIH4Ho0gAo
+			DDegJwd4dwd4HQtjm5coj4mDxy2Q9blUoyz7j9aKvKdZDi5Md5qz
+			0oAYBcgQehXi7keoBhXk2Af63SV4CA8IfNk5HCp8eomK3CEQebxZ
+			vYoYeZeBHaMQe4obFCZYtABs2YFJxQf0JxgwjE5YikcACrtIAACg
+			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
+			gJgEDHThAJgFzistzHPVzJGTTKJLyhOWgAB1sKmiDJBPhhlvh8L1
+			j6VkGmCxklCDFygABPIsjLIjhbR2klSqgAA3AANNjaJPiMHxiMMi
+			MdyeAeATnYqqAkAWs7jh0b1H13DtwRQSBuEeETEjN5KixRlQyNtK
+			CMEWCMAxAAH1DJNNvy132DWD2EWE2FOfOjtBp3CLjkCshNjdtWnZ
+			VmFRI6gegTncQmiJAbgRncKqMCFaREWF2TCjRrAARsO1UfDJrRuS
+			Csok2Cpl1ahJEmjVCDBegAHPouCZUQI0n9w5kopviBM7iMDcH5GE
+			NwDaU+iFAYp5HxHdgAAlV1Mi0btD0M0dzwB8Dey6jnvcL8vziOvX
+			IUU/k1EHRORDCDRQMAsB1AzeIVzEoVRQLzDwmcGbRd22iNodk2zj
+			l6zHRdVbzIxdN2VHNqWTikmeLvLxxgLxrsIRS3vXLvNtwNoSVRmR
+			NsD3B9h+RYD5xUVJj5xYvRRT3Qj5zVXRKHV3NuneoVMHmakNNwxM
+			iCAIsGz8ist0PVRdXDK8t4Ei1kMNAABXN6v1iHh4nRvdq0GDv9iF
+			FuiBHsCCBUFVkUFwrQV8CYqjrAAAKliBDcXuFLlcgAAWAOupSaOF
+			Abi5vJ0uHfXEX2Chr1xrmfgABjBtwSQR1fh5HRrUHRlkCDEjCFBc
+			CMkWCFA/WdkjvdX24EYE4FYF4GJLqjpwjaO8iDJtiCAryWFjo6se
+			AvJ2UZAMlh0aDljgLqYG4SCYHllthqhyLbohEUBZBnjRQxlPjJCM
+			A0HwtPC7lriLX9iYg1pQDlqgSUjNAlJTmGQkAPgKirkzi3gsAbgR
+			NBlfjgt2WxTKh5B8i3hsh2o0mlDaIlKsjfNugC1CvU1WvVMBxNPU
+			zAY0KN1VEPYyoWkGTcqNL9vrzGKK3d4SidTQ3MiMDFEBjdjM3MiB
+			D8iHWwL1vf3OiFP7VPIRVKCsU2GlD25A48CX29AGgCltzAAMAGkj
+			C9DNAHADHRmzvQtFVfEZHRuTlr5UFsCCYYmUPciDBqCLnGCBIjpw
+			iEK4iZg5gAAeCM5eCCAhiMuJlNJ6kum0gkreKqC8iHU05J5miVO0
+			HR14gABmBvFIBohxEhF6ZXucCBJPiDEWCKUpue5nZyZyiiCAgIAA
+			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
+			wH0DoIUIaXIk518FbnbTDYvxDRBHIhq3AzNB5oDkH3GTFBYX6xCB
+			AhDRrxDTOgADPRDQf2W4cI6I6Y6o647I7Y7o748I8ROWQggR5h6B
+			jx41pXX1tlci5Dq26o2y8ynSky1xcHNnliExUI/Xdks3H4GHWxFI
+			K0U0u4sEsyhD81vXJxGVvV6V13sxHnh5HRH2QpIXuhJz85AGxCJY
+			rXrXwGEXLFL3KYx5KoS1wHKYRVwFwIRXNlXidYRX1FwDMW2hEEcC
+			41dhBhCnIkOVdFQDhScw4BEDa1i36yzyl48pV5WJWZWpWywhRxEh
+			VCbQACpRVGmhrzJiFhVngXxC42oXVyFoSXH5DYkIIJcJc2pl2pB3
+			W3H0eE15GSfpEoKTHJgZfoOoJUaj9FLxHkBRFpJRCyMWXRHpiRGZ
+			ixJZklVhHFL5loInrhkXkk7je0/l8De32l84omxI4hC4ZzhTIppl
+			f2+3dInYVBFpSDH4AD4GcQAEORBB8BCg1RECNBBAQBECTZXJxZxp
+			x5yJyZypy5zJzZzpz50J0Z0p051J1Z1p152J2Z2p253J3Z3p354J
+			4Z4p455J5Z5p556J6Z6p657J7Z7p758J8Z8p859J9Z9p95+J+Z+p
+			+5/J/Z/p/6AKAaAqA6BKBaBqB6CKCaCqC6DKDaDqD6EKEaEqE6FK
+			FaFqF6GKGaGqG6HKHaHqH6IKIaIqI6JKJaJqJ6KKKaKqK6LKLaLq
+			L6MKMaMqM6NKNaNqN6OKOaOqO6PCUBAQAA4BAAADAAAAAQV3AAAB
+			AQADAAAAAQXsAAABAgADAAAABAAS4IIBAwADAAAAAQAFAAABBgAD
+			AAAAAQACAAABEQAEAAAAQgAS4ZIBEgADAAAAAQABAAABFQADAAAA
+			AQAEAAABFgADAAAAAQAXAAABFwAEAAAAQgAS4IoBHAADAAAAAQAB
+			AAABPQADAAAAAQACAAABUgADAAAAAQACAAABUwADAAAABAAS4poA
+			AAAAAAgACAAIAAgAAAJdAAAD+gAAA40AAAJdAAASjAAALqwAADuA
+			AABEhwAARCgAAFRlAABlVwAAfOkAAHr2AACC5wAAgXwAAH8YAAB6
+			HgAAhgIAAHIVAABuWgAAdcMAAHv1AAB4vQAAemQAAGuKAABrgAAA
+			bo4AAGe5AABZmwAAP6cAAEBXAABFbgAATNAAAEXFAAA+sAAAL8AA
+			AD7WAABMqQAAfRwAAJsiAACkOAAAk/0AAIeFAACKcwAAgskAAHoc
+			AABfuwAAKtAAABTmAAAUSQAAF1IAAB00AAAi8wAAIfAAABz/AAAR
+			SgAADg0AABgMAAAbMQAAFBEAAA7WAAANzwAAD8UAABXoAAAXKgAA
+			ETcAAAAIAAACZQAABl8AAAnsAAAMSQAAHtUAAE2BAACJAQAAzYgA
+			ARGwAAFmFQABy2wAAkhVAALDSwADRjIAA8euAARGxgAEwOQABUbm
+			AAW4+wAGJ1UABp0YAAcZDQAHkcoACAwuAAh3uAAI4zgACVHGAAm5
+			fwAKExoAClLBAAqTGAAK2IYACyVWAAtrGwALqcsAC9mLAAwYYQAM
+			ZQoADOImAA19SAAOIYAADrV9AA89AgAPx3UAEEo+ABDEWgARJBUA
+			EU7lABFjywAReBQAEY9mABGsmgARz40AEfF9ABIOfAASH8YAEi3T
+			ABJF3wASYRAAEnUhABKD9wASkcYAEqGLABK3cwASzp0AAQABAAEA
+			AQ==
+			</data>
+		</dict>
+		<dict>
+			<key>Extension</key>
+			<string>tiff</string>
+			<key>ID</key>
 			<integer>100</integer>
 			<key>RawData</key>
 			<data>
@@ -150024,7 +189711,7 @@
 	<key>MasterSheets</key>
 	<array/>
 	<key>ModificationDate</key>
-	<string>2015-10-22 13:28:59 +0000</string>
+	<string>2016-06-17 13:23:32 +0000</string>
 	<key>Modifier</key>
 	<string>Marko Rodriguez</string>
 	<key>NotesVisible</key>
@@ -150053,12 +189740,12 @@
 		<key>NSPaperSize</key>
 		<array>
 			<string>size</string>
-			<string>{612.00001430511475, 792}</string>
+			<string>{611.99999046325684, 792}</string>
 		</array>
 		<key>NSPrintReverseOrientation</key>
 		<array>
-			<string>int</string>
-			<string>0</string>
+			<string>coded</string>
+			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>
 		</array>
 		<key>NSRightMargin</key>
 		<array>
@@ -150083,7 +189770,7 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>FontInfo</key>
@@ -150097,11 +189784,6 @@
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -150118,7 +189800,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -150139,8 +189821,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>58</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -150162,14 +189842,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 AmericanTypewriter;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fnil\fcharset0 AmericanTypewriter;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs96 \cf0 TinkerPop}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -150200,11 +189880,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -150227,13 +189907,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -150283,11 +189963,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -150310,13 +189990,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -150366,11 +190046,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -150393,13 +190073,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -150446,11 +190126,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -150512,13 +190192,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -150530,11 +190210,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -150561,11 +190241,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -150627,13 +190307,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -150645,11 +190325,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -150691,11 +190371,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -150718,13 +190398,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -150736,11 +190416,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -150782,11 +190462,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -150809,13 +190489,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -150827,11 +190507,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -150873,11 +190553,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -150900,13 +190580,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -150918,11 +190598,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -150964,11 +190644,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -150991,13 +190671,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -151009,11 +190689,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -151055,11 +190735,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -151082,13 +190762,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -151100,11 +190780,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -151146,11 +190826,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -151173,13 +190853,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -151191,11 +190871,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -151237,11 +190917,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -151264,13 +190944,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -151282,11 +190962,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -151328,11 +191008,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -151355,13 +191035,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -151373,11 +191053,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -151419,11 +191099,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -151446,13 +191126,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -151464,11 +191144,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -151510,11 +191190,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -151537,13 +191217,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -151555,11 +191235,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -151601,11 +191281,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -151628,13 +191308,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -151646,11 +191326,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -151692,11 +191372,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -151719,13 +191399,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -151737,11 +191417,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -151783,11 +191463,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -151810,13 +191490,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -151828,11 +191508,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -151874,11 +191554,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -151901,13 +191581,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -151919,11 +191599,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -151965,11 +191645,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -151992,13 +191672,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -152010,11 +191690,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -152056,11 +191736,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -152083,13 +191763,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -152101,11 +191781,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -152147,11 +191827,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -152174,13 +191854,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -152192,11 +191872,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -152238,11 +191918,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -152265,13 +191945,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -152283,11 +191963,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -152329,11 +192009,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -152356,13 +192036,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -152374,11 +192054,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -152410,11 +192090,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -152437,13 +192117,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -152493,11 +192173,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -152520,13 +192200,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -152576,11 +192256,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -152603,13 +192283,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -152661,11 +192341,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -152688,13 +192368,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -152744,11 +192424,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -152771,13 +192451,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -152827,11 +192507,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -152854,13 +192534,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -152912,11 +192592,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -152939,13 +192619,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -152995,11 +192675,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -153022,13 +192702,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -153078,11 +192758,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -153105,13 +192785,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -153163,11 +192843,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -153190,13 +192870,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -153246,11 +192926,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -153273,13 +192953,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -153329,11 +193009,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -153356,13 +193036,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -153414,11 +193094,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -153441,13 +193121,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -153497,11 +193177,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -153524,13 +193204,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -153580,11 +193260,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -153607,13 +193287,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -153665,11 +193345,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -153692,13 +193372,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -153748,11 +193428,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -153775,13 +193455,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -153831,11 +193511,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -153858,13 +193538,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -153916,11 +193596,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -153943,13 +193623,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -153999,11 +193679,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -154026,13 +193706,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -154082,11 +193762,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -154109,13 +193789,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -154167,11 +193847,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -154194,13 +193874,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -154250,11 +193930,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -154277,13 +193957,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -154333,11 +194013,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -154360,13 +194040,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -154418,11 +194098,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -154445,13 +194125,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -154501,11 +194181,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -154528,13 +194208,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -154584,11 +194264,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -154611,13 +194291,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -154669,11 +194349,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -154696,13 +194376,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -154752,11 +194432,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -154779,13 +194459,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -154835,11 +194515,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -154862,13 +194542,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -154920,11 +194600,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -154947,13 +194627,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -155003,11 +194683,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -155030,13 +194710,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -155086,11 +194766,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -155113,13 +194793,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -155171,11 +194851,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>g</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>r</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -155198,13 +194878,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -155254,11 +194934,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>g</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>r</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -155281,13 +194961,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -155337,11 +195017,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>g</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>r</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -155364,13 +195044,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -155422,11 +195102,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -155449,13 +195129,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -155505,11 +195185,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -155532,13 +195212,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -155588,11 +195268,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -155615,13 +195295,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -155673,11 +195353,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -155700,13 +195380,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -155756,11 +195436,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -155783,13 +195463,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -155839,11 +195519,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -155866,13 +195546,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -155934,11 +195614,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.0734744</string>
+												<real>0.073474399999999995</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -155961,13 +195641,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -156027,11 +195707,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.0734744</string>
+												<real>0.073474399999999995</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -156054,13 +195734,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -156120,11 +195800,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.0734744</string>
+												<real>0.073474399999999995</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -156147,13 +195827,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -156205,11 +195885,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -156232,13 +195912,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -156288,11 +195968,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -156315,13 +195995,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -156371,11 +196051,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -156398,13 +196078,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -156456,11 +196136,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -156483,13 +196163,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -156539,11 +196219,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -156566,13 +196246,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -156622,11 +196302,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -156649,13 +196329,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -156707,11 +196387,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -156734,13 +196414,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -156790,11 +196470,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -156817,13 +196497,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -156873,11 +196553,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -156900,13 +196580,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -156958,11 +196638,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -156985,13 +196665,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -157041,11 +196721,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -157068,13 +196748,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -157124,11 +196804,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -157151,13 +196831,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -157209,11 +196889,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -157236,13 +196916,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -157292,11 +196972,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -157319,13 +196999,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -157375,11 +197055,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -157402,13 +197082,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -157473,6 +197153,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -157501,18 +197183,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -157529,7 +197206,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -157550,8 +197227,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>463</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -157573,14 +197248,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 AmericanTypewriter;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fnil\fcharset0 AmericanTypewriter;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs52 \cf0 Apache}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -157603,8 +197278,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>58</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -157626,14 +197299,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 AmericanTypewriter;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fnil\fcharset0 AmericanTypewriter;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs96 \cf0 TinkerPop}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -157664,11 +197337,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -157691,13 +197364,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -157747,11 +197420,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -157774,13 +197447,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -157830,11 +197503,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -157857,13 +197530,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -157910,11 +197583,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -157976,13 +197649,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -157994,11 +197667,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -158025,11 +197698,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -158091,13 +197764,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -158109,11 +197782,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -158155,11 +197828,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -158182,13 +197855,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -158200,11 +197873,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -158246,11 +197919,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -158273,13 +197946,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -158291,11 +197964,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -158337,11 +198010,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -158364,13 +198037,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -158382,11 +198055,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -158428,11 +198101,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -158455,13 +198128,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -158473,11 +198146,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -158519,11 +198192,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -158546,13 +198219,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -158564,11 +198237,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -158610,11 +198283,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -158637,13 +198310,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -158655,11 +198328,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -158701,11 +198374,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -158728,13 +198401,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -158746,11 +198419,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -158792,11 +198465,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -158819,13 +198492,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -158837,11 +198510,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -158883,11 +198556,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -158910,13 +198583,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -158928,11 +198601,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -158974,11 +198647,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -159001,13 +198674,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -159019,11 +198692,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -159065,11 +198738,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -159092,13 +198765,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -159110,11 +198783,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -159156,11 +198829,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -159183,13 +198856,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -159201,11 +198874,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -159247,11 +198920,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -159274,13 +198947,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -159292,11 +198965,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -159338,11 +199011,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -159365,13 +199038,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -159383,11 +199056,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -159429,11 +199102,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -159456,13 +199129,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -159474,11 +199147,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -159520,11 +199193,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -159547,13 +199220,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -159565,11 +199238,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -159611,11 +199284,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -159638,13 +199311,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -159656,11 +199329,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -159702,11 +199375,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -159729,13 +199402,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -159747,11 +199420,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -159793,11 +199466,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -159820,13 +199493,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -159838,11 +199511,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -159874,11 +199547,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -159901,13 +199574,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -159957,11 +199630,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -159984,13 +199657,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -160040,11 +199713,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -160067,13 +199740,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -160125,11 +199798,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -160152,13 +199825,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -160208,11 +199881,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -160235,13 +199908,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -160291,11 +199964,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -160318,13 +199991,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -160376,11 +200049,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -160403,13 +200076,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -160459,11 +200132,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -160486,13 +200159,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -160542,11 +200215,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -160569,13 +200242,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -160627,11 +200300,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -160654,13 +200327,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -160710,11 +200383,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -160737,13 +200410,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -160793,11 +200466,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -160820,13 +200493,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -160878,11 +200551,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -160905,13 +200578,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -160961,11 +200634,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -160988,13 +200661,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -161044,11 +200717,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -161071,13 +200744,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -161129,11 +200802,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -161156,13 +200829,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -161212,11 +200885,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -161239,13 +200912,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -161295,11 +200968,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -161322,13 +200995,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -161380,11 +201053,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -161407,13 +201080,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -161463,11 +201136,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -161490,13 +201163,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -161546,11 +201219,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -161573,13 +201246,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -161631,11 +201304,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -161658,13 +201331,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -161714,11 +201387,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -161741,13 +201414,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -161797,11 +201470,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -161824,13 +201497,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -161882,11 +201555,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -161909,13 +201582,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -161965,11 +201638,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -161992,13 +201665,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -162048,11 +201721,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -162075,13 +201748,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -162133,11 +201806,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -162160,13 +201833,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -162216,11 +201889,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -162243,13 +201916,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -162299,11 +201972,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -162326,13 +201999,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -162384,11 +202057,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -162411,13 +202084,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -162467,11 +202140,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -162494,13 +202167,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -162550,11 +202223,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -162577,13 +202250,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -162635,11 +202308,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>g</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>r</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -162662,13 +202335,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -162718,11 +202391,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>g</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>r</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -162745,13 +202418,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -162801,11 +202474,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>g</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>r</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -162828,13 +202501,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -162886,11 +202559,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -162913,13 +202586,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -162969,11 +202642,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -162996,13 +202669,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -163052,11 +202725,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -163079,13 +202752,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -163137,11 +202810,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -163164,13 +202837,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -163220,11 +202893,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -163247,13 +202920,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -163303,11 +202976,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -163330,13 +203003,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -163398,11 +203071,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.0734744</string>
+												<real>0.073474399999999995</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -163425,13 +203098,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -163491,11 +203164,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.0734744</string>
+												<real>0.073474399999999995</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -163518,13 +203191,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -163584,11 +203257,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.0734744</string>
+												<real>0.073474399999999995</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -163611,13 +203284,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -163669,11 +203342,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -163696,13 +203369,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -163752,11 +203425,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -163779,13 +203452,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -163835,11 +203508,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -163862,13 +203535,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -163920,11 +203593,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -163947,13 +203620,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -164003,11 +203676,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -164030,13 +203703,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -164086,11 +203759,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -164113,13 +203786,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -164171,11 +203844,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -164198,13 +203871,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -164254,11 +203927,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -164281,13 +203954,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -164337,11 +204010,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -164364,13 +204037,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -164422,11 +204095,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -164449,13 +204122,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -164505,11 +204178,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -164532,13 +204205,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -164588,11 +204261,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -164615,13 +204288,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -164673,11 +204346,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -164700,13 +204373,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -164756,11 +204429,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -164783,13 +204456,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -164839,11 +204512,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -164866,13 +204539,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -164918,8 +204591,6 @@
 					<integer>85</integer>
 					<key>Rotation</key>
 					<real>0.1045181006193161</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -164969,6 +204640,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -164997,18 +204670,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -165025,7 +204693,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -165039,8 +204707,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>582</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165062,16 +204728,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
 
 \f0\fs24 \cf1 OLAP}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -165087,8 +204753,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>581</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165110,16 +204774,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
 
 \f0\fs24 \cf1 OLTP}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -165133,8 +204797,6 @@
 					<integer>4</integer>
 					<key>ImageID</key>
 					<integer>2</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165161,8 +204823,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>580</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165170,11 +204830,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.104747</string>
+								<real>0.10474700000000001</real>
 								<key>g</key>
-								<string>0.532385</string>
+								<real>0.532385</real>
 								<key>r</key>
-								<string>0.952142</string>
+								<real>0.95214200000000004</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -165186,10 +204846,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 User\
 DSL}</string>
@@ -165206,8 +204866,6 @@
 					<integer>8</integer>
 					<key>ImageID</key>
 					<integer>6</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165238,8 +204896,6 @@
 					<integer>7</integer>
 					<key>ImageID</key>
 					<integer>5</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165268,8 +204924,6 @@
 					<integer>5</integer>
 					<key>ImageID</key>
 					<integer>3</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165300,8 +204954,6 @@
 					<integer>3</integer>
 					<key>ImageID</key>
 					<integer>1</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165332,8 +204984,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>579</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165355,16 +205005,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs72 \cf0 \{}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -165380,8 +205030,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>578</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165403,19 +205051,19 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 ganglia\
 cvs\
 graphite\
 jmx}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -165433,8 +205081,6 @@
 					<integer>577</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165456,16 +205102,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 . . .}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -165481,8 +205127,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>576</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165504,16 +205148,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 Kryo}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>TextRotation</key>
 					<real>270</real>
@@ -165531,8 +205175,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>575</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165554,16 +205196,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 JSON}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>TextRotation</key>
 					<real>270</real>
@@ -165581,8 +205223,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>574</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165604,16 +205244,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 Gremlin Server}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -165625,8 +205265,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>573</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165634,11 +205272,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 								<key>g</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 								<key>r</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -165650,10 +205288,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 Monitoring}</string>
 					</dict>
@@ -165669,8 +205307,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>572</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165692,17 +205328,17 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 Core API\
 (graph, vertex, edge)}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -165714,8 +205350,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>571</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165723,11 +205357,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -165739,10 +205373,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 Graph\
 Computer}</string>
@@ -165757,8 +205391,6 @@
 					<integer>61</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165797,8 +205429,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>18</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165806,11 +205436,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.128409</string>
+								<real>0.128409</real>
 								<key>g</key>
-								<string>0.862399</string>
+								<real>0.86239900000000003</real>
 								<key>r</key>
-								<string>0.968371</string>
+								<real>0.96837099999999998</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -165827,8 +205457,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>17</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165850,16 +205478,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 Gremlin Traversal Language}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -165871,8 +205499,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>16</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165880,11 +205506,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -165896,10 +205522,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 Provider Strategies}</string>
 					</dict>
@@ -165911,8 +205537,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>15</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165920,11 +205544,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.228629</string>
+								<real>0.228629</real>
 								<key>g</key>
-								<string>0.892484</string>
+								<real>0.89248400000000006</real>
 								<key>r</key>
-								<string>0.641594</string>
+								<real>0.641594</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -165953,8 +205577,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>14</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -165962,11 +205584,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -165983,8 +205605,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>13</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -165996,10 +205616,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 Provider API}</string>
 					</dict>
@@ -166011,8 +205631,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>12</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -166024,10 +205642,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 Provider API}</string>
 					</dict>
@@ -166062,11 +205680,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -166078,15 +205696,15 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
 
 \f0\fs24 \cf1 Graph\
 Processor}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -166119,11 +205737,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -166135,15 +205753,15 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
 
 \f0\fs24 \cf1 Graph\
 Database}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 			</array>
@@ -166176,6 +205794,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -166204,18 +205824,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -166232,7 +205847,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -166253,8 +205868,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>82</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -166276,18 +205889,18 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;\f1\fnil\fcharset0 LucidaGrande;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;\f1\fnil\fcharset0 LucidaGrande;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs66 \cf0 (   )-[:loves]
 \f1 -&gt;
 \f0 Cypher}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -166301,8 +205914,6 @@
 					<integer>83</integer>
 					<key>ImageID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -166352,6 +205963,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -166380,18 +205993,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -166408,7 +206016,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -166437,11 +206045,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -166464,13 +206072,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -166520,11 +206128,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -166547,13 +206155,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -166603,11 +206211,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -166630,13 +206238,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -166683,11 +206291,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -166749,13 +206357,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -166767,11 +206375,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -166798,11 +206406,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -166864,13 +206472,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -166882,11 +206490,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -166928,11 +206536,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -166955,13 +206563,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -166973,11 +206581,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -167019,11 +206627,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -167046,13 +206654,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -167064,11 +206672,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -167110,11 +206718,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -167137,13 +206745,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -167155,11 +206763,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -167201,11 +206809,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -167228,13 +206836,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -167246,11 +206854,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -167292,11 +206900,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -167319,13 +206927,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -167337,11 +206945,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -167383,11 +206991,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -167410,13 +207018,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -167428,11 +207036,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -167474,11 +207082,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -167501,13 +207109,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -167519,11 +207127,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -167565,11 +207173,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -167592,13 +207200,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -167610,11 +207218,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -167656,11 +207264,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -167683,13 +207291,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -167701,11 +207309,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -167747,11 +207355,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -167774,13 +207382,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -167792,11 +207400,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -167838,11 +207446,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -167865,13 +207473,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -167883,11 +207491,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -167929,11 +207537,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -167956,13 +207564,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -167974,11 +207582,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -168020,11 +207628,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -168047,13 +207655,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -168065,11 +207673,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -168111,11 +207719,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -168138,13 +207746,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -168156,11 +207764,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -168202,11 +207810,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -168229,13 +207837,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -168247,11 +207855,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -168293,11 +207901,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -168320,13 +207928,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -168338,11 +207946,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -168384,11 +207992,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -168411,13 +208019,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -168429,11 +208037,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -168475,11 +208083,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -168502,13 +208110,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -168520,11 +208128,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -168566,11 +208174,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -168593,13 +208201,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -168611,11 +208219,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -168647,11 +208255,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -168674,13 +208282,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -168730,11 +208338,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -168757,13 +208365,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -168813,11 +208421,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -168840,13 +208448,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -168898,11 +208506,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -168925,13 +208533,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -168981,11 +208589,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -169008,13 +208616,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -169064,11 +208672,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -169091,13 +208699,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -169149,11 +208757,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -169176,13 +208784,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -169232,11 +208840,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -169259,13 +208867,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -169315,11 +208923,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -169342,13 +208950,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -169400,11 +209008,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -169427,13 +209035,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -169483,11 +209091,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -169510,13 +209118,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -169566,11 +209174,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -169593,13 +209201,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -169651,11 +209259,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -169678,13 +209286,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -169734,11 +209342,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -169761,13 +209369,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -169817,11 +209425,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -169844,13 +209452,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -169902,11 +209510,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -169929,13 +209537,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -169985,11 +209593,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -170012,13 +209620,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -170068,11 +209676,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -170095,13 +209703,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -170153,11 +209761,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -170180,13 +209788,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -170236,11 +209844,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -170263,13 +209871,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -170319,11 +209927,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -170346,13 +209954,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -170404,11 +210012,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -170431,13 +210039,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -170487,11 +210095,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -170514,13 +210122,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -170570,11 +210178,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -170597,13 +210205,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -170655,11 +210263,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -170682,13 +210290,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -170738,11 +210346,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -170765,13 +210373,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -170821,11 +210429,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -170848,13 +210456,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -170906,11 +210514,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -170933,13 +210541,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -170989,11 +210597,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -171016,13 +210624,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -171072,11 +210680,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -171099,13 +210707,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -171157,11 +210765,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -171184,13 +210792,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -171240,11 +210848,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -171267,13 +210875,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -171323,11 +210931,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -171350,13 +210958,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -171408,11 +211016,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>g</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>r</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -171435,13 +211043,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -171491,11 +211099,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>g</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>r</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -171518,13 +211126,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -171574,11 +211182,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>g</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>r</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -171601,13 +211209,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -171659,11 +211267,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -171686,13 +211294,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -171742,11 +211350,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -171769,13 +211377,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -171825,11 +211433,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -171852,13 +211460,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -171910,11 +211518,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -171937,13 +211545,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -171993,11 +211601,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -172020,13 +211628,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -172076,11 +211684,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -172103,13 +211711,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -172171,11 +211779,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.0734744</string>
+												<real>0.073474399999999995</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -172198,13 +211806,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -172264,11 +211872,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.0734744</string>
+												<real>0.073474399999999995</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -172291,13 +211899,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -172357,11 +211965,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.0734744</string>
+												<real>0.073474399999999995</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -172384,13 +211992,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -172442,11 +212050,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -172469,13 +212077,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -172525,11 +212133,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -172552,13 +212160,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -172608,11 +212216,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -172635,13 +212243,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -172693,11 +212301,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -172720,13 +212328,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -172776,11 +212384,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -172803,13 +212411,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -172859,11 +212467,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -172886,13 +212494,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -172944,11 +212552,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -172971,13 +212579,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -173027,11 +212635,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -173054,13 +212662,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -173110,11 +212718,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -173137,13 +212745,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -173195,11 +212803,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -173222,13 +212830,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -173278,11 +212886,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -173305,13 +212913,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -173361,11 +212969,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -173388,13 +212996,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -173446,11 +213054,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -173473,13 +213081,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -173529,11 +213137,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -173556,13 +213164,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -173612,11 +213220,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -173639,13 +213247,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -173710,6 +213318,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -173738,18 +213348,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -173766,7 +213371,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -173785,11 +213390,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0</string>
+								<real>0.0</real>
 								<key>g</key>
-								<string>0</string>
+								<real>0.0</real>
 								<key>r</key>
-								<string>0</string>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -173851,13 +213456,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -173869,11 +213474,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -173900,11 +213505,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0</string>
+								<real>0.0</real>
 								<key>g</key>
-								<string>0</string>
+								<real>0.0</real>
 								<key>r</key>
-								<string>0</string>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -173966,13 +213571,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -173984,11 +213589,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -174030,11 +213635,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>1</string>
+								<real>1</real>
 								<key>g</key>
-								<string>0.0208795</string>
+								<real>0.020879499999999999</real>
 								<key>r</key>
-								<string>0.86621</string>
+								<real>0.86621000000000004</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -174057,13 +213662,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -174075,11 +213680,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -174121,11 +213726,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.00868958</string>
+								<real>0.0086895800000000006</real>
 								<key>g</key>
-								<string>1</string>
+								<real>1</real>
 								<key>r</key>
-								<string>0.0411741</string>
+								<real>0.041174099999999998</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -174148,13 +213753,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -174166,11 +213771,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -174212,11 +213817,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0111024</string>
+								<real>0.0111024</real>
 								<key>g</key>
-								<string>0.0328073</string>
+								<real>0.032807299999999998</real>
 								<key>r</key>
-								<string>1</string>
+								<real>1</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -174239,13 +213844,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -174257,11 +213862,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -174303,11 +213908,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>1</string>
+								<real>1</real>
 								<key>g</key>
-								<string>0.0208795</string>
+								<real>0.020879499999999999</real>
 								<key>r</key>
-								<string>0.86621</string>
+								<real>0.86621000000000004</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -174330,13 +213935,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -174348,11 +213953,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -174394,11 +213999,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.00868958</string>
+								<real>0.0086895800000000006</real>
 								<key>g</key>
-								<string>1</string>
+								<real>1</real>
 								<key>r</key>
-								<string>0.0411741</string>
+								<real>0.041174099999999998</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -174421,13 +214026,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -174439,11 +214044,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -174485,11 +214090,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0111024</string>
+								<real>0.0111024</real>
 								<key>g</key>
-								<string>0.0328073</string>
+								<real>0.032807299999999998</real>
 								<key>r</key>
-								<string>1</string>
+								<real>1</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -174512,13 +214117,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -174530,11 +214135,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -174576,11 +214181,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>1</string>
+								<real>1</real>
 								<key>g</key>
-								<string>0.0208795</string>
+								<real>0.020879499999999999</real>
 								<key>r</key>
-								<string>0.86621</string>
+								<real>0.86621000000000004</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -174603,13 +214208,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -174621,11 +214226,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -174667,11 +214272,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.00868958</string>
+								<real>0.0086895800000000006</real>
 								<key>g</key>
-								<string>1</string>
+								<real>1</real>
 								<key>r</key>
-								<string>0.0411741</string>
+								<real>0.041174099999999998</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -174694,13 +214299,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -174712,11 +214317,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -174758,11 +214363,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0111024</string>
+								<real>0.0111024</real>
 								<key>g</key>
-								<string>0.0328073</string>
+								<real>0.032807299999999998</real>
 								<key>r</key>
-								<string>1</string>
+								<real>1</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -174785,13 +214390,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -174803,11 +214408,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -174849,11 +214454,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>1</string>
+								<real>1</real>
 								<key>g</key>
-								<string>0.0208795</string>
+								<real>0.020879499999999999</real>
 								<key>r</key>
-								<string>0.86621</string>
+								<real>0.86621000000000004</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -174876,13 +214481,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -174894,11 +214499,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -174940,11 +214545,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.00868958</string>
+								<real>0.0086895800000000006</real>
 								<key>g</key>
-								<string>1</string>
+								<real>1</real>
 								<key>r</key>
-								<string>0.0411741</string>
+								<real>0.041174099999999998</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -174967,13 +214572,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -174985,11 +214590,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -175031,11 +214636,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0111024</string>
+								<real>0.0111024</real>
 								<key>g</key>
-								<string>0.0328073</string>
+								<real>0.032807299999999998</real>
 								<key>r</key>
-								<string>1</string>
+								<real>1</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -175058,13 +214663,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -175076,11 +214681,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -175122,11 +214727,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>1</string>
+								<real>1</real>
 								<key>g</key>
-								<string>0.0208795</string>
+								<real>0.020879499999999999</real>
 								<key>r</key>
-								<string>0.86621</string>
+								<real>0.86621000000000004</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -175149,13 +214754,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -175167,11 +214772,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -175213,11 +214818,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.00868958</string>
+								<real>0.0086895800000000006</real>
 								<key>g</key>
-								<string>1</string>
+								<real>1</real>
 								<key>r</key>
-								<string>0.0411741</string>
+								<real>0.041174099999999998</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -175240,13 +214845,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -175258,11 +214863,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -175304,11 +214909,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0111024</string>
+								<real>0.0111024</real>
 								<key>g</key>
-								<string>0.0328073</string>
+								<real>0.032807299999999998</real>
 								<key>r</key>
-								<string>1</string>
+								<real>1</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -175331,13 +214936,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -175349,11 +214954,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -175395,11 +215000,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.00868958</string>
+								<real>0.0086895800000000006</real>
 								<key>g</key>
-								<string>1</string>
+								<real>1</real>
 								<key>r</key>
-								<string>0.0411741</string>
+								<real>0.041174099999999998</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -175422,13 +215027,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -175440,11 +215045,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -175486,11 +215091,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0111024</string>
+								<real>0.0111024</real>
 								<key>g</key>
-								<string>0.0328073</string>
+								<real>0.032807299999999998</real>
 								<key>r</key>
-								<string>1</string>
+								<real>1</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -175513,13 +215118,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -175531,11 +215136,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -175577,11 +215182,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.00868958</string>
+								<real>0.0086895800000000006</real>
 								<key>g</key>
-								<string>1</string>
+								<real>1</real>
 								<key>r</key>
-								<string>0.0411741</string>
+								<real>0.041174099999999998</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -175604,13 +215209,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -175622,11 +215227,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -175668,11 +215273,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0111024</string>
+								<real>0.0111024</real>
 								<key>g</key>
-								<string>0.0328073</string>
+								<real>0.032807299999999998</real>
 								<key>r</key>
-								<string>1</string>
+								<real>1</real>
 							</dict>
 							<key>FillType</key>
 							<integer>3</integer>
@@ -175695,13 +215300,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.5</string>
+								<real>0.5</real>
 								<key>b</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>g</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 								<key>r</key>
-								<string>0.333333</string>
+								<real>0.33333299999999999</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
@@ -175713,11 +215318,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.023095</string>
+								<real>0.023095000000000001</real>
 								<key>g</key>
-								<string>0.0396825</string>
+								<real>0.039682500000000002</real>
 								<key>r</key>
-								<string>0.005354</string>
+								<real>0.0053540000000000003</real>
 							</dict>
 							<key>Join</key>
 							<integer>0</integer>
@@ -175749,11 +215354,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.000904381</string>
+										<real>0.000904381</real>
 										<key>g</key>
-										<string>0.935545</string>
+										<real>0.93554499999999996</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -175776,13 +215381,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -175832,11 +215437,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.000904381</string>
+										<real>0.000904381</real>
 										<key>g</key>
-										<string>0.935545</string>
+										<real>0.93554499999999996</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -175859,13 +215464,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -175915,11 +215520,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.000904381</string>
+										<real>0.000904381</real>
 										<key>g</key>
-										<string>0.935545</string>
+										<real>0.93554499999999996</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -175942,13 +215547,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -176000,11 +215605,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0950316</string>
+										<real>0.095031599999999994</real>
 										<key>r</key>
-										<string>0.0196927</string>
+										<real>0.0196927</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -176027,13 +215632,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -176083,11 +215688,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0950316</string>
+										<real>0.095031599999999994</real>
 										<key>r</key>
-										<string>0.0196927</string>
+										<real>0.0196927</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -176110,13 +215715,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -176166,11 +215771,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0950316</string>
+										<real>0.095031599999999994</real>
 										<key>r</key>
-										<string>0.0196927</string>
+										<real>0.0196927</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -176193,13 +215798,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -176251,11 +215856,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00381666</string>
+										<real>0.0038166599999999999</real>
 										<key>g</key>
-										<string>0.34765</string>
+										<real>0.34765000000000001</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -176278,13 +215883,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -176334,11 +215939,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00381666</string>
+										<real>0.0038166599999999999</real>
 										<key>g</key>
-										<string>0.34765</string>
+										<real>0.34765000000000001</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -176361,13 +215966,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -176417,11 +216022,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00381666</string>
+										<real>0.0038166599999999999</real>
 										<key>g</key>
-										<string>0.34765</string>
+										<real>0.34765000000000001</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -176444,13 +216049,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -176502,11 +216107,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -176529,13 +216134,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -176585,11 +216190,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -176612,13 +216217,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -176668,11 +216273,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -176695,13 +216300,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -176753,11 +216358,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -176780,13 +216385,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -176836,11 +216441,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -176863,13 +216468,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -176919,11 +216524,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -176946,13 +216551,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -177004,11 +216609,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00381666</string>
+										<real>0.0038166599999999999</real>
 										<key>g</key>
-										<string>0.34765</string>
+										<real>0.34765000000000001</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -177031,13 +216636,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -177087,11 +216692,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00381666</string>
+										<real>0.0038166599999999999</real>
 										<key>g</key>
-										<string>0.34765</string>
+										<real>0.34765000000000001</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -177114,13 +216719,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -177170,11 +216775,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00381666</string>
+										<real>0.0038166599999999999</real>
 										<key>g</key>
-										<string>0.34765</string>
+										<real>0.34765000000000001</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -177197,13 +216802,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -177255,11 +216860,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.12746</string>
+										<real>0.12745999999999999</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -177282,13 +216887,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -177338,11 +216943,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.12746</string>
+										<real>0.12745999999999999</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -177365,13 +216970,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -177421,11 +217026,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.12746</string>
+										<real>0.12745999999999999</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -177448,13 +217053,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -177506,11 +217111,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.12746</string>
+										<real>0.12745999999999999</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -177533,13 +217138,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -177589,11 +217194,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.12746</string>
+										<real>0.12745999999999999</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -177616,13 +217221,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -177672,11 +217277,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.12746</string>
+										<real>0.12745999999999999</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -177699,13 +217304,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -177757,11 +217362,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -177784,13 +217389,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -177840,11 +217445,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -177867,13 +217472,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -177923,11 +217528,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -177950,13 +217555,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -178008,11 +217613,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0950316</string>
+										<real>0.095031599999999994</real>
 										<key>r</key>
-										<string>0.0196927</string>
+										<real>0.0196927</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -178035,13 +217640,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -178091,11 +217696,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0950316</string>
+										<real>0.095031599999999994</real>
 										<key>r</key>
-										<string>0.0196927</string>
+										<real>0.0196927</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -178118,13 +217723,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -178174,11 +217779,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0950316</string>
+										<real>0.095031599999999994</real>
 										<key>r</key>
-										<string>0.0196927</string>
+										<real>0.0196927</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -178201,13 +217806,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -178259,11 +217864,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -178286,13 +217891,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -178342,11 +217947,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -178369,13 +217974,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -178425,11 +218030,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -178452,13 +218057,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -178510,11 +218115,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -178537,13 +218142,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -178593,11 +218198,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -178620,13 +218225,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -178676,11 +218281,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -178703,13 +218308,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -178761,11 +218366,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -178788,13 +218393,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -178844,11 +218449,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -178871,13 +218476,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -178927,11 +218532,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -178954,13 +218559,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -179022,11 +218627,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0734744</string>
+										<real>0.073474399999999995</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -179049,13 +218654,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -179115,11 +218720,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0734744</string>
+										<real>0.073474399999999995</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -179142,13 +218747,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -179208,11 +218813,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0734744</string>
+										<real>0.073474399999999995</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -179235,13 +218840,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -179293,11 +218898,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -179320,13 +218925,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -179376,11 +218981,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -179403,13 +219008,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -179459,11 +219064,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -179486,13 +219091,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -179544,11 +219149,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00381666</string>
+										<real>0.0038166599999999999</real>
 										<key>g</key>
-										<string>0.34765</string>
+										<real>0.34765000000000001</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -179571,13 +219176,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -179627,11 +219232,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00381666</string>
+										<real>0.0038166599999999999</real>
 										<key>g</key>
-										<string>0.34765</string>
+										<real>0.34765000000000001</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -179654,13 +219259,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -179710,11 +219315,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00381666</string>
+										<real>0.0038166599999999999</real>
 										<key>g</key>
-										<string>0.34765</string>
+										<real>0.34765000000000001</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -179737,13 +219342,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -179795,11 +219400,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.000904381</string>
+										<real>0.000904381</real>
 										<key>g</key>
-										<string>0.935545</string>
+										<real>0.93554499999999996</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -179822,13 +219427,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -179878,11 +219483,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.000904381</string>
+										<real>0.000904381</real>
 										<key>g</key>
-										<string>0.935545</string>
+										<real>0.93554499999999996</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -179905,13 +219510,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -179961,11 +219566,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.000904381</string>
+										<real>0.000904381</real>
 										<key>g</key>
-										<string>0.935545</string>
+										<real>0.93554499999999996</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -179988,13 +219593,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -180046,11 +219651,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0950316</string>
+										<real>0.095031599999999994</real>
 										<key>r</key>
-										<string>0.0196927</string>
+										<real>0.0196927</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -180073,13 +219678,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -180129,11 +219734,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0950316</string>
+										<real>0.095031599999999994</real>
 										<key>r</key>
-										<string>0.0196927</string>
+										<real>0.0196927</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -180156,13 +219761,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -180212,11 +219817,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0950316</string>
+										<real>0.095031599999999994</real>
 										<key>r</key>
-										<string>0.0196927</string>
+										<real>0.0196927</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -180239,13 +219844,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -180297,11 +219902,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.12746</string>
+										<real>0.12745999999999999</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -180324,13 +219929,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -180380,11 +219985,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.12746</string>
+										<real>0.12745999999999999</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -180407,13 +220012,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -180463,11 +220068,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.12746</string>
+										<real>0.12745999999999999</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -180490,13 +220095,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -180538,8 +220143,6 @@
 					<integer>85</integer>
 					<key>Rotation</key>
 					<real>264.357421875</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -180580,11 +220183,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -180607,13 +220210,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -180663,11 +220266,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -180690,13 +220293,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -180746,11 +220349,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -180773,13 +220376,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -180831,11 +220434,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.666667</string>
+										<real>0.66666700000000001</real>
 										<key>g</key>
-										<string>0.666667</string>
+										<real>0.66666700000000001</real>
 										<key>r</key>
-										<string>0.666667</string>
+										<real>0.66666700000000001</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -180858,13 +220461,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -180914,11 +220517,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.666667</string>
+										<real>0.66666700000000001</real>
 										<key>g</key>
-										<string>0.666667</string>
+										<real>0.66666700000000001</real>
 										<key>r</key>
-										<string>0.666667</string>
+										<real>0.66666700000000001</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -180941,13 +220544,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -180997,11 +220600,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.666667</string>
+										<real>0.66666700000000001</real>
 										<key>g</key>
-										<string>0.666667</string>
+										<real>0.66666700000000001</real>
 										<key>r</key>
-										<string>0.666667</string>
+										<real>0.66666700000000001</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -181024,13 +220627,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -181091,6 +220694,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -181119,18 +220724,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -181147,7 +220747,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -181176,11 +220776,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -181203,13 +220803,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -181259,11 +220859,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -181286,13 +220886,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -181342,11 +220942,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -181369,13 +220969,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -181422,11 +221022,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -181488,13 +221088,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -181506,11 +221106,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -181537,11 +221137,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>g</key>
-										<string>0</string>
+										<real>0.0</real>
 										<key>r</key>
-										<string>0</string>
+										<real>0.0</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -181603,13 +221203,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -181621,11 +221221,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -181667,11 +221267,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -181694,13 +221294,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -181712,11 +221312,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -181758,11 +221358,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -181785,13 +221385,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -181803,11 +221403,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -181849,11 +221449,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -181876,13 +221476,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -181894,11 +221494,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -181940,11 +221540,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -181967,13 +221567,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -181985,11 +221585,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -182031,11 +221631,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -182058,13 +221658,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -182076,11 +221676,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -182122,11 +221722,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -182149,13 +221749,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -182167,11 +221767,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -182213,11 +221813,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -182240,13 +221840,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -182258,11 +221858,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -182304,11 +221904,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -182331,13 +221931,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -182349,11 +221949,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -182395,11 +221995,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -182422,13 +222022,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -182440,11 +222040,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -182486,11 +222086,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -182513,13 +222113,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -182531,11 +222131,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -182577,11 +222177,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -182604,13 +222204,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -182622,11 +222222,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -182668,11 +222268,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -182695,13 +222295,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -182713,11 +222313,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -182759,11 +222359,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>1</string>
+										<real>1</real>
 										<key>g</key>
-										<string>0.0208795</string>
+										<real>0.020879499999999999</real>
 										<key>r</key>
-										<string>0.86621</string>
+										<real>0.86621000000000004</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -182786,13 +222386,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -182804,11 +222404,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -182850,11 +222450,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -182877,13 +222477,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -182895,11 +222495,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -182941,11 +222541,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -182968,13 +222568,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -182986,11 +222586,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -183032,11 +222632,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -183059,13 +222659,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -183077,11 +222677,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -183123,11 +222723,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -183150,13 +222750,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -183168,11 +222768,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -183214,11 +222814,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.00868958</string>
+										<real>0.0086895800000000006</real>
 										<key>g</key>
-										<string>1</string>
+										<real>1</real>
 										<key>r</key>
-										<string>0.0411741</string>
+										<real>0.041174099999999998</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -183241,13 +222841,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -183259,11 +222859,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -183305,11 +222905,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0111024</string>
+										<real>0.0111024</real>
 										<key>g</key>
-										<string>0.0328073</string>
+										<real>0.032807299999999998</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>3</integer>
@@ -183332,13 +222932,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -183350,11 +222950,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.023095</string>
+										<real>0.023095000000000001</real>
 										<key>g</key>
-										<string>0.0396825</string>
+										<real>0.039682500000000002</real>
 										<key>r</key>
-										<string>0.005354</string>
+										<real>0.0053540000000000003</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -183386,11 +222986,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -183413,13 +223013,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -183469,11 +223069,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -183496,13 +223096,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -183552,11 +223152,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -183579,13 +223179,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -183637,11 +223237,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -183664,13 +223264,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -183720,11 +223320,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -183747,13 +223347,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -183803,11 +223403,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -183830,13 +223430,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -183888,11 +223488,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -183915,13 +223515,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -183971,11 +223571,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -183998,13 +223598,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -184054,11 +223654,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -184081,13 +223681,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -184139,11 +223739,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -184166,13 +223766,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -184222,11 +223822,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -184249,13 +223849,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -184305,11 +223905,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -184332,13 +223932,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -184390,11 +223990,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -184417,13 +224017,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -184473,11 +224073,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -184500,13 +224100,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -184556,11 +224156,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -184583,13 +224183,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -184641,11 +224241,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -184668,13 +224268,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -184724,11 +224324,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -184751,13 +224351,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -184807,11 +224407,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -184834,13 +224434,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -184892,11 +224492,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -184919,13 +224519,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -184975,11 +224575,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -185002,13 +224602,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -185058,11 +224658,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -185085,13 +224685,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -185143,11 +224743,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -185170,13 +224770,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -185226,11 +224826,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -185253,13 +224853,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -185309,11 +224909,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -185336,13 +224936,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -185394,11 +224994,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -185421,13 +225021,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -185477,11 +225077,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -185504,13 +225104,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -185560,11 +225160,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -185587,13 +225187,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -185645,11 +225245,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -185672,13 +225272,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -185728,11 +225328,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -185755,13 +225355,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -185811,11 +225411,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -185838,13 +225438,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -185896,11 +225496,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -185923,13 +225523,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -185979,11 +225579,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -186006,13 +225606,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -186062,11 +225662,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -186089,13 +225689,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -186147,11 +225747,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>g</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>r</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -186174,13 +225774,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -186230,11 +225830,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>g</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>r</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -186257,13 +225857,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -186313,11 +225913,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>g</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 												<key>r</key>
-												<string>0.666667</string>
+												<real>0.66666700000000001</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -186340,13 +225940,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -186398,11 +225998,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -186425,13 +226025,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -186481,11 +226081,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -186508,13 +226108,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -186564,11 +226164,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -186591,13 +226191,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -186649,11 +226249,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -186676,13 +226276,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -186732,11 +226332,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -186759,13 +226359,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -186815,11 +226415,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -186842,13 +226442,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -186910,11 +226510,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.0734744</string>
+												<real>0.073474399999999995</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -186937,13 +226537,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -187003,11 +226603,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.0734744</string>
+												<real>0.073474399999999995</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -187030,13 +226630,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -187096,11 +226696,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.0734744</string>
+												<real>0.073474399999999995</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -187123,13 +226723,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -187181,11 +226781,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -187208,13 +226808,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -187264,11 +226864,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -187291,13 +226891,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -187347,11 +226947,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>g</key>
-												<string>0</string>
+												<real>0.0</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -187374,13 +226974,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -187432,11 +227032,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -187459,13 +227059,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -187515,11 +227115,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -187542,13 +227142,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -187598,11 +227198,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.00381666</string>
+												<real>0.0038166599999999999</real>
 												<key>g</key>
-												<string>0.34765</string>
+												<real>0.34765000000000001</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -187625,13 +227225,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -187683,11 +227283,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -187710,13 +227310,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -187766,11 +227366,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -187793,13 +227393,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -187849,11 +227449,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.000904381</string>
+												<real>0.000904381</real>
 												<key>g</key>
-												<string>0.935545</string>
+												<real>0.93554499999999996</real>
 												<key>r</key>
-												<string>1</string>
+												<real>1</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -187876,13 +227476,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -187934,11 +227534,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -187961,13 +227561,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -188017,11 +227617,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -188044,13 +227644,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -188100,11 +227700,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>1</string>
+												<real>1</real>
 												<key>g</key>
-												<string>0.0950316</string>
+												<real>0.095031599999999994</real>
 												<key>r</key>
-												<string>0.0196927</string>
+												<real>0.0196927</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -188127,13 +227727,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -188185,11 +227785,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -188212,13 +227812,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -188268,11 +227868,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -188295,13 +227895,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -188351,11 +227951,11 @@
 											<key>Color</key>
 											<dict>
 												<key>b</key>
-												<string>0.12746</string>
+												<real>0.12745999999999999</real>
 												<key>g</key>
-												<string>1</string>
+												<real>1</real>
 												<key>r</key>
-												<string>0</string>
+												<real>0.0</real>
 											</dict>
 											<key>FillType</key>
 											<integer>2</integer>
@@ -188378,13 +227978,13 @@
 											<key>Color</key>
 											<dict>
 												<key>a</key>
-												<string>0.5</string>
+												<real>0.5</real>
 												<key>b</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>g</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 												<key>r</key>
-												<string>0.333333</string>
+												<real>0.33333299999999999</real>
 											</dict>
 											<key>Draws</key>
 											<string>NO</string>
@@ -188437,18 +228037,18 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.128409</string>
+								<real>0.128409</real>
 								<key>g</key>
-								<string>0.862399</string>
+								<real>0.86239900000000003</real>
 								<key>r</key>
-								<string>0.968371</string>
+								<real>0.96837099999999998</real>
 							</dict>
 						</dict>
 					</dict>
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>TextRelativeArea</key>
 					<string>{{0.13500000000000001, 0.115}, {0.75, 0.75}}</string>
@@ -188483,6 +228083,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -188511,18 +228113,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -188539,7 +228136,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -188551,8 +228148,6 @@
 					<integer>61</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -188588,8 +228183,6 @@
 					<integer>59</integer>
 					<key>ImageID</key>
 					<integer>7</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -188630,11 +228223,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0712961</string>
+										<real>0.071296100000000001</real>
 										<key>g</key>
-										<string>0.0555556</string>
+										<real>0.055555599999999997</real>
 										<key>r</key>
-										<string>1</string>
+										<real>1</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -188657,13 +228250,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -188675,11 +228268,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0413926</string>
+										<real>0.041392600000000002</real>
 										<key>g</key>
-										<string>0.0368481</string>
+										<real>0.036848100000000002</real>
 										<key>r</key>
-										<string>0.309524</string>
+										<real>0.30952400000000002</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -188722,11 +228315,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0817238</string>
+										<real>0.081723799999999999</real>
 										<key>g</key>
-										<string>0.0727513</string>
+										<real>0.072751300000000005</real>
 										<key>r</key>
-										<string>0.611111</string>
+										<real>0.61111099999999996</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -188749,13 +228342,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -188767,11 +228360,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0413926</string>
+										<real>0.041392600000000002</real>
 										<key>g</key>
-										<string>0.0368481</string>
+										<real>0.036848100000000002</real>
 										<key>r</key>
-										<string>0.309524</string>
+										<real>0.30952400000000002</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -188814,11 +228407,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.113564</string>
+										<real>0.113564</real>
 										<key>g</key>
-										<string>0.101096</string>
+										<real>0.10109600000000001</real>
 										<key>r</key>
-										<string>0.849206</string>
+										<real>0.84920600000000002</real>
 									</dict>
 									<key>FillType</key>
 									<integer>2</integer>
@@ -188841,13 +228434,13 @@
 									<key>Color</key>
 									<dict>
 										<key>a</key>
-										<string>0.5</string>
+										<real>0.5</real>
 										<key>b</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>g</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 										<key>r</key>
-										<string>0.333333</string>
+										<real>0.33333299999999999</real>
 									</dict>
 									<key>Draws</key>
 									<string>NO</string>
@@ -188859,11 +228452,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0413926</string>
+										<real>0.041392600000000002</real>
 										<key>g</key>
-										<string>0.0368481</string>
+										<real>0.036848100000000002</real>
 										<key>r</key>
-										<string>0.309524</string>
+										<real>0.30952400000000002</real>
 									</dict>
 									<key>Join</key>
 									<integer>0</integer>
@@ -188905,8 +228498,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>58</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -188928,14 +228519,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 AmericanTypewriter;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fnil\fcharset0 AmericanTypewriter;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs114 \cf0 Gremlin}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -188970,6 +228561,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -188998,18 +228591,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -189026,7 +228614,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -189038,8 +228626,6 @@
 					<integer>68</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189070,8 +228656,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.89999997615814209</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189079,11 +228663,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.89999997615814209</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -189107,8 +228686,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.80000001192092896</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189116,11 +228693,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.80000001192092896</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -189144,8 +228716,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.69999998807907104</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189153,11 +228723,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.69999998807907104</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -189181,8 +228746,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.60000002384185791</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189190,11 +228753,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.60000002384185791</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -189218,8 +228776,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.5</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189227,11 +228783,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.5</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -189255,8 +228806,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.40000000596046448</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189264,11 +228813,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.40000000596046448</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -189292,8 +228836,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.30000001192092896</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189301,11 +228843,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.30000001192092896</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -189348,6 +228885,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -189376,18 +228915,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -189404,7 +228938,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -189416,8 +228950,6 @@
 					<integer>65</integer>
 					<key>ImageID</key>
 					<integer>81</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189467,6 +228999,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -189495,18 +229029,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -189523,7 +229052,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -189538,16 +229067,21 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0711492</string>
+								<real>0.071149199999999996</real>
 								<key>g</key>
-								<string>0.077948</string>
+								<real>0.077948000000000003</real>
 								<key>r</key>
-								<string>0.626515</string>
+								<real>0.62651500000000004</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>0</string>
@@ -189581,6 +229115,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -189622,6 +229161,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -189662,6 +229206,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -189693,8 +229242,6 @@
 					<integer>126</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189725,8 +229272,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.5</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189734,11 +229279,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.5</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -189762,8 +229302,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.5</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189771,11 +229309,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.5</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -189799,8 +229332,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.75</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189808,11 +229339,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.75</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -189836,8 +229362,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>83</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189859,16 +229383,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -189884,8 +229408,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.75</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189893,11 +229415,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.75</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -189919,8 +229436,6 @@
 					<integer>72</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189951,8 +229466,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>60</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -189974,16 +229487,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -190000,11 +229513,16 @@
 					<integer>59</integer>
 					<key>Points</key>
 					<array>
-						<string>{98.437484985696798, 337.01801241944281}</string>
-						<string>{177.81248258937543, 337.01801241944281}</string>
+						<string>{98.437485000791739, 337.01801241944281}</string>
+						<string>{177.81248257428049, 337.01801241944281}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -190037,11 +229555,16 @@
 					<integer>49</integer>
 					<key>Points</key>
 					<array>
-						<string>{221.81250408199583, 337.01802420021738}</string>
-						<string>{310.65624782535008, 337.01802420021738}</string>
+						<string>{221.81250407427018, 337.01802420021738}</string>
+						<string>{310.65624783307572, 337.01802420021738}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -190085,11 +229608,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -190101,14 +229624,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -190134,11 +229657,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -190150,14 +229673,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -190167,8 +229690,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>38</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -190187,10 +229708,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:lop\
 lang:java}</string>
@@ -190203,8 +229724,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>40</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -190223,10 +229742,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:josh\
 age:32}</string>
@@ -190251,6 +229770,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -190296,11 +229820,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -190312,14 +229836,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -190329,8 +229853,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>34</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -190349,10 +229871,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:marko\
 age:29}</string>
@@ -190388,6 +229910,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -190416,18 +229940,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -190444,7 +229963,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -190454,8 +229973,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>65</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -190472,10 +229989,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 weight:&lt;Long&gt;}</string>
 					</dict>
@@ -190491,8 +230008,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>64</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -190514,16 +230029,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 followedBy}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -190544,10 +230059,15 @@
 						<string>{337, 408}</string>
 						<string>{337, 456}</string>
 						<string>{273, 456}</string>
-						<string>{272.69270805088888, 426.49997288533075}</string>
+						<string>{272.69270805078617, 426.49997287547126}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -190577,8 +230097,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>62</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -190600,16 +230118,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 writtenBy}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -190625,8 +230143,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>61</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -190648,16 +230164,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 sungBy}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -190674,13 +230190,18 @@
 					<integer>60</integer>
 					<key>Points</key>
 					<array>
-						<string>{243.0290464900317, 418.50902218184916}</string>
+						<string>{243.02904650366136, 418.50902217698894}</string>
 						<string>{208, 431}</string>
 						<string>{155, 431}</string>
-						<string>{110.47746904105969, 417.16191605330232}</string>
+						<string>{110.47746904202778, 417.16191605360319}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -190711,13 +230232,18 @@
 					<integer>59</integer>
 					<key>Points</key>
 					<array>
-						<string>{243.01949978307675, 399.51640281527392}</string>
+						<string>{243.01949978663359, 399.51640281629744}</string>
 						<string>{203, 388}</string>
 						<string>{155, 388}</string>
-						<string>{110.48268169591309, 400.03170764975323}</string>
+						<string>{110.48268169651413, 400.03170764959083}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -190743,8 +230269,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -190763,10 +230287,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:&lt;String&gt;\
 songType:&lt;String&gt;\
@@ -190787,8 +230311,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>41</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -190796,11 +230318,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -190817,14 +230339,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 Song}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -190841,8 +230363,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>28</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -190850,11 +230370,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -190871,14 +230391,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 Artist}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -190888,8 +230408,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>34</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -190906,10 +230424,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 name:&lt;String&gt;}</string>
 					</dict>
@@ -190944,6 +230462,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -190972,18 +230492,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -191000,7 +230515,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -191015,16 +230530,21 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0711492</string>
+								<real>0.071149199999999996</real>
 								<key>g</key>
-								<string>0.077948</string>
+								<real>0.077948000000000003</real>
 								<key>r</key>
-								<string>0.626515</string>
+								<real>0.62651500000000004</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>0</string>
@@ -191058,6 +230578,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -191099,6 +230624,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -191139,6 +230669,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -191170,8 +230705,6 @@
 					<integer>126</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -191202,8 +230735,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.5</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -191211,11 +230742,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.5</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -191239,8 +230765,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.5</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -191248,11 +230772,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.5</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -191276,8 +230795,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.75</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -191285,11 +230802,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.75</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -191313,8 +230825,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>83</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -191336,16 +230846,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -191361,8 +230871,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.75</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -191370,11 +230878,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.75</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -191396,8 +230899,6 @@
 					<integer>72</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -191428,8 +230929,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>60</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -191451,16 +230950,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -191477,11 +230976,16 @@
 					<integer>59</integer>
 					<key>Points</key>
 					<array>
-						<string>{98.437484985696798, 337.01801241944281}</string>
-						<string>{177.81248258937543, 337.01801241944281}</string>
+						<string>{98.437485000791739, 337.01801241944281}</string>
+						<string>{177.81248257428049, 337.01801241944281}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -191514,11 +231018,16 @@
 					<integer>49</integer>
 					<key>Points</key>
 					<array>
-						<string>{221.81250408199583, 337.01802420021738}</string>
-						<string>{310.65624782535008, 337.01802420021738}</string>
+						<string>{221.81250407427018, 337.01802420021738}</string>
+						<string>{310.65624783307572, 337.01802420021738}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -191562,11 +231071,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -191578,14 +231087,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -191611,11 +231120,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -191627,14 +231136,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -191644,8 +231153,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>38</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -191664,10 +231171,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:lop\
 lang:java}</string>
@@ -191680,8 +231187,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>40</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -191700,10 +231205,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:josh\
 age:32}</string>
@@ -191728,6 +231233,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -191773,11 +231283,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -191789,14 +231299,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -191806,8 +231316,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>34</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -191826,10 +231334,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:marko\
 age:29}</string>
@@ -191865,6 +231373,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -191893,18 +231403,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -191921,7 +231426,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -191935,8 +231440,6 @@
 					<integer>48</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -191970,8 +231473,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>63</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -191993,16 +231494,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 AmericanTypewriter;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fnil\fcharset0 AmericanTypewriter;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs40 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -192014,8 +231515,6 @@
 					<integer>61</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -192049,8 +231548,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>66</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -192072,16 +231569,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 AmericanTypewriter;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fnil\fcharset0 AmericanTypewriter;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs40 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -192093,8 +231590,6 @@
 					<integer>65</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -192144,6 +231639,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -192172,18 +231669,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -192200,7 +231692,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -192212,8 +231704,6 @@
 					<integer>88</integer>
 					<key>ImageID</key>
 					<integer>46</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -192249,11 +231739,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0</string>
+								<real>0.0</real>
 								<key>g</key>
-								<string>0.010851</string>
+								<real>0.010851</real>
 								<key>r</key>
-								<string>1</string>
+								<real>1</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -192265,7 +231755,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -192277,8 +231767,6 @@
 					<integer>81</integer>
 					<key>ImageID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -192309,8 +231797,6 @@
 					<integer>47</integer>
 					<key>Rotation</key>
 					<real>340</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -192341,8 +231827,6 @@
 					<integer>47</integer>
 					<key>Rotation</key>
 					<real>20</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -192373,8 +231857,6 @@
 					<integer>47</integer>
 					<key>Rotation</key>
 					<real>320</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -192405,8 +231887,6 @@
 					<integer>47</integer>
 					<key>Rotation</key>
 					<real>40</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -192437,8 +231917,6 @@
 					<integer>47</integer>
 					<key>Rotation</key>
 					<real>310</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -192469,8 +231947,6 @@
 					<integer>47</integer>
 					<key>Rotation</key>
 					<real>50</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -192520,6 +231996,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -192548,18 +232026,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -192576,7 +232049,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -192588,8 +232061,6 @@
 					<integer>96</integer>
 					<key>ImageID</key>
 					<integer>100</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -192627,11 +232098,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.157495</string>
+								<real>0.157495</real>
 								<key>g</key>
-								<string>0.891482</string>
+								<real>0.891482</real>
 								<key>r</key>
-								<string>0.993156</string>
+								<real>0.99315600000000004</real>
 							</dict>
 						</dict>
 						<key>stroke</key>
@@ -192643,7 +232114,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -192655,8 +232126,6 @@
 					<integer>1</integer>
 					<key>Rotation</key>
 					<real>318.18240356445312</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -192664,11 +232133,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.152955</string>
+								<real>0.15295500000000001</real>
 								<key>g</key>
-								<string>0.653357</string>
+								<real>0.65335699999999997</real>
 								<key>r</key>
-								<string>1</string>
+								<real>1</real>
 							</dict>
 							<key>FillType</key>
 							<integer>2</integer>
@@ -192702,6 +232171,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -192730,6 +232204,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -192758,6 +232237,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -192786,6 +232270,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -192810,8 +232299,6 @@
 					<integer>84</integer>
 					<key>ImageID</key>
 					<integer>98</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -192840,8 +232327,6 @@
 					<integer>81</integer>
 					<key>ImageID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -192891,6 +232376,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -192919,18 +232406,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -192947,7 +232429,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -192959,8 +232441,6 @@
 					<integer>73</integer>
 					<key>ImageID</key>
 					<integer>65</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -192989,8 +232469,6 @@
 					<integer>67</integer>
 					<key>ImageID</key>
 					<integer>32</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193019,8 +232497,6 @@
 					<integer>64</integer>
 					<key>ImageID</key>
 					<integer>29</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193051,8 +232527,6 @@
 					<integer>28</integer>
 					<key>Rotation</key>
 					<real>31.105297088623047</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193083,8 +232557,6 @@
 					<integer>31</integer>
 					<key>Rotation</key>
 					<real>312.235595703125</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193115,8 +232587,6 @@
 					<integer>71</integer>
 					<key>ImageID</key>
 					<integer>36</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193145,8 +232615,6 @@
 					<integer>69</integer>
 					<key>ImageID</key>
 					<integer>34</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193196,6 +232664,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -193224,18 +232694,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -193252,7 +232717,635 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
+			<key>GraphicsList</key>
+			<array>
+				<dict>
+					<key>Class</key>
+					<string>Group</string>
+					<key>Graphics</key>
+					<array>
+						<dict>
+							<key>Bounds</key>
+							<string>{{236.30854239390794, 464.98760197315346}, {81.351908993582825, 40.594602789582517}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>104</integer>
+							<key>ImageID</key>
+							<integer>117</integer>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{219.41472244262695, 405.81824289284361}, {115.13963855708016, 123.59887005649718}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>105</integer>
+							<key>ImageID</key>
+							<integer>42</integer>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+					</array>
+					<key>ID</key>
+					<integer>103</integer>
+				</dict>
+				<dict>
+					<key>Class</key>
+					<string>Group</string>
+					<key>Graphics</key>
+					<array>
+						<dict>
+							<key>Bounds</key>
+							<string>{{173.23187971115118, 190}, {69.591078066914505, 34.725947955390339}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>113</integer>
+							<key>ImageID</key>
+							<integer>117</integer>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{302.64080810546875, 194.31382751464844}, {69.591078066914505, 41.754646840148702}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>114</integer>
+							<key>ImageID</key>
+							<integer>118</integer>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{363.38910046510625, 140.21189286442961}, {34, 29.576208178438662}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>115</integer>
+							<key>ImageID</key>
+							<integer>119</integer>
+							<key>Rotation</key>
+							<real>24.183635711669922</real>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{138.60346789230624, 210.91837887893394}, {36.029911041259766, 36.029911041259766}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>116</integer>
+							<key>ImageID</key>
+							<integer>116</integer>
+							<key>Rotation</key>
+							<real>53.387245178222656</real>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+							<key>TextRotation</key>
+							<real>13.932337760925293</real>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{307.82293701171875, 160.31382751464844}, {34, 34}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>117</integer>
+							<key>ImageID</key>
+							<integer>115</integer>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{200.82293701171875, 116}, {112.41221618652344, 74}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>HFlip</key>
+							<string>YES</string>
+							<key>ID</key>
+							<integer>118</integer>
+							<key>ImageID</key>
+							<integer>36</integer>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{75.82293701171875, 135}, {391.04476928710938, 131}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>119</integer>
+							<key>ImageID</key>
+							<integer>34</integer>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+					</array>
+					<key>ID</key>
+					<integer>112</integer>
+				</dict>
+				<dict>
+					<key>Class</key>
+					<string>Group</string>
+					<key>Graphics</key>
+					<array>
+						<dict>
+							<key>Bounds</key>
+							<string>{{310.68822317091463, 443.8092320903595}, {33.991532329669255, 33.991532498631869}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>101</integer>
+							<key>ImageID</key>
+							<integer>116</integer>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+							<key>TextRotation</key>
+							<real>13.932337760925293</real>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{276.98455844394925, 384.96965658947744}, {101.39886654396474, 108.84857280171592}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>102</integer>
+							<key>ImageID</key>
+							<integer>42</integer>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+					</array>
+					<key>ID</key>
+					<integer>100</integer>
+				</dict>
+				<dict>
+					<key>Class</key>
+					<string>Group</string>
+					<key>Graphics</key>
+					<array>
+						<dict>
+							<key>Bounds</key>
+							<string>{{205.34255877234071, 439.80939966983544}, {41.885119385524654, 41.885119593724127}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>110</integer>
+							<key>ImageID</key>
+							<integer>115</integer>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{175.58569266952193, 384.9696631944999}, {101.39886654396474, 108.84857280171592}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>111</integer>
+							<key>ImageID</key>
+							<integer>42</integer>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+					</array>
+					<key>ID</key>
+					<integer>109</integer>
+				</dict>
+				<dict>
+					<key>Class</key>
+					<string>Group</string>
+					<key>Graphics</key>
+					<array>
+						<dict>
+							<key>Bounds</key>
+							<string>{{350.32897170383922, 417.92885416594083}, {57.823583890562865, 34.694150506792859}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>98</integer>
+							<key>ImageID</key>
+							<integer>118</integer>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{328.54136393486715, 362.36372142203891}, {101.39886654396474, 108.84857280171592}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>99</integer>
+							<key>ImageID</key>
+							<integer>42</integer>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+					</array>
+					<key>ID</key>
+					<integer>97</integer>
+				</dict>
+				<dict>
+					<key>Class</key>
+					<string>Group</string>
+					<key>Graphics</key>
+					<array>
+						<dict>
+							<key>Bounds</key>
+							<string>{{155.54781616463268, 420.02946451127809}, {41.885116577148438, 36.435383006477437}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>107</integer>
+							<key>ImageID</key>
+							<integer>119</integer>
+							<key>Rotation</key>
+							<real>24.183635711669922</real>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{125.79093933105472, 362.36370616324984}, {101.39886654396474, 108.84857280171592}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>ID</key>
+							<integer>108</integer>
+							<key>ImageID</key>
+							<integer>42</integer>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+					</array>
+					<key>ID</key>
+					<integer>106</integer>
+				</dict>
+			</array>
+			<key>GridInfo</key>
+			<dict/>
+			<key>HPages</key>
+			<integer>1</integer>
+			<key>KeepToScale</key>
+			<false/>
+			<key>Layers</key>
+			<array>
+				<dict>
+					<key>Lock</key>
+					<string>NO</string>
+					<key>Name</key>
+					<string>Layer 1</string>
+					<key>Print</key>
+					<string>YES</string>
+					<key>View</key>
+					<string>YES</string>
+				</dict>
+			</array>
+			<key>LayoutInfo</key>
+			<dict>
+				<key>Animate</key>
+				<string>NO</string>
+				<key>circoMinDist</key>
+				<real>18</real>
+				<key>circoSeparation</key>
+				<real>0.0</real>
+				<key>layoutEngine</key>
+				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
+				<key>neatoSeparation</key>
+				<real>0.0</real>
+				<key>twopiSeparation</key>
+				<real>0.0</real>
+			</dict>
+			<key>Orientation</key>
+			<integer>2</integer>
+			<key>PrintOnePage</key>
+			<false/>
+			<key>RowAlign</key>
+			<integer>1</integer>
+			<key>RowSpacing</key>
+			<real>36</real>
+			<key>SheetTitle</key>
+			<string>Canvas 72</string>
+			<key>UniqueID</key>
+			<integer>77</integer>
+			<key>VPages</key>
+			<integer>1</integer>
+		</dict>
+		<dict>
+			<key>ActiveLayerIndex</key>
+			<integer>0</integer>
+			<key>AutoAdjust</key>
+			<true/>
+			<key>BackgroundGraphic</key>
+			<dict>
+				<key>Bounds</key>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
+				<key>Class</key>
+				<string>SolidGraphic</string>
+				<key>ID</key>
+				<integer>2</integer>
+				<key>Style</key>
+				<dict>
+					<key>stroke</key>
+					<dict>
+						<key>Draws</key>
+						<string>NO</string>
+					</dict>
+				</dict>
+			</dict>
+			<key>BaseZoom</key>
+			<integer>0</integer>
+			<key>CanvasOrigin</key>
+			<string>{0, 0}</string>
+			<key>ColumnAlign</key>
+			<integer>1</integer>
+			<key>ColumnSpacing</key>
+			<real>36</real>
+			<key>DisplayScale</key>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -193266,8 +233359,6 @@
 					<integer>39</integer>
 					<key>Rotation</key>
 					<real>316.71340942382812</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193298,8 +233389,6 @@
 					<integer>39</integer>
 					<key>Rotation</key>
 					<real>341.4061279296875</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193330,8 +233419,6 @@
 					<integer>39</integer>
 					<key>Rotation</key>
 					<real>282.69760131835938</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193360,8 +233447,6 @@
 					<integer>3</integer>
 					<key>ImageID</key>
 					<integer>66</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193411,6 +233496,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -193439,18 +233526,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -193467,7 +233549,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -193479,8 +233561,6 @@
 					<integer>72</integer>
 					<key>ImageID</key>
 					<integer>38</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193509,8 +233589,6 @@
 					<integer>81</integer>
 					<key>ImageID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193560,6 +233638,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -193588,18 +233668,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -193616,7 +233691,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -193642,11 +233717,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.4</string>
+								<real>0.40000000000000002</real>
 								<key>g</key>
-								<string>1</string>
+								<real>1</real>
 								<key>r</key>
-								<string>1</string>
+								<real>1</real>
 							</dict>
 							<key>FillType</key>
 							<integer>2</integer>
@@ -193669,29 +233744,27 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.4</string>
+								<real>0.40000000000000002</real>
 								<key>b</key>
-								<string>0</string>
+								<real>0.0</real>
 								<key>g</key>
-								<string>0</string>
+								<real>0.0</real>
 								<key>r</key>
-								<string>0</string>
+								<real>0.0</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
-							<key>ShadowVector</key>
-							<string>{0, 2}</string>
 						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0</string>
+								<real>0.0</real>
 								<key>g</key>
-								<string>0.4822</string>
+								<real>0.48220000000000002</real>
 								<key>r</key>
-								<string>0.910613</string>
+								<real>0.91061300000000001</real>
 							</dict>
 						</dict>
 					</dict>
@@ -193709,8 +233782,6 @@
 					<integer>68</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193739,8 +233810,6 @@
 					<integer>87</integer>
 					<key>ImageID</key>
 					<integer>90</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193769,8 +233838,6 @@
 					<integer>83</integer>
 					<key>ImageID</key>
 					<integer>86</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193820,6 +233887,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -193848,18 +233917,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -193876,7 +233940,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -193888,8 +233952,6 @@
 					<integer>74</integer>
 					<key>ImageID</key>
 					<integer>39</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193918,8 +233980,6 @@
 					<integer>8</integer>
 					<key>ImageID</key>
 					<integer>6</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193950,8 +234010,6 @@
 					<integer>7</integer>
 					<key>ImageID</key>
 					<integer>5</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -193980,8 +234038,6 @@
 					<integer>5</integer>
 					<key>ImageID</key>
 					<integer>3</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -194010,8 +234066,6 @@
 					<integer>4</integer>
 					<key>ImageID</key>
 					<integer>2</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -194042,8 +234096,6 @@
 					<integer>3</integer>
 					<key>ImageID</key>
 					<integer>1</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -194093,6 +234145,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -194121,18 +234175,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -194149,7 +234198,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -194170,8 +234219,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>69</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -194193,16 +234240,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs22 \cf0 12}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -194225,8 +234272,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>68</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -194248,16 +234293,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs22 \cf0 11}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -194280,8 +234325,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>67</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -194303,16 +234346,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs22 \cf0 10}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -194335,8 +234378,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>66</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -194358,16 +234399,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs22 \cf0 9}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -194390,8 +234431,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>65</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -194413,16 +234452,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs22 \cf0 8}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -194445,8 +234484,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>64</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -194468,16 +234505,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs22 \cf0 7}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -194496,8 +234533,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>63</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -194516,10 +234551,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.4}</string>
 					</dict>
@@ -194538,8 +234573,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>62</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -194558,10 +234591,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.4}</string>
 					</dict>
@@ -194580,8 +234613,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>61</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -194600,10 +234631,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:1.0}</string>
 					</dict>
@@ -194619,8 +234650,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>60</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -194642,16 +234671,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -194679,11 +234708,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -194695,14 +234724,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -194712,8 +234741,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>34</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -194732,10 +234759,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:marko\
 age:29}</string>
@@ -194753,13 +234780,18 @@
 					<integer>59</integer>
 					<key>Points</key>
 					<array>
-						<string>{130.41021708917989, 237.513921502963}</string>
+						<string>{130.41021708834276, 237.5139215264027}</string>
 						<string>{132.75, 172}</string>
 						<string>{464.125, 174}</string>
-						<string>{461.61775687197843, 237.51700538998864}</string>
+						<string>{461.61775687081024, 237.51700541958303}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -194796,8 +234828,6 @@
 					<integer>58</integer>
 					<key>Rotation</key>
 					<real>90</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -194816,10 +234846,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:1.0}</string>
 					</dict>
@@ -194840,8 +234870,6 @@
 					<integer>57</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -194860,10 +234888,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.2}</string>
 					</dict>
@@ -194881,8 +234909,6 @@
 					<integer>56</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -194904,16 +234930,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -194931,8 +234957,6 @@
 					<integer>55</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -194954,16 +234978,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -194981,8 +235005,6 @@
 					<integer>54</integer>
 					<key>Rotation</key>
 					<real>90</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -195004,16 +235026,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -195029,8 +235051,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>53</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -195052,16 +235072,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -195077,8 +235097,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>52</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -195100,16 +235118,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -195130,8 +235148,6 @@
 					<integer>51</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -195150,10 +235166,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.5}</string>
 					</dict>
@@ -195170,11 +235186,16 @@
 					<integer>50</integer>
 					<key>Points</key>
 					<array>
-						<string>{295.25297650518007, 384.50008608352385}</string>
-						<string>{295.55952730951719, 281.49991391647615}</string>
+						<string>{295.25297650514051, 384.50008609680748}</string>
+						<string>{295.55952730955676, 281.49991390319252}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -195207,11 +235228,16 @@
 					<integer>49</integer>
 					<key>Points</key>
 					<array>
-						<string>{438.74999878887411, 259.4999861943939}</string>
-						<string>{317.62501456256831, 259.4999861943939}</string>
+						<string>{438.74999878674862, 259.4999861943939}</string>
+						<string>{317.6250145646938, 259.4999861943939}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -195244,11 +235270,16 @@
 					<integer>48</integer>
 					<key>Points</key>
 					<array>
-						<string>{460.7500196057423, 281.50001075667234}</string>
-						<string>{460.7500196057423, 384.4999892433363}</string>
+						<string>{460.7500196057423, 281.5000107499983}</string>
+						<string>{460.7500196057423, 384.49998925001034}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -195281,11 +235312,16 @@
 					<integer>46</integer>
 					<key>Points</key>
 					<array>
-						<string>{151.62501074013417, 259.50000766098299}</string>
-						<string>{273.62499307456198, 259.50000766098299}</string>
+						<string>{151.62501074999804, 259.50000766098299}</string>
+						<string>{273.62499306469812, 259.50000766098299}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -195318,11 +235354,16 @@
 					<integer>45</integer>
 					<key>Points</key>
 					<array>
-						<string>{129.62498839159511, 281.50001075667001}</string>
-						<string>{129.62498839159511, 384.49998924332834}</string>
+						<string>{129.62498839159511, 281.50001074999602}</string>
+						<string>{129.62498839159511, 384.49998925000233}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -195366,11 +235407,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -195382,14 +235423,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -195415,11 +235456,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -195431,14 +235472,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -195464,11 +235505,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -195480,14 +235521,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -195513,11 +235554,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -195529,14 +235570,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -195562,11 +235603,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -195578,14 +235619,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -195595,8 +235636,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>36</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -195615,10 +235654,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:vadas\
 age:27}</string>
@@ -195631,8 +235670,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>38</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -195651,10 +235688,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:lop\
 lang:java}</string>
@@ -195667,8 +235704,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>40</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -195687,10 +235722,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:josh\
 age:32}</string>
@@ -195703,8 +235738,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -195723,10 +235756,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:peter\
 age:35}</string>
@@ -195739,8 +235772,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>44</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -195759,10 +235790,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:ripple\
 lang:java}</string>
@@ -195798,6 +235829,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -195826,18 +235859,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -195854,7 +235882,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -195868,8 +235896,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>76</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -195891,18 +235917,18 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5
 \fs20 \
 software}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -195914,8 +235940,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>74</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -195937,18 +235961,18 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 6
 \fs20 \
 person}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -195964,8 +235988,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>73</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -195987,18 +236009,18 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4
 \fs20 \
 person}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -196014,8 +236036,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>72</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -196037,18 +236057,18 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3
 \fs20 \
 software}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -196060,8 +236080,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>71</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -196083,18 +236101,18 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2
 \fs20 \
 person}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -196106,8 +236124,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>70</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -196129,18 +236145,18 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1
 \fs20 \
 person}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -196163,8 +236179,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>69</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -196186,16 +236200,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs22 \cf0 12}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -196218,8 +236232,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>68</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -196241,16 +236253,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs22 \cf0 11}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -196273,8 +236285,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>67</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -196296,16 +236306,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs22 \cf0 10}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -196328,8 +236338,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>66</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -196351,16 +236359,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs22 \cf0 9}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -196383,8 +236391,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>65</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -196406,16 +236412,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs22 \cf0 8}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -196438,8 +236444,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>64</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -196461,16 +236465,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs22 \cf0 7}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -196489,8 +236493,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>63</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -196509,10 +236511,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.4}</string>
 					</dict>
@@ -196531,8 +236533,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>62</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -196551,10 +236551,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.4}</string>
 					</dict>
@@ -196573,8 +236573,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>61</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -196593,10 +236591,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:1.0}</string>
 					</dict>
@@ -196612,8 +236610,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>60</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -196635,16 +236631,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -196672,11 +236668,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -196688,7 +236684,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -196698,8 +236694,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>34</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -196718,10 +236712,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:marko\
 age:29}</string>
@@ -196739,13 +236733,18 @@
 					<integer>59</integer>
 					<key>Points</key>
 					<array>
-						<string>{131.21871331804783, 237.50624697402168}</string>
+						<string>{131.21871331752141, 237.50624699654134}</string>
 						<string>{132.75, 172}</string>
 						<string>{464.125, 174}</string>
-						<string>{473.93346265912209, 236.77754269948343}</string>
+						<string>{473.93346265692657, 236.77754268543143}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -196782,8 +236781,6 @@
 					<integer>58</integer>
 					<key>Rotation</key>
 					<real>90</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -196802,10 +236799,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:1.0}</string>
 					</dict>
@@ -196826,8 +236823,6 @@
 					<integer>57</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -196846,10 +236841,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.2}</string>
 					</dict>
@@ -196867,8 +236862,6 @@
 					<integer>56</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -196890,16 +236883,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -196917,8 +236910,6 @@
 					<integer>55</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -196940,16 +236931,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -196967,8 +236958,6 @@
 					<integer>54</integer>
 					<key>Rotation</key>
 					<real>90</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -196990,16 +236979,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -197015,8 +237004,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>53</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -197038,16 +237025,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -197063,8 +237050,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>52</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -197086,16 +237071,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -197116,8 +237101,6 @@
 					<integer>51</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -197136,10 +237119,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.5}</string>
 					</dict>
@@ -197156,11 +237139,16 @@
 					<integer>50</integer>
 					<key>Points</key>
 					<array>
-						<string>{304.33573300393164, 391.25377329077446}</string>
-						<string>{304.49615756637513, 283.60983187065727}</string>
+						<string>{304.33573300391271, 391.25377330347817}</string>
+						<string>{304.49615756639406, 283.60983185795357}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -197193,11 +237181,16 @@
 					<integer>49</integer>
 					<key>Points</key>
 					<array>
-						<string>{454.2439016531398, 259.88811381596139}</string>
-						<string>{327.58522391642316, 260.45223953919458}</string>
+						<string>{454.24390164924807, 259.88811381597873}</string>
+						<string>{327.58522392031489, 260.45223953917724}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -197230,11 +237223,16 @@
 					<integer>48</integer>
 					<key>Points</key>
 					<array>
-						<string>{477.52810825021243, 283.06882787372501}</string>
-						<string>{477.52810825021243, 391.4832092776532}</string>
+						<string>{477.52810825021243, 283.06882788078423}</string>
+						<string>{477.52810825021243, 391.48320927059399}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -197267,11 +237265,16 @@
 					<integer>46</integer>
 					<key>Points</key>
 					<array>
-						<string>{153.73485731772629, 260.55491219600316}</string>
-						<string>{281.47558259328207, 260.55491219600316}</string>
+						<string>{153.73485730747387, 260.55491219600316}</string>
+						<string>{281.47558260353452, 260.55491219600316}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -197304,11 +237307,16 @@
 					<integer>45</integer>
 					<key>Points</key>
 					<array>
-						<string>{130.67991548685336, 283.60985729196898}</string>
-						<string>{130.67991548685336, 389.39014270802988}</string>
+						<string>{130.67991548685336, 283.60985730747387}</string>
+						<string>{130.67991548685336, 389.39014269252499}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -197352,11 +237360,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -197368,7 +237376,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -197394,11 +237402,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -197410,7 +237418,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -197436,11 +237444,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -197452,7 +237460,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -197478,11 +237486,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -197494,7 +237502,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -197520,11 +237528,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -197536,7 +237544,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -197546,8 +237554,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>36</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -197566,10 +237572,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:vadas\
 age:27}</string>
@@ -197582,8 +237588,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>38</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -197602,10 +237606,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:lop\
 lang:java}</string>
@@ -197618,8 +237622,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>40</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -197638,10 +237640,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:josh\
 age:32}</string>
@@ -197654,8 +237656,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -197674,10 +237674,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:peter\
 age:35}</string>
@@ -197690,8 +237690,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>44</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -197710,10 +237708,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:ripple\
 lang:java}</string>
@@ -197749,6 +237747,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -197777,18 +237777,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -197805,7 +237800,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -197825,8 +237820,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>295</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -197843,8 +237836,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>296</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -197870,8 +237861,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>298</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -197888,8 +237877,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>299</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -197915,8 +237902,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>301</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -197933,8 +237918,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>302</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -197954,7 +237937,7 @@
 				</dict>
 				<dict>
 					<key>Bounds</key>
-					<string>{{228.46802520751953, 437.08683776855469}, {137, 14}}</string>
+					<string>{{224.46802520751953, 437.08683776855469}, {145, 14}}</string>
 					<key>Class</key>
 					<string>ShapedGraphic</string>
 					<key>FitText</key>
@@ -197970,8 +237953,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>292</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -197993,16 +237974,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
-\f0\fs24 \cf0 GroupCountMapReduce}</string>
+\f0\fs24 \cf0 groupCount() reducer}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -198024,8 +238005,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>275</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198042,8 +238021,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>276</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198069,8 +238046,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>278</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198087,8 +238062,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>279</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198114,8 +238087,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>281</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198132,8 +238103,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>282</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198168,8 +238137,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>265</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198186,8 +238153,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>266</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198213,8 +238178,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>268</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198231,8 +238194,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>269</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198258,8 +238219,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>271</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198276,8 +238235,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>272</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198312,8 +238269,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>255</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198330,8 +238285,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>256</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198357,8 +238310,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>258</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198375,8 +238326,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>259</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198402,8 +238351,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>261</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198420,8 +238367,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>262</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198456,8 +238401,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>245</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198474,8 +238417,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>246</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198501,8 +238442,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>248</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198519,8 +238458,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>249</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198546,8 +238483,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>251</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198564,8 +238499,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>252</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198600,8 +238533,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>235</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198618,8 +238549,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>236</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198645,8 +238574,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>238</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198663,8 +238590,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>239</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198690,8 +238615,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>241</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198708,8 +238631,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>242</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198744,8 +238665,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>225</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198762,8 +238681,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>226</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198789,8 +238706,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>228</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198807,8 +238722,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>229</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198834,8 +238747,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>231</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198852,8 +238763,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>232</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198889,8 +238798,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>222</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -198914,16 +238821,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs26 \cf0 g.V().both().hasLabel('person').values('age').groupCount()}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -198945,8 +238852,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>213</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198963,8 +238868,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>214</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -198990,8 +238893,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>216</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199008,8 +238909,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>217</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199035,8 +238934,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>219</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199053,8 +238950,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>220</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199089,8 +238984,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>203</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199107,8 +239000,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>204</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199134,8 +239025,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>206</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199152,8 +239041,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>207</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199179,8 +239066,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>209</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199197,8 +239082,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>210</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199233,8 +239116,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>193</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199251,8 +239132,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>194</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199278,8 +239157,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>196</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199296,8 +239173,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>197</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199323,8 +239198,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>199</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199341,8 +239214,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>200</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199377,8 +239248,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>183</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199395,8 +239264,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>184</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199422,8 +239289,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>186</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199440,8 +239305,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>187</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199467,8 +239330,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>189</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199485,8 +239346,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>190</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199521,8 +239380,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>173</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199539,8 +239396,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>174</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199566,8 +239421,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>176</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199584,8 +239437,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>177</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199611,8 +239462,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>179</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199629,8 +239478,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>180</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199665,8 +239512,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>163</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199683,8 +239528,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>164</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199710,8 +239553,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>166</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199728,8 +239569,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>167</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199755,8 +239594,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>169</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199773,8 +239610,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>170</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -199804,16 +239639,21 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>0</string>
@@ -199838,16 +239678,21 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>0</string>
@@ -199872,16 +239717,21 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>0</string>
@@ -199906,16 +239756,21 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>0</string>
@@ -199940,16 +239795,21 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>0</string>
@@ -199974,16 +239834,21 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>0</string>
@@ -200008,16 +239873,21 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>0</string>
@@ -200039,8 +239909,6 @@
 					<integer>152</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -200069,8 +239937,6 @@
 					<integer>151</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -200099,8 +239965,6 @@
 					<integer>150</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -200129,8 +239993,6 @@
 					<integer>149</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -200159,8 +240021,6 @@
 					<integer>145</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -200189,8 +240049,6 @@
 					<integer>144</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -200219,8 +240077,6 @@
 					<integer>142</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -200249,8 +240105,6 @@
 					<integer>141</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -200279,8 +240133,6 @@
 					<integer>140</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -200319,6 +240171,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -200358,6 +240215,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -200396,6 +240258,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -200425,8 +240292,6 @@
 					<integer>132</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -200455,8 +240320,6 @@
 					<integer>73</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -200488,50 +240351,21 @@
 					</array>
 					<key>Style</key>
 					<dict>
-						<key>stroke</key>
+						<key>shadow</key>
 						<dict>
-							<key>Color</key>
-							<dict>
-								<key>b</key>
-								<string>0.0977346</string>
-								<key>g</key>
-								<string>0.111535</string>
-								<key>r</key>
-								<string>0.923499</string>
-							</dict>
-							<key>HeadArrow</key>
-							<string>0</string>
-							<key>Legacy</key>
-							<true/>
-							<key>TailArrow</key>
-							<string>0</string>
-							<key>Width</key>
-							<real>3</real>
+							<key>Draws</key>
+							<string>NO</string>
 						</dict>
-					</dict>
-				</dict>
-				<dict>
-					<key>Class</key>
-					<string>LineGraphic</string>
-					<key>ID</key>
-					<integer>125</integer>
-					<key>Points</key>
-					<array>
-						<string>{120.125, 396.21969604492188}</string>
-						<string>{160.125, 396.21969604492188}</string>
-					</array>
-					<key>Style</key>
-					<dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>0</string>
@@ -200552,20 +240386,25 @@
 					<key>Points</key>
 					<array>
 						<string>{79.625, 390.58181762695312}</string>
-						<string>{112, 390.58181762695312}</string>
+						<string>{166, 390.58181762695312}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>0</string>
@@ -200589,8 +240428,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>124</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -200612,16 +240449,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -200637,8 +240474,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>123</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -200660,16 +240495,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -200685,8 +240520,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>122</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -200708,16 +240541,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -200733,8 +240566,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>121</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -200756,16 +240587,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -200781,8 +240612,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>120</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -200804,16 +240633,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -200842,8 +240671,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>115</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -200851,11 +240678,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -200872,10 +240699,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 5}</string>
 							</dict>
@@ -200899,8 +240726,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>116</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -200908,11 +240733,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -200929,10 +240754,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 4}</string>
 							</dict>
@@ -200956,8 +240781,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>117</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -200965,11 +240788,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -200986,10 +240809,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 3}</string>
 							</dict>
@@ -201013,8 +240836,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>118</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201022,11 +240843,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201043,10 +240864,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 2}</string>
 							</dict>
@@ -201070,8 +240891,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>119</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201079,11 +240898,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201100,10 +240919,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 1}</string>
 							</dict>
@@ -201136,8 +240955,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>109</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201145,11 +240962,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201166,10 +240983,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 5}</string>
 							</dict>
@@ -201193,8 +241010,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>110</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201202,11 +241017,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201223,10 +241038,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 4}</string>
 							</dict>
@@ -201250,8 +241065,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>111</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201259,11 +241072,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201280,10 +241093,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 3}</string>
 							</dict>
@@ -201307,8 +241120,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>112</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201316,11 +241127,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201337,10 +241148,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 2}</string>
 							</dict>
@@ -201364,8 +241175,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>113</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201373,11 +241182,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201394,10 +241203,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 1}</string>
 							</dict>
@@ -201430,8 +241239,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>103</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201439,11 +241246,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201460,10 +241267,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 5}</string>
 							</dict>
@@ -201487,8 +241294,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>104</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201496,11 +241301,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201517,10 +241322,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 4}</string>
 							</dict>
@@ -201544,8 +241349,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>105</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201553,11 +241356,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201574,10 +241377,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 3}</string>
 							</dict>
@@ -201601,8 +241404,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>106</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201610,11 +241411,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201631,10 +241432,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 2}</string>
 							</dict>
@@ -201658,8 +241459,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>107</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201667,11 +241466,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201688,10 +241487,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 1}</string>
 							</dict>
@@ -201724,8 +241523,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>97</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201733,11 +241530,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201754,10 +241551,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 5}</string>
 							</dict>
@@ -201781,8 +241578,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>98</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201790,11 +241585,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201811,10 +241606,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 4}</string>
 							</dict>
@@ -201838,8 +241633,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>99</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201847,11 +241640,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201868,10 +241661,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 3}</string>
 							</dict>
@@ -201895,8 +241688,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>100</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201904,11 +241695,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201925,10 +241716,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 2}</string>
 							</dict>
@@ -201952,8 +241743,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>101</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -201961,11 +241750,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -201982,10 +241771,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 1}</string>
 							</dict>
@@ -202018,8 +241807,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>91</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -202027,11 +241814,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -202048,10 +241835,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 5}</string>
 							</dict>
@@ -202075,8 +241862,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>92</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -202084,11 +241869,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -202105,10 +241890,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 4}</string>
 							</dict>
@@ -202132,8 +241917,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>93</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -202141,11 +241924,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -202162,10 +241945,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 3}</string>
 							</dict>
@@ -202189,8 +241972,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>94</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -202198,11 +241979,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -202219,10 +242000,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 2}</string>
 							</dict>
@@ -202246,8 +242027,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>95</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -202255,11 +242034,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -202276,10 +242055,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 1}</string>
 							</dict>
@@ -202312,8 +242091,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>85</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -202321,11 +242098,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -202342,10 +242119,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 5}</string>
 							</dict>
@@ -202369,8 +242146,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>86</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -202378,11 +242153,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -202399,10 +242174,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 4}</string>
 							</dict>
@@ -202426,8 +242201,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>87</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -202435,11 +242208,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -202456,10 +242229,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 3}</string>
 							</dict>
@@ -202483,8 +242256,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>88</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -202492,11 +242263,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -202513,10 +242284,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 2}</string>
 							</dict>
@@ -202540,8 +242311,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>89</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -202549,11 +242318,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.0977346</string>
+										<real>0.097734600000000005</real>
 										<key>g</key>
-										<string>0.111535</string>
+										<real>0.111535</real>
 										<key>r</key>
-										<string>0.923499</string>
+										<real>0.92349899999999996</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -202570,10 +242339,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 1}</string>
 							</dict>
@@ -202589,8 +242358,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>74</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -202612,16 +242379,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 peter}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -202633,8 +242400,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>71</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -202656,16 +242421,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 vadas}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -202677,8 +242442,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>70</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -202700,16 +242463,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 marko}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -202725,8 +242488,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>60</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -202748,16 +242509,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -202785,11 +242546,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -202801,7 +242562,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -202816,13 +242577,18 @@
 					<integer>59</integer>
 					<key>Points</key>
 					<array>
-						<string>{142.0883346594137, 150.76405718372544}</string>
+						<string>{142.08833465631551, 150.76405718158477}</string>
 						<string>{183.56250476837158, 179.42027187347412}</string>
 						<string>{410.56250476837158, 179.42025244140621}</string>
-						<string>{451.03109604715172, 150.44345689662705}</string>
+						<string>{451.03109603867426, 150.44345690269716}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -202856,8 +242622,6 @@
 					<integer>56</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -202879,16 +242643,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -202906,8 +242670,6 @@
 					<integer>55</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -202929,16 +242691,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -202956,8 +242718,6 @@
 					<integer>54</integer>
 					<key>Rotation</key>
 					<real>90</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -202979,16 +242739,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -203004,8 +242764,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>53</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -203027,16 +242785,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -203052,8 +242810,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>52</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -203075,16 +242831,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -203101,11 +242857,16 @@
 					<integer>50</integer>
 					<key>Points</key>
 					<array>
-						<string>{296.78041028516702, 241.96496667624129}</string>
-						<string>{296.92655102260642, 160.71116911837254}</string>
+						<string>{296.78041028516878, 241.96496667526802}</string>
+						<string>{296.92655102260471, 160.71116911934581}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -203138,11 +242899,16 @@
 					<integer>49</integer>
 					<key>Points</key>
 					<array>
-						<string>{446.6814016531398, 136.98946269291449}</string>
-						<string>{320.02272391642316, 137.55358841614773}</string>
+						<string>{446.68140164924807, 136.98946269293182}</string>
+						<string>{320.02272392031489, 137.5535884161304}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -203175,11 +242941,16 @@
 					<integer>48</integer>
 					<key>Points</key>
 					<array>
-						<string>{469.96559806304339, 160.17017674841281}</string>
-						<string>{469.96559806304339, 241.96492925062316}</string>
+						<string>{469.96559806304339, 160.1701767577417}</string>
+						<string>{469.96559806304339, 241.96492924129427}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -203212,11 +242983,16 @@
 					<integer>46</integer>
 					<key>Points</key>
 					<array>
-						<string>{146.17235731772629, 137.65626107295628}</string>
-						<string>{273.91308259328207, 137.65626107295628}</string>
+						<string>{146.17235730747387, 137.65626107295628}</string>
+						<string>{273.91308260353452, 137.65626107295628}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -203249,11 +243025,16 @@
 					<integer>45</integer>
 					<key>Points</key>
 					<array>
-						<string>{123.11741548685336, 160.71120616383217}</string>
-						<string>{123.11741548685336, 240.10132435374479}</string>
+						<string>{123.11741548685336, 160.71120618442697}</string>
+						<string>{123.11741548685336, 240.10132433314999}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -203297,11 +243078,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -203313,14 +243094,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 ripple}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -203346,11 +243127,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -203362,7 +243143,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -203388,11 +243169,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -203404,14 +243185,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 josh}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -203437,11 +243218,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -203453,14 +243234,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 lop}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -203486,11 +243267,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -203502,7 +243283,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 			</array>
@@ -203535,6 +243316,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -203563,18 +243346,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 1466}}</string>
+				<string>{{0, 0}, {575.99999046325684, 1466}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -203591,7 +243369,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -203616,13 +243394,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>129</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -203644,16 +243418,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 9}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -203680,13 +243454,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>122</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -203708,16 +243478,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 8}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -203740,8 +243510,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>121</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -203765,16 +243533,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 software}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -203802,11 +243570,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -203818,14 +243586,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 0}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -203835,8 +243603,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>119</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -203855,10 +243621,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:gremlin\
 created:2009}</string>
@@ -203882,8 +243648,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>117</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -203907,16 +243671,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 encapsulates}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -203933,13 +243697,18 @@
 					<integer>116</integer>
 					<key>Points</key>
 					<array>
-						<string>{119.2513461820735, 652.70299312226621}</string>
+						<string>{119.25134618364456, 652.70299312306292}</string>
 						<string>{153.35938189814902, 670}</string>
 						<string>{224.35938189814902, 671}</string>
-						<string>{265.05250896440623, 652.04272704978655}</string>
+						<string>{265.05250898156612, 652.04272704179243}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -203978,8 +243747,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>115</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -204003,16 +243770,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 dependsOn}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -204029,11 +243796,16 @@
 					<integer>114</integer>
 					<key>Points</key>
 					<array>
-						<string>{121.62501074482583, 642.75000724031406}</string>
-						<string>{262.99999402354473, 642.75000724031406}</string>
+						<string>{121.62501074999821, 642.75000724031406}</string>
+						<string>{262.99999401837232, 642.75000724031406}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -204070,8 +243842,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>113</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -204095,16 +243865,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 software}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -204132,11 +243902,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -204148,14 +243918,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -204180,13 +243950,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>111</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -204208,16 +243974,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 7}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -204240,8 +244006,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>110</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -204265,16 +244029,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 software}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -204302,11 +244066,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -204318,14 +244082,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 0}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -204335,8 +244099,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>108</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -204355,10 +244117,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:gremlin\
 created:2009}</string>
@@ -204371,8 +244133,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>107</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -204391,10 +244151,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:blueprints}</string>
 					</dict>
@@ -204417,8 +244177,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>105</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -204442,16 +244200,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 dependsOn}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -204468,11 +244226,16 @@
 					<integer>104</integer>
 					<key>Points</key>
 					<array>
-						<string>{121.62501074482603, 543.87500670750978}</string>
-						<string>{262.99999402354462, 543.87500670750978}</string>
+						<string>{121.62501074999841, 543.87500670750978}</string>
+						<string>{262.99999401837221, 543.87500670750978}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -204509,8 +244272,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>103</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -204534,16 +244295,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 software}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -204571,11 +244332,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -204587,14 +244348,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -204619,13 +244380,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>101</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -204647,16 +244404,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -204679,8 +244436,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>100</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -204704,16 +244459,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 software}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -204741,11 +244496,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -204757,14 +244512,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 0}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -204774,8 +244529,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>98</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -204794,10 +244547,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:gremlin\
 created:2009}</string>
@@ -204821,8 +244574,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>95</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -204846,16 +244597,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 dependsOn}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -204872,11 +244623,16 @@
 					<integer>94</integer>
 					<key>Points</key>
 					<array>
-						<string>{121.62501074482603, 448.56250670750967}</string>
-						<string>{262.99999402354462, 448.56250670750967}</string>
+						<string>{121.62501074999841, 448.56250670750967}</string>
+						<string>{262.99999401837221, 448.56250670750967}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -204913,8 +244669,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>93</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -204938,16 +244692,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 software}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -204975,11 +244729,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -204991,14 +244745,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -205023,13 +244777,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>90</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -205051,16 +244801,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -205083,8 +244833,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>89</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -205108,16 +244856,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 software}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -205145,11 +244893,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -205161,14 +244909,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 0}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -205178,8 +244926,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>87</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -205198,10 +244944,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:gremlin\
 created:2009}</string>
@@ -205225,8 +244971,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>86</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -205250,16 +244994,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 dependsOn}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -205276,11 +245020,16 @@
 					<integer>85</integer>
 					<key>Points</key>
 					<array>
-						<string>{121.62501074482704, 353.2500034273927}</string>
-						<string>{262.99999402354405, 353.2500034273927}</string>
+						<string>{121.62501074999943, 353.2500034273927}</string>
+						<string>{262.99999401837164, 353.2500034273927}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -205317,8 +245066,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>84</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -205342,16 +245089,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 software}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -205379,11 +245126,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -205395,14 +245142,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -205412,8 +245159,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>82</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -205432,10 +245177,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:blueprints}</string>
 					</dict>
@@ -205462,13 +245207,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>81</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -205490,16 +245231,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -205522,8 +245263,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>80</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -205547,16 +245286,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 software}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -205584,11 +245323,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -205600,14 +245339,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 0}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -205617,8 +245356,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>78</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -205637,10 +245374,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:gremlin\
 created:2009}</string>
@@ -205664,8 +245401,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>77</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -205689,16 +245424,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 software}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -205726,11 +245461,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -205742,14 +245477,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -205759,8 +245494,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>75</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -205779,10 +245512,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:blueprints}</string>
 					</dict>
@@ -205809,13 +245542,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>74</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -205837,16 +245566,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -205869,8 +245598,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>73</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -205894,16 +245621,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 software}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -205931,11 +245658,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -205947,14 +245674,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 0}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -205964,8 +245691,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>71</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -205984,10 +245709,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:gremlin\
 created:2009}</string>
@@ -206015,13 +245740,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>70</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -206043,16 +245764,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -206075,8 +245796,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>69</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -206100,16 +245819,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 software}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -206137,11 +245856,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -206153,14 +245872,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 0}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -206170,8 +245889,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>67</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -206190,10 +245907,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:gremlin\
 created:2009}</string>
@@ -206221,13 +245938,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>64</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -206249,16 +245962,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -206281,8 +245994,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>65</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -206306,16 +246017,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 software}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -206343,11 +246054,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -206359,14 +246070,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 0}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -206376,8 +246087,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>34</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -206396,10 +246105,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:gremlin}</string>
 					</dict>
@@ -206411,8 +246120,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>96</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -206431,10 +246138,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:blueprints\
 created:2010}</string>
@@ -206447,8 +246154,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>106</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -206467,10 +246172,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:blueprints}</string>
 					</dict>
@@ -206505,6 +246210,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -206533,18 +246240,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -206561,7 +246263,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -206575,8 +246277,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.50102591514587402</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -206584,11 +246284,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.50102591514587402</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -206623,13 +246318,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>82</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -206651,16 +246342,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -206687,13 +246378,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>81</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -206715,16 +246402,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -206751,13 +246438,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>80</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -206779,16 +246462,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -206815,13 +246498,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>64</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -206843,16 +246522,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -206876,6 +246555,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -206914,6 +246598,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -206953,6 +246642,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -206992,6 +246686,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -207021,8 +246720,6 @@
 					<integer>74</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -207051,8 +246748,6 @@
 					<integer>73</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -207083,8 +246778,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.74854010343551636</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -207092,11 +246785,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.74854010343551636</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -207120,8 +246808,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.74854010343551636</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -207129,11 +246815,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.74854010343551636</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -207160,8 +246841,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>63</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -207180,10 +246859,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.4}</string>
 					</dict>
@@ -207202,8 +246881,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>62</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -207222,10 +246899,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.4}</string>
 					</dict>
@@ -207244,8 +246921,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>61</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -207264,10 +246939,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:1.0}</string>
 					</dict>
@@ -207283,8 +246958,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>60</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -207306,16 +246979,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -207343,11 +247016,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -207359,14 +247032,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -207376,8 +247049,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>34</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -207396,10 +247067,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:marko\
 age:29}</string>
@@ -207417,13 +247088,18 @@
 					<integer>59</integer>
 					<key>Points</key>
 					<array>
-						<string>{130.41021708917989, 237.513921502963}</string>
+						<string>{130.41021708834276, 237.5139215264027}</string>
 						<string>{132.75, 172}</string>
 						<string>{464.125, 174}</string>
-						<string>{461.61775687197843, 237.51700538998864}</string>
+						<string>{461.61775687081024, 237.51700541958303}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -207460,8 +247136,6 @@
 					<integer>58</integer>
 					<key>Rotation</key>
 					<real>90</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -207480,10 +247154,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:1.0}</string>
 					</dict>
@@ -207504,8 +247178,6 @@
 					<integer>57</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -207524,10 +247196,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.2}</string>
 					</dict>
@@ -207545,8 +247217,6 @@
 					<integer>56</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -207568,16 +247238,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -207595,8 +247265,6 @@
 					<integer>55</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -207618,16 +247286,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -207645,8 +247313,6 @@
 					<integer>54</integer>
 					<key>Rotation</key>
 					<real>90</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -207668,16 +247334,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -207693,8 +247359,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>53</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -207716,16 +247380,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -207741,8 +247405,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>52</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -207764,16 +247426,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -207794,8 +247456,6 @@
 					<integer>51</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -207814,10 +247474,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.5}</string>
 					</dict>
@@ -207834,11 +247494,16 @@
 					<integer>50</integer>
 					<key>Points</key>
 					<array>
-						<string>{295.25297650518007, 384.50008608352385}</string>
-						<string>{295.55952730951719, 281.49991391647615}</string>
+						<string>{295.25297650514051, 384.50008609680748}</string>
+						<string>{295.55952730955676, 281.49991390319252}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -207871,11 +247536,16 @@
 					<integer>49</integer>
 					<key>Points</key>
 					<array>
-						<string>{438.74999878887411, 259.4999861943939}</string>
-						<string>{317.62501456256831, 259.4999861943939}</string>
+						<string>{438.74999878674862, 259.4999861943939}</string>
+						<string>{317.6250145646938, 259.4999861943939}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -207908,11 +247578,16 @@
 					<integer>48</integer>
 					<key>Points</key>
 					<array>
-						<string>{460.7500196057423, 281.50001075667234}</string>
-						<string>{460.7500196057423, 384.4999892433363}</string>
+						<string>{460.7500196057423, 281.5000107499983}</string>
+						<string>{460.7500196057423, 384.49998925001034}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -207945,11 +247620,16 @@
 					<integer>46</integer>
 					<key>Points</key>
 					<array>
-						<string>{151.62501074013417, 259.50000766098299}</string>
-						<string>{273.62499307456198, 259.50000766098299}</string>
+						<string>{151.62501074999804, 259.50000766098299}</string>
+						<string>{273.62499306469812, 259.50000766098299}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -207982,11 +247662,16 @@
 					<integer>45</integer>
 					<key>Points</key>
 					<array>
-						<string>{129.62498839159511, 281.50001075667001}</string>
-						<string>{129.62498839159511, 384.49998924332834}</string>
+						<string>{129.62498839159511, 281.50001074999602}</string>
+						<string>{129.62498839159511, 384.49998925000233}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -208030,11 +247715,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -208046,14 +247731,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -208079,11 +247764,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -208095,14 +247780,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -208128,11 +247813,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -208144,14 +247829,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -208177,11 +247862,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -208193,14 +247878,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -208226,11 +247911,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -208242,14 +247927,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -208259,8 +247944,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>36</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -208279,10 +247962,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:vadas\
 age:27}</string>
@@ -208295,8 +247978,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>38</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -208315,10 +247996,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:lop\
 lang:java}</string>
@@ -208331,8 +248012,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>40</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -208351,10 +248030,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:josh\
 age:32}</string>
@@ -208367,8 +248046,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -208387,10 +248064,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:peter\
 age:35}</string>
@@ -208403,8 +248080,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>44</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -208423,10 +248098,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:ripple\
 lang:java}</string>
@@ -208462,6 +248137,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -208490,18 +248167,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -208518,7 +248190,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -208543,13 +248215,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>94</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -208571,16 +248239,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -208607,13 +248275,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>93</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -208635,16 +248299,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -208658,8 +248322,6 @@
 					<integer>92</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -208688,8 +248350,6 @@
 					<integer>91</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -208728,6 +248388,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -208767,6 +248432,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -208809,13 +248479,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>85</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -208837,16 +248503,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -208870,6 +248536,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -208901,8 +248572,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.74854010343551636</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -208910,11 +248579,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.74854010343551636</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -208938,8 +248602,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.50102591514587402</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -208947,11 +248609,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.50102591514587402</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -208986,13 +248643,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>80</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -209014,16 +248667,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -209050,13 +248703,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>64</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -209078,16 +248727,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -209111,6 +248760,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -209150,6 +248804,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -209181,8 +248840,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.74854010343551636</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -209190,11 +248847,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.74854010343551636</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -209218,8 +248870,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.74854010343551636</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -209227,11 +248877,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.74854010343551636</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -209258,8 +248903,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>63</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -209278,10 +248921,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.4}</string>
 					</dict>
@@ -209300,8 +248943,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>62</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -209320,10 +248961,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.4}</string>
 					</dict>
@@ -209342,8 +248983,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>61</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -209362,10 +249001,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:1.0}</string>
 					</dict>
@@ -209381,8 +249020,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>60</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -209404,16 +249041,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -209441,11 +249078,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -209457,14 +249094,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -209474,8 +249111,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>34</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -209494,10 +249129,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:marko\
 age:29}</string>
@@ -209515,13 +249150,18 @@
 					<integer>59</integer>
 					<key>Points</key>
 					<array>
-						<string>{130.41021708917989, 220.513921502963}</string>
+						<string>{130.41021708834276, 220.5139215264027}</string>
 						<string>{132.75, 155}</string>
 						<string>{464.125, 157}</string>
-						<string>{461.61775687197843, 220.51700538998864}</string>
+						<string>{461.61775687081024, 220.51700541958303}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -209558,8 +249198,6 @@
 					<integer>58</integer>
 					<key>Rotation</key>
 					<real>90</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -209578,10 +249216,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:1.0}</string>
 					</dict>
@@ -209602,8 +249240,6 @@
 					<integer>57</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -209622,10 +249258,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.2}</string>
 					</dict>
@@ -209643,8 +249279,6 @@
 					<integer>56</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -209666,16 +249300,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -209693,8 +249327,6 @@
 					<integer>55</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -209716,16 +249348,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -209743,8 +249375,6 @@
 					<integer>54</integer>
 					<key>Rotation</key>
 					<real>90</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -209766,16 +249396,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -209791,8 +249421,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>53</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -209814,16 +249442,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -209839,8 +249467,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>52</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -209862,16 +249488,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -209892,8 +249518,6 @@
 					<integer>51</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -209912,10 +249536,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.5}</string>
 					</dict>
@@ -209932,11 +249556,16 @@
 					<integer>50</integer>
 					<key>Points</key>
 					<array>
-						<string>{295.25297650518007, 367.50008608352385}</string>
-						<string>{295.55952730951719, 264.49991391647615}</string>
+						<string>{295.25297650514051, 367.50008609680748}</string>
+						<string>{295.55952730955676, 264.49991390319252}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -209969,11 +249598,16 @@
 					<integer>49</integer>
 					<key>Points</key>
 					<array>
-						<string>{438.74999878887502, 242.50001814775408}</string>
-						<string>{317.6250145625628, 242.50001814775408}</string>
+						<string>{438.74999878674953, 242.50001814775408}</string>
+						<string>{317.62501456468829, 242.50001814775408}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -210006,11 +249640,16 @@
 					<integer>48</integer>
 					<key>Points</key>
 					<array>
-						<string>{460.7500039518531, 264.50001075667279}</string>
-						<string>{460.7500039518531, 367.4999892433267}</string>
+						<string>{460.7500039518531, 264.50001074999881}</string>
+						<string>{460.7500039518531, 367.49998925000068}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -210043,11 +249682,16 @@
 					<integer>46</integer>
 					<key>Points</key>
 					<array>
-						<string>{151.62501074013548, 242.5000037143821}</string>
-						<string>{273.62499307456125, 242.5000037143821}</string>
+						<string>{151.62501074999935, 242.5000037143821}</string>
+						<string>{273.62499306469738, 242.5000037143821}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -210080,11 +249724,16 @@
 					<integer>45</integer>
 					<key>Points</key>
 					<array>
-						<string>{129.62499601913089, 264.5000107566733}</string>
-						<string>{129.62499601913089, 367.49998924332613}</string>
+						<string>{129.62499601913089, 264.50001074999932}</string>
+						<string>{129.62499601913089, 367.49998925000011}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -210128,11 +249777,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -210144,14 +249793,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -210177,11 +249826,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -210193,14 +249842,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -210226,11 +249875,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -210242,14 +249891,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -210275,11 +249924,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -210291,14 +249940,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -210324,11 +249973,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -210340,14 +249989,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -210357,8 +250006,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>36</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -210377,10 +250024,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:vadas\
 age:27}</string>
@@ -210393,8 +250040,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>38</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -210413,10 +250058,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:lop\
 lang:java}</string>
@@ -210429,8 +250074,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>40</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -210449,10 +250092,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:josh\
 age:32}</string>
@@ -210465,8 +250108,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -210485,10 +250126,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:peter\
 age:35}</string>
@@ -210501,8 +250142,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>44</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -210521,10 +250160,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:ripple\
 lang:java}</string>
@@ -210560,6 +250199,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -210588,18 +250229,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -210616,7 +250252,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -210631,6 +250267,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -210656,6 +250297,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -210681,6 +250327,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -210716,13 +250367,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>109</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -210744,16 +250391,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 a}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -210780,13 +250427,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>108</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -210808,16 +250451,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 a}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -210844,13 +250487,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>107</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -210872,16 +250511,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 a}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -210898,6 +250537,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -210933,13 +250577,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>105</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -210961,16 +250601,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 c}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -210987,6 +250627,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -211022,8 +250667,6 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>102</integer>
@@ -211036,8 +250679,6 @@
 						<key>RotationType</key>
 						<integer>0</integer>
 					</dict>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -211059,16 +250700,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 c}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -211095,13 +250736,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>101</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -211123,16 +250760,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 c}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -211149,6 +250786,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -211184,13 +250826,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>98</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -211212,16 +250850,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 b}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -211248,13 +250886,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>97</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -211276,16 +250910,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 a}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -211312,13 +250946,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>96</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -211340,16 +250970,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 a}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -211376,13 +251006,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>95</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -211404,16 +251030,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 b}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -211440,13 +251066,9 @@
 						</dict>
 						<key>Font</key>
 						<string>Helvetica-Bold</string>
-						<key>Size</key>
-						<real>16</real>
 					</dict>
 					<key>ID</key>
 					<integer>64</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -211468,16 +251090,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red189\green0\blue18;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf2 a}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -211496,8 +251118,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>63</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -211516,10 +251136,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.4}</string>
 					</dict>
@@ -211538,8 +251158,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>62</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -211558,10 +251176,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.4}</string>
 					</dict>
@@ -211580,8 +251198,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>61</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -211600,10 +251216,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:1.0}</string>
 					</dict>
@@ -211619,8 +251235,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>60</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -211642,16 +251256,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -211679,11 +251293,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -211695,14 +251309,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -211712,8 +251326,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>34</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -211732,10 +251344,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:marko\
 age:29}</string>
@@ -211753,13 +251365,18 @@
 					<integer>59</integer>
 					<key>Points</key>
 					<array>
-						<string>{112.16018657160177, 221.513921502963}</string>
+						<string>{112.16018657076464, 221.5139215264027}</string>
 						<string>{114.49996948242188, 156}</string>
 						<string>{445.87496948242188, 158}</string>
-						<string>{443.3677263544003, 221.51700538998864}</string>
+						<string>{443.36772635323211, 221.51700541958303}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -211796,8 +251413,6 @@
 					<integer>58</integer>
 					<key>Rotation</key>
 					<real>90</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -211816,10 +251431,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:1.0}</string>
 					</dict>
@@ -211840,8 +251455,6 @@
 					<integer>57</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -211860,10 +251473,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.2}</string>
 					</dict>
@@ -211881,8 +251494,6 @@
 					<integer>56</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -211904,16 +251515,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -211931,8 +251542,6 @@
 					<integer>55</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -211954,16 +251563,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -211981,8 +251590,6 @@
 					<integer>54</integer>
 					<key>Rotation</key>
 					<real>90</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -212004,16 +251611,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -212029,8 +251636,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>53</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -212052,16 +251657,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -212077,8 +251682,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>52</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -212100,16 +251703,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -212130,8 +251733,6 @@
 					<integer>51</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -212150,10 +251751,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf0 weight:0.5}</string>
 					</dict>
@@ -212170,11 +251771,16 @@
 					<integer>50</integer>
 					<key>Points</key>
 					<array>
-						<string>{277.00294598760195, 368.50008608352385}</string>
-						<string>{277.30949679193907, 265.49991391647615}</string>
+						<string>{277.00294598756238, 368.50008609680748}</string>
+						<string>{277.30949679197863, 265.49991390319252}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -212207,11 +251813,16 @@
 					<integer>49</integer>
 					<key>Points</key>
 					<array>
-						<string>{420.49996827129371, 243.50001332884028}</string>
-						<string>{299.37498404498854, 243.50001332884028}</string>
+						<string>{420.49996826916822, 243.50001332884028}</string>
+						<string>{299.37498404711403, 243.50001332884028}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -212244,11 +251855,16 @@
 					<integer>48</integer>
 					<key>Points</key>
 					<array>
-						<string>{442.49997141699657, 265.50001075667205}</string>
-						<string>{442.49997141699657, 368.4999892433263}</string>
+						<string>{442.49997141699657, 265.50001074999807}</string>
+						<string>{442.49997141699657, 368.49998925000028}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -212281,11 +251897,16 @@
 					<integer>46</integer>
 					<key>Points</key>
 					<array>
-						<string>{133.37498022255744, 243.50000341637872}</string>
-						<string>{255.37496255698309, 243.50000341637872}</string>
+						<string>{133.37498023242131, 243.50000341637872}</string>
+						<string>{255.37496254711922, 243.50000341637872}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -212318,11 +251939,16 @@
 					<integer>45</integer>
 					<key>Points</key>
 					<array>
-						<string>{111.37496371656123, 265.50001075667274}</string>
-						<string>{111.37496371656123, 368.49998924332641}</string>
+						<string>{111.37496371656123, 265.50001074999875}</string>
+						<string>{111.37496371656123, 368.4999892500004}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -212366,11 +251992,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -212382,14 +252008,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -212415,11 +252041,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -212431,14 +252057,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -212464,11 +252090,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -212480,14 +252106,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -212513,11 +252139,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -212529,14 +252155,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -212562,11 +252188,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -212578,14 +252204,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -212595,8 +252221,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>36</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -212615,10 +252239,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:vadas\
 age:27}</string>
@@ -212631,8 +252255,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>38</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -212651,10 +252273,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:lop\
 lang:java}</string>
@@ -212667,8 +252289,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>40</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -212687,10 +252307,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:josh\
 age:32}</string>
@@ -212703,8 +252323,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -212723,10 +252341,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:peter\
 age:35}</string>
@@ -212739,8 +252357,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>44</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -212759,10 +252375,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:ripple\
 lang:java}</string>
@@ -212798,6 +252414,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -212826,18 +252444,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -212854,7 +252467,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -212875,8 +252488,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>95</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -212898,16 +252509,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf0 OLTP}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -212923,8 +252534,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>226</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -212946,16 +252555,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -212973,10 +252582,15 @@
 						<string>{216.38834095001221, 240.5}</string>
 						<string>{231.84741687774658, 259.5}</string>
 						<string>{219.30646705627441, 299.5}</string>
-						<string>{185.7635986760979, 302.54935442199871}</string>
+						<string>{185.76359867858045, 302.54935442177305}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -213010,8 +252624,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>223</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -213033,16 +252645,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -213057,14 +252669,19 @@
 					<integer>220</integer>
 					<key>Points</key>
 					<array>
-						<string>{152.78175766257755, 231.07334945231295}</string>
+						<string>{152.78175755029196, 231.07334943191435}</string>
 						<string>{196.38834095001221, 225.5}</string>
 						<string>{216.38834095001221, 240.5}</string>
 						<string>{221.84741687774658, 253.5}</string>
-						<string>{214.33427016782659, 267.2790521372815}</string>
+						<string>{214.33427017498616, 267.27905212415089}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -213098,8 +252715,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>215</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -213121,16 +252736,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -213147,12 +252762,17 @@
 					<integer>212</integer>
 					<key>Points</key>
 					<array>
-						<string>{97.345537185865226, 228.23929635759526}</string>
+						<string>{97.34553716847185, 228.23929635910773}</string>
 						<string>{128.84741687774658, 225.5}</string>
-						<string>{183.23309107634822, 239.82512165919496}</string>
+						<string>{183.23309107147611, 239.82512165791164}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -213180,8 +252800,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>210</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -213189,11 +252807,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -213226,11 +252844,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -213242,7 +252860,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -213268,11 +252886,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -213284,7 +252902,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -213310,11 +252928,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -213326,7 +252944,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -213352,11 +252970,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -213368,7 +252986,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -213383,11 +253001,16 @@
 					<integer>205</integer>
 					<key>Points</key>
 					<array>
-						<string>{197.84161129241645, 252.01186912999211}</string>
-						<string>{204.85320148224176, 266.98813808747269}</string>
+						<string>{197.84161128345568, 252.01186911085253}</string>
+						<string>{204.85320149120253, 266.98813810661227}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -213418,11 +253041,16 @@
 					<integer>204</integer>
 					<key>Points</key>
 					<array>
-						<string>{201.08308945971262, 283.03033287659031}</string>
-						<string>{183.5298446528362, 296.96967434087452}</string>
+						<string>{201.08308945207821, 283.03033288265294}</string>
+						<string>{183.52984466047062, 296.96967433481188}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -213453,11 +253081,16 @@
 					<integer>203</integer>
 					<key>Points</key>
 					<array>
-						<string>{185.28254145858617, 249.17537096233991}</string>
-						<string>{167.49414997818141, 263.8246326463925}</string>
+						<string>{185.28254146454458, 249.17537095743299}</string>
+						<string>{167.494149972223, 263.82463265129945}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -213503,7 +253136,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -213517,8 +253150,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>201</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -213540,16 +253171,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -213567,10 +253198,15 @@
 						<string>{442.23575782775879, 240.5}</string>
 						<string>{457.69483375549316, 259.5}</string>
 						<string>{445.153883934021, 299.5}</string>
-						<string>{411.61101555384448, 302.54935442199871}</string>
+						<string>{411.611015556327, 302.54935442177305}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -213604,8 +253240,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>175</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -213627,16 +253261,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -213650,8 +253284,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>174</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -213673,16 +253305,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -213696,8 +253328,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>173</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -213719,16 +253349,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -213743,13 +253373,18 @@
 					<integer>172</integer>
 					<key>Points</key>
 					<array>
-						<string>{382.21274118378085, 232.10304210732366}</string>
+						<string>{382.21274063670808, 232.1030419580872}</string>
 						<string>{377.23575782775879, 233.5}</string>
 						<string>{373.153883934021, 243.5}</string>
-						<string>{380.94594940614746, 260.91333228310071}</string>
+						<string>{380.94594940470068, 260.91333227986746}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -213784,14 +253419,19 @@
 					<integer>171</integer>
 					<key>Points</key>
 					<array>
-						<string>{378.62917454032413, 231.07334945231295}</string>
+						<string>{378.62917442803854, 231.07334943191435}</string>
 						<string>{422.23575782775879, 225.5}</string>
 						<string>{442.23575782775879, 240.5}</string>
 						<string>{447.69483375549316, 253.5}</string>
-						<string>{440.18168704557314, 267.27905213728144}</string>
+						<string>{440.18168705273274, 267.27905212415084}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -213826,13 +253466,18 @@
 					<integer>170</integer>
 					<key>Points</key>
 					<array>
-						<string>{423.19800316361102, 310.97052606622532}</string>
+						<string>{423.19800251101674, 310.97052762402029}</string>
 						<string>{429.23576259613037, 327.5}</string>
 						<string>{407.23575782775879, 335.5}</string>
-						<string>{403.11458602422016, 313.81630758131689}</string>
+						<string>{403.11458602236769, 313.81630757157001}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -213866,8 +253511,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>169</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -213889,16 +253532,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -213912,8 +253555,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>168</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -213935,16 +253576,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -213960,8 +253601,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>167</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -213983,16 +253622,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -214008,8 +253647,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>166</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -214031,16 +253668,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -214057,13 +253694,18 @@
 					<integer>165</integer>
 					<key>Points</key>
 					<array>
-						<string>{312.11912501138119, 239.97525543370338}</string>
+						<string>{312.11912500990945, 239.97525542920121}</string>
 						<string>{336.153883934021, 313.50000360873241}</string>
 						<string>{411.153883934021, 323.50000360873241}</string>
-						<string>{430.37749807407641, 285.85375925112385}</string>
+						<string>{430.37749806972141, 285.85375925965241}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -214096,12 +253738,17 @@
 					<integer>164</integer>
 					<key>Points</key>
 					<array>
-						<string>{312.86071879617782, 239.96454646203048}</string>
+						<string>{312.86071878757525, 239.96454644042123}</string>
 						<string>{338.153883934021, 303.50000360873241}</string>
-						<string>{390.65387894520313, 303.50000360873241}</string>
+						<string>{390.65387893402101, 303.50000360873241}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -214134,12 +253781,17 @@
 					<integer>163</integer>
 					<key>Points</key>
 					<array>
-						<string>{323.19295406361181, 228.23929635759526}</string>
+						<string>{323.1929540462184, 228.23929635910773}</string>
 						<string>{354.69483375549316, 225.5}</string>
-						<string>{409.0805079540948, 239.82512165919496}</string>
+						<string>{409.08050794922269, 239.82512165791164}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -214172,12 +253824,17 @@
 					<integer>162</integer>
 					<key>Points</key>
 					<array>
-						<string>{318.0731824641548, 239.87085694643912}</string>
+						<string>{318.0731824736875, 239.87085695698067}</string>
 						<string>{342.153883934021, 266.50000360873241}</string>
-						<string>{374.78046625846929, 269.52926360411806}</string>
+						<string>{374.78046628469104, 269.52926360655266}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -214205,8 +253862,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>161</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -214214,11 +253869,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -214251,11 +253906,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -214267,7 +253922,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -214293,11 +253948,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -214309,7 +253964,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -214335,11 +253990,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -214351,7 +254006,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -214377,11 +254032,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -214393,7 +254048,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -214408,11 +254063,16 @@
 					<integer>156</integer>
 					<key>Points</key>
 					<array>
-						<string>{423.68902817016306, 252.01186912999214}</string>
-						<string>{430.70061835998831, 266.98813808747269}</string>
+						<string>{423.68902816120226, 252.01186911085253}</string>
+						<string>{430.70061836894911, 266.98813810661227}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -214443,11 +254103,16 @@
 					<integer>155</integer>
 					<key>Points</key>
 					<array>
-						<string>{426.93050633745918, 283.03033287659036}</string>
-						<string>{409.37726153058281, 296.96967434087452}</string>
+						<string>{426.93050632982482, 283.03033288265294}</string>
+						<string>{409.37726153821723, 296.96967433481188}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -214478,11 +254143,16 @@
 					<integer>154</integer>
 					<key>Points</key>
 					<array>
-						<string>{411.12995833633272, 249.17537096233991}</string>
-						<string>{393.34156685592802, 263.82463264639244}</string>
+						<string>{411.12995834229116, 249.17537095743296}</string>
+						<string>{393.34156684996958, 263.82463265129945}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -214510,8 +254180,6 @@
 					<integer>5</integer>
 					<key>ImageID</key>
 					<integer>3</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -214542,8 +254210,6 @@
 					<integer>7</integer>
 					<key>ImageID</key>
 					<integer>5</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -214581,8 +254247,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>96</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -214604,16 +254268,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf0 OLAP}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -214645,7 +254309,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 			</array>
@@ -214678,6 +254342,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -214706,18 +254372,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -214734,7 +254395,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -214748,8 +254409,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>211</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -214771,16 +254430,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 worker 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -214796,8 +254455,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>210</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -214819,16 +254476,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 worker 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -214844,8 +254501,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>209</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -214867,16 +254522,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 worker 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -214899,8 +254554,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>192</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -214922,16 +254575,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 mapReduce}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -214949,10 +254602,15 @@
 					<key>Points</key>
 					<array>
 						<string>{383.25000023032362, 120}</string>
-						<string>{298.43835426996327, 120.07758161536455}</string>
+						<string>{298.43835428299485, 120.07758161535263}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -214971,8 +254629,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>157</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -214980,11 +254636,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -214996,10 +254652,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 MapReduce}</string>
 					</dict>
@@ -215011,8 +254667,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>158</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -215020,11 +254674,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -215036,10 +254690,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 MapReduce}</string>
 					</dict>
@@ -215051,8 +254705,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>159</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -215060,11 +254712,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -215076,10 +254728,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 MapReduce}</string>
 					</dict>
@@ -215095,8 +254747,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>131</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -215118,17 +254768,17 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 distributed\
  to all workers}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -215151,8 +254801,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>130</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -215174,16 +254822,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 program}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -215205,6 +254853,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -215233,12 +254886,17 @@
 					<integer>123</integer>
 					<key>Points</key>
 					<array>
-						<string>{281.60548601194751, 325.16771588933102}</string>
+						<string>{281.60548601074663, 325.16771588641006}</string>
 						<string>{244.123291015625, 234}</string>
-						<string>{247.40062481779057, 148.12292732899974}</string>
+						<string>{247.40062481860551, 148.12292730764582}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -215271,12 +254929,17 @@
 					<integer>122</integer>
 					<key>Points</key>
 					<array>
-						<string>{405.62707589394466, 239.32608282342457}</string>
+						<string>{405.62707588975087, 239.32608282290559}</string>
 						<string>{297.9383544921875, 226}</string>
-						<string>{261.5297604609741, 148.07628407489989}</string>
+						<string>{261.5297604662901, 148.07628408627755}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -215309,12 +254972,17 @@
 					<integer>35</integer>
 					<key>Points</key>
 					<array>
-						<string>{144.63439096268235, 225.04051897472075}</string>
+						<string>{144.63439096147522, 225.04051897815162}</string>
 						<string>{164, 170}</string>
-						<string>{201.46574376318458, 147.87751627892249}</string>
+						<string>{201.46574377990424, 147.87751626905001}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -215351,11 +255019,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -215381,11 +255049,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -215411,11 +255079,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -215441,11 +255109,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -215457,10 +255125,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 Vertex\
 Program}</string>
@@ -215477,8 +255145,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>108</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -215500,16 +255166,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 g.compute()}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -215521,8 +255187,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>1</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -215530,11 +255194,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -215546,10 +255210,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 GraphComputer}</string>
 					</dict>
@@ -215577,11 +255241,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -215593,7 +255257,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -215619,11 +255283,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -215635,7 +255299,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -215661,11 +255325,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -215677,7 +255341,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -215703,11 +255367,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -215719,7 +255383,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -215745,11 +255409,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -215761,7 +255425,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -215787,11 +255451,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -215803,7 +255467,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -215829,11 +255493,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -215845,7 +255509,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -215871,11 +255535,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -215887,7 +255551,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -215913,11 +255577,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -215929,7 +255593,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -215944,11 +255608,16 @@
 					<integer>45</integer>
 					<key>Points</key>
 					<array>
-						<string>{243.42335233183681, 284.25452118530916}</string>
-						<string>{278.69993868378816, 299.86875626161668}</string>
+						<string>{243.42335235025422, 284.25452119346113}</string>
+						<string>{278.69993866537084, 299.86875625346471}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -215981,11 +255650,16 @@
 					<integer>47</integer>
 					<key>Points</key>
 					<array>
-						<string>{303.22963193507331, 313.41398740216539}</string>
-						<string>{326.89366995243893, 329.33945220956798}</string>
+						<string>{303.22963194422539, 313.4139874083246}</string>
+						<string>{326.8936699432868, 329.33945220340877}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -216018,11 +255692,16 @@
 					<integer>51</integer>
 					<key>Points</key>
 					<array>
-						<string>{345.7270315084387, 325.08894748536591}</string>
-						<string>{374.39627037907354, 276.66449203080219}</string>
+						<string>{345.7270315043383, 325.08894749229182}</string>
+						<string>{374.39627038317394, 276.66449202387628}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -216055,11 +255734,16 @@
 					<integer>53</integer>
 					<key>Points</key>
 					<array>
-						<string>{216.52995000789579, 279.48174600389916}</string>
-						<string>{183.59334100772926, 281.64153139524404}</string>
+						<string>{216.52994999011108, 279.48174600506536}</string>
+						<string>{183.59334102551398, 281.64153139407784}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -216092,11 +255776,16 @@
 					<integer>97</integer>
 					<key>Points</key>
 					<array>
-						<string>{171.62248607252184, 268.6509720786002}</string>
-						<string>{175.50080494310322, 242.47231972534018}</string>
+						<string>{171.62248607380715, 268.65097206992419}</string>
+						<string>{175.5008049418179, 242.47231973401614}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -216129,11 +255818,16 @@
 					<integer>99</integer>
 					<key>Points</key>
 					<array>
-						<string>{157.9475151628053, 290.49324710283878}</string>
-						<string>{140.17577585281978, 302.63004470110155}</string>
+						<string>{157.94751514788615, 290.49324711302745}</string>
+						<string>{140.17577586773891, 302.63004469091288}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -216166,11 +255860,16 @@
 					<integer>101</integer>
 					<key>Points</key>
 					<array>
-						<string>{367.60093012736354, 262.87498364475721}</string>
-						<string>{342.74153813435527, 259.87159912702555}</string>
+						<string>{367.60093013498988, 262.87498364567858}</string>
+						<string>{342.74153812672893, 259.87159912610417}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -216203,11 +255902,16 @@
 					<integer>103</integer>
 					<key>Points</key>
 					<array>
-						<string>{394.77668973035907, 269.37657372224015}</string>
-						<string>{413.78495577745343, 276.302273615964}</string>
+						<string>{394.77668973545764, 269.37657372409791}</string>
+						<string>{413.78495577235486, 276.30227361410635}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -216235,8 +255939,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>206</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -216253,8 +255955,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>207</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -216271,8 +255971,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>208</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -216312,6 +256010,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -216340,18 +256040,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -216368,7 +256063,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -216391,8 +256086,6 @@
 					<integer>99</integer>
 					<key>Rotation</key>
 					<real>301.656005859375</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -216414,16 +256107,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 ComicSansMS;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fnil\fcharset0 ComicSansMS;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf0 TP3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -216448,8 +256141,6 @@
 					<integer>98</integer>
 					<key>Rotation</key>
 					<real>301.656005859375</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -216471,16 +256162,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 ComicSansMS;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fnil\fcharset0 ComicSansMS;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf0 TP2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -216499,10 +256190,15 @@
 					<array>
 						<string>{132.49326998926892, 259.29568481445312}</string>
 						<string>{116, 282.355224609375}</string>
-						<string>{114.28217569764679, 304.17195295743704}</string>
+						<string>{114.28217569915998, 304.17195293821931}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -216534,8 +256230,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>96</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -216557,16 +256251,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 traverser}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -216594,11 +256288,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -216610,14 +256304,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -216631,8 +256325,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>84</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -216654,16 +256346,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 ]}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -216691,11 +256383,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -216707,14 +256399,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -216728,8 +256420,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>86</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -216751,16 +256441,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 [}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -216788,11 +256478,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -216804,14 +256494,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -216821,8 +256511,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>88</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -216848,8 +256536,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>69</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -216871,16 +256557,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 ]}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -216908,11 +256594,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -216924,14 +256610,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -216945,8 +256631,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>71</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -216968,16 +256652,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 [}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -217005,11 +256689,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -217021,14 +256705,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -217038,8 +256722,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>73</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -217065,8 +256747,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>48</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -217088,16 +256768,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 map}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -217113,8 +256793,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>47</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -217136,16 +256814,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 flatMap}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -217163,8 +256841,6 @@
 					<integer>45</integer>
 					<key>Rotation</key>
 					<real>28.779481887817383</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -217186,16 +256862,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 josh}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -217213,8 +256889,6 @@
 					<integer>44</integer>
 					<key>Rotation</key>
 					<real>349.14434814453125</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -217236,16 +256910,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 vadas}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -217257,8 +256931,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>40</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -217266,11 +256938,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -217287,10 +256959,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 values("name")}</string>
 					</dict>
@@ -217309,8 +256981,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>39</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -217318,11 +256988,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -217339,10 +257009,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 out("knows")}</string>
 					</dict>
@@ -217358,8 +257028,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>37</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -217381,16 +257049,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 map}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -217406,8 +257074,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>36</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -217429,16 +257095,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 flatMap}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -217454,8 +257120,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>35</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -217477,16 +257141,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 g.V(marko).out("knows").values("name")}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -217504,8 +257168,6 @@
 					<integer>34</integer>
 					<key>Rotation</key>
 					<real>28.779481887817383</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -217527,16 +257189,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 josh}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -217554,8 +257216,6 @@
 					<integer>33</integer>
 					<key>Rotation</key>
 					<real>349.14434814453125</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -217577,16 +257237,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 vadas}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -217614,11 +257274,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -217630,14 +257290,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -217663,11 +257323,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -217679,14 +257339,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -217712,11 +257372,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -217728,14 +257388,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -217745,8 +257405,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>30</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -217754,11 +257412,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -217775,10 +257433,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 values("name")}</string>
 					</dict>
@@ -217797,8 +257455,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>4</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -217806,11 +257462,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -217827,10 +257483,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 out("knows")}</string>
 					</dict>
@@ -217858,11 +257514,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -217874,14 +257530,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -217895,8 +257551,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>91</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -217918,16 +257572,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 ]}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -217955,11 +257609,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -217971,14 +257625,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -217992,8 +257646,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>93</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -218015,16 +257667,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 [}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -218052,11 +257704,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -218068,14 +257720,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -218085,8 +257737,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>95</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -218131,6 +257781,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -218159,18 +257811,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -218187,7 +257834,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -218201,8 +257848,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>90</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -218224,16 +257869,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 [v[1], v[4], v[3], lop]}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -218249,8 +257894,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>88</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -218272,16 +257915,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 [v[1], v[4], v[5], ripple]}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -218297,8 +257940,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.24692234396934509</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -218306,11 +257947,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.24692234396934509</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -218334,8 +257970,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.24692234396934509</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -218343,11 +257977,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.24692234396934509</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -218371,8 +258000,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.50102591514587402</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -218380,11 +258007,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.50102591514587402</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -218399,7 +258021,7 @@
 				</dict>
 				<dict>
 					<key>Bounds</key>
-					<string>{{273.63073398426008, 402.77068993594088}, {43, 45.654633662445562}}</string>
+					<string>{{273.63073652245589, 402.77069116229353}, {43, 45.654633662445562}}</string>
 					<key>Class</key>
 					<string>ShapedGraphic</string>
 					<key>ID</key>
@@ -218417,8 +258039,6 @@
 					</dict>
 					<key>Opacity</key>
 					<real>0.74854010343551636</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -218426,11 +258046,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.74854010343551636</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -218456,8 +258071,6 @@
 					<integer>83</integer>
 					<key>Rotation</key>
 					<real>341.03375244140625</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -218479,16 +258092,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -218504,8 +258117,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.50102591514587402</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -218513,11 +258124,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.50102591514587402</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -218539,8 +258145,6 @@
 					<integer>74</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -218569,8 +258173,6 @@
 					<integer>73</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -218601,8 +258203,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.74854010343551636</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -218610,11 +258210,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.74854010343551636</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -218638,8 +258233,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>60</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -218661,16 +258254,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -218698,11 +258291,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -218714,14 +258307,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -218731,8 +258324,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>34</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -218751,10 +258342,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:marko\
 age:29}</string>
@@ -218772,11 +258363,16 @@
 					<integer>59</integer>
 					<key>Points</key>
 					<array>
-						<string>{106.62501073490192, 383.49998671803797}</string>
-						<string>{186.00000833858633, 383.49998671803797}</string>
+						<string>{106.62501074999682, 383.49998671803797}</string>
+						<string>{186.00000832349141, 383.49998671803797}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -218810,8 +258406,6 @@
 					<integer>53</integer>
 					<key>Rotation</key>
 					<real>28.506193161010742</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -218833,16 +258427,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -218859,11 +258453,16 @@
 					<integer>49</integer>
 					<key>Points</key>
 					<array>
-						<string>{228.71928191730788, 376.08823012699872}</string>
-						<string>{294.90574097087568, 352.41176987300128}</string>
+						<string>{228.71928194238447, 376.08823011802821}</string>
+						<string>{294.90574094579915, 352.41176988197179}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -218896,11 +258495,16 @@
 					<integer>48</integer>
 					<key>Points</key>
 					<array>
-						<string>{227.81431785107668, 393.07346080403221}</string>
-						<string>{295.81070122240965, 425.92653919596773}</string>
+						<string>{227.81431786101021, 393.07346080883173}</string>
+						<string>{295.81070121247609, 425.92653919116822}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -218944,11 +258548,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -218960,14 +258564,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -218993,11 +258597,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -219009,14 +258613,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -219042,11 +258646,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -219058,14 +258662,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -219075,8 +258679,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>38</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -219095,10 +258697,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:lop\
 lang:java}</string>
@@ -219111,8 +258713,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>40</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -219131,10 +258731,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:josh\
 age:32}</string>
@@ -219147,8 +258747,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>44</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -219167,10 +258765,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:ripple\
 lang:java}</string>
@@ -219206,6 +258804,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -219234,18 +258834,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -219262,7 +258857,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -219288,11 +258883,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -219304,14 +258899,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -219342,11 +258937,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -219358,14 +258953,14 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -219391,11 +258986,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -219407,14 +259002,14 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -219429,11 +259024,16 @@
 							<integer>141</integer>
 							<key>Points</key>
 							<array>
-								<string>{440.02220202191097, 157.23494384551191}</string>
-								<string>{443.33805802301094, 153.75505426978586}</string>
+								<string>{440.02220201925098, 157.23494384830346}</string>
+								<string>{443.33805802567099, 153.75505426699425}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -219464,11 +259064,16 @@
 							<integer>142</integer>
 							<key>Points</key>
 							<array>
-								<string>{432.31558180663797, 157.68958738721886}</string>
-								<string>{428.44294795917932, 154.48274935358782}</string>
+								<string>{432.31558179937923, 157.6895873812081}</string>
+								<string>{428.44294796643811, 154.48274935959861}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -219499,11 +259104,16 @@
 							<integer>143</integer>
 							<key>Points</key>
 							<array>
-								<string>{436.38109224135536, 172.14439899294476}</string>
-								<string>{436.38109224135536, 166.33432125649205}</string>
+								<string>{436.38109224135536, 172.14439899890132}</string>
+								<string>{436.38109224135536, 166.33432125053548}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -219545,11 +259155,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -219561,14 +259171,14 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -219594,11 +259204,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -219610,14 +259220,14 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 					</array>
@@ -219637,6 +259247,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -219666,8 +259281,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>113</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -219675,11 +259288,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -219696,10 +259309,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 tree}</string>
 					</dict>
@@ -219727,11 +259340,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -219743,14 +259356,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -219776,11 +259389,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -219792,14 +259405,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -219816,8 +259429,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>110</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -219825,11 +259436,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -219846,10 +259457,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 out}</string>
 					</dict>
@@ -219877,11 +259488,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.593569</string>
+								<real>0.59356900000000001</real>
 								<key>g</key>
-								<string>0.512161</string>
+								<real>0.51216099999999998</real>
 								<key>r</key>
-								<string>0.386639</string>
+								<real>0.38663900000000001</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -219893,14 +259504,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -219926,11 +259537,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.593569</string>
+								<real>0.59356900000000001</real>
 								<key>g</key>
-								<string>0.512161</string>
+								<real>0.51216099999999998</real>
 								<key>r</key>
-								<string>0.386639</string>
+								<real>0.38663900000000001</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -219942,14 +259553,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -219975,11 +259586,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.589253</string>
+								<real>0.58925300000000003</real>
 								<key>g</key>
-								<string>0.512076</string>
+								<real>0.51207599999999998</real>
 								<key>r</key>
-								<string>0.401835</string>
+								<real>0.401835</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -219991,14 +259602,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -220024,11 +259635,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.593569</string>
+								<real>0.59356900000000001</real>
 								<key>g</key>
-								<string>0.512161</string>
+								<real>0.51216099999999998</real>
 								<key>r</key>
-								<string>0.386639</string>
+								<real>0.38663900000000001</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -220040,14 +259651,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -220073,11 +259684,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -220089,14 +259700,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -220113,8 +259724,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -220122,11 +259731,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.193398</string>
+								<real>0.19339799999999999</real>
 								<key>g</key>
-								<string>0.644468</string>
+								<real>0.64446800000000004</real>
 								<key>r</key>
-								<string>0.20576</string>
+								<real>0.20576</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -220138,14 +259747,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 g}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -220162,8 +259771,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>41</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -220171,11 +259778,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -220192,10 +259799,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 V}</string>
 					</dict>
@@ -220223,11 +259830,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.597258</string>
+								<real>0.59725799999999996</real>
 								<key>g</key>
-								<string>0.510748</string>
+								<real>0.51074799999999998</real>
 								<key>r</key>
-								<string>0.369109</string>
+								<real>0.36910900000000002</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -220239,14 +259846,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -220272,11 +259879,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.597258</string>
+								<real>0.59725799999999996</real>
 								<key>g</key>
-								<string>0.510748</string>
+								<real>0.51074799999999998</real>
 								<key>r</key>
-								<string>0.369109</string>
+								<real>0.36910900000000002</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -220288,14 +259895,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -220321,11 +259928,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.597258</string>
+								<real>0.59725799999999996</real>
 								<key>g</key>
-								<string>0.510748</string>
+								<real>0.51074799999999998</real>
 								<key>r</key>
-								<string>0.369109</string>
+								<real>0.36910900000000002</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -220337,14 +259944,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -220370,11 +259977,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.597258</string>
+								<real>0.59725799999999996</real>
 								<key>g</key>
-								<string>0.510748</string>
+								<real>0.51074799999999998</real>
 								<key>r</key>
-								<string>0.369109</string>
+								<real>0.36910900000000002</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -220386,14 +259993,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -220410,8 +260017,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>4</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -220419,11 +260024,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -220440,10 +260045,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 out}</string>
 					</dict>
@@ -220471,11 +260076,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.593569</string>
+								<real>0.59356900000000001</real>
 								<key>g</key>
-								<string>0.512161</string>
+								<real>0.51216099999999998</real>
 								<key>r</key>
-								<string>0.386639</string>
+								<real>0.38663900000000001</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -220487,14 +260092,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -220525,11 +260130,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -220541,14 +260146,14 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -220574,11 +260179,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -220590,14 +260195,14 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -220612,11 +260217,16 @@
 							<integer>125</integer>
 							<key>Points</key>
 							<array>
-								<string>{390.84831256685624, 98.610337072478814}</string>
-								<string>{398.84272137274951, 90.22044925512742}</string>
+								<string>{390.84831255652631, 98.610337083319777}</string>
+								<string>{398.84272138307944, 90.220449244286442}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -220647,11 +260257,16 @@
 							<integer>126</integer>
 							<key>Points</key>
 							<array>
-								<string>{374.99319730634204, 99.545669823588767}</string>
-								<string>{365.69783663326371, 91.848397807462618}</string>
+								<string>{374.9931973146405, 99.545669830460554}</string>
+								<string>{365.6978366249653, 91.848397800590874}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -220682,11 +260297,16 @@
 							<integer>127</integer>
 							<key>Points</key>
 							<array>
-								<string>{383.35736149802693, 131.09487398599023}</string>
-								<string>{383.35736149802693, 117.33079149200495}</string>
+								<string>{383.35736149802693, 131.09487397092767}</string>
+								<string>{383.35736149802693, 117.33079150706753}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -220728,11 +260348,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -220744,14 +260364,14 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -220777,11 +260397,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -220793,14 +260413,14 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 					</array>
@@ -220830,11 +260450,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.597258</string>
+								<real>0.59725799999999996</real>
 								<key>g</key>
-								<string>0.510748</string>
+								<real>0.51074799999999998</real>
 								<key>r</key>
-								<string>0.369109</string>
+								<real>0.36910900000000002</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -220846,14 +260466,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 			</array>
@@ -220886,6 +260506,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -220914,18 +260536,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -220942,7 +260559,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -220968,11 +260585,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -220984,14 +260601,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -221017,11 +260634,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.989389</string>
+								<real>0.98938899999999996</real>
 								<key>g</key>
-								<string>0.847896</string>
+								<real>0.84789599999999998</real>
 								<key>r</key>
-								<string>0.652084</string>
+								<real>0.652084</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221033,14 +260650,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -221057,8 +260674,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>170</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -221066,11 +260681,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221087,10 +260702,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 has('name',\
 within(vadas,josh))}</string>
@@ -221119,11 +260734,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.597258</string>
+								<real>0.59725799999999996</real>
 								<key>g</key>
-								<string>0.510748</string>
+								<real>0.51074799999999998</real>
 								<key>r</key>
-								<string>0.369109</string>
+								<real>0.36910900000000002</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221135,14 +260750,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -221168,11 +260783,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221184,14 +260799,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -221217,11 +260832,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.597258</string>
+								<real>0.59725799999999996</real>
 								<key>g</key>
-								<string>0.510748</string>
+								<real>0.51074799999999998</real>
 								<key>r</key>
-								<string>0.369109</string>
+								<real>0.36910900000000002</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221233,14 +260848,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -221266,11 +260881,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.989389</string>
+								<real>0.98938899999999996</real>
 								<key>g</key>
-								<string>0.847896</string>
+								<real>0.84789599999999998</real>
 								<key>r</key>
-								<string>0.652084</string>
+								<real>0.652084</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221282,14 +260897,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -221315,11 +260930,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.597258</string>
+								<real>0.59725799999999996</real>
 								<key>g</key>
-								<string>0.510748</string>
+								<real>0.51074799999999998</real>
 								<key>r</key>
-								<string>0.369109</string>
+								<real>0.36910900000000002</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221331,14 +260946,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -221364,11 +260979,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.593569</string>
+								<real>0.59356900000000001</real>
 								<key>g</key>
-								<string>0.512161</string>
+								<real>0.51216099999999998</real>
 								<key>r</key>
-								<string>0.386639</string>
+								<real>0.38663900000000001</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221380,14 +260995,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -221404,8 +261019,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>154</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -221413,11 +261026,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221434,10 +261047,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 out}</string>
 					</dict>
@@ -221465,11 +261078,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221481,14 +261094,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -221514,11 +261127,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221530,14 +261143,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -221563,11 +261176,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221579,14 +261192,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -221612,11 +261225,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221628,14 +261241,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -221652,8 +261265,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>146</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -221661,11 +261272,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221682,10 +261293,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 has('age')}</string>
 					</dict>
@@ -221713,11 +261324,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221729,14 +261340,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -221753,8 +261364,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -221762,11 +261371,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.193398</string>
+								<real>0.19339799999999999</real>
 								<key>g</key>
-								<string>0.644468</string>
+								<real>0.64446800000000004</real>
 								<key>r</key>
-								<string>0.20576</string>
+								<real>0.20576</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221778,14 +261387,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 g}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -221802,8 +261411,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>41</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -221811,11 +261418,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221832,10 +261439,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 V}</string>
 					</dict>
@@ -221863,11 +261470,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221879,14 +261486,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -221912,11 +261519,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.597258</string>
+								<real>0.59725799999999996</real>
 								<key>g</key>
-								<string>0.510748</string>
+								<real>0.51074799999999998</real>
 								<key>r</key>
-								<string>0.369109</string>
+								<real>0.36910900000000002</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221928,14 +261535,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -221961,11 +261568,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -221977,14 +261584,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -222010,11 +261617,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.597258</string>
+								<real>0.59725799999999996</real>
 								<key>g</key>
-								<string>0.510748</string>
+								<real>0.51074799999999998</real>
 								<key>r</key>
-								<string>0.369109</string>
+								<real>0.36910900000000002</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -222026,14 +261633,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -222059,11 +261666,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -222075,14 +261682,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 			</array>
@@ -222115,6 +261722,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -222143,18 +261752,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {1152.0000286102295, 733}}</string>
+				<string>{{0, 0}, {1151.9999809265137, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -222171,7 +261775,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -222185,8 +261789,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>159</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -222208,16 +261810,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 [daniel,6]}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -222233,8 +261835,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>158</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -222256,16 +261856,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 [v[4], v[3], lop, 3]}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -222281,8 +261881,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>90</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -222304,16 +261902,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 [v[4], v[5], ripple, 6]}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -222332,8 +261930,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>157</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -222341,11 +261937,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -222362,10 +261958,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 path}</string>
 					</dict>
@@ -222381,8 +261977,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>156</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -222404,16 +261998,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -222429,8 +262023,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>155</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -222452,16 +262044,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -222477,8 +262069,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>154</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -222500,16 +262090,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -222528,8 +262118,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>153</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -222537,11 +262125,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -222558,10 +262146,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 map(length)}</string>
 					</dict>
@@ -222577,8 +262165,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>151</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -222600,16 +262186,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 daniel}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -222625,8 +262211,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>150</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -222648,16 +262232,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 lop}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -222673,8 +262257,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>149</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -222696,16 +262278,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 ripple}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -222721,8 +262303,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>147</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -222744,16 +262324,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 lop}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -222769,8 +262349,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>44</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -222792,16 +262370,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 ripple}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -222829,11 +262407,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -222845,14 +262423,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -222869,8 +262447,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>113</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -222878,11 +262454,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -222899,10 +262475,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 inject}</string>
 					</dict>
@@ -222930,11 +262506,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -222946,14 +262522,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -222979,11 +262555,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -222995,14 +262571,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -223019,8 +262595,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>110</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -223028,11 +262602,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -223049,10 +262623,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 name}</string>
 					</dict>
@@ -223071,8 +262645,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>4</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -223080,11 +262652,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -223101,10 +262673,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 out}</string>
 					</dict>
@@ -223122,8 +262694,6 @@
 					<integer>148</integer>
 					<key>Rotation</key>
 					<real>90</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -223145,16 +262715,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 daniel}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -223189,6 +262759,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -223217,18 +262789,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -223245,7 +262812,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -223259,8 +262826,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>105</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -223282,16 +262847,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -223307,8 +262872,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>104</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -223330,16 +262893,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -223355,8 +262918,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>103</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -223378,16 +262939,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -223403,8 +262964,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>102</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -223426,16 +262985,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -223449,8 +263008,6 @@
 					<integer>95</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -223479,8 +263036,6 @@
 					<integer>92</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -223511,8 +263066,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>101</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -223534,16 +263087,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 co-developer}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -223561,8 +263114,6 @@
 					<integer>100</integer>
 					<key>Rotation</key>
 					<real>340.24136352539062</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -223584,16 +263135,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>TextRotation</key>
 					<real>43.799999237060547</real>
@@ -223611,8 +263162,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>99</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -223634,16 +263183,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 co-developer}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -223660,12 +263209,17 @@
 					<integer>96</integer>
 					<key>Points</key>
 					<array>
-						<string>{127.47855593850417, 239.48949418649067}</string>
+						<string>{127.47855593164523, 239.48949418010628}</string>
 						<string>{171, 280}</string>
-						<string>{399.3198884394817, 285.92890524412803}</string>
+						<string>{399.31988844914406, 285.92890524437894}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -223699,8 +263253,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.50102591514587402</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -223708,11 +263260,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.50102591514587402</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -223736,8 +263283,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.74854010343551636</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -223745,11 +263290,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.74854010343551636</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -223785,11 +263325,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -223801,14 +263341,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -223818,8 +263358,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>73</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -223838,10 +263376,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:marko\
 age:29}</string>
@@ -223860,8 +263398,6 @@
 					<integer>53</integer>
 					<key>Rotation</key>
 					<real>340.24136352539062</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -223883,16 +263419,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -223908,8 +263444,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>52</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -223931,16 +263465,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -223957,11 +263491,16 @@
 					<integer>50</integer>
 					<key>Points</key>
 					<array>
-						<string>{401.10199472579222, 277.79446655002272}</string>
-						<string>{297.58550908890504, 233.20553344997728}</string>
+						<string>{401.10199471656074, 277.79446654604635}</string>
+						<string>{297.58550909813653, 233.20553345395368}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -223994,11 +263533,16 @@
 					<integer>49</integer>
 					<key>Points</key>
 					<array>
-						<string>{415.24367877803803, 170.8283824210755}</string>
-						<string>{297.88130405582427, 216.51698501056512}</string>
+						<string>{415.24367876680373, 170.82838242544898}</string>
+						<string>{297.88130406705858, 216.51698500619167}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -224031,11 +263575,16 @@
 					<integer>46</integer>
 					<key>Points</key>
 					<array>
-						<string>{133.37498022254971, 224.50001743985439}</string>
-						<string>{255.37496255698878, 224.50001743985439}</string>
+						<string>{133.37498023241355, 224.50001743985439}</string>
+						<string>{255.37496254712497, 224.50001743985439}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -224079,11 +263628,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -224095,14 +263644,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -224128,11 +263677,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -224144,14 +263693,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -224177,11 +263726,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -224193,14 +263742,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -224210,8 +263759,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>72</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -224230,10 +263777,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:lop\
 lang:java}</string>
@@ -224246,8 +263793,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>71</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -224266,10 +263811,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:josh\
 age:32}</string>
@@ -224282,8 +263827,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -224302,10 +263845,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:peter\
 age:35}</string>
@@ -224323,12 +263866,17 @@
 					<integer>98</integer>
 					<key>Points</key>
 					<array>
-						<string>{127.36129286926091, 209.38564325028358}</string>
+						<string>{127.36129288626957, 209.38564323420263}</string>
 						<string>{175, 164.34536743164062}</string>
-						<string>{413.75036058748447, 162.97192341329722}</string>
+						<string>{413.75036057236355, 162.97192341338419}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -224381,6 +263929,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -224409,18 +263959,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -224437,7 +263982,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -224454,8 +263999,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>153</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -224467,10 +264010,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf0 d\
 e}</string>
@@ -224490,8 +264033,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>152</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -224503,10 +264044,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf0 c}</string>
 					</dict>
@@ -224518,8 +264059,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>151</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -224543,8 +264082,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>150</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -224556,10 +264093,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf0 a\
 b}</string>
@@ -224572,8 +264109,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>149</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -224595,16 +264130,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 ripple}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -224632,11 +264167,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -224648,14 +264183,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -224681,11 +264216,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -224697,14 +264232,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -224730,11 +264265,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -224746,14 +264281,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -224763,8 +264298,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>154</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -224772,11 +264305,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -224816,6 +264349,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -224844,18 +264379,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -224872,7 +264402,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -224882,11 +264412,16 @@
 					<integer>73</integer>
 					<key>Points</key>
 					<array>
-						<string>{217.10980522253973, 294.49999326079234}</string>
+						<string>{217.10980522254448, 294.49999325988063}</string>
 						<string>{217.03451538085938, 309}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -224914,11 +264449,16 @@
 					<integer>72</integer>
 					<key>Points</key>
 					<array>
-						<string>{296.97184454449183, 294.37201193580393}</string>
+						<string>{296.97184454026336, 294.37201194051255}</string>
 						<string>{282.9375, 310}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -224962,11 +264502,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -224978,14 +264518,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -224995,8 +264535,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>70</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -225004,11 +264542,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 								<key>g</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 								<key>r</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -225027,10 +264565,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:[marko,marko a. rodriguez]}</string>
 					</dict>
@@ -225042,8 +264580,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>69</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -225062,10 +264598,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 creator:stephen\
 date:2014\
@@ -225079,8 +264615,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>68</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -225099,10 +264633,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 acl:public}</string>
 					</dict>
@@ -225137,6 +264671,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -225165,18 +264701,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {1151.9999809265137, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -225193,7 +264724,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -225210,8 +264741,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>189</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -225219,11 +264748,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.193398</string>
+								<real>0.19339799999999999</real>
 								<key>g</key>
-								<string>0.644468</string>
+								<real>0.64446800000000004</real>
 								<key>r</key>
-								<string>0.20576</string>
+								<real>0.20576</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -225242,10 +264771,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 creator:marko\
 lastModified:2014\
@@ -225263,8 +264792,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>188</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -225286,16 +264813,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 26}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -225313,8 +264840,6 @@
 					<integer>191</integer>
 					<key>Rotation</key>
 					<real>90</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -225338,16 +264863,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 traverses}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -225366,8 +264891,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>182</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -225386,10 +264909,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 skill:3}</string>
 					</dict>
@@ -225405,8 +264928,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>181</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -225430,16 +264951,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 uses}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -225458,8 +264979,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>180</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -225478,10 +264997,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 skill:5}</string>
 					</dict>
@@ -225497,8 +265016,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>179</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -225522,16 +265039,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 uses}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -225547,8 +265064,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>178</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -225570,16 +265085,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 25}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -225595,8 +265110,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>177</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -225618,16 +265131,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 24}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -225643,8 +265156,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>176</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -225666,16 +265177,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 23}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -225694,8 +265205,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>175</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -225714,10 +265223,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 skill:3}</string>
 					</dict>
@@ -225733,8 +265242,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>174</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -225758,16 +265265,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 uses}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -225783,8 +265290,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>173</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -225806,16 +265311,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 22}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -225834,8 +265339,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>172</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -225854,10 +265357,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 skill:3}</string>
 					</dict>
@@ -225873,8 +265376,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>171</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -225898,16 +265399,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 uses}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -225926,8 +265427,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>170</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -225946,10 +265445,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 since:2012}</string>
 					</dict>
@@ -225965,8 +265464,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>169</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -225990,16 +265487,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 develops}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -226015,8 +265512,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>168</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -226038,16 +265533,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 21}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -226059,11 +265554,16 @@
 					<integer>167</integer>
 					<key>Points</key>
 					<array>
-						<string>{529.53511204456754, 573.25265884600697}</string>
+						<string>{529.53511204958625, 573.25265882698307}</string>
 						<string>{525, 590.44346364299952}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -226091,11 +265591,16 @@
 					<integer>166</integer>
 					<key>Points</key>
 					<array>
-						<string>{450.97379918811248, 575.01922543557896}</string>
+						<string>{450.97379918811635, 575.01922543801209}</string>
 						<string>{451, 591.44346364299952}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -226123,11 +265628,16 @@
 					<integer>165</integer>
 					<key>Points</key>
 					<array>
-						<string>{379.61824579515815, 574.92243273676013}</string>
+						<string>{379.61824578564284, 574.92243272378437}</string>
 						<string>{391, 590.44346364299952}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -226162,8 +265672,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>164</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -226182,10 +265690,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 startTime:2009}</string>
 					</dict>
@@ -226204,8 +265712,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>163</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -226224,10 +265730,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 startTime:2005\
 endTime:2009}</string>
@@ -226247,8 +265753,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>162</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -226267,10 +265771,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 startTime:1982\
 endTime:2005}</string>
@@ -226283,11 +265787,16 @@
 					<integer>161</integer>
 					<key>Points</key>
 					<array>
-						<string>{230.32569606094492, 551.65269724567236}</string>
+						<string>{230.32569606920231, 551.65269723926463}</string>
 						<string>{207.84701347351074, 569.09616088867188}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -226322,8 +265831,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>160</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -226342,10 +265849,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 startTime:2014}</string>
 					</dict>
@@ -226357,11 +265864,16 @@
 					<integer>159</integer>
 					<key>Points</key>
 					<array>
-						<string>{166.96875733475005, 553.59614327810641}</string>
+						<string>{166.96875733485251, 553.59614326590349}</string>
 						<string>{166.84701347351074, 568.09616088867188}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -226396,8 +265908,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>158</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -226416,10 +265926,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 startTime:2011\
 endTime:2014}</string>
@@ -226432,11 +265942,16 @@
 					<integer>157</integer>
 					<key>Points</key>
 					<array>
-						<string>{102.07008073118041, 553.44274524620516}</string>
+						<string>{102.07008072243309, 553.44274523779279}</string>
 						<string>{117.84700012207031, 568.61538696289062}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -226471,8 +265986,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>156</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -226491,10 +266004,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 startTime:2007\
 endTime:2011}</string>
@@ -226507,12 +266020,17 @@
 					<integer>155</integer>
 					<key>Points</key>
 					<array>
-						<string>{39.251251856565666, 512.5477109144415}</string>
+						<string>{39.251251856374765, 512.54771090957843}</string>
 						<string>{41, 557.09616088867188}</string>
 						<string>{66.847002029418945, 570.09616088867188}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -226547,8 +266065,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>154</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -226567,10 +266083,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 startTime:2004\
 endTime:2007}</string>
@@ -226590,8 +266106,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>153</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -226610,10 +266124,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 skill:4}</string>
 					</dict>
@@ -226629,8 +266143,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>152</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -226654,16 +266166,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 uses}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -226679,8 +266191,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>151</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -226702,16 +266212,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 20}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -226730,8 +266240,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>150</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -226750,10 +266258,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 since:2011}</string>
 					</dict>
@@ -226769,8 +266277,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>149</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -226794,16 +266300,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 develops}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -226819,8 +266325,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>148</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -226842,16 +266346,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 18}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -226870,8 +266374,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>147</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -226890,10 +266392,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 skill:5}</string>
 					</dict>
@@ -226909,8 +266411,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>146</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -226934,16 +266434,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 uses}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -226959,8 +266459,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>145</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -226982,16 +266480,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 19}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -227010,8 +266508,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>144</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -227030,10 +266526,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 since:2010}</string>
 					</dict>
@@ -227049,8 +266545,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>143</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -227074,16 +266568,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 develops}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -227099,8 +266593,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>142</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -227122,16 +266614,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 17}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -227150,8 +266642,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>141</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -227170,10 +266660,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 skill:5}</string>
 					</dict>
@@ -227189,8 +266679,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>140</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -227212,16 +266700,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 16}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -227237,8 +266725,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>139</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -227260,16 +266746,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 15}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -227288,8 +266774,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>138</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -227308,10 +266792,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 skill:4}</string>
 					</dict>
@@ -227330,8 +266814,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>137</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -227350,10 +266832,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 since:2010}</string>
 					</dict>
@@ -227372,8 +266854,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>136</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -227392,10 +266872,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 since:2009}</string>
 					</dict>
@@ -227411,8 +266891,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>135</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -227434,16 +266912,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 14}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -227459,8 +266937,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>134</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -227482,16 +266958,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 13}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -227503,11 +266979,16 @@
 					<integer>133</integer>
 					<key>Points</key>
 					<array>
-						<string>{529.30684470195513, 227.9411068169525}</string>
+						<string>{529.30684470903304, 227.94110680369096}</string>
 						<string>{517, 251}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -227542,8 +267023,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>132</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -227562,10 +267041,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 startTime:2006}</string>
 					</dict>
@@ -227577,11 +267056,16 @@
 					<integer>131</integer>
 					<key>Points</key>
 					<array>
-						<string>{462.97937997584927, 230.46959586065466}</string>
+						<string>{462.97937998033871, 230.46959587293338}</string>
 						<string>{470.12020854940954, 250}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -227616,8 +267100,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>130</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -227636,10 +267118,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 startTime:2000\
 endTime:2006}</string>
@@ -227652,11 +267134,16 @@
 					<integer>129</integer>
 					<key>Points</key>
 					<array>
-						<string>{390.83871782384642, 230.32507679961432}</string>
+						<string>{390.83871783350685, 230.32507680788081}</string>
 						<string>{415, 251}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -227691,8 +267178,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>128</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -227711,10 +267196,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 startTime:1990\
 endTime:2000}</string>
@@ -227727,11 +267212,16 @@
 					<integer>127</integer>
 					<key>Points</key>
 					<array>
-						<string>{266.43544514226102, 227.79828280192109}</string>
+						<string>{266.43544513773026, 227.79828280528889}</string>
 						<string>{235.22199630737305, 251}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -227766,8 +267256,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>126</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -227786,10 +267274,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 startTime:2005}</string>
 					</dict>
@@ -227801,11 +267289,16 @@
 					<integer>125</integer>
 					<key>Points</key>
 					<array>
-						<string>{195.51283334283625, 231.4540170561217}</string>
+						<string>{195.51283334818152, 231.45401704453488}</string>
 						<string>{186.03451538085938, 252}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -227840,8 +267333,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>124</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -227860,10 +267351,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 startTime:2004\
 endTime:2005}</string>
@@ -227876,11 +267367,16 @@
 					<integer>123</integer>
 					<key>Points</key>
 					<array>
-						<string>{124.33934897346751, 231.48612666768537}</string>
+						<string>{124.33934897041216, 231.48612665498683}</string>
 						<string>{129.03451538085938, 251}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -227915,8 +267411,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>122</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -227935,10 +267429,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 startTime:2001\
 endTime:2004}</string>
@@ -227956,13 +267450,18 @@
 					<integer>121</integer>
 					<key>Points</key>
 					<array>
-						<string>{349.13951886300788, 380.99843676669502}</string>
+						<string>{349.13951886275282, 380.99843676653103}</string>
 						<string>{398.90627002716064, 413}</string>
 						<string>{395, 491}</string>
-						<string>{352.98790059727685, 486.11525503773464}</string>
+						<string>{352.9879005926241, 486.11525503719366}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -227995,14 +267494,19 @@
 					<integer>118</integer>
 					<key>Points</key>
 					<array>
-						<string>{128.74545523105928, 652.36748788713055}</string>
+						<string>{128.74545523654089, 652.36748790264505}</string>
 						<string>{150.875, 715}</string>
 						<string>{277.81250953674316, 697}</string>
 						<string>{297, 534}</string>
-						<string>{314.71111954033137, 504.82972209141269}</string>
+						<string>{314.71111954960844, 504.82972207613329}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -228035,13 +267539,18 @@
 					<integer>115</integer>
 					<key>Points</key>
 					<array>
-						<string>{510.11681726564115, 335.32038394556724}</string>
+						<string>{510.11681727019328, 335.32038396325362}</string>
 						<string>{552, 498.048095703125}</string>
 						<string>{383.34857654571533, 518}</string>
-						<string>{349.29315887845758, 496.64161642155534}</string>
+						<string>{349.29315888076241, 496.64161642300081}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -228074,13 +267583,18 @@
 					<integer>114</integer>
 					<key>Points</key>
 					<array>
-						<string>{504.82952488071356, 336.09488527521341}</string>
+						<string>{504.82952488031515, 336.09488526535472}</string>
 						<string>{510, 464.04808044433594}</string>
 						<string>{410.06237030029297, 474}</string>
-						<string>{353.00045671547605, 480.38007835881893}</string>
+						<string>{353.00045672449045, 480.38007835781104}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -228113,13 +267627,18 @@
 					<integer>113</integer>
 					<key>Points</key>
 					<array>
-						<string>{494.76643839765114, 334.45186472748219}</string>
+						<string>{494.76643839759703, 334.45186472762362}</string>
 						<string>{474.29026126861572, 388}</string>
 						<string>{405, 394.5}</string>
-						<string>{351.72253897392824, 375.72216295361858}</string>
+						<string>{351.7225389624071, 375.72216294955791}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -228152,13 +267671,18 @@
 					<integer>112</integer>
 					<key>Points</key>
 					<array>
-						<string>{483.53052012285673, 325.95617909461123}</string>
+						<string>{483.53052011083241, 325.9561791035942}</string>
 						<string>{448, 352.5}</string>
 						<string>{378.00000190734863, 354}</string>
-						<string>{352.31368346870971, 360.81586868165579}</string>
+						<string>{352.31368347302373, 360.81586868051107}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -228190,8 +267714,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>111</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -228215,16 +267737,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 uses}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -228241,13 +267763,18 @@
 					<integer>110</integer>
 					<key>Points</key>
 					<array>
-						<string>{117.04636716275255, 336.11285354598232}</string>
+						<string>{117.04636716248494, 336.11285356479908}</string>
 						<string>{115, 480}</string>
 						<string>{265, 499.048095703125}</string>
-						<string>{303.30606848256525, 489.38402443335571}</string>
+						<string>{303.30606849223142, 489.38402443091707}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -228279,8 +267806,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>109</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -228304,16 +267829,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 uses}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -228330,13 +267855,18 @@
 					<integer>108</integer>
 					<key>Points</key>
 					<array>
-						<string>{125.96222847953521, 334.63143329484996}</string>
+						<string>{125.96222848144524, 334.63143330016828}</string>
 						<string>{150.875, 404}</string>
 						<string>{264, 410}</string>
-						<string>{306.806638845328, 381.37736366907848}</string>
+						<string>{306.8066388323798, 381.37736367773624}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -228368,8 +267898,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>107</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -228393,16 +267921,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 develops}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -228419,13 +267947,18 @@
 					<integer>106</integer>
 					<key>Points</key>
 					<array>
-						<string>{121.97434791783803, 335.70201280147893}</string>
+						<string>{121.97434791640542, 335.70201279367171}</string>
 						<string>{142.21394974176135, 446}</string>
 						<string>{259, 461.09616088867188}</string>
-						<string>{303.74651974080695, 475.4570352787008}</string>
+						<string>{303.74651973198684, 475.45703527587006}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -228457,8 +267990,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>105</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -228482,16 +268013,16 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 develops}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -228508,12 +268039,17 @@
 					<integer>46</integer>
 					<key>Points</key>
 					<array>
-						<string>{133.15842674482937, 330.61834408068034}</string>
+						<string>{133.15842675779834, 330.61834409699071}</string>
 						<string>{158.90625762939453, 363}</string>
-						<string>{302.54903149190892, 366.66260464446685}</string>
+						<string>{302.54903146565755, 366.66260464379747}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -228553,8 +268089,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>103</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -228576,17 +268110,17 @@
 							<key>Text</key>
 							<dict>
 								<key>Pad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 11\
 software}</string>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 							<key>Wrap</key>
 							<string>NO</string>
@@ -228614,11 +268148,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -228630,7 +268164,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 					</array>
@@ -228644,8 +268178,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>101</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -228653,11 +268185,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 								<key>g</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 								<key>r</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -228676,10 +268208,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:[tinkergraph]}</string>
 					</dict>
@@ -228703,8 +268235,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>94</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -228726,17 +268256,17 @@
 							<key>Text</key>
 							<dict>
 								<key>Pad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 10\
 software}</string>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 							<key>Wrap</key>
 							<string>NO</string>
@@ -228764,11 +268294,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -228780,7 +268310,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 					</array>
@@ -228794,8 +268324,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>92</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -228803,11 +268331,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 								<key>g</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 								<key>r</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -228826,10 +268354,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 name:[gremlin]}</string>
 					</dict>
@@ -228853,8 +268381,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>90</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -228876,17 +268402,17 @@
 							<key>Text</key>
 							<dict>
 								<key>Pad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 9\
 person}</string>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 							<key>Wrap</key>
 							<string>NO</string>
@@ -228914,11 +268440,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -228930,7 +268456,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 					</array>
@@ -228944,8 +268470,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>88</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -228953,11 +268477,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 								<key>g</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 								<key>r</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -228976,10 +268500,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 location:[spremberg,kaiserslautern,aachen]\
 name:[daniel]}</string>
@@ -229004,8 +268528,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>86</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -229027,17 +268549,17 @@
 							<key>Text</key>
 							<dict>
 								<key>Pad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 8\
 person}</string>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 							<key>Wrap</key>
 							<string>NO</string>
@@ -229065,11 +268587,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -229081,7 +268603,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 					</array>
@@ -229095,8 +268617,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>84</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -229104,11 +268624,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 								<key>g</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 								<key>r</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -229127,10 +268647,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 location:[bremen,baltimore,oakland,seattle]\
 name:[matthias]}</string>
@@ -229155,8 +268675,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>82</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -229178,17 +268696,17 @@
 							<key>Text</key>
 							<dict>
 								<key>Pad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 7\
 person}</string>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 							<key>Wrap</key>
 							<string>NO</string>
@@ -229216,11 +268734,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -229232,7 +268750,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 					</array>
@@ -229246,8 +268764,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>75</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -229255,11 +268771,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 								<key>g</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 								<key>r</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -229278,10 +268794,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 location:[centreville,dulles,purcellville]\
 name:[stephen]}</string>
@@ -229306,8 +268822,6 @@
 							</dict>
 							<key>ID</key>
 							<integer>79</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -229329,17 +268843,17 @@
 							<key>Text</key>
 							<dict>
 								<key>Pad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 1\
 person}</string>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 							<key>Wrap</key>
 							<string>NO</string>
@@ -229367,11 +268881,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -229383,7 +268897,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 					</array>
@@ -229397,11 +268911,16 @@
 					<integer>73</integer>
 					<key>Points</key>
 					<array>
-						<string>{53.211653663367642, 231.36224105224085}</string>
+						<string>{53.211653666491308, 231.36224105552398}</string>
 						<string>{72.847024917602539, 252}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -229429,8 +268948,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>70</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -229438,11 +268955,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 								<key>g</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 								<key>r</key>
-								<string>0.722477</string>
+								<real>0.72247700000000004</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -229461,10 +268978,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 location:[san diego,santa cruz,brussels,santa fe]\
 name:[marko]}</string>
@@ -229484,8 +269001,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>69</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -229504,10 +269019,10 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs20 \cf0 startTime:1997\
 endTime:2001}</string>
@@ -229525,14 +269040,19 @@
 					<integer>116</integer>
 					<key>Points</key>
 					<array>
-						<string>{145.1809086036169, 633.20785800969793}</string>
+						<string>{145.18090862039753, 633.20785801287468}</string>
 						<string>{196.90625476837158, 643}</string>
 						<string>{262, 619}</string>
 						<string>{264, 453}</string>
-						<string>{312.72585904266498, 387.60414589829367}</string>
+						<string>{312.72585903691134, 387.60414590601573}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -229565,14 +269085,19 @@
 					<integer>117</integer>
 					<key>Points</key>
 					<array>
-						<string>{137.1928582686871, 647.35646970430025}</string>
+						<string>{137.1928582774238, 647.3564697140597}</string>
 						<string>{164.62502098083496, 678}</string>
 						<string>{272.34857654571533, 657}</string>
 						<string>{286, 472}</string>
-						<string>{318.45265123746753, 390.81339020262789}</string>
+						<string>{318.45265124128429, 390.81339019307956}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -229605,13 +269130,18 @@
 					<integer>119</integer>
 					<key>Points</key>
 					<array>
-						<string>{414.02009038199714, 652.95890865370075}</string>
+						<string>{414.02009038950655, 652.95890865343893}</string>
 						<string>{326.81250762939453, 656}</string>
 						<string>{395, 441.17308807373047}</string>
-						<string>{344.8728358282288, 386.03409207503972}</string>
+						<string>{344.8728358184635, 386.03409206429802}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -229644,13 +269174,18 @@
 					<integer>120</integer>
 					<key>Points</key>
 					<array>
-						<string>{425.64372077145356, 673.38199936549347}</string>
+						<string>{425.64372077733105, 673.38199935633224}</string>
 						<string>{406, 704}</string>
 						<string>{308, 679.59628295898438}</string>
-						<string>{325.30385441710666, 508.37250981256841}</string>
+						<string>{325.30385441651833, 508.37250981838986}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -229675,7 +269210,7 @@
 			<key>GridInfo</key>
 			<dict/>
 			<key>HPages</key>
-			<integer>1</integer>
+			<integer>2</integer>
 			<key>KeepToScale</key>
 			<false/>
 			<key>Layers</key>
@@ -229701,6 +269236,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -229729,18 +269266,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -229757,7 +269289,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -229771,8 +269303,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>90</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -229794,16 +269324,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 [v[1], v[4], v[3]]}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -229819,8 +269349,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>88</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -229842,16 +269370,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 [v[1], v[4], v[5]]}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -229867,8 +269395,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.50102591514587402</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -229876,11 +269402,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.50102591514587402</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -229904,8 +269425,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.74854010343551636</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -229913,11 +269432,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.74854010343551636</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -229943,8 +269457,6 @@
 					<integer>83</integer>
 					<key>Rotation</key>
 					<real>341.03375244140625</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -229966,16 +269478,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -229991,8 +269503,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.50102591514587402</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -230000,11 +269510,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.50102591514587402</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -230026,8 +269531,6 @@
 					<integer>74</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -230056,8 +269559,6 @@
 					<integer>73</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -230088,8 +269589,6 @@
 					<integer>8</integer>
 					<key>Opacity</key>
 					<real>0.74854010343551636</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -230097,11 +269596,6 @@
 							<key>Draws</key>
 							<string>NO</string>
 						</dict>
-						<key>image fill</key>
-						<dict>
-							<key>Opacity</key>
-							<real>0.74854010343551636</real>
-						</dict>
 						<key>shadow</key>
 						<dict>
 							<key>Draws</key>
@@ -230125,8 +269619,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>60</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -230148,16 +269640,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -230185,11 +269677,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -230201,14 +269693,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -230218,8 +269710,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>34</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -230236,10 +269726,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 name:marko}</string>
 					</dict>
@@ -230256,11 +269746,16 @@
 					<integer>59</integer>
 					<key>Points</key>
 					<array>
-						<string>{86.374980217316832, 297.32735099650057}</string>
-						<string>{165.74997782101048, 297.32735099650057}</string>
+						<string>{86.374980232411673, 297.32735099650057}</string>
+						<string>{165.74997780591562, 297.32735099650057}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -230294,8 +269789,6 @@
 					<integer>53</integer>
 					<key>Rotation</key>
 					<real>28.506193161010742</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -230317,16 +269810,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -230343,11 +269836,16 @@
 					<integer>49</integer>
 					<key>Points</key>
 					<array>
-						<string>{208.46925139972976, 289.91556166996747}</string>
-						<string>{274.65571045329756, 266.23910141597003}</string>
+						<string>{208.46925142480634, 289.91556166099696}</string>
+						<string>{274.65571042822103, 266.23910142494054}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -230380,11 +269878,16 @@
 					<integer>48</integer>
 					<key>Points</key>
 					<array>
-						<string>{207.56428733349856, 306.90079234700102}</string>
-						<string>{275.56067070483158, 339.75387073893654}</string>
+						<string>{207.56428734343208, 306.90079235180048}</string>
+						<string>{275.56067069489802, 339.75387073413702}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -230428,11 +269931,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -230444,14 +269947,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -230477,11 +269980,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -230493,14 +269996,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -230526,11 +270029,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -230542,14 +270045,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -230559,8 +270062,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>91</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -230577,10 +270078,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 name:lop}</string>
 					</dict>
@@ -230592,8 +270093,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>40</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -230610,10 +270109,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 name:josh}</string>
 					</dict>
@@ -230625,8 +270124,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>44</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -230643,10 +270140,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 name:ripple}</string>
 					</dict>
@@ -230681,6 +270178,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -230709,18 +270208,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -230737,7 +270231,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -230752,12 +270246,17 @@
 					<integer>96</integer>
 					<key>Points</key>
 					<array>
-						<string>{385.1175350001468, 198.14464502566946}</string>
+						<string>{385.11753500750189, 198.1446450456028}</string>
 						<string>{412, 271}</string>
 						<string>{383.28205128205127, 303}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -230790,13 +270289,18 @@
 					<integer>95</integer>
 					<key>Points</key>
 					<array>
-						<string>{358.82480110761202, 281.13816742569105}</string>
+						<string>{358.82480110880829, 281.13816742494555}</string>
 						<string>{343, 291}</string>
 						<string>{342, 303}</string>
 						<string>{358.5, 306.30000000000001}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -230835,8 +270339,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>94</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -230858,16 +270360,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 out()}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -230886,12 +270388,17 @@
 					<integer>93</integer>
 					<key>Points</key>
 					<array>
-						<string>{307.34783000895789, 206.41768647248088}</string>
+						<string>{307.34783090150995, 206.41768610455864}</string>
 						<string>{282, 248}</string>
 						<string>{282, 271}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -230926,12 +270433,17 @@
 					<integer>92</integer>
 					<key>Points</key>
 					<array>
-						<string>{300.53010417165672, 247.17285464521339}</string>
+						<string>{300.53010397385339, 247.17285458783533}</string>
 						<string>{282, 271}</string>
 						<string>{286.92308866060699, 303}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -230972,8 +270484,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>91</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -230995,16 +270505,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 outE()}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -231021,11 +270531,16 @@
 					<integer>90</integer>
 					<key>Points</key>
 					<array>
-						<string>{246.05511811023621, 175}</string>
-						<string>{246.32677690583432, 209.50066704095804}</string>
+						<string>{246.05511811023624, 175}</string>
+						<string>{246.32677690593246, 209.50066705341996}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -231064,8 +270579,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>89</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -231087,16 +270600,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 inV()}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -231114,10 +270627,15 @@
 					<key>Points</key>
 					<array>
 						<string>{115.05511811096301, 175.00000190734863}</string>
-						<string>{115.32677690364449, 209.50066812296572}</string>
+						<string>{115.32677690364844, 209.50066812346719}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -231156,8 +270674,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>87</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -231179,16 +270695,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 outV()}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -231205,11 +270721,16 @@
 					<integer>85</integer>
 					<key>Points</key>
 					<array>
-						<string>{115.50000781600522, 253.50001181626908}</string>
+						<string>{115.50000781600522, 253.50001182002845}</string>
 						<string>{115.50000781600522, 303}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -231248,8 +270769,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>84</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -231271,16 +270790,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 in()}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -231297,11 +270816,16 @@
 					<integer>35</integer>
 					<key>Points</key>
 					<array>
-						<string>{177.99983319330858, 231.49998992672298}</string>
-						<string>{178.45539914398009, 303}</string>
+						<string>{177.99983383898774, 231.49998992672298}</string>
+						<string>{178.45539920155656, 303}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -231342,8 +270866,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>83</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -231365,16 +270887,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 inE()}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -231392,8 +270914,6 @@
 					<integer>82</integer>
 					<key>Rotation</key>
 					<real>16</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -231415,16 +270935,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -231442,8 +270962,6 @@
 					<integer>81</integer>
 					<key>Rotation</key>
 					<real>336.70001220703125</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -231465,16 +270983,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 created}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -231490,8 +271008,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>60</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -231513,16 +271029,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 knows}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -231539,11 +271055,16 @@
 					<integer>79</integer>
 					<key>Points</key>
 					<array>
-						<string>{137.50001075788532, 231.49998992672298}</string>
-						<string>{224.49998924211567, 231.49998992672298}</string>
+						<string>{137.50001074999787, 231.49998992672298}</string>
+						<string>{224.49998925000313, 231.49998992672298}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -231587,11 +271108,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -231603,14 +271124,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -231625,11 +271146,16 @@
 					<integer>77</integer>
 					<key>Points</key>
 					<array>
-						<string>{266.84488799481943, 223.11355697823248}</string>
-						<string>{357.15510197335965, 185.88644302176752}</string>
+						<string>{266.8448879847241, 223.11355698239393}</string>
+						<string>{357.15510198345498, 185.88644301760607}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -231673,11 +271199,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -231689,14 +271215,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -231722,11 +271248,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -231738,14 +271264,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -231760,11 +271286,16 @@
 					<integer>48</integer>
 					<key>Points</key>
 					<array>
-						<string>{267.63284207887432, 237.63013739692536}</string>
-						<string>{356.36715792112568, 263.36986260307464}</string>
+						<string>{267.63284208174144, 237.63013739775707}</string>
+						<string>{356.36715791825856, 263.36986260224296}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -231808,11 +271339,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -231824,14 +271355,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -231857,13 +271388,13 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.49</string>
+								<real>0.48999999999999999</real>
 								<key>b</key>
-								<string>0.00650883</string>
+								<real>0.0065088300000000002</real>
 								<key>g</key>
-								<string>0.899309</string>
+								<real>0.89930900000000003</real>
 								<key>r</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -231880,7 +271411,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -231895,18 +271426,23 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.4</string>
+								<real>0.40000000000000002</real>
 								<key>b</key>
-								<string>0</string>
+								<real>0.0</real>
 								<key>g</key>
-								<string>0.844942</string>
+								<real>0.84494199999999997</real>
 								<key>r</key>
-								<string>0.968371</string>
+								<real>0.96837099999999998</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>0</string>
@@ -231951,6 +271487,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -231979,18 +271517,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -232007,7 +271540,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -232019,8 +271552,6 @@
 					<integer>98</integer>
 					<key>ImageID</key>
 					<integer>95</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232054,8 +271585,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>95</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232063,11 +271592,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -232079,14 +271608,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 E}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -232103,8 +271632,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>94</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232112,11 +271639,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -232128,14 +271655,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 E}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -232152,8 +271679,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>93</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232161,11 +271686,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -232177,14 +271702,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 E}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -232201,8 +271726,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>92</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232210,11 +271733,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -232226,14 +271749,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 E}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -232250,8 +271773,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>91</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232259,11 +271780,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -232275,14 +271796,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 E}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -232299,8 +271820,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>90</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232308,11 +271827,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -232324,14 +271843,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 E}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -232352,8 +271871,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>50</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232375,16 +271892,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs36 \cf0 ?}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -232407,8 +271924,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>48</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232430,16 +271945,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs36 \cf0 ?}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>TextRotation</key>
 					<real>38.860763549804688</real>
@@ -232464,8 +271979,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>49</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232487,16 +272000,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs36 \cf0 ?}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>TextRotation</key>
 					<real>321.5</real>
@@ -232512,8 +272025,6 @@
 					<integer>87</integer>
 					<key>ImageID</key>
 					<integer>64</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232542,8 +272053,6 @@
 					<integer>84</integer>
 					<key>ImageID</key>
 					<integer>63</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232572,8 +272081,6 @@
 					<integer>83</integer>
 					<key>ImageID</key>
 					<integer>62</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232602,8 +272109,6 @@
 					<integer>81</integer>
 					<key>ImageID</key>
 					<integer>61</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232646,11 +272151,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -232662,14 +272167,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 S}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -232695,11 +272200,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -232711,14 +272216,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 S}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -232744,11 +272249,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -232760,14 +272265,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 S}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -232784,8 +272289,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>58</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232793,11 +272296,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -232809,14 +272312,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 E}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -232833,8 +272336,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>62</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232842,11 +272343,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -232858,14 +272359,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 E}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -232882,8 +272383,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>61</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232891,11 +272390,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -232907,14 +272406,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 E}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -232931,8 +272430,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>60</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232940,11 +272437,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -232956,14 +272453,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 E}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -232980,8 +272477,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>59</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -232989,11 +272484,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233005,14 +272500,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 E}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -233029,8 +272524,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>57</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -233038,11 +272531,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233054,14 +272547,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 E}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -233087,11 +272580,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233103,14 +272596,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 S}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -233127,8 +272620,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>53</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -233136,11 +272627,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233152,14 +272643,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 E}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -233185,11 +272676,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233201,14 +272692,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 S}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -233234,11 +272725,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233250,14 +272741,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 S}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -233274,8 +272765,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -233283,11 +272772,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233304,10 +272793,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 branch}</string>
 					</dict>
@@ -233326,8 +272815,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>7</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -233335,11 +272822,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233356,10 +272843,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 sideEffect}</string>
 					</dict>
@@ -233378,8 +272865,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>6</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -233387,11 +272872,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233408,10 +272893,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 flatMap}</string>
 					</dict>
@@ -233430,8 +272915,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>5</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -233439,11 +272922,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233460,10 +272943,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 map}</string>
 					</dict>
@@ -233482,8 +272965,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>4</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -233491,11 +272972,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233512,10 +272993,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 filter}</string>
 					</dict>
@@ -233543,11 +273024,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233559,14 +273040,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 S}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -233583,8 +273064,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>66</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -233592,11 +273071,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.193398</string>
+								<real>0.19339799999999999</real>
 								<key>g</key>
-								<string>0.644468</string>
+								<real>0.64446800000000004</real>
 								<key>r</key>
-								<string>0.20576</string>
+								<real>0.20576</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233608,14 +273087,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 A}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 			</array>
@@ -233648,6 +273127,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -233676,18 +273157,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {1152.0000286102295, 733}}</string>
+				<string>{{0, 0}, {1151.9999809265137, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -233704,7 +273180,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -233719,13 +273195,18 @@
 					<integer>114</integer>
 					<key>Points</key>
 					<array>
-						<string>{203.0999946248065, 244.50397141016316}</string>
+						<string>{203.09999462818794, 244.50397140915601}</string>
 						<string>{255.15317249298096, 229}</string>
 						<string>{495.7271294593811, 232}</string>
-						<string>{553.34820812810722, 257.12676714600792}</string>
+						<string>{553.34820812333305, 257.12676714392603}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -233769,11 +273250,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233785,14 +273266,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -233813,8 +273294,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>71</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -233836,16 +273315,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs30 \cf0 x}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -233864,8 +273343,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>70</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -233873,11 +273350,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233894,10 +273371,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 where\
 (without(x))}</string>
@@ -233926,11 +273403,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233942,14 +273419,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -233975,11 +273452,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -233991,14 +273468,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -234024,11 +273501,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -234040,14 +273517,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -234073,11 +273550,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -234089,14 +273566,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -234113,8 +273590,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>65</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -234122,11 +273597,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -234143,10 +273618,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 out(created)}</string>
 					</dict>
@@ -234174,11 +273649,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -234190,14 +273665,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -234223,11 +273698,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -234239,14 +273714,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -234263,8 +273738,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>63</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -234272,11 +273745,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -234293,10 +273766,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 in(created)}</string>
 					</dict>
@@ -234310,8 +273783,6 @@
 					<integer>62</integer>
 					<key>ImageID</key>
 					<integer>67</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -234345,8 +273816,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>59</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -234354,11 +273823,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -234375,10 +273844,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 aggregate}</string>
 					</dict>
@@ -234406,11 +273875,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -234422,14 +273891,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -234455,11 +273924,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -234471,14 +273940,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -234488,8 +273957,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>49</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -234497,11 +273964,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -234518,10 +273985,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 name}</string>
 					</dict>
@@ -234540,8 +274007,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>41</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -234549,11 +274014,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -234570,10 +274035,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 out(created)}</string>
 					</dict>
@@ -234601,11 +274066,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -234617,14 +274082,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -234638,8 +274103,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>33</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -234661,16 +274124,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 ripple}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -234698,11 +274161,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -234714,14 +274177,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -234747,11 +274210,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -234763,14 +274226,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -234780,8 +274243,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>61</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>shadow</key>
@@ -234821,6 +274282,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -234849,18 +274312,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -234877,7 +274335,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -234889,8 +274347,6 @@
 					<integer>86</integer>
 					<key>ImageID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -234919,8 +274375,6 @@
 					<integer>75</integer>
 					<key>ImageID</key>
 					<integer>68</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -234958,8 +274412,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>85</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -234981,16 +274433,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs30 \cf0 0}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -235013,8 +274465,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>84</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -235036,16 +274486,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs30 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -235068,8 +274518,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>83</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -235091,16 +274539,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs38 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -235123,8 +274571,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>82</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -235146,16 +274592,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -235178,8 +274624,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>81</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -235201,16 +274645,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs38 \cf0 0}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -235233,8 +274677,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>80</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -235256,16 +274698,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs30 \cf0 0}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -235288,8 +274730,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>79</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -235311,16 +274751,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs22 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -235343,8 +274783,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>78</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -235366,16 +274804,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs30 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -235398,8 +274836,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>77</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -235421,16 +274857,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs38 \cf0 0}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -235464,6 +274900,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -235509,6 +274950,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -235537,18 +274980,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -235565,7 +275003,121 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
+			<key>GraphicsList</key>
+			<array>
+				<dict>
+					<key>Bounds</key>
+					<string>{{126.96735334396362, 192}, {322.0653076171875, 349}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>ID</key>
+					<integer>101</integer>
+					<key>ImageID</key>
+					<integer>113</integer>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+				</dict>
+			</array>
+			<key>GridInfo</key>
+			<dict/>
+			<key>HPages</key>
+			<integer>1</integer>
+			<key>KeepToScale</key>
+			<false/>
+			<key>Layers</key>
+			<array>
+				<dict>
+					<key>Lock</key>
+					<string>NO</string>
+					<key>Name</key>
+					<string>Layer 1</string>
+					<key>Print</key>
+					<string>YES</string>
+					<key>View</key>
+					<string>YES</string>
+				</dict>
+			</array>
+			<key>LayoutInfo</key>
+			<dict>
+				<key>Animate</key>
+				<string>NO</string>
+				<key>circoMinDist</key>
+				<real>18</real>
+				<key>circoSeparation</key>
+				<real>0.0</real>
+				<key>layoutEngine</key>
+				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
+				<key>neatoSeparation</key>
+				<real>0.0</real>
+				<key>twopiSeparation</key>
+				<real>0.0</real>
+			</dict>
+			<key>Orientation</key>
+			<integer>2</integer>
+			<key>PrintOnePage</key>
+			<false/>
+			<key>RowAlign</key>
+			<integer>1</integer>
+			<key>RowSpacing</key>
+			<real>36</real>
+			<key>SheetTitle</key>
+			<string>nine-inch-gremlins</string>
+			<key>UniqueID</key>
+			<integer>76</integer>
+			<key>VPages</key>
+			<integer>1</integer>
+		</dict>
+		<dict>
+			<key>ActiveLayerIndex</key>
+			<integer>0</integer>
+			<key>AutoAdjust</key>
+			<true/>
+			<key>BackgroundGraphic</key>
+			<dict>
+				<key>Bounds</key>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
+				<key>Class</key>
+				<string>SolidGraphic</string>
+				<key>ID</key>
+				<integer>2</integer>
+				<key>Style</key>
+				<dict>
+					<key>stroke</key>
+					<dict>
+						<key>Draws</key>
+						<string>NO</string>
+					</dict>
+				</dict>
+			</dict>
+			<key>BaseZoom</key>
+			<integer>0</integer>
+			<key>CanvasOrigin</key>
+			<string>{0, 0}</string>
+			<key>ColumnAlign</key>
+			<integer>1</integer>
+			<key>ColumnSpacing</key>
+			<real>36</real>
+			<key>DisplayScale</key>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -235580,21 +275132,26 @@
 					<integer>38</integer>
 					<key>Points</key>
 					<array>
-						<string>{433.34790486653185, 153.06042999332789}</string>
-						<string>{461.11329524835406, 196.56987785087529}</string>
+						<string>{433.34790489176197, 153.06043003286442}</string>
+						<string>{461.113295223124, 196.56987781133881}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0554421</string>
+								<real>0.055442100000000001</real>
 								<key>g</key>
-								<string>0.402033</string>
+								<real>0.40203299999999997</real>
 								<key>r</key>
-								<string>0.120664</string>
+								<real>0.12066399999999999</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>FilledArrow</string>
@@ -235624,21 +275181,26 @@
 					<integer>37</integer>
 					<key>Points</key>
 					<array>
-						<string>{149.34205769567413, 160.04211467562067}</string>
-						<string>{123.92357402019611, 206.8526335421534}</string>
+						<string>{149.34205770501762, 160.04211465841379}</string>
+						<string>{123.92357401085265, 206.85263355936027}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0554421</string>
+								<real>0.055442100000000001</real>
 								<key>g</key>
-								<string>0.402033</string>
+								<real>0.40203299999999997</real>
 								<key>r</key>
-								<string>0.120664</string>
+								<real>0.12066399999999999</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>FilledArrow</string>
@@ -235668,21 +275230,26 @@
 					<integer>36</integer>
 					<key>Points</key>
 					<array>
-						<string>{294.30390466868238, 118.95845114341276}</string>
-						<string>{289.77222087322815, 161.12249816909554}</string>
+						<string>{294.30390466396267, 118.95845118732599}</string>
+						<string>{289.7722208779478, 161.12249812518232}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0554421</string>
+								<real>0.055442100000000001</real>
 								<key>g</key>
-								<string>0.402033</string>
+								<real>0.40203299999999997</real>
 								<key>r</key>
-								<string>0.120664</string>
+								<real>0.12066399999999999</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>FilledArrow</string>
@@ -235712,21 +275279,26 @@
 					<integer>35</integer>
 					<key>Points</key>
 					<array>
-						<string>{176.9850811450969, 155.47006517210067}</string>
-						<string>{217.6368840808253, 178.69250856093529}</string>
+						<string>{176.98508112287621, 155.47006515940706}</string>
+						<string>{217.63688410304593, 178.69250857362886}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0554421</string>
+								<real>0.055442100000000001</real>
 								<key>g</key>
-								<string>0.402033</string>
+								<real>0.40203299999999997</real>
 								<key>r</key>
-								<string>0.120664</string>
+								<real>0.12066399999999999</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>FilledArrow</string>
@@ -235756,21 +275328,26 @@
 					<integer>34</integer>
 					<key>Points</key>
 					<array>
-						<string>{374.07943365978127, 222.63462385871736}</string>
-						<string>{424.35841987384333, 226.05192867154125}</string>
+						<string>{374.07943370154385, 222.63462386155584}</string>
+						<string>{424.35841983208076, 226.05192866870277}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0554421</string>
+								<real>0.055442100000000001</real>
 								<key>g</key>
-								<string>0.402033</string>
+								<real>0.40203299999999997</real>
 								<key>r</key>
-								<string>0.120664</string>
+								<real>0.12066399999999999</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>FilledArrow</string>
@@ -235800,21 +275377,26 @@
 					<integer>33</integer>
 					<key>Points</key>
 					<array>
-						<string>{233.12680928094227, 118.12881846633545}</string>
-						<string>{256.56809761160395, 163.61677279725839}</string>
+						<string>{233.12680925740543, 118.12881842066204}</string>
+						<string>{256.56809763514087, 163.61677284293182}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0554421</string>
+								<real>0.055442100000000001</real>
 								<key>g</key>
-								<string>0.402033</string>
+								<real>0.40203299999999997</real>
 								<key>r</key>
-								<string>0.120664</string>
+								<real>0.12066399999999999</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>FilledArrow</string>
@@ -235844,21 +275426,26 @@
 					<integer>32</integer>
 					<key>Points</key>
 					<array>
-						<string>{345.49414966323434, 175.95376343151202}</string>
-						<string>{388.52575564572197, 147.66345566536555}</string>
+						<string>{345.49414966070907, 175.95376343317218}</string>
+						<string>{388.5257556482473, 147.66345566370532}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0554421</string>
+								<real>0.055442100000000001</real>
 								<key>g</key>
-								<string>0.402033</string>
+								<real>0.40203299999999997</real>
 								<key>r</key>
-								<string>0.120664</string>
+								<real>0.12066399999999999</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>FilledArrow</string>
@@ -235888,21 +275475,26 @@
 					<integer>31</integer>
 					<key>Points</key>
 					<array>
-						<string>{150.39299830340011, 226.94420103996467}</string>
-						<string>{193.74236080908162, 223.55097379255233}</string>
+						<string>{150.39299829400224, 226.94420104070028}</string>
+						<string>{193.74236081847945, 223.55097379181669}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0554421</string>
+								<real>0.055442100000000001</real>
 								<key>g</key>
-								<string>0.402033</string>
+								<real>0.40203299999999997</real>
 								<key>r</key>
-								<string>0.120664</string>
+								<real>0.12066399999999999</real>
 							</dict>
 							<key>HeadArrow</key>
 							<string>FilledArrow</string>
@@ -235948,11 +275540,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0397395</string>
+								<real>0.039739499999999997</real>
 								<key>g</key>
-								<string>0.390256</string>
+								<real>0.39025599999999999</real>
 								<key>r</key>
-								<string>0.0921044</string>
+								<real>0.092104400000000003</real>
 							</dict>
 							<key>Width</key>
 							<real>4</real>
@@ -235989,11 +275581,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0397395</string>
+								<real>0.039739499999999997</real>
 								<key>g</key>
-								<string>0.390256</string>
+								<real>0.39025599999999999</real>
 								<key>r</key>
-								<string>0.0921044</string>
+								<real>0.092104400000000003</real>
 							</dict>
 							<key>Width</key>
 							<real>4</real>
@@ -236030,11 +275622,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0397395</string>
+								<real>0.039739499999999997</real>
 								<key>g</key>
-								<string>0.390256</string>
+								<real>0.39025599999999999</real>
 								<key>r</key>
-								<string>0.0921044</string>
+								<real>0.092104400000000003</real>
 							</dict>
 							<key>Width</key>
 							<real>4</real>
@@ -236071,11 +275663,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0397395</string>
+								<real>0.039739499999999997</real>
 								<key>g</key>
-								<string>0.390256</string>
+								<real>0.39025599999999999</real>
 								<key>r</key>
-								<string>0.0921044</string>
+								<real>0.092104400000000003</real>
 							</dict>
 							<key>Width</key>
 							<real>4</real>
@@ -236112,11 +275704,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0397395</string>
+								<real>0.039739499999999997</real>
 								<key>g</key>
-								<string>0.390256</string>
+								<real>0.39025599999999999</real>
 								<key>r</key>
-								<string>0.0921044</string>
+								<real>0.092104400000000003</real>
 							</dict>
 							<key>Width</key>
 							<real>4</real>
@@ -236153,11 +275745,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0397395</string>
+								<real>0.039739499999999997</real>
 								<key>g</key>
-								<string>0.390256</string>
+								<real>0.39025599999999999</real>
 								<key>r</key>
-								<string>0.0921044</string>
+								<real>0.092104400000000003</real>
 							</dict>
 							<key>Width</key>
 							<real>4</real>
@@ -236194,11 +275786,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0397395</string>
+								<real>0.039739499999999997</real>
 								<key>g</key>
-								<string>0.390256</string>
+								<real>0.39025599999999999</real>
 								<key>r</key>
-								<string>0.0921044</string>
+								<real>0.092104400000000003</real>
 							</dict>
 							<key>Width</key>
 							<real>4</real>
@@ -236237,6 +275829,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -236265,18 +275859,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -236293,7 +275882,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -236305,8 +275894,6 @@
 					<integer>89</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -236335,8 +275922,6 @@
 					<integer>87</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -236365,8 +275950,6 @@
 					<integer>86</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -236395,8 +275978,6 @@
 					<integer>85</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -236425,8 +276006,6 @@
 					<integer>84</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -236455,8 +276034,6 @@
 					<integer>83</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -236485,8 +276062,6 @@
 					<integer>82</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -236515,8 +276090,6 @@
 					<integer>81</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -236545,8 +276118,6 @@
 					<integer>80</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -236575,8 +276146,6 @@
 					<integer>73</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -236605,8 +276174,6 @@
 					<integer>79</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -236656,6 +276223,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -236684,18 +276253,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -236712,7 +276276,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -236724,8 +276288,6 @@
 					<integer>95</integer>
 					<key>ImageID</key>
 					<integer>73</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -236761,8 +276323,6 @@
 							<integer>70</integer>
 							<key>Rotation</key>
 							<real>41.136444091796875</real>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -236793,8 +276353,6 @@
 							<integer>72</integer>
 							<key>Rotation</key>
 							<real>41.136444091796875</real>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -236829,8 +276387,6 @@
 					<integer>89</integer>
 					<key>ImageID</key>
 					<integer>71</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -236880,6 +276436,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -236908,18 +276466,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -236936,7 +276489,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -236960,10 +276513,15 @@
 					<array>
 						<string>{281, 85}</string>
 						<string>{323, 85}</string>
-						<string>{322.58205384300817, 103.41379451739037}</string>
+						<string>{322.58205384305586, 103.41379451528712}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -236982,12 +276540,17 @@
 					<integer>35</integer>
 					<key>Points</key>
 					<array>
-						<string>{216.90908656450716, 103.50018525954818}</string>
+						<string>{216.90908656444495, 103.50018527221165}</string>
 						<string>{217, 85}</string>
 						<string>{249, 85}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -237013,8 +276576,6 @@
 					<integer>94</integer>
 					<key>ImageID</key>
 					<integer>70</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -237050,8 +276611,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>53</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -237059,11 +276618,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237075,7 +276634,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -237101,11 +276660,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237117,7 +276676,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -237134,8 +276693,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>5</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -237143,11 +276700,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237164,10 +276721,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 step}</string>
 					</dict>
@@ -237202,6 +276759,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -237230,18 +276789,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -237258,7 +276812,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -237284,11 +276838,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237300,7 +276854,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -237326,11 +276880,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237342,7 +276896,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -237368,11 +276922,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237384,7 +276938,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -237410,11 +276964,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237426,7 +276980,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -237452,11 +277006,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237468,7 +277022,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -237494,11 +277048,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237510,7 +277064,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -237536,11 +277090,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237552,7 +277106,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -237578,11 +277132,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237594,7 +277148,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -237620,11 +277174,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237636,7 +277190,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -237662,11 +277216,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237678,7 +277232,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -237704,11 +277258,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237720,7 +277274,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -237746,11 +277300,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237762,7 +277316,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -237788,11 +277342,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237804,7 +277358,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -237821,8 +277375,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>53</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -237830,11 +277382,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237846,7 +277398,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -237863,8 +277415,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>5</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -237872,11 +277422,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -237893,10 +277443,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 barrier}</string>
 					</dict>
@@ -237913,6 +277463,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Cap</key>
@@ -237960,6 +277515,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -237988,18 +277545,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {1152.0000286102295, 733}}</string>
+				<string>{{0, 0}, {1151.9999809265137, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -238016,7 +277568,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -238030,8 +277582,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>61</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -238053,16 +277603,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 lop}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -238090,11 +277640,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238106,14 +277656,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -238139,11 +277689,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238155,14 +277705,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -238176,8 +277726,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>58</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -238199,16 +277747,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 marko}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -238224,8 +277772,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>57</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -238247,16 +277793,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 lop}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -238284,11 +277830,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238300,14 +277846,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -238333,11 +277879,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238349,14 +277895,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -238382,11 +277928,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238398,14 +277944,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -238431,11 +277977,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238447,14 +277993,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -238480,11 +278026,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238496,14 +278042,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -238529,11 +278075,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238545,14 +278091,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -238562,8 +278108,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>49</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -238571,11 +278115,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238592,10 +278136,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 name}</string>
 					</dict>
@@ -238607,8 +278151,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>48</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -238616,11 +278158,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238637,10 +278179,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 out}</string>
 					</dict>
@@ -238652,8 +278194,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>47</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -238661,11 +278201,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238682,10 +278222,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 choose\
 (age.is(lte(30)))}</string>
@@ -238714,11 +278254,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238730,14 +278270,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -238763,11 +278303,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238779,14 +278319,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -238812,11 +278352,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238828,14 +278368,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -238861,11 +278401,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238877,14 +278417,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -238901,8 +278441,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -238910,11 +278448,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.193398</string>
+								<real>0.19339799999999999</real>
 								<key>g</key>
-								<string>0.644468</string>
+								<real>0.64446800000000004</real>
 								<key>r</key>
-								<string>0.20576</string>
+								<real>0.20576</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238926,14 +278464,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 g}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -238950,8 +278488,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>41</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -238959,11 +278495,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -238980,10 +278516,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 V}</string>
 					</dict>
@@ -239011,11 +278547,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239027,14 +278563,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -239060,11 +278596,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239076,14 +278612,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -239109,11 +278645,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239125,14 +278661,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -239158,11 +278694,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239174,14 +278710,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -239207,11 +278743,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239223,14 +278759,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -239244,8 +278780,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>33</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -239267,16 +278801,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 ripple}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -239304,11 +278838,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239320,14 +278854,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -239337,8 +278871,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>30</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -239346,11 +278878,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239367,10 +278899,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 in}</string>
 					</dict>
@@ -239389,8 +278921,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>4</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -239398,11 +278928,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239419,10 +278949,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 hasLabel\
 ('person')}</string>
@@ -239458,6 +278988,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -239486,18 +279018,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -239514,7 +279041,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -239535,8 +279062,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>62</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -239558,16 +279083,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs30 \cf0 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -239586,8 +279111,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -239595,11 +279118,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.193398</string>
+								<real>0.19339799999999999</real>
 								<key>g</key>
-								<string>0.644468</string>
+								<real>0.64446800000000004</real>
 								<key>r</key>
-								<string>0.20576</string>
+								<real>0.20576</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239611,14 +279134,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 g}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -239635,8 +279158,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>41</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -239644,11 +279165,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239665,10 +279186,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 V}</string>
 					</dict>
@@ -239696,11 +279217,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239712,7 +279233,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -239738,11 +279259,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239754,7 +279275,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -239780,11 +279301,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239796,7 +279317,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -239822,11 +279343,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239838,7 +279359,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -239864,11 +279385,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239880,7 +279401,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -239906,11 +279427,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239922,7 +279443,7 @@
 					<key>Text</key>
 					<dict>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -239939,8 +279460,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>5</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -239948,11 +279467,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -239969,10 +279488,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 count}</string>
 					</dict>
@@ -239989,6 +279508,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>Cap</key>
@@ -240036,6 +279560,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -240064,18 +279590,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -240092,7 +279613,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -240106,8 +279627,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>92</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -240129,16 +279648,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 [v[4], v[3], java]}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -240154,8 +279673,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>91</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -240177,16 +279694,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 [v[4], v[5], java]}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -240202,8 +279719,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>90</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -240225,16 +279740,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 [v[4], v[1], 29]}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -240250,8 +279765,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>64</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -240273,16 +279786,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 java}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -240298,8 +279811,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>63</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -240321,16 +279832,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 java}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -240346,8 +279857,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>62</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -240369,16 +279878,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 29}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -240390,8 +279899,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>61</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -240399,11 +279906,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -240420,10 +279927,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 values('lang')}</string>
 					</dict>
@@ -240435,8 +279942,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>60</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -240444,11 +279949,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -240465,10 +279970,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 values('age')}</string>
 					</dict>
@@ -240496,11 +280001,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -240512,14 +280017,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -240545,11 +280050,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -240561,14 +280066,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -240578,8 +280083,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>49</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -240587,11 +280090,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -240608,10 +280111,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 path}</string>
 					</dict>
@@ -240623,8 +280126,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>48</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -240632,11 +280133,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -240653,10 +280154,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 out}</string>
 					</dict>
@@ -240668,8 +280169,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>47</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -240677,11 +280176,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -240698,10 +280197,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 union}</string>
 					</dict>
@@ -240720,8 +280219,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -240729,11 +280226,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.193398</string>
+								<real>0.19339799999999999</real>
 								<key>g</key>
-								<string>0.644468</string>
+								<real>0.64446800000000004</real>
 								<key>r</key>
-								<string>0.20576</string>
+								<real>0.20576</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -240745,14 +280242,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 g}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -240769,8 +280266,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>41</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -240778,11 +280273,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -240799,10 +280294,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 V(4)}</string>
 					</dict>
@@ -240830,11 +280325,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -240846,14 +280341,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -240879,11 +280374,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -240895,14 +280390,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -240928,11 +280423,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -240944,14 +280439,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -240977,11 +280472,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -240993,14 +280488,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -241010,8 +280505,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>30</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241019,11 +280512,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -241040,10 +280533,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 in}</string>
 					</dict>
@@ -241078,6 +280571,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -241106,18 +280601,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -241134,7 +280624,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -241148,8 +280638,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>171</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241171,16 +280659,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 repeat.times(16)}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -241203,8 +280691,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>170</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241228,17 +280714,17 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs24 \cf0 if(&gt;2ms) \
    NoSuchElementException}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -241252,8 +280738,6 @@
 					<integer>169</integer>
 					<key>ImageID</key>
 					<integer>49</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241287,8 +280771,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>60</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241296,11 +280778,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -241317,10 +280799,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 groupCount(m)}</string>
 					</dict>
@@ -241339,8 +280821,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>59</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241348,11 +280828,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -241369,10 +280849,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 both}</string>
 					</dict>
@@ -241391,8 +280871,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241400,11 +280878,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.193398</string>
+								<real>0.19339799999999999</real>
 								<key>g</key>
-								<string>0.644468</string>
+								<real>0.64446800000000004</real>
 								<key>r</key>
-								<string>0.20576</string>
+								<real>0.20576</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -241416,14 +280894,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 g}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -241440,8 +280918,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>41</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241449,11 +280925,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -241470,10 +280946,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 V}</string>
 					</dict>
@@ -241492,8 +280968,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>168</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241501,11 +280975,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -241522,10 +280996,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 timeLimit(2)}</string>
 					</dict>
@@ -241544,8 +281018,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>61</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241553,11 +281025,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -241602,6 +281074,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -241630,18 +281104,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -241658,7 +281127,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -241679,8 +281148,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>183</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241704,17 +281171,17 @@
 						<key>Align</key>
 						<integer>0</integer>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
 
 \f0\fs22 \cf1 v(1).properties(location)\
   .order().by(startTime).limit(2)}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -241728,8 +281195,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>182</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241751,16 +281216,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 local}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -241779,8 +281244,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>179</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241788,11 +281251,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -241809,10 +281272,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 select}</string>
 					</dict>
@@ -241831,8 +281294,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>178</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241840,11 +281301,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -241861,10 +281322,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 value}</string>
 					</dict>
@@ -241883,8 +281344,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>177</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241892,11 +281351,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -241913,10 +281372,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 limit(2)}</string>
 					</dict>
@@ -241935,8 +281394,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>176</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241944,11 +281401,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -241965,10 +281422,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 order}</string>
 					</dict>
@@ -241987,8 +281444,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>175</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -241996,11 +281451,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.193398</string>
+								<real>0.19339799999999999</real>
 								<key>g</key>
-								<string>0.644468</string>
+								<real>0.64446800000000004</real>
 								<key>r</key>
-								<string>0.20576</string>
+								<real>0.20576</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -242012,14 +281467,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 g}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -242036,8 +281491,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>174</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -242045,11 +281498,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -242066,10 +281519,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 V}</string>
 					</dict>
@@ -242088,8 +281541,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>173</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -242097,11 +281548,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -242118,10 +281569,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 properties}</string>
 					</dict>
@@ -242140,8 +281591,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>172</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -242149,11 +281598,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -242170,10 +281619,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 select}</string>
 					</dict>
@@ -242192,8 +281641,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>61</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -242201,11 +281648,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -242222,10 +281669,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 value}</string>
 					</dict>
@@ -242244,8 +281691,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>60</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -242253,11 +281698,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -242274,10 +281719,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 limit(2)}</string>
 					</dict>
@@ -242296,8 +281741,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>59</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -242305,11 +281748,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -242326,10 +281769,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 order}</string>
 					</dict>
@@ -242348,8 +281791,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -242357,11 +281798,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.193398</string>
+								<real>0.19339799999999999</real>
 								<key>g</key>
-								<string>0.644468</string>
+								<real>0.64446800000000004</real>
 								<key>r</key>
-								<string>0.20576</string>
+								<real>0.20576</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -242373,14 +281814,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 g}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -242397,8 +281838,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>41</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -242406,11 +281845,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -242427,10 +281866,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 V}</string>
 					</dict>
@@ -242449,8 +281888,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>168</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -242458,11 +281895,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -242479,10 +281916,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 properties}</string>
 					</dict>
@@ -242501,8 +281938,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>181</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -242510,11 +281945,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -242559,6 +281994,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -242587,18 +282024,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -242615,7 +282047,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -242629,8 +282061,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>130</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -242652,16 +282082,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 repeat.times(10)}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -242689,11 +282119,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -242705,14 +282135,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -242738,11 +282168,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -242754,14 +282184,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs20 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -242781,8 +282211,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>119</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -242799,8 +282227,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>120</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -242826,8 +282252,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>122</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -242844,8 +282268,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>123</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -242871,8 +282293,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>125</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -242889,8 +282309,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>126</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -242920,13 +282338,18 @@
 					<integer>114</integer>
 					<key>Points</key>
 					<array>
-						<string>{233.97685962212765, 246.60943599015201}</string>
+						<string>{233.97685960765708, 246.60943599471446}</string>
 						<string>{293, 228}</string>
 						<string>{347, 228}</string>
-						<string>{379.83421883203488, 256.73473042986603}</string>
+						<string>{379.83421882515978, 256.73473042384933}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -242961,8 +282384,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>68</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -242970,11 +282391,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -242991,10 +282412,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 cap(m)}</string>
 					</dict>
@@ -243013,8 +282434,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>60</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -243022,11 +282441,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -243043,10 +282462,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 groupCount(m)}</string>
 					</dict>
@@ -243065,8 +282484,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>59</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -243074,11 +282491,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -243095,10 +282512,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 both}</string>
 					</dict>
@@ -243117,8 +282534,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -243126,11 +282541,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.193398</string>
+								<real>0.19339799999999999</real>
 								<key>g</key>
-								<string>0.644468</string>
+								<real>0.64446800000000004</real>
 								<key>r</key>
-								<string>0.20576</string>
+								<real>0.20576</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -243142,14 +282557,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 g}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -243166,8 +282581,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>41</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -243175,11 +282588,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -243196,10 +282609,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 V}</string>
 					</dict>
@@ -243221,8 +282634,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>104</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -243239,8 +282650,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>105</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -243266,8 +282675,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>107</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -243284,8 +282691,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>108</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -243311,8 +282716,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>110</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -243329,8 +282732,6 @@
 									<string>ShapedGraphic</string>
 									<key>ID</key>
 									<integer>111</integer>
-									<key>Shape</key>
-									<string>Rectangle</string>
 									<key>Style</key>
 									<dict>
 										<key>shadow</key>
@@ -243362,8 +282763,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>61</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -243371,11 +282770,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -243420,6 +282819,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -243448,18 +282849,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -243476,7 +282872,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -243492,8 +282888,6 @@
 					<integer>300</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -243515,16 +282909,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 Stored in SideEffect}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -243539,8 +282933,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>298</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -243548,11 +282940,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -243564,10 +282956,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -243579,8 +282971,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>299</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -243588,11 +282978,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -243604,10 +282994,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k5}</string>
 							</dict>
@@ -243628,8 +283018,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>295</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -243637,11 +283025,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -243653,10 +283041,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -243668,8 +283056,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>296</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -243677,11 +283063,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -243693,10 +283079,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k4}</string>
 							</dict>
@@ -243717,8 +283103,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>292</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -243726,11 +283110,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -243742,10 +283126,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -243757,8 +283141,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>293</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -243766,11 +283148,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -243782,10 +283164,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k3}</string>
 							</dict>
@@ -243803,8 +283185,6 @@
 					<integer>26</integer>
 					<key>Rotation</key>
 					<real>90.182708740234375</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -243982,21 +283362,8 @@
 						</dict>
 						<key>shadow</key>
 						<dict>
-							<key>Color</key>
-							<dict>
-								<key>a</key>
-								<string>0.5</string>
-								<key>b</key>
-								<string>0</string>
-								<key>g</key>
-								<string>0</string>
-								<key>r</key>
-								<string>0</string>
-							</dict>
 							<key>Draws</key>
 							<string>NO</string>
-							<key>ShadowVector</key>
-							<string>{0, 2}</string>
 						</dict>
 						<key>stroke</key>
 						<dict>
@@ -244021,8 +283388,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>289</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -244030,11 +283395,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -244046,10 +283411,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -244061,8 +283426,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>290</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -244070,11 +283433,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -244086,10 +283449,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k2}</string>
 							</dict>
@@ -244110,8 +283473,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>285</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -244119,11 +283480,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -244135,10 +283496,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -244150,8 +283511,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>286</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -244159,11 +283518,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -244175,10 +283534,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -244190,8 +283549,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>287</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -244199,11 +283556,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -244215,10 +283572,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k1}</string>
 							</dict>
@@ -244239,8 +283596,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>282</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -244248,11 +283603,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -244264,10 +283619,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -244279,8 +283634,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>283</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -244288,11 +283641,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -244304,10 +283657,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k1}</string>
 							</dict>
@@ -244328,8 +283681,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>279</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -244337,11 +283688,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -244353,10 +283704,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -244368,8 +283719,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>280</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -244377,11 +283726,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -244393,10 +283742,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k2}</string>
 							</dict>
@@ -244423,8 +283772,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>258</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -244446,16 +283793,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 g}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -244478,8 +283825,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>257</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -244501,17 +283846,17 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 reduce(key,[value]*) -&gt; \
    [key,value]*}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -244525,8 +283870,6 @@
 					<integer>256</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -244534,11 +283877,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -244550,10 +283893,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 Reduce}</string>
 					</dict>
@@ -244570,12 +283913,17 @@
 					<integer>255</integer>
 					<key>Points</key>
 					<array>
-						<string>{151.00745758360625, 252.64047250169955}</string>
+						<string>{151.0074575647464, 252.6404725049928}</string>
 						<string>{74.500004768371582, 266}</string>
-						<string>{42.446988599343904, 229.86907906192755}</string>
+						<string>{42.446988609922208, 229.86907907385168}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -244608,12 +283956,17 @@
 					<integer>254</integer>
 					<key>Points</key>
 					<array>
-						<string>{151.00223394076463, 251.00418169323845}</string>
+						<string>{151.00223392984452, 251.00418169427306}</string>
 						<string>{45.500004768371582, 261}</string>
-						<string>{28.406161095011285, 297.30963579348719}</string>
+						<string>{28.406161089294638, 297.30963580563014}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -244646,12 +283999,17 @@
 					<integer>253</integer>
 					<key>Points</key>
 					<array>
-						<string>{151.13562824043845, 229.92662679281904}</string>
+						<string>{151.13562823655801, 229.92662678917273}</string>
 						<string>{113.50000476837158, 194.56211853027344}</string>
-						<string>{63.943611445692298, 171.12387115841165}</string>
+						<string>{63.943611449877018, 171.12387116039085}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -244684,12 +284042,17 @@
 					<integer>252</integer>
 					<key>Points</key>
 					<array>
-						<string>{151.06971898390285, 236.97044815269348}</string>
+						<string>{151.06971898174834, 236.97044815141831}</string>
 						<string>{105.50000476837158, 210}</string>
-						<string>{64.826330470617989, 201.95192997475627}</string>
+						<string>{64.826330455182742, 201.9519299717021}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -244722,12 +284085,17 @@
 					<integer>251</integer>
 					<key>Points</key>
 					<array>
-						<string>{151.00630917025688, 245.77655780810406}</string>
+						<string>{151.00630916580587, 245.77655780739047}</string>
 						<string>{102.50000476837158, 238}</string>
-						<string>{88.31417270610892, 224.17395007881339}</string>
+						<string>{88.314172695265015, 224.17395006824449}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -244760,12 +284128,17 @@
 					<integer>250</integer>
 					<key>Points</key>
 					<array>
-						<string>{151.00016136987861, 248.54895033672793}</string>
+						<string>{151.00016135487704, 248.54895033635239}</string>
 						<string>{89.123295783996497, 247}</string>
-						<string>{73.632381380647061, 244.82404296694423}</string>
+						<string>{73.63238136169295, 244.82404296428183}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -244798,12 +284171,17 @@
 					<integer>249</integer>
 					<key>Points</key>
 					<array>
-						<string>{151.03281876094164, 256.86675822397007}</string>
+						<string>{151.03281876211824, 256.8667582235214}</string>
 						<string>{82.500004768371582, 283}</string>
-						<string>{59.188891324327017, 277.81216142433925}</string>
+						<string>{59.188891325181814, 277.81216142452945}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -244836,12 +284214,17 @@
 					<integer>248</integer>
 					<key>Points</key>
 					<array>
-						<string>{151.09014211177472, 263.32285589930581}</string>
+						<string>{151.09014209719047, 263.32285590949613}</string>
 						<string>{93.500004768371582, 303.56211853027344}</string>
-						<string>{61.436448259670279, 307.57036390379375}</string>
+						<string>{61.43644823750148, 307.57036390656509}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -244874,12 +284257,17 @@
 					<integer>125</integer>
 					<key>Points</key>
 					<array>
-						<string>{151.13059648395313, 267.64193598263859}</string>
+						<string>{151.13059646831721, 267.64193599690077}</string>
 						<string>{102.50000476837158, 312}</string>
-						<string>{75.436643313172041, 326.63062052916405}</string>
+						<string>{75.4366433178471, 326.63062052663668}</string>
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -244912,8 +284300,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>276</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -244921,11 +284307,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -244937,10 +284323,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -244952,8 +284338,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>277</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -244961,11 +284345,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -244977,10 +284361,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k1}</string>
 							</dict>
@@ -245007,8 +284391,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>218</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -245030,17 +284412,17 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 map(vertex) -&gt; \
    [key,value]*}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -245054,8 +284436,6 @@
 					<integer>208</integer>
 					<key>Rotation</key>
 					<real>270</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -245063,11 +284443,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -245079,10 +284459,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 Map}</string>
 					</dict>
@@ -245117,11 +284497,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -245133,7 +284513,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -245161,11 +284541,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -245177,7 +284557,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -245205,11 +284585,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -245221,7 +284601,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -245249,11 +284629,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -245265,7 +284645,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -245293,11 +284673,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -245309,7 +284689,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -245337,11 +284717,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -245353,7 +284733,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -245381,11 +284761,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -245397,7 +284777,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -245425,11 +284805,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -245441,7 +284821,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -245469,11 +284849,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -245485,7 +284865,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -245500,11 +284880,16 @@
 							<integer>240</integer>
 							<key>Points</key>
 							<array>
-								<string>{54.789106383345057, 269.09617078391341}</string>
-								<string>{62.889216028702982, 250.79593280589071}</string>
+								<string>{54.789106385026201, 269.0961707801153}</string>
+								<string>{62.889216027021845, 250.79593280968885}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -245537,11 +284922,16 @@
 							<integer>241</integer>
 							<key>Points</key>
 							<array>
-								<string>{70.306576397257274, 237.3634909904828}</string>
-								<string>{78.499887007916385, 225.18885016341898}</string>
+								<string>{70.30657639580491, 237.36349099264092}</string>
+								<string>{78.499887009368777, 225.18885016126083}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -245574,11 +284964,16 @@
 							<integer>242</integer>
 							<key>Points</key>
 							<array>
-								<string>{76.545579506374054, 214.3056663634371}</string>
-								<string>{63.526097392988397, 204.95092511890738}</string>
+								<string>{76.545579504938601, 214.3056663624057}</string>
+								<string>{63.526097394423857, 204.95092511993877}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -245611,11 +285006,16 @@
 							<integer>243</integer>
 							<key>Points</key>
 							<array>
-								<string>{52.1755450156599, 283.8230186547911}</string>
-								<string>{53.291532912417964, 300.84177301814952}</string>
+								<string>{52.175545016558722, 283.82301866849804}</string>
+								<string>{53.291532911519141, 300.84177300444259}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -245648,11 +285048,16 @@
 							<integer>244</integer>
 							<key>Points</key>
 							<array>
-								<string>{46.177878146557077, 307.39704756248045}</string>
-								<string>{32.743023823713891, 305.40669876952762}</string>
+								<string>{46.177878135902979, 307.39704756090208}</string>
+								<string>{32.743023834367975, 305.40669877110599}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -245685,11 +285090,16 @@
 							<integer>245</integer>
 							<key>Points</key>
 							<array>
-								<string>{58.138735496832602, 314.88546644301078}</string>
-								<string>{64.317907586712124, 323.93353985681449}</string>
+								<string>{58.13873550182506, 314.88546645032119}</string>
+								<string>{64.317907581719666, 323.93353984950409}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -245722,11 +285132,16 @@
 							<integer>246</integer>
 							<key>Points</key>
 							<array>
-								<string>{52.308996511721503, 206.34520183446816}</string>
-								<string>{42.299607895309556, 218.22063214814463}</string>
+								<string>{52.308996526553138, 206.34520181687148}</string>
+								<string>{42.299607880477886, 218.22063216574134}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -245759,11 +285174,16 @@
 							<integer>247</integer>
 							<key>Points</key>
 							<array>
-								<string>{57.203191202586439, 192.75723215574877}</string>
-								<string>{57.049589072629054, 175.53069250872878}</string>
+								<string>{57.203191202609126, 192.75723215829291}</string>
+								<string>{57.049589072606373, 175.53069250618464}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -245820,6 +285240,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -245848,18 +285270,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -245876,7 +285293,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -245888,8 +285305,6 @@
 					<integer>6</integer>
 					<key>ImageID</key>
 					<integer>4</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -245918,8 +285333,6 @@
 					<integer>7</integer>
 					<key>ImageID</key>
 					<integer>10</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -245969,6 +285382,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -245997,18 +285412,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -246025,7 +285435,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -246048,8 +285458,6 @@
 					<integer>65</integer>
 					<key>Rotation</key>
 					<real>342.57366943359375</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -246071,16 +285479,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs30 \cf0 ?}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -246105,8 +285513,6 @@
 					<integer>64</integer>
 					<key>Rotation</key>
 					<real>22.399999618530273</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -246128,16 +285534,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs60 \cf0 ?}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -246162,8 +285568,6 @@
 					<integer>63</integer>
 					<key>Rotation</key>
 					<real>305.00875854492188</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -246185,16 +285589,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs40 \cf0 ?}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -246219,8 +285623,6 @@
 					<integer>62</integer>
 					<key>Rotation</key>
 					<real>32.118606567382812</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -246242,16 +285644,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs40 \cf0 ?}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -246265,8 +285667,6 @@
 					<integer>61</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -246316,6 +285716,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -246344,18 +285746,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -246372,7 +285769,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -246400,11 +285797,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.497307</string>
+								<real>0.497307</real>
 								<key>g</key>
-								<string>0.504555</string>
+								<real>0.50455499999999998</real>
 								<key>r</key>
-								<string>1</string>
+								<real>1</real>
 							</dict>
 							<key>FillType</key>
 							<integer>2</integer>
@@ -246427,18 +285824,16 @@
 							<key>Color</key>
 							<dict>
 								<key>a</key>
-								<string>0.4</string>
+								<real>0.40000000000000002</real>
 								<key>b</key>
-								<string>0</string>
+								<real>0.0</real>
 								<key>g</key>
-								<string>0</string>
+								<real>0.0</real>
 								<key>r</key>
-								<string>0</string>
+								<real>0.0</real>
 							</dict>
 							<key>Draws</key>
 							<string>NO</string>
-							<key>ShadowVector</key>
-							<string>{0, 2}</string>
 						</dict>
 					</dict>
 					<key>TextRelativeArea</key>
@@ -246463,11 +285858,16 @@
 							<integer>79</integer>
 							<key>Points</key>
 							<array>
-								<string>{405.69864757417952, 165.97247408110843}</string>
-								<string>{394.08105870560331, 172.40293577914642}</string>
+								<string>{405.69864757239264, 165.97247408209751}</string>
+								<string>{394.08105870739018, 172.40293577815734}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -246500,11 +285900,16 @@
 							<integer>80</integer>
 							<key>Points</key>
 							<array>
-								<string>{388.60168106176769, 152.33720459689303}</string>
-								<string>{384.71717110631295, 164.76862944276016}</string>
+								<string>{388.60168105908144, 152.3372046054898}</string>
+								<string>{384.7171711089992, 164.76862943416342}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -246537,11 +285942,16 @@
 							<integer>81</integer>
 							<key>Points</key>
 							<array>
-								<string>{368.82282682907442, 143.09949619558097}</string>
-								<string>{375.24676498099581, 164.70329059279419}</string>
+								<string>{368.82282683260252, 143.09949620744615}</string>
+								<string>{375.24676497746771, 164.70329058092901}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -246585,11 +285995,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -246601,7 +286011,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -246627,11 +286037,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -246643,7 +286053,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -246669,11 +286079,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -246685,7 +286095,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -246700,12 +286110,17 @@
 							<integer>85</integer>
 							<key>Points</key>
 							<array>
-								<string>{347.76258732326073, 159.21881791921035}</string>
+								<string>{347.76258732546523, 159.21881791895754}</string>
 								<string>{362.18783075259722, 157.56470514917262}</string>
-								<string>{369.89658896461492, 167.45927947916798}</string>
+								<string>{369.89658897047423, 167.4592794866887}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -246738,12 +286153,17 @@
 							<integer>86</integer>
 							<key>Points</key>
 							<array>
-								<string>{298.46970178468075, 141.54484130415236}</string>
+								<string>{298.46970177559757, 141.54484130719069}</string>
 								<string>{314.10257277974506, 136.31564294740369}</string>
-								<string>{327.40297019320775, 125.36605699655084}</string>
+								<string>{327.40297018479629, 125.36605700347556}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -246776,12 +286196,17 @@
 							<integer>87</integer>
 							<key>Points</key>
 							<array>
-								<string>{297.34623895520485, 149.07622723916617}</string>
+								<string>{297.34623896405731, 149.07622724547053}</string>
 								<string>{310.40655325005588, 158.37727001383948}</string>
-								<string>{331.04919810346013, 159.65600760516523}</string>
+								<string>{331.04919812028498, 159.65600760620748}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -246814,12 +286239,17 @@
 							<integer>88</integer>
 							<key>Points</key>
 							<array>
-								<string>{252.85029826534748, 130.56385983954925}</string>
+								<string>{252.85029827900388, 130.56385983862839}</string>
 								<string>{275.09945927573909, 129.06358584179256}</string>
-								<string>{284.52423993680276, 138.32549889885152}</string>
+								<string>{284.52423994893468, 138.32549891077377}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -246852,12 +286282,17 @@
 							<integer>89</integer>
 							<key>Points</key>
 							<array>
-								<string>{251.98538672275973, 127.37500028646649}</string>
+								<string>{251.9853867099657, 127.37500029286254}</string>
 								<string>{282.6178168599165, 112.06107272783255}</string>
-								<string>{324.84795345118982, 116.76780248368652}</string>
+								<string>{324.8479534576457, 116.76780248440606}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -246890,12 +286325,17 @@
 							<integer>90</integer>
 							<key>Points</key>
 							<array>
-								<string>{252.60314501659164, 133.22977818938116}</string>
+								<string>{252.60314502186145, 133.22977819074393}</string>
 								<string>{264.5361160350709, 136.31564294740372}</string>
-								<string>{264.85790179259692, 145.53792071959541}</string>
+								<string>{264.85790179252103, 145.53792071742055}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -246928,12 +286368,17 @@
 							<integer>91</integer>
 							<key>Points</key>
 							<array>
-								<string>{226.65821679731107, 164.48594801034579}</string>
+								<string>{226.65821679467467, 164.48594800266704}</string>
 								<string>{221.4920496130851, 149.4390565025048}</string>
-								<string>{210.0332300167631, 131.68583613680562}</string>
+								<string>{210.03323001630946, 131.68583613610281}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -246966,12 +286411,17 @@
 							<integer>92</integer>
 							<key>Points</key>
 							<array>
-								<string>{190.9401463810789, 130.60276137652272}</string>
+								<string>{190.94014638276983, 130.60276137445851}</string>
 								<string>{185.49444412688138, 137.25058353250293}</string>
-								<string>{186.72418337205951, 145.64815714504172}</string>
+								<string>{186.72418336866323, 145.64815712184935}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -247004,12 +286454,17 @@
 							<integer>93</integer>
 							<key>Points</key>
 							<array>
-								<string>{214.98441855796875, 126.66957230416246}</string>
+								<string>{214.98441854723674, 126.66957229743315}</string>
 								<string>{221.49204961308502, 130.75006461516861}</string>
-								<string>{236.08665256429674, 130.99032287283879}</string>
+								<string>{236.08665256064111, 130.99032287277862}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -247042,12 +286497,17 @@
 							<integer>94</integer>
 							<key>Points</key>
 							<array>
-								<string>{159.02520771307744, 137.56921560458667}</string>
+								<string>{159.02520771742081, 137.56921560152492}</string>
 								<string>{171.09115659839026, 129.06358584179253}</string>
-								<string>{185.97818483386339, 123.62006087876291}</string>
+								<string>{185.97818482198645, 123.62006088310578}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -247091,11 +286551,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -247107,7 +286567,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -247133,11 +286593,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -247149,7 +286609,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -247175,11 +286635,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -247191,7 +286651,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -247217,11 +286677,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -247233,7 +286693,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -247259,11 +286719,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -247275,7 +286735,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -247301,11 +286761,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -247317,7 +286777,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -247343,11 +286803,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -247359,7 +286819,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -247385,11 +286845,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -247401,7 +286861,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -247427,11 +286887,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -247443,7 +286903,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -247469,11 +286929,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -247485,7 +286945,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 					</array>
@@ -247501,8 +286961,6 @@
 					<integer>136</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -247531,8 +286989,6 @@
 					<integer>137</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -247561,8 +287017,6 @@
 					<integer>138</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -247591,8 +287045,6 @@
 					<integer>139</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -247621,8 +287073,6 @@
 					<integer>141</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -247651,8 +287101,6 @@
 					<integer>142</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -247681,8 +287129,6 @@
 					<integer>143</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -247711,8 +287157,6 @@
 					<integer>144</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -247741,8 +287185,6 @@
 					<integer>146</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -247771,8 +287213,6 @@
 					<integer>147</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -247801,8 +287241,6 @@
 					<integer>148</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -247831,8 +287269,6 @@
 					<integer>149</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -247861,8 +287297,6 @@
 					<integer>151</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -247891,8 +287325,6 @@
 					<integer>152</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -247921,8 +287353,6 @@
 					<integer>153</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -247951,8 +287381,6 @@
 					<integer>154</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -248002,6 +287430,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -248030,18 +287460,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -248058,7 +287483,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -248070,8 +287495,6 @@
 					<integer>3</integer>
 					<key>ImageID</key>
 					<integer>83</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -248100,8 +287523,6 @@
 					<integer>5</integer>
 					<key>ImageID</key>
 					<integer>13</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -248151,6 +287572,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -248179,18 +287602,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -248207,7 +287625,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -248219,8 +287637,6 @@
 					<integer>6</integer>
 					<key>ImageID</key>
 					<integer>84</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -248249,8 +287665,6 @@
 					<integer>3</integer>
 					<key>ImageID</key>
 					<integer>83</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -248300,6 +287714,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -248328,18 +287744,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -248356,7 +287767,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -248368,8 +287779,6 @@
 					<integer>10</integer>
 					<key>ImageID</key>
 					<integer>19</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -248398,8 +287807,6 @@
 					<integer>9</integer>
 					<key>ImageID</key>
 					<integer>18</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -248428,8 +287835,6 @@
 					<integer>6</integer>
 					<key>ImageID</key>
 					<integer>4</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -248479,6 +287884,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -248507,18 +287914,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -248535,7 +287937,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -248547,8 +287949,6 @@
 					<integer>7</integer>
 					<key>ImageID</key>
 					<integer>21</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -248577,8 +287977,6 @@
 					<integer>6</integer>
 					<key>ImageID</key>
 					<integer>4</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -248628,6 +288026,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -248656,18 +288056,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -248684,7 +288079,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -248696,8 +288091,6 @@
 					<integer>6</integer>
 					<key>ImageID</key>
 					<integer>4</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -248726,8 +288119,6 @@
 					<integer>3</integer>
 					<key>ImageID</key>
 					<integer>22</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -248777,6 +288168,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -248805,18 +288198,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -248833,7 +288221,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -248847,8 +288235,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>70</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -248870,16 +288256,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 vadas}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -248895,8 +288281,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>69</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -248918,16 +288302,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 ripple}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -248943,8 +288327,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>68</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -248966,16 +288348,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 vadas}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -248991,8 +288373,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>67</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -249014,16 +288394,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 ripple}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -249039,8 +288419,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>66</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -249062,16 +288440,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 peter}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -249087,8 +288465,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>65</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -249110,16 +288486,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 marko}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -249135,8 +288511,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>64</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -249158,16 +288532,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 lop}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -249183,8 +288557,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>63</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -249206,16 +288578,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 josh}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -249234,8 +288606,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>44</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -249243,11 +288613,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -249264,10 +288634,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 tail(2)}</string>
 					</dict>
@@ -249286,8 +288656,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>43</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -249295,11 +288663,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -249316,10 +288684,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 order}</string>
 					</dict>
@@ -249338,8 +288706,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>42</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -249347,11 +288713,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.193398</string>
+								<real>0.19339799999999999</real>
 								<key>g</key>
-								<string>0.644468</string>
+								<real>0.64446800000000004</real>
 								<key>r</key>
-								<string>0.20576</string>
+								<real>0.20576</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -249363,14 +288729,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 g}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -249387,8 +288753,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>41</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -249396,11 +288760,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -249417,10 +288781,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 V}</string>
 					</dict>
@@ -249448,11 +288812,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -249464,14 +288828,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -249497,11 +288861,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -249513,14 +288877,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 6}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -249546,11 +288910,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -249562,14 +288926,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 5}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -249595,11 +288959,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -249611,14 +288975,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 4}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -249644,11 +289008,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -249660,14 +289024,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -249693,11 +289057,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -249709,14 +289073,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -249733,8 +289097,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>4</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -249742,11 +289104,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.0977346</string>
+								<real>0.097734600000000005</real>
 								<key>g</key>
-								<string>0.111535</string>
+								<real>0.111535</real>
 								<key>r</key>
-								<string>0.923499</string>
+								<real>0.92349899999999996</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -249763,10 +289125,10 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf1 values\
 ('name')}</string>
@@ -249802,6 +289164,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -249830,18 +289194,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -249858,7 +289217,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -249870,8 +289229,6 @@
 					<integer>6</integer>
 					<key>ImageID</key>
 					<integer>4</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -249900,8 +289257,6 @@
 					<integer>5</integer>
 					<key>ImageID</key>
 					<integer>25</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -249951,6 +289306,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -249979,18 +289336,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -250007,7 +289359,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -250019,8 +289371,6 @@
 					<integer>6</integer>
 					<key>ImageID</key>
 					<integer>4</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -250049,8 +289399,6 @@
 					<integer>3</integer>
 					<key>ImageID</key>
 					<integer>26</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -250100,6 +289448,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -250128,18 +289478,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -250156,7 +289501,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -250173,8 +289518,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>831</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -250196,16 +289539,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs36 \cf0 Graph Computing}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -250217,8 +289560,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>830</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -250240,16 +289581,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs36 \cf0 Traversal}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -250261,8 +289602,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>829</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -250284,16 +289623,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs36 \cf0 Process}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -250305,8 +289644,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>828</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -250328,16 +289665,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs36 \cf0 Graph}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -250349,8 +289686,6 @@
 					<string>ShapedGraphic</string>
 					<key>ID</key>
 					<integer>827</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -250372,16 +289707,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs36 \cf0 Structure}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -250403,11 +289738,16 @@
 							<integer>833</integer>
 							<key>Points</key>
 							<array>
-								<string>{105.52240409361316, 208.31001881240203}</string>
-								<string>{105.63736161242055, 212.65601058435291}</string>
+								<string>{105.52240409321587, 208.31001879736655}</string>
+								<string>{105.63736161281898, 212.6560105993884}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250436,11 +289776,16 @@
 							<integer>834</integer>
 							<key>Points</key>
 							<array>
-								<string>{93.331422242694501, 215.70135517181905}</string>
-								<string>{98.654531776563246, 217.66213773229535}</string>
+								<string>{93.331422238974127, 215.70135517044864}</string>
+								<string>{98.654531780283634, 217.66213773366576}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250469,11 +289814,16 @@
 							<integer>835</integer>
 							<key>Points</key>
 							<array>
-								<string>{89.348688700426464, 217.22528966551005}</string>
-								<string>{84.798174407162321, 225.81886031850792}</string>
+								<string>{89.348688697542883, 217.22528967095565}</string>
+								<string>{84.798174410045917, 225.81886031306229}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250502,11 +289852,16 @@
 							<integer>836</integer>
 							<key>Points</key>
 							<array>
-								<string>{100.21217967313551, 238.89697600430412}</string>
-								<string>{105.91488367655015, 245.27828248891961}</string>
+								<string>{100.21217966941224, 238.89697600013778}</string>
+								<string>{105.91488368027343, 245.27828249308595}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250535,11 +289890,16 @@
 							<integer>837</integer>
 							<key>Points</key>
 							<array>
-								<string>{120.05186740422218, 243.60060619627356}</string>
-								<string>{113.08566765692271, 246.78076123895377}</string>
+								<string>{120.05186739680587, 243.60060619965918}</string>
+								<string>{113.085667664339, 246.78076123556815}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250568,11 +289928,16 @@
 							<integer>838</integer>
 							<key>Points</key>
 							<array>
-								<string>{130.57075904659945, 262.18129383349924}</string>
-								<string>{125.06911274671754, 263.81727596315477}</string>
+								<string>{130.57075905505809, 262.18129383098398}</string>
+								<string>{125.06911273825885, 263.81727596567009}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250601,11 +289966,16 @@
 							<integer>839</integer>
 							<key>Points</key>
 							<array>
-								<string>{116.15985324700758, 260.4089717173502}</string>
-								<string>{111.32857272869629, 252.54707492579612}</string>
+								<string>{116.15985323871107, 260.40897170384937}</string>
+								<string>{111.32857273699277, 252.54707493929692}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250634,11 +290004,16 @@
 							<integer>840</integer>
 							<key>Points</key>
 							<array>
-								<string>{107.28622204221787, 264.95973627295768}</string>
-								<string>{108.48506035797375, 253.1963134696845}</string>
+								<string>{107.28622204215806, 264.95973627354476}</string>
+								<string>{108.48506035803358, 253.19631346909748}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250667,11 +290042,16 @@
 							<integer>841</integer>
 							<key>Points</key>
 							<array>
-								<string>{108.63067853348943, 291.16607222356316}</string>
-								<string>{114.28915500094216, 297.78906313757631}</string>
+								<string>{108.63067852252696, 291.16607221073207}</string>
+								<string>{114.2891550119046, 297.78906315040729}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250700,11 +290080,16 @@
 							<integer>842</integer>
 							<key>Points</key>
 							<array>
-								<string>{118.22300918810882, 298.03660840707073}</string>
-								<string>{123.6776500400742, 293.07492070766159}</string>
+								<string>{118.22300919536168, 298.03660840047337}</string>
+								<string>{123.6776500328213, 293.07492071425901}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250733,11 +290118,16 @@
 							<integer>843</integer>
 							<key>Points</key>
 							<array>
-								<string>{105.45810336835565, 280.63059710464751}</string>
-								<string>{106.27117009295827, 274.00116179967671}</string>
+								<string>{105.45810336971471, 280.63059709356634}</string>
+								<string>{106.27117009159922, 274.00116181075788}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250766,11 +290156,16 @@
 							<integer>844</integer>
 							<key>Points</key>
 							<array>
-								<string>{102.04876075036044, 226.96183305565646}</string>
-								<string>{99.433513363615972, 231.55140533749224}</string>
+								<string>{102.04876075892102, 226.96183304063319}</string>
+								<string>{99.433513355055382, 231.55140535251545}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250799,11 +290194,16 @@
 							<integer>845</integer>
 							<key>Points</key>
 							<array>
-								<string>{93.502859594885948, 287.07465081581256}</string>
-								<string>{98.721662339029294, 286.85223980358495}</string>
+								<string>{93.502859591289905, 287.07465081596581}</string>
+								<string>{98.721662342625336, 286.8522398034317}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250832,11 +290232,16 @@
 							<integer>846</integer>
 							<key>Points</key>
 							<array>
-								<string>{159.43731416862957, 205.84687674394203}</string>
-								<string>{162.35514899886314, 208.6737126240948}</string>
+								<string>{159.43731418268521, 205.84687675755896}</string>
+								<string>{162.35514898480801, 208.67371261047739}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250865,11 +290270,16 @@
 							<integer>847</integer>
 							<key>Points</key>
 							<array>
-								<string>{161.23890209573509, 213.05815791220184}</string>
-								<string>{155.15923175171042, 214.74885405047957}</string>
+								<string>{161.23890208092334, 213.05815791632082}</string>
+								<string>{155.15923176652217, 214.74885404636058}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250898,11 +290308,16 @@
 							<integer>848</integer>
 							<key>Points</key>
 							<array>
-								<string>{162.5624399101157, 222.6347696236295}</string>
-								<string>{166.19630038835629, 223.00523642784489}</string>
+								<string>{162.56243993638469, 222.63476962630639}</string>
+								<string>{166.1963003620877, 223.00523642516413}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250931,11 +290346,16 @@
 							<integer>849</integer>
 							<key>Points</key>
 							<array>
-								<string>{168.79919056743856, 215.0954551468914}</string>
-								<string>{169.61182075363672, 215.92844743536739}</string>
+								<string>{168.79944895897083, 215.09520294321348}</string>
+								<string>{169.6121452036017, 215.9281306749767}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250964,11 +290384,16 @@
 							<integer>850</integer>
 							<key>Points</key>
 							<array>
-								<string>{183.94269173525171, 233.83120326204516}</string>
-								<string>{184.80199891233451, 235.15158883748467}</string>
+								<string>{183.94269246576246, 233.83120278958864}</string>
+								<string>{184.80199973880337, 235.15158829441279}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -250997,11 +290422,16 @@
 							<integer>851</integer>
 							<key>Points</key>
 							<array>
-								<string>{175.24913559041286, 235.44080864487958}</string>
-								<string>{174.40161678854889, 239.40563624975908}</string>
+								<string>{175.24913558581898, 235.44080866626655}</string>
+								<string>{174.40161679309276, 239.40563622836146}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -251030,11 +290460,16 @@
 							<integer>852</integer>
 							<key>Points</key>
 							<array>
-								<string>{173.92627550041155, 248.37919269658443}</string>
-								<string>{174.71179922360042, 255.85018463416199}</string>
+								<string>{173.926275500071, 248.37919269334552}</string>
+								<string>{174.711799223941, 255.8501846374009}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -251067,11 +290502,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -251083,7 +290518,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -251102,11 +290537,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -251118,7 +290553,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -251137,11 +290572,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -251153,7 +290588,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -251172,11 +290607,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -251188,7 +290623,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -251207,11 +290642,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -251223,7 +290658,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -251242,11 +290677,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -251258,7 +290693,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -251277,11 +290712,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -251293,7 +290728,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -251312,11 +290747,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -251328,7 +290763,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -251347,11 +290782,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -251363,7 +290798,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -251382,11 +290817,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -251398,7 +290833,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -251417,11 +290852,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -251433,7 +290868,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -251452,11 +290887,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -251468,7 +290903,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -251483,11 +290918,16 @@
 							<integer>865</integer>
 							<key>Points</key>
 							<array>
-								<string>{162.31406161317949, 239.75189222681848}</string>
-								<string>{170.48263333262159, 257.03200725594496}</string>
+								<string>{162.31406161528167, 239.75189223126554}</string>
+								<string>{170.48263333051943, 257.03200725149793}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -251516,11 +290956,16 @@
 							<integer>866</integer>
 							<key>Points</key>
 							<array>
-								<string>{144.52797164665404, 248.24179528128346}</string>
-								<string>{148.15908400192515, 252.00479432243625}</string>
+								<string>{144.5279716549999, 248.24179528774479}</string>
+								<string>{148.15908399613937, 252.00479431350283}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -251549,11 +290994,16 @@
 							<integer>867</integer>
 							<key>Points</key>
 							<array>
-								<string>{153.47501853757873, 265.16923519721695}</string>
-								<string>{153.47510726500852, 274.70012851650972}</string>
+								<string>{153.47501853757873, 265.16923519753698}</string>
+								<string>{153.47510726500852, 274.70012851618969}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -251582,11 +291032,16 @@
 							<integer>868</integer>
 							<key>Points</key>
 							<array>
-								<string>{151.67980343039056, 286.44727021077591}</string>
-								<string>{149.25206386858673, 294.20494474683733}</string>
+								<string>{151.67980343810089, 286.44727018613804}</string>
+								<string>{149.2520638608764, 294.2049447714752}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -251619,11 +291074,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -251635,7 +291090,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -251654,11 +291109,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -251670,7 +291125,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -251689,11 +291144,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -251705,7 +291160,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -251720,11 +291175,16 @@
 							<integer>872</integer>
 							<key>Points</key>
 							<array>
-								<string>{158.30376898074871, 284.2902305765038}</string>
-								<string>{162.57830147899296, 287.459351776152}</string>
+								<string>{158.30376896598298, 284.29023056555633}</string>
+								<string>{162.57830149375891, 287.45935178709908}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -251753,11 +291213,16 @@
 							<integer>873</integer>
 							<key>Points</key>
 							<array>
-								<string>{172.11503505290446, 281.36040626058775}</string>
-								<string>{171.04716239363322, 284.72172116521386}</string>
+								<string>{172.11503495303336, 281.3604062356178}</string>
+								<string>{171.0471622712405, 284.72172111977449}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -251786,11 +291251,16 @@
 							<integer>874</integer>
 							<key>Points</key>
 							<array>
-								<string>{182.74522983438803, 257.59735872074276}</string>
-								<string>{184.0984836118223, 255.30702386189125}</string>
+								<string>{182.74522983864145, 257.597358713544}</string>
+								<string>{184.09848360756891, 255.30702386908999}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -251819,11 +291289,16 @@
 							<integer>875</integer>
 							<key>Points</key>
 							<array>
-								<string>{143.63683094626617, 202.97384789964963}</string>
-								<string>{149.14894736757006, 202.34555355068343}</string>
+								<string>{143.63683094266807, 202.97384790003503}</string>
+								<string>{149.14894737116143, 202.34555355023886}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -251852,11 +291327,16 @@
 							<integer>876</integer>
 							<key>Points</key>
 							<array>
-								<string>{112.29024510425995, 216.1831525479036}</string>
-								<string>{119.58822618553185, 211.51538169680956}</string>
+								<string>{112.29024510214143, 216.18315254925858}</string>
+								<string>{119.58822618765033, 211.51538169545452}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -251885,11 +291365,16 @@
 							<integer>877</integer>
 							<key>Points</key>
 							<array>
-								<string>{120.86900147853966, 229.37865251401607}</string>
-								<string>{112.39567536116954, 224.26518328159329}</string>
+								<string>{120.8690014852117, 229.37865251804249}</string>
+								<string>{112.39567535449753, 224.26518327756685}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -251918,11 +291403,16 @@
 							<integer>878</integer>
 							<key>Points</key>
 							<array>
-								<string>{82.683863250174014, 237.10127510206226}</string>
-								<string>{83.628230269378221, 245.16711254540365}</string>
+								<string>{82.683863249606858, 237.10127509721815}</string>
+								<string>{83.628230269945391, 245.16711255024777}</string>
 							</array>
 							<key>Style</key>
 							<dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
 								<key>stroke</key>
 								<dict>
 									<key>HeadArrow</key>
@@ -251955,11 +291445,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -251971,7 +291461,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -251990,11 +291480,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -252006,7 +291496,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -252025,11 +291515,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -252041,7 +291531,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -252060,11 +291550,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -252076,7 +291566,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -252095,11 +291585,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -252111,7 +291601,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -252130,11 +291620,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -252146,7 +291636,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -252165,11 +291655,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -252181,7 +291671,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -252200,11 +291690,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -252216,7 +291706,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -252235,11 +291725,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -252251,7 +291741,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -252270,11 +291760,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -252286,7 +291776,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -252305,11 +291795,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -252321,7 +291811,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -252340,11 +291830,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -252356,7 +291846,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -252375,11 +291865,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -252391,7 +291881,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -252410,11 +291900,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -252426,7 +291916,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -252445,11 +291935,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -252461,7 +291951,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -252480,11 +291970,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.994293</string>
+										<real>0.99429299999999998</real>
 										<key>g</key>
-										<string>0.853217</string>
+										<real>0.853217</real>
 										<key>r</key>
-										<string>0.622309</string>
+										<real>0.622309</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -252496,7 +291986,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 						<dict>
@@ -252524,7 +292014,7 @@
 							<key>Text</key>
 							<dict>
 								<key>VerticalPad</key>
-								<integer>0</integer>
+								<real>0.0</real>
 							</dict>
 						</dict>
 					</array>
@@ -252545,8 +292035,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>764</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -252568,16 +292056,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fnil\fcharset0 Syncopate-Regular;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs110 \cf0 +}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -252591,8 +292079,6 @@
 					<integer>61</integer>
 					<key>ImageID</key>
 					<integer>8</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -252642,6 +292128,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -252670,18 +292158,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {1152.0000286102295, 733}}</string>
+				<string>{{0, 0}, {1151.9999809265137, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -252698,7 +292181,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -252719,8 +292202,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>312</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -252742,16 +292223,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 terminate}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -252768,6 +292249,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -252808,8 +292294,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>309</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -252831,16 +292315,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red117\green15\blue13;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf2 cached}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -252856,8 +292340,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>308</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -252879,16 +292361,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 properties}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -252904,8 +292386,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>307</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -252927,16 +292407,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 properties}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -252952,8 +292432,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>306</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -252975,16 +292453,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 properties}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -253000,8 +292478,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>305</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -253023,16 +292499,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 properties}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -253055,8 +292531,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>303</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -253078,16 +292552,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier-Bold;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier-Bold;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf0 mapReduceRDD}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -253110,8 +292584,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>302</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -253133,16 +292605,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 foreach(mapReduce)}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -253174,8 +292646,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>300</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -253197,16 +292667,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red117\green15\blue13;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf2 reduce}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -253223,8 +292693,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>298</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -253232,11 +292700,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -253248,10 +292716,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -253263,8 +292731,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>299</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -253272,11 +292738,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -253288,10 +292754,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k5}</string>
 							</dict>
@@ -253312,8 +292778,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>295</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -253321,11 +292785,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -253337,10 +292801,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -253352,8 +292816,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>296</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -253361,11 +292823,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -253377,10 +292839,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k4}</string>
 							</dict>
@@ -253401,8 +292863,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>292</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -253410,11 +292870,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -253426,10 +292886,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -253441,8 +292901,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>293</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -253450,11 +292908,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -253466,10 +292924,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k3}</string>
 							</dict>
@@ -253487,8 +292945,6 @@
 					<integer>26</integer>
 					<key>Rotation</key>
 					<real>90.182708740234375</real>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -253666,21 +293122,8 @@
 						</dict>
 						<key>shadow</key>
 						<dict>
-							<key>Color</key>
-							<dict>
-								<key>a</key>
-								<string>0.5</string>
-								<key>b</key>
-								<string>0</string>
-								<key>g</key>
-								<string>0</string>
-								<key>r</key>
-								<string>0</string>
-							</dict>
 							<key>Draws</key>
 							<string>NO</string>
-							<key>ShadowVector</key>
-							<string>{0, 2}</string>
 						</dict>
 						<key>stroke</key>
 						<dict>
@@ -253705,8 +293148,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>289</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -253714,11 +293155,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -253730,10 +293171,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -253745,8 +293186,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>290</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -253754,11 +293193,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -253770,10 +293209,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k2}</string>
 							</dict>
@@ -253794,8 +293233,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>285</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -253803,11 +293240,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -253819,10 +293256,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -253834,8 +293271,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>286</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -253843,11 +293278,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -253859,10 +293294,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -253874,8 +293309,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>287</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -253883,11 +293316,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -253899,10 +293332,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k1}</string>
 							</dict>
@@ -253923,8 +293356,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>282</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -253932,11 +293363,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -253948,10 +293379,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -253963,8 +293394,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>283</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -253972,11 +293401,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -253988,10 +293417,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k1}</string>
 							</dict>
@@ -254012,8 +293441,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>279</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -254021,11 +293448,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -254037,10 +293464,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -254052,8 +293479,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>280</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -254061,11 +293486,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -254077,10 +293502,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k2}</string>
 							</dict>
@@ -254101,8 +293526,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>276</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -254110,11 +293533,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -254126,10 +293549,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 v}</string>
 							</dict>
@@ -254141,8 +293564,6 @@
 							<string>ShapedGraphic</string>
 							<key>ID</key>
 							<integer>277</integer>
-							<key>Shape</key>
-							<string>Rectangle</string>
 							<key>Style</key>
 							<dict>
 								<key>fill</key>
@@ -254150,11 +293571,11 @@
 									<key>Color</key>
 									<dict>
 										<key>b</key>
-										<string>0.193398</string>
+										<real>0.19339799999999999</real>
 										<key>g</key>
-										<string>0.644468</string>
+										<real>0.64446800000000004</real>
 										<key>r</key>
-										<string>0.20576</string>
+										<real>0.20576</real>
 									</dict>
 								</dict>
 								<key>shadow</key>
@@ -254166,10 +293587,10 @@
 							<key>Text</key>
 							<dict>
 								<key>Text</key>
-								<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k1}</string>
 							</dict>
@@ -254205,8 +293626,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>215</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -254228,16 +293647,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red117\green15\blue13;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf2 map}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -254253,8 +293672,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>213</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -254276,16 +293693,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 propertyX}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -254301,8 +293718,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>212</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -254324,16 +293739,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 propertyX}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -254361,11 +293776,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -254377,14 +293792,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 n}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -254405,8 +293820,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>210</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -254428,16 +293841,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs26 \cf0 ...}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -254465,11 +293878,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -254481,14 +293894,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -254514,11 +293927,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -254530,14 +293943,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -254563,11 +293976,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -254579,14 +293992,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -254600,8 +294013,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>206</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -254623,16 +294034,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 propertyX}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -254648,8 +294059,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>205</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -254671,16 +294080,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 propertyX}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -254703,8 +294112,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>204</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -254726,16 +294133,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 !terminate}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -254758,8 +294165,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>203</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -254781,17 +294186,17 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 vertex \
 program}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -254823,8 +294228,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>202</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -254846,16 +294249,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red117\green15\blue13;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf2 join}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -254874,6 +294277,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -254919,8 +294327,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>201</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -254942,16 +294348,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red117\green15\blue13;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf2 reduce}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -254983,8 +294389,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>200</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -255006,16 +294410,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;\red117\green15\blue13;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf2 cached}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -255029,8 +294433,6 @@
 					<integer>79</integer>
 					<key>ImageID</key>
 					<integer>11</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -255068,8 +294470,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>199</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -255091,16 +294491,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier-Bold;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier-Bold;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf0 viewIncomingRDD}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -255123,8 +294523,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>198</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -255146,16 +294544,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier-Bold;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier-Bold;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf0 viewOutgoingRDD}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -255171,8 +294569,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>197</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -255194,16 +294590,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 properties}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -255219,8 +294615,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>196</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -255242,16 +294636,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 properties}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -255267,8 +294661,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>195</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -255290,16 +294682,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 properties}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -255315,8 +294707,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>194</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -255338,16 +294728,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 properties}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -255375,11 +294765,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -255391,14 +294781,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -255424,11 +294814,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -255440,14 +294830,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -255473,11 +294863,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -255489,14 +294879,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -255522,11 +294912,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -255538,14 +294928,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -255571,11 +294961,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -255587,14 +294977,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -255620,11 +295010,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -255636,14 +295026,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -255669,11 +295059,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -255685,14 +295075,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -255706,8 +295096,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>186</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -255729,16 +295117,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 propertyX}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -255754,8 +295142,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>185</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -255777,16 +295163,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 propertyX}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -255802,8 +295188,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>184</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -255825,16 +295209,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 propertyX}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -255850,8 +295234,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>183</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -255873,16 +295255,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 propertyX}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -255901,8 +295283,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>171</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -255910,11 +295290,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -255926,14 +295306,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -255950,8 +295330,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>170</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -255959,11 +295337,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -255975,14 +295353,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -255999,8 +295377,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>169</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -256008,11 +295384,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -256024,14 +295400,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -256048,8 +295424,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>168</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -256057,11 +295431,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -256073,14 +295447,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -256097,8 +295471,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>167</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -256106,11 +295478,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -256122,14 +295494,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -256146,8 +295518,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>166</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -256155,11 +295525,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -256171,14 +295541,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -256195,8 +295565,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>165</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -256204,11 +295572,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.537896</string>
+								<real>0.53789600000000004</real>
 								<key>g</key>
-								<string>0.412132</string>
+								<real>0.412132</real>
 								<key>r</key>
-								<string>0.506264</string>
+								<real>0.50626400000000005</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -256220,14 +295588,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -256253,11 +295621,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -256269,14 +295637,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 n}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -256297,8 +295665,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>161</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -256320,16 +295686,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs26 \cf0 ...}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -256357,11 +295723,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -256373,14 +295739,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -256406,11 +295772,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -256422,14 +295788,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -256455,11 +295821,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -256471,14 +295837,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -256492,8 +295858,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>155</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -256515,16 +295879,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 propertyX}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -256540,8 +295904,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>154</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -256563,16 +295925,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 propertyX}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -256600,11 +295962,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -256616,14 +295978,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 n}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -256644,8 +296006,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>129</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -256667,16 +296027,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs26 \cf0 ...}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -256704,11 +296064,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -256720,14 +296080,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -256753,11 +296113,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -256769,14 +296129,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -256802,11 +296162,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -256818,14 +296178,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -256839,8 +296199,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>125</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -256862,16 +296220,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 propertyX}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -256887,8 +296245,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>121</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -256910,16 +296266,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 propertyX}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -256942,8 +296298,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>118</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -256965,16 +296319,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fmodern\fcharset0 Courier-Bold;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fmodern\fcharset0 Courier-Bold;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf0 graphRDD}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -256991,6 +296345,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -257020,6 +296379,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -257049,6 +296413,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -257078,6 +296447,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -257107,6 +296481,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -257136,6 +296515,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -257165,6 +296549,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -257194,6 +296583,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -257223,6 +296617,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -257263,11 +296662,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -257279,14 +296678,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 n}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -257307,8 +296706,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>107</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -257330,16 +296727,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs26 \cf0 ...}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -257367,11 +296764,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -257383,14 +296780,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -257416,11 +296813,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -257432,14 +296829,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -257465,11 +296862,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -257481,14 +296878,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 			</array>
@@ -257521,6 +296918,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -257549,18 +296948,13 @@
 			<key>BackgroundGraphic</key>
 			<dict>
 				<key>Bounds</key>
-				<string>{{0, 0}, {576.00001430511475, 733}}</string>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
 				<key>Class</key>
 				<string>SolidGraphic</string>
 				<key>ID</key>
 				<integer>2</integer>
 				<key>Style</key>
 				<dict>
-					<key>shadow</key>
-					<dict>
-						<key>Draws</key>
-						<string>NO</string>
-					</dict>
 					<key>stroke</key>
 					<dict>
 						<key>Draws</key>
@@ -257577,7 +296971,7 @@
 			<key>ColumnSpacing</key>
 			<real>36</real>
 			<key>DisplayScale</key>
-			<string>1 0/72 in = 1.0000 in</string>
+			<string>1 in = 1.00000 in</string>
 			<key>GraphicsList</key>
 			<array>
 				<dict>
@@ -257598,8 +296992,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>213</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -257621,17 +297013,17 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf0 outoing\
 edges}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -257654,8 +297046,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>212</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -257677,17 +297067,17 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf0 incoming\
 edges}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -257710,8 +297100,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>211</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -257733,16 +297121,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf0 vertex}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -257765,8 +297153,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>210</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -257788,16 +297174,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs24 \cf0 properties}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -257813,8 +297199,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>209</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -257836,16 +297220,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k/v}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -257861,8 +297245,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>208</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -257884,16 +297266,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k/v,k/v,k/v}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -257909,8 +297291,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>207</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -257932,16 +297312,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k/v,k/v}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -257958,6 +297338,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -257987,6 +297372,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -258016,6 +297406,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -258045,6 +297440,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -258074,6 +297474,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -258103,6 +297508,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -258132,6 +297542,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -258161,6 +297576,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -258189,8 +297609,6 @@
 					<string>Resize</string>
 					<key>ID</key>
 					<integer>194</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -258212,16 +297630,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 k/v,k/v,k/v}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -258238,6 +297656,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -258269,6 +297692,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -258300,6 +297728,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -258331,6 +297764,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -258362,6 +297800,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -258393,6 +297836,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -258424,6 +297872,11 @@
 					</array>
 					<key>Style</key>
 					<dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
 						<key>stroke</key>
 						<dict>
 							<key>HeadArrow</key>
@@ -258466,11 +297919,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -258482,14 +297935,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 n}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -258510,8 +297963,6 @@
 					</dict>
 					<key>ID</key>
 					<integer>107</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
 					<key>Style</key>
 					<dict>
 						<key>fill</key>
@@ -258533,16 +297984,16 @@
 					<key>Text</key>
 					<dict>
 						<key>Pad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\b\fs26 \cf0 ...}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 					<key>Wrap</key>
 					<string>NO</string>
@@ -258570,11 +298021,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -258586,14 +298037,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 3}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -258619,11 +298070,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -258635,14 +298086,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 2}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 				<dict>
@@ -258668,11 +298119,11 @@
 							<key>Color</key>
 							<dict>
 								<key>b</key>
-								<string>0.994293</string>
+								<real>0.99429299999999998</real>
 								<key>g</key>
-								<string>0.853217</string>
+								<real>0.853217</real>
 								<key>r</key>
-								<string>0.622309</string>
+								<real>0.622309</real>
 							</dict>
 						</dict>
 						<key>shadow</key>
@@ -258684,14 +298135,14 @@
 					<key>Text</key>
 					<dict>
 						<key>Text</key>
-						<string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
-\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
 {\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
 
 \f0\fs24 \cf0 1}</string>
 						<key>VerticalPad</key>
-						<integer>0</integer>
+						<real>0.0</real>
 					</dict>
 				</dict>
 			</array>
@@ -258724,6 +298175,8 @@
 				<real>0.0</real>
 				<key>layoutEngine</key>
 				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
 				<key>neatoSeparation</key>
 				<real>0.0</real>
 				<key>twopiSeparation</key>
@@ -258744,6 +298197,262 @@
 			<key>VPages</key>
 			<integer>1</integer>
 		</dict>
+		<dict>
+			<key>ActiveLayerIndex</key>
+			<integer>0</integer>
+			<key>AutoAdjust</key>
+			<true/>
+			<key>BackgroundGraphic</key>
+			<dict>
+				<key>Bounds</key>
+				<string>{{0, 0}, {575.99999046325684, 733}}</string>
+				<key>Class</key>
+				<string>SolidGraphic</string>
+				<key>ID</key>
+				<integer>2</integer>
+				<key>Style</key>
+				<dict>
+					<key>stroke</key>
+					<dict>
+						<key>Draws</key>
+						<string>NO</string>
+					</dict>
+				</dict>
+			</dict>
+			<key>BaseZoom</key>
+			<integer>0</integer>
+			<key>CanvasOrigin</key>
+			<string>{0, 0}</string>
+			<key>ColumnAlign</key>
+			<integer>1</integer>
+			<key>ColumnSpacing</key>
+			<real>36</real>
+			<key>DisplayScale</key>
+			<string>1 in = 1.00000 in</string>
+			<key>GraphicsList</key>
+			<array>
+				<dict>
+					<key>Bounds</key>
+					<string>{{342.01293840843488, 341.87558753813164}, {54.771833212059278, 58.153286475193759}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>ID</key>
+					<integer>63</integer>
+					<key>ImageID</key>
+					<integer>8</integer>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{262.33272840392067, 237.59999468922612}, {79.680210004514279, 84.599433815845202}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>HFlip</key>
+					<string>YES</string>
+					<key>ID</key>
+					<integer>62</integer>
+					<key>ImageID</key>
+					<integer>8</integer>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{94.319997891783729, 246.07768516474681}, {49.770917066876372, 52.843628350309011}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>ID</key>
+					<integer>61</integer>
+					<key>ImageID</key>
+					<integer>8</integer>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{342.01293840843493, 280.83621611438195}, {94.761745467797468, 94.761745467797482}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>ID</key>
+					<integer>5</integer>
+					<key>ImageID</key>
+					<integer>120</integer>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{222.55977248469554, 280.83621611438195}, {94.761745467797468, 94.761745467797482}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>ID</key>
+					<integer>4</integer>
+					<key>ImageID</key>
+					<integer>120</integer>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{103.10660656095615, 280.83621611438195}, {94.761745467797468, 94.761745467797482}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>ID</key>
+					<integer>3</integer>
+					<key>ImageID</key>
+					<integer>120</integer>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+				</dict>
+			</array>
+			<key>GridInfo</key>
+			<dict/>
+			<key>HPages</key>
+			<integer>1</integer>
+			<key>KeepToScale</key>
+			<false/>
+			<key>Layers</key>
+			<array>
+				<dict>
+					<key>Lock</key>
+					<string>NO</string>
+					<key>Name</key>
+					<string>Layer 1</string>
+					<key>Print</key>
+					<string>YES</string>
+					<key>View</key>
+					<string>YES</string>
+				</dict>
+			</array>
+			<key>LayoutInfo</key>
+			<dict>
+				<key>Animate</key>
+				<string>NO</string>
+				<key>circoMinDist</key>
+				<real>18</real>
+				<key>circoSeparation</key>
+				<real>0.0</real>
+				<key>layoutEngine</key>
+				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
+				<key>neatoSeparation</key>
+				<real>0.0</real>
+				<key>twopiSeparation</key>
+				<real>0.0</real>
+			</dict>
+			<key>Orientation</key>
+			<integer>2</integer>
+			<key>PrintOnePage</key>
+			<false/>
+			<key>RowAlign</key>
+			<integer>1</integer>
+			<key>RowSpacing</key>
+			<real>36</real>
+			<key>SheetTitle</key>
+			<string>Canvas 73</string>
+			<key>UniqueID</key>
+			<integer>78</integer>
+			<key>VPages</key>
+			<integer>1</integer>
+		</dict>
 	</array>
 	<key>SmartAlignmentGuidesActive</key>
 	<string>YES</string>
@@ -258754,25 +298463,23 @@
 	<key>WindowInfo</key>
 	<dict>
 		<key>CurrentSheet</key>
-		<integer>2</integer>
-		<key>ExpandedCanvases</key>
+		<integer>72</integer>
+		<key>Expanded_Canvases</key>
 		<array/>
 		<key>Frame</key>
-		<string>{{904, 128}, {1438, 1115}}</string>
-		<key>ListView</key>
+		<string>{{630, 258}, {1734, 1115}}</string>
+		<key>ShowInfo</key>
 		<true/>
-		<key>OutlineWidth</key>
-		<integer>142</integer>
-		<key>RightSidebar</key>
-		<false/>
 		<key>ShowRuler</key>
 		<true/>
 		<key>Sidebar</key>
 		<true/>
 		<key>SidebarWidth</key>
 		<integer>200</integer>
+		<key>TopSlabHeight</key>
+		<real>250</real>
 		<key>VisibleRegion</key>
-		<string>{{-323, -121}, {1223, 976}}</string>
+		<string>{{-322, -112}, {1220, 957}}</string>
 		<key>Zoom</key>
 		<real>1</real>
 		<key>ZoomValues</key>
@@ -259127,6 +298834,21 @@
 				<real>4</real>
 				<real>1</real>
 			</array>
+			<array>
+				<string>nine-inch-gremlins</string>
+				<real>1</real>
+				<real>1</real>
+			</array>
+			<array>
+				<string>Canvas 72</string>
+				<real>1</real>
+				<real>1</real>
+			</array>
+			<array>
+				<string>Canvas 73</string>
+				<real>1</real>
+				<real>1</real>
+			</array>
 		</array>
 	</dict>
 </dict>
diff --git a/docs/static/resources/gremlin-jython.py b/docs/static/resources/gremlin-jython.py
new file mode 100644
index 0000000..e52e234
--- /dev/null
+++ b/docs/static/resources/gremlin-jython.py
@@ -0,0 +1,721 @@
+'''
+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.
+'''
+
+from org.apache.tinkerpop.gremlin.process.traversal import *
+from org.apache.tinkerpop.gremlin.structure import *
+from org.apache.tinkerpop.gremlin.process.traversal.dsl.graph import __ as anon
+
+class JythonGraphTraversalSource(object):
+  def __init__(self, traversalSource):
+    self.traversalSource = traversalSource
+  def __repr__(self):
+    return self.traversalSource.toString()
+  def toString(self, *args):
+    return self.traversalSource.toString(*args)
+  def clone(self, *args):
+    self.traversalSource = self.traversalSource.clone(*args)
+    return self
+  def V(self, *args):
+    return JythonGraphTraversal(self.traversalSource.V(*args))
+  def E(self, *args):
+    return JythonGraphTraversal(self.traversalSource.E(*args))
+  def build(self, *args):
+    return self.traversalSource.build(*args)
+  def withSack(self, *args):
+    self.traversalSource = self.traversalSource.withSack(*args)
+    return self
+  def computer(self, *args):
+    return self.traversalSource.computer(*args)
+  def withComputer(self, *args):
+    self.traversalSource = self.traversalSource.withComputer(*args)
+    return self
+  def withStrategies(self, *args):
+    self.traversalSource = self.traversalSource.withStrategies(*args)
+    return self
+  def withoutStrategies(self, *args):
+    self.traversalSource = self.traversalSource.withoutStrategies(*args)
+    return self
+  def withSideEffect(self, *args):
+    self.traversalSource = self.traversalSource.withSideEffect(*args)
+    return self
+  def withBulk(self, *args):
+    self.traversalSource = self.traversalSource.withBulk(*args)
+    return self
+  def withPath(self, *args):
+    self.traversalSource = self.traversalSource.withPath(*args)
+    return self
+  def standard(self, *args):
+    return self.traversalSource.standard(*args)
+  def inject(self, *args):
+    return JythonGraphTraversal(self.traversalSource.inject(*args))
+  def getStrategies(self, *args):
+    return self.traversalSource.getStrategies(*args)
+  def addV(self, *args):
+    return JythonGraphTraversal(self.traversalSource.addV(*args))
+  def getGraph(self, *args):
+    return self.traversalSource.getGraph(*args)
+  def tx(self, *args):
+    return self.traversalSource.tx(*args)
+  def wait(self, *args):
+    return self.traversalSource.wait(*args)
+  def equals(self, *args):
+    return self.traversalSource.equals(*args)
+  def hashCode(self, *args):
+    return self.traversalSource.hashCode(*args)
+  def getClass(self, *args):
+    return self.traversalSource.getClass(*args)
+  def notify(self, *args):
+    return self.traversalSource.notify(*args)
+  def notifyAll(self, *args):
+    return self.traversalSource.notifyAll(*args)
+
+
+class JythonGraphTraversal(object):
+  def __init__(self, traversal):
+    self.traversal = traversal
+  def __repr__(self):
+    return self.traversal.toString()
+  def __getitem__(self,index):
+    if type(index) is int:
+      self.traversal = self.traversal.range(index,index+1)
+    elif type(index) is slice:
+        self.traversal = self.traversal.range(index.start,index.stop)
+    else:
+        raise TypeError("index must be int or slice")
+    return self
+  def __getattr__(self,key):
+    return self.values(key)
+  def group(self, *args):
+    self.traversal = self.traversal.group(*args)
+    return self
+  def limit(self, *args):
+    self.traversal = self.traversal.limit(*args)
+    return self
+  def value(self, *args):
+    self.traversal = self.traversal.value(*args)
+    return self
+  def count(self, *args):
+    self.traversal = self.traversal.count(*args)
+    return self
+  def profile(self, *args):
+    self.traversal = self.traversal.profile(*args)
+    return self
+  def values(self, *args):
+    self.traversal = self.traversal.values(*args)
+    return self
+  def min(self, *args):
+    self.traversal = self.traversal.min(*args)
+    return self
+  def max(self, *args):
+    self.traversal = self.traversal.max(*args)
+    return self
+  def V(self, *args):
+    self.traversal = self.traversal.V(*args)
+    return self
+  def identity(self, *args):
+    self.traversal = self.traversal.identity(*args)
+    return self
+  def _in(self, *args):
+    return self.traversal.in(*args)
+  def out(self, *args):
+    self.traversal = self.traversal.out(*args)
+    return self
+  def key(self, *args):
+    self.traversal = self.traversal.key(*args)
+    return self
+  def store(self, *args):
+    self.traversal = self.traversal.store(*args)
+    return self
+  def path(self, *args):
+    self.traversal = self.traversal.path(*args)
+    return self
+  def sum(self, *args):
+    self.traversal = self.traversal.sum(*args)
+    return self
+  def toV(self, *args):
+    self.traversal = self.traversal.toV(*args)
+    return self
+  def filter(self, *args):
+    self.traversal = self.traversal.filter(*args)
+    return self
+  def tree(self, *args):
+    self.traversal = self.traversal.tree(*args)
+    return self
+  def match(self, *args):
+    self.traversal = self.traversal.match(*args)
+    return self
+  def range(self, *args):
+    self.traversal = self.traversal.range(*args)
+    return self
+  def order(self, *args):
+    self.traversal = self.traversal.order(*args)
+    return self
+  def map(self, *args):
+    self.traversal = self.traversal.map(*args)
+    return self
+  def tail(self, *args):
+    self.traversal = self.traversal.tail(*args)
+    return self
+  def _and(self, *args):
+    return self.traversal.and(*args)
+  def _or(self, *args):
+    return self.traversal.or(*args)
+  def id(self, *args):
+    self.traversal = self.traversal.id(*args)
+    return self
+  def option(self, *args):
+    self.traversal = self.traversal.option(*args)
+    return self
+  def _not(self, *args):
+    return self.traversal.not(*args)
+  def property(self, *args):
+    self.traversal = self.traversal.property(*args)
+    return self
+  def program(self, *args):
+    self.traversal = self.traversal.program(*args)
+    return self
+  def label(self, *args):
+    self.traversal = self.traversal.label(*args)
+    return self
+  def choose(self, *args):
+    self.traversal = self.traversal.choose(*args)
+    return self
+  def propertyMap(self, *args):
+    self.traversal = self.traversal.propertyMap(*args)
+    return self
+  def inject(self, *args):
+    self.traversal = self.traversal.inject(*args)
+    return self
+  def drop(self, *args):
+    self.traversal = self.traversal.drop(*args)
+    return self
+  def times(self, *args):
+    self.traversal = self.traversal.times(*args)
+    return self
+  def select(self, *args):
+    self.traversal = self.traversal.select(*args)
+    return self
+  def _as(self, *args):
+    return self.traversal.as(*args)
+  def outE(self, *args):
+    self.traversal = self.traversal.outE(*args)
+    return self
+  def inE(self, *args):
+    self.traversal = self.traversal.inE(*args)
+    return self
+  def toE(self, *args):
+    self.traversal = self.traversal.toE(*args)
+    return self
+  def bothE(self, *args):
+    self.traversal = self.traversal.bothE(*args)
+    return self
+  def inV(self, *args):
+    self.traversal = self.traversal.inV(*args)
+    return self
+  def outV(self, *args):
+    self.traversal = self.traversal.outV(*args)
+    return self
+  def both(self, *args):
+    self.traversal = self.traversal.both(*args)
+    return self
+  def bothV(self, *args):
+    self.traversal = self.traversal.bothV(*args)
+    return self
+  def otherV(self, *args):
+    self.traversal = self.traversal.otherV(*args)
+    return self
+  def valueMap(self, *args):
+    self.traversal = self.traversal.valueMap(*args)
+    return self
+  def mapValues(self, *args):
+    self.traversal = self.traversal.mapValues(*args)
+    return self
+  def mapKeys(self, *args):
+    self.traversal = self.traversal.mapKeys(*args)
+    return self
+  def sack(self, *args):
+    self.traversal = self.traversal.sack(*args)
+    return self
+  def loops(self, *args):
+    self.traversal = self.traversal.loops(*args)
+    return self
+  def project(self, *args):
+    self.traversal = self.traversal.project(*args)
+    return self
+  def unfold(self, *args):
+    self.traversal = self.traversal.unfold(*args)
+    return self
+  def fold(self, *args):
+    self.traversal = self.traversal.fold(*args)
+    return self
+  def mean(self, *args):
+    self.traversal = self.traversal.mean(*args)
+    return self
+  def groupV3d0(self, *args):
+    self.traversal = self.traversal.groupV3d0(*args)
+    return self
+  def addV(self, *args):
+    self.traversal = self.traversal.addV(*args)
+    return self
+  def addE(self, *args):
+    self.traversal = self.traversal.addE(*args)
+    return self
+  def addOutE(self, *args):
+    self.traversal = self.traversal.addOutE(*args)
+    return self
+  def addInE(self, *args):
+    self.traversal = self.traversal.addInE(*args)
+    return self
+  def dedup(self, *args):
+    self.traversal = self.traversal.dedup(*args)
+    return self
+  def where(self, *args):
+    self.traversal = self.traversal.where(*args)
+    return self
+  def hasNot(self, *args):
+    self.traversal = self.traversal.hasNot(*args)
+    return self
+  def hasLabel(self, *args):
+    self.traversal = self.traversal.hasLabel(*args)
+    return self
+  def hasId(self, *args):
+    self.traversal = self.traversal.hasId(*args)
+    return self
+  def hasKey(self, *args):
+    self.traversal = self.traversal.hasKey(*args)
+    return self
+  def hasValue(self, *args):
+    self.traversal = self.traversal.hasValue(*args)
+    return self
+  def coin(self, *args):
+    self.traversal = self.traversal.coin(*args)
+    return self
+  def timeLimit(self, *args):
+    self.traversal = self.traversal.timeLimit(*args)
+    return self
+  def simplePath(self, *args):
+    self.traversal = self.traversal.simplePath(*args)
+    return self
+  def cyclicPath(self, *args):
+    self.traversal = self.traversal.cyclicPath(*args)
+    return self
+  def sample(self, *args):
+    self.traversal = self.traversal.sample(*args)
+    return self
+  def sideEffect(self, *args):
+    self.traversal = self.traversal.sideEffect(*args)
+    return self
+  def subgraph(self, *args):
+    self.traversal = self.traversal.subgraph(*args)
+    return self
+  def aggregate(self, *args):
+    self.traversal = self.traversal.aggregate(*args)
+    return self
+  def branch(self, *args):
+    self.traversal = self.traversal.branch(*args)
+    return self
+  def optional(self, *args):
+    self.traversal = self.traversal.optional(*args)
+    return self
+  def coalesce(self, *args):
+    self.traversal = self.traversal.coalesce(*args)
+    return self
+  def repeat(self, *args):
+    self.traversal = self.traversal.repeat(*args)
+    return self
+  def emit(self, *args):
+    self.traversal = self.traversal.emit(*args)
+    return self
+  def local(self, *args):
+    self.traversal = self.traversal.local(*args)
+    return self
+  def pageRank(self, *args):
+    self.traversal = self.traversal.pageRank(*args)
+    return self
+  def peerPressure(self, *args):
+    self.traversal = self.traversal.peerPressure(*args)
+    return self
+  def barrier(self, *args):
+    self.traversal = self.traversal.barrier(*args)
+    return self
+  def by(self, *args):
+    self.traversal = self.traversal.by(*args)
+    return self
+  def _is(self, *args):
+    return self.traversal.is(*args)
+  def until(self, *args):
+    self.traversal = self.traversal.until(*args)
+    return self
+  def constant(self, *args):
+    self.traversal = self.traversal.constant(*args)
+    return self
+  def properties(self, *args):
+    self.traversal = self.traversal.properties(*args)
+    return self
+  def to(self, *args):
+    self.traversal = self.traversal.to(*args)
+    return self
+  def _from(self, *args):
+    return self.traversal.from(*args)
+  def has(self, *args):
+    self.traversal = self.traversal.has(*args)
+    return self
+  def union(self, *args):
+    self.traversal = self.traversal.union(*args)
+    return self
+  def groupCount(self, *args):
+    self.traversal = self.traversal.groupCount(*args)
+    return self
+  def flatMap(self, *args):
+    self.traversal = self.traversal.flatMap(*args)
+    return self
+  def iterate(self, *args):
+    self.traversal = self.traversal.iterate(*args)
+    return self
+  def cap(self, *args):
+    self.traversal = self.traversal.cap(*args)
+    return self
+  def asAdmin(self, *args):
+    self.traversal = self.traversal.asAdmin(*args)
+    return self
+  def next(self, *args):
+    return self.traversal.next(*args)
+  def fill(self, *args):
+    return self.traversal.fill(*args)
+  def forEachRemaining(self, *args):
+    return self.traversal.forEachRemaining(*args)
+  def toList(self, *args):
+    return self.traversal.toList(*args)
+  def toSet(self, *args):
+    return self.traversal.toSet(*args)
+  def toBulkSet(self, *args):
+    return self.traversal.toBulkSet(*args)
+  def tryNext(self, *args):
+    return self.traversal.tryNext(*args)
+  def toStream(self, *args):
+    return self.traversal.toStream(*args)
+  def explain(self, *args):
+    return self.traversal.explain(*args)
+  def remove(self, *args):
+    return self.traversal.remove(*args)
+  def hasNext(self, *args):
+    return self.traversal.hasNext(*args)
+
+
+class __(object):
+  @staticmethod
+  def group(*args):
+    return anon.group(*args)
+  @staticmethod
+  def limit(*args):
+    return anon.limit(*args)
+  @staticmethod
+  def value(*args):
+    return anon.value(*args)
+  @staticmethod
+  def count(*args):
+    return anon.count(*args)
+  @staticmethod
+  def values(*args):
+    return anon.values(*args)
+  @staticmethod
+  def min(*args):
+    return anon.min(*args)
+  @staticmethod
+  def max(*args):
+    return anon.max(*args)
+  @staticmethod
+  def V(*args):
+    return anon.V(*args)
+  @staticmethod
+  def identity(*args):
+    return anon.identity(*args)
+  @staticmethod
+  def _in(*args):
+    return anon.in(*args)
+  @staticmethod
+  def out(*args):
+    return anon.out(*args)
+  @staticmethod
+  def key(*args):
+    return anon.key(*args)
+  @staticmethod
+  def start(*args):
+    return anon.start(*args)
+  @staticmethod
+  def store(*args):
+    return anon.store(*args)
+  @staticmethod
+  def path(*args):
+    return anon.path(*args)
+  @staticmethod
+  def sum(*args):
+    return anon.sum(*args)
+  @staticmethod
+  def toV(*args):
+    return anon.toV(*args)
+  @staticmethod
+  def filter(*args):
+    return anon.filter(*args)
+  @staticmethod
+  def tree(*args):
+    return anon.tree(*args)
+  @staticmethod
+  def match(*args):
+    return anon.match(*args)
+  @staticmethod
+  def range(*args):
+    return anon.range(*args)
+  @staticmethod
+  def order(*args):
+    return anon.order(*args)
+  @staticmethod
+  def map(*args):
+    return anon.map(*args)
+  @staticmethod
+  def tail(*args):
+    return anon.tail(*args)
+  @staticmethod
+  def _and(*args):
+    return anon.and(*args)
+  @staticmethod
+  def _or(*args):
+    return anon.or(*args)
+  @staticmethod
+  def id(*args):
+    return anon.id(*args)
+  @staticmethod
+  def _not(*args):
+    return anon.not(*args)
+  @staticmethod
+  def property(*args):
+    return anon.property(*args)
+  @staticmethod
+  def label(*args):
+    return anon.label(*args)
+  @staticmethod
+  def choose(*args):
+    return anon.choose(*args)
+  @staticmethod
+  def propertyMap(*args):
+    return anon.propertyMap(*args)
+  @staticmethod
+  def inject(*args):
+    return anon.inject(*args)
+  @staticmethod
+  def drop(*args):
+    return anon.drop(*args)
+  @staticmethod
+  def times(*args):
+    return anon.times(*args)
+  @staticmethod
+  def select(*args):
+    return anon.select(*args)
+  @staticmethod
+  def _as(*args):
+    return anon.as(*args)
+  @staticmethod
+  def outE(*args):
+    return anon.outE(*args)
+  @staticmethod
+  def inE(*args):
+    return anon.inE(*args)
+  @staticmethod
+  def toE(*args):
+    return anon.toE(*args)
+  @staticmethod
+  def bothE(*args):
+    return anon.bothE(*args)
+  @staticmethod
+  def inV(*args):
+    return anon.inV(*args)
+  @staticmethod
+  def outV(*args):
+    return anon.outV(*args)
+  @staticmethod
+  def both(*args):
+    return anon.both(*args)
+  @staticmethod
+  def bothV(*args):
+    return anon.bothV(*args)
+  @staticmethod
+  def otherV(*args):
+    return anon.otherV(*args)
+  @staticmethod
+  def valueMap(*args):
+    return anon.valueMap(*args)
+  @staticmethod
+  def mapValues(*args):
+    return anon.mapValues(*args)
+  @staticmethod
+  def mapKeys(*args):
+    return anon.mapKeys(*args)
+  @staticmethod
+  def sack(*args):
+    return anon.sack(*args)
+  @staticmethod
+  def loops(*args):
+    return anon.loops(*args)
+  @staticmethod
+  def project(*args):
+    return anon.project(*args)
+  @staticmethod
+  def unfold(*args):
+    return anon.unfold(*args)
+  @staticmethod
+  def fold(*args):
+    return anon.fold(*args)
+  @staticmethod
+  def mean(*args):
+    return anon.mean(*args)
+  @staticmethod
+  def groupV3d0(*args):
+    return anon.groupV3d0(*args)
+  @staticmethod
+  def addV(*args):
+    return anon.addV(*args)
+  @staticmethod
+  def addE(*args):
+    return anon.addE(*args)
+  @staticmethod
+  def addOutE(*args):
+    return anon.addOutE(*args)
+  @staticmethod
+  def addInE(*args):
+    return anon.addInE(*args)
+  @staticmethod
+  def dedup(*args):
+    return anon.dedup(*args)
+  @staticmethod
+  def where(*args):
+    return anon.where(*args)
+  @staticmethod
+  def hasNot(*args):
+    return anon.hasNot(*args)
+  @staticmethod
+  def hasLabel(*args):
+    return anon.hasLabel(*args)
+  @staticmethod
+  def hasId(*args):
+    return anon.hasId(*args)
+  @staticmethod
+  def hasKey(*args):
+    return anon.hasKey(*args)
+  @staticmethod
+  def hasValue(*args):
+    return anon.hasValue(*args)
+  @staticmethod
+  def coin(*args):
+    return anon.coin(*args)
+  @staticmethod
+  def timeLimit(*args):
+    return anon.timeLimit(*args)
+  @staticmethod
+  def simplePath(*args):
+    return anon.simplePath(*args)
+  @staticmethod
+  def cyclicPath(*args):
+    return anon.cyclicPath(*args)
+  @staticmethod
+  def sample(*args):
+    return anon.sample(*args)
+  @staticmethod
+  def sideEffect(*args):
+    return anon.sideEffect(*args)
+  @staticmethod
+  def subgraph(*args):
+    return anon.subgraph(*args)
+  @staticmethod
+  def aggregate(*args):
+    return anon.aggregate(*args)
+  @staticmethod
+  def branch(*args):
+    return anon.branch(*args)
+  @staticmethod
+  def optional(*args):
+    return anon.optional(*args)
+  @staticmethod
+  def coalesce(*args):
+    return anon.coalesce(*args)
+  @staticmethod
+  def repeat(*args):
+    return anon.repeat(*args)
+  @staticmethod
+  def emit(*args):
+    return anon.emit(*args)
+  @staticmethod
+  def local(*args):
+    return anon.local(*args)
+  @staticmethod
+  def barrier(*args):
+    return anon.barrier(*args)
+  @staticmethod
+  def _is(*args):
+    return anon.is(*args)
+  @staticmethod
+  def until(*args):
+    return anon.until(*args)
+  @staticmethod
+  def __(*args):
+    return anon.__(*args)
+  @staticmethod
+  def constant(*args):
+    return anon.constant(*args)
+  @staticmethod
+  def properties(*args):
+    return anon.properties(*args)
+  @staticmethod
+  def to(*args):
+    return anon.to(*args)
+  @staticmethod
+  def has(*args):
+    return anon.has(*args)
+  @staticmethod
+  def union(*args):
+    return anon.union(*args)
+  @staticmethod
+  def groupCount(*args):
+    return anon.groupCount(*args)
+  @staticmethod
+  def flatMap(*args):
+    return anon.flatMap(*args)
+  @staticmethod
+  def cap(*args):
+    return anon.cap(*args)
+  @staticmethod
+  def wait(*args):
+    return anon.wait(*args)
+  @staticmethod
+  def equals(*args):
+    return anon.equals(*args)
+  @staticmethod
+  def toString(*args):
+    return anon.toString(*args)
+  @staticmethod
+  def hashCode(*args):
+    return anon.hashCode(*args)
+  @staticmethod
+  def getClass(*args):
+    return anon.getClass(*args)
+  @staticmethod
+  def notify(*args):
+    return anon.notify(*args)
+  @staticmethod
+  def notifyAll(*args):
+    return anon.notifyAll(*args)
+
+
diff --git a/docs/static/resources/gremlin-python.py b/docs/static/resources/gremlin-python.py
new file mode 100644
index 0000000..6301bc9
--- /dev/null
+++ b/docs/static/resources/gremlin-python.py
@@ -0,0 +1,764 @@
+'''
+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.
+'''
+
+from tornado import gen
+from tornado.ioloop import IOLoop
+from gremlinclient.tornado_client import submit
+
+class Helper(object):
+  @staticmethod
+  def stringOrObject(arg):
+    if (type(arg) is str and
+       not(arg.startswith("P.")) and
+       not(arg.startswith("Order.")) and
+       not(arg.startswith("T.")) and
+       not(arg.startswith("Pop.")) and
+       not(arg.startswith("Column."))):
+      return "\"" + arg + "\""
+    elif type(arg) is bool:
+      return str(arg).lower()
+    else:
+      return str(arg)
+  @staticmethod
+  def stringify(*args):
+    if len(args) == 0:
+      return ""
+    elif len(args) == 1:
+      return Helper.stringOrObject(args[0])
+    else:
+      return ", ".join(Helper.stringOrObject(i) for i in args)
+  @staticmethod
+  @gen.coroutine
+  def submit(gremlinServerURI, traversalString):
+    response = yield submit(gremlinServerURI, traversalString)
+    while True:
+      result = yield response.read()
+      if result is None:
+        break
+      raise gen.Return(result.data)
+
+class PythonGraphTraversalSource(object):
+  def __init__(self, gremlinServerURI, traversalSourceString):
+    self.gremlinServerURI = gremlinServerURI
+    self.traversalSourceString = traversalSourceString
+  def __repr__(self):
+    return "graphtraversalsource[" + self.gremlinServerURI + ", " + self.traversalSourceString + "]"
+  def toString(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".toString(" + Helper.stringify(*args) + ")")
+  def clone(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".clone(" + Helper.stringify(*args) + ")")
+  def V(self, *args):
+    return PythonGraphTraversal(self.traversalSourceString + ".V(" + Helper.stringify(*args) + ")", self.gremlinServerURI)
+  def E(self, *args):
+    return PythonGraphTraversal(self.traversalSourceString + ".E(" + Helper.stringify(*args) + ")", self.gremlinServerURI)
+  def build(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".build(" + Helper.stringify(*args) + ")")
+  def getStrategies(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".getStrategies(" + Helper.stringify(*args) + ")")
+  def addV(self, *args):
+    return PythonGraphTraversal(self.traversalSourceString + ".addV(" + Helper.stringify(*args) + ")", self.gremlinServerURI)
+  def getGraph(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".getGraph(" + Helper.stringify(*args) + ")")
+  def inject(self, *args):
+    return PythonGraphTraversal(self.traversalSourceString + ".inject(" + Helper.stringify(*args) + ")", self.gremlinServerURI)
+  def computer(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".computer(" + Helper.stringify(*args) + ")")
+  def tx(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".tx(" + Helper.stringify(*args) + ")")
+  def withComputer(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".withComputer(" + Helper.stringify(*args) + ")")
+  def withStrategies(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".withStrategies(" + Helper.stringify(*args) + ")")
+  def withoutStrategies(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".withoutStrategies(" + Helper.stringify(*args) + ")")
+  def withSideEffect(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".withSideEffect(" + Helper.stringify(*args) + ")")
+  def withSack(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".withSack(" + Helper.stringify(*args) + ")")
+  def withBulk(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".withBulk(" + Helper.stringify(*args) + ")")
+  def withPath(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".withPath(" + Helper.stringify(*args) + ")")
+  def standard(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".standard(" + Helper.stringify(*args) + ")")
+  def wait(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".wait(" + Helper.stringify(*args) + ")")
+  def equals(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".equals(" + Helper.stringify(*args) + ")")
+  def hashCode(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".hashCode(" + Helper.stringify(*args) + ")")
+  def getClass(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".getClass(" + Helper.stringify(*args) + ")")
+  def notify(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".notify(" + Helper.stringify(*args) + ")")
+  def notifyAll(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".notifyAll(" + Helper.stringify(*args) + ")")
+
+
+class PythonGraphTraversal(object):
+  def __init__(self, traversalString, gremlinServerURI=None):
+    self.traversalString = traversalString
+    self.gremlinServerURI = gremlinServerURI
+    self.result = None
+  def __repr__(self):
+    return self.traversalString;
+  def __getitem__(self,index):
+    if type(index) is int:
+      return self.range(index,index+1)
+    elif type(index) is slice:
+      return self.range(index.start,index.stop)
+    else:
+      raise TypeError("index must be int or slice")
+  def __getattr__(self,key):
+    return self.values(key)
+  def toList(self):
+    return IOLoop.current().run_sync(lambda: Helper.submit(self.gremlinServerURI, self.traversalString))
+  def group(self, *args):
+    self.traversalString = self.traversalString + ".group(" + Helper.stringify(*args) + ")"
+    return self
+  def limit(self, *args):
+    self.traversalString = self.traversalString + ".limit(" + Helper.stringify(*args) + ")"
+    return self
+  def value(self, *args):
+    self.traversalString = self.traversalString + ".value(" + Helper.stringify(*args) + ")"
+    return self
+  def count(self, *args):
+    self.traversalString = self.traversalString + ".count(" + Helper.stringify(*args) + ")"
+    return self
+  def profile(self, *args):
+    self.traversalString = self.traversalString + ".profile(" + Helper.stringify(*args) + ")"
+    return self
+  def values(self, *args):
+    self.traversalString = self.traversalString + ".values(" + Helper.stringify(*args) + ")"
+    return self
+  def min(self, *args):
+    self.traversalString = self.traversalString + ".min(" + Helper.stringify(*args) + ")"
+    return self
+  def max(self, *args):
+    self.traversalString = self.traversalString + ".max(" + Helper.stringify(*args) + ")"
+    return self
+  def V(self, *args):
+    self.traversalString = self.traversalString + ".V(" + Helper.stringify(*args) + ")"
+    return self
+  def identity(self, *args):
+    self.traversalString = self.traversalString + ".identity(" + Helper.stringify(*args) + ")"
+    return self
+  def _in(self, *args):
+    self.traversalString = self.traversalString + ".in(" + Helper.stringify(*args) + ")"
+    return self
+  def out(self, *args):
+    self.traversalString = self.traversalString + ".out(" + Helper.stringify(*args) + ")"
+    return self
+  def key(self, *args):
+    self.traversalString = self.traversalString + ".key(" + Helper.stringify(*args) + ")"
+    return self
+  def store(self, *args):
+    self.traversalString = self.traversalString + ".store(" + Helper.stringify(*args) + ")"
+    return self
+  def path(self, *args):
+    self.traversalString = self.traversalString + ".path(" + Helper.stringify(*args) + ")"
+    return self
+  def sum(self, *args):
+    self.traversalString = self.traversalString + ".sum(" + Helper.stringify(*args) + ")"
+    return self
+  def toV(self, *args):
+    self.traversalString = self.traversalString + ".toV(" + Helper.stringify(*args) + ")"
+    return self
+  def filter(self, *args):
+    self.traversalString = self.traversalString + ".filter(" + Helper.stringify(*args) + ")"
+    return self
+  def tree(self, *args):
+    self.traversalString = self.traversalString + ".tree(" + Helper.stringify(*args) + ")"
+    return self
+  def match(self, *args):
+    self.traversalString = self.traversalString + ".match(" + Helper.stringify(*args) + ")"
+    return self
+  def range(self, *args):
+    self.traversalString = self.traversalString + ".range(" + Helper.stringify(*args) + ")"
+    return self
+  def order(self, *args):
+    self.traversalString = self.traversalString + ".order(" + Helper.stringify(*args) + ")"
+    return self
+  def map(self, *args):
+    self.traversalString = self.traversalString + ".map(" + Helper.stringify(*args) + ")"
+    return self
+  def tail(self, *args):
+    self.traversalString = self.traversalString + ".tail(" + Helper.stringify(*args) + ")"
+    return self
+  def _and(self, *args):
+    self.traversalString = self.traversalString + ".and(" + Helper.stringify(*args) + ")"
+    return self
+  def _or(self, *args):
+    self.traversalString = self.traversalString + ".or(" + Helper.stringify(*args) + ")"
+    return self
+  def id(self, *args):
+    self.traversalString = self.traversalString + ".id(" + Helper.stringify(*args) + ")"
+    return self
+  def outE(self, *args):
+    self.traversalString = self.traversalString + ".outE(" + Helper.stringify(*args) + ")"
+    return self
+  def toE(self, *args):
+    self.traversalString = self.traversalString + ".toE(" + Helper.stringify(*args) + ")"
+    return self
+  def inE(self, *args):
+    self.traversalString = self.traversalString + ".inE(" + Helper.stringify(*args) + ")"
+    return self
+  def property(self, *args):
+    self.traversalString = self.traversalString + ".property(" + Helper.stringify(*args) + ")"
+    return self
+  def both(self, *args):
+    self.traversalString = self.traversalString + ".both(" + Helper.stringify(*args) + ")"
+    return self
+  def bothE(self, *args):
+    self.traversalString = self.traversalString + ".bothE(" + Helper.stringify(*args) + ")"
+    return self
+  def inV(self, *args):
+    self.traversalString = self.traversalString + ".inV(" + Helper.stringify(*args) + ")"
+    return self
+  def outV(self, *args):
+    self.traversalString = self.traversalString + ".outV(" + Helper.stringify(*args) + ")"
+    return self
+  def bothV(self, *args):
+    self.traversalString = self.traversalString + ".bothV(" + Helper.stringify(*args) + ")"
+    return self
+  def otherV(self, *args):
+    self.traversalString = self.traversalString + ".otherV(" + Helper.stringify(*args) + ")"
+    return self
+  def valueMap(self, *args):
+    self.traversalString = self.traversalString + ".valueMap(" + Helper.stringify(*args) + ")"
+    return self
+  def mapValues(self, *args):
+    self.traversalString = self.traversalString + ".mapValues(" + Helper.stringify(*args) + ")"
+    return self
+  def mapKeys(self, *args):
+    self.traversalString = self.traversalString + ".mapKeys(" + Helper.stringify(*args) + ")"
+    return self
+  def sack(self, *args):
+    self.traversalString = self.traversalString + ".sack(" + Helper.stringify(*args) + ")"
+    return self
+  def loops(self, *args):
+    self.traversalString = self.traversalString + ".loops(" + Helper.stringify(*args) + ")"
+    return self
+  def project(self, *args):
+    self.traversalString = self.traversalString + ".project(" + Helper.stringify(*args) + ")"
+    return self
+  def unfold(self, *args):
+    self.traversalString = self.traversalString + ".unfold(" + Helper.stringify(*args) + ")"
+    return self
+  def fold(self, *args):
+    self.traversalString = self.traversalString + ".fold(" + Helper.stringify(*args) + ")"
+    return self
+  def mean(self, *args):
+    self.traversalString = self.traversalString + ".mean(" + Helper.stringify(*args) + ")"
+    return self
+  def groupV3d0(self, *args):
+    self.traversalString = self.traversalString + ".groupV3d0(" + Helper.stringify(*args) + ")"
+    return self
+  def addV(self, *args):
+    self.traversalString = self.traversalString + ".addV(" + Helper.stringify(*args) + ")"
+    return self
+  def addE(self, *args):
+    self.traversalString = self.traversalString + ".addE(" + Helper.stringify(*args) + ")"
+    return self
+  def addOutE(self, *args):
+    self.traversalString = self.traversalString + ".addOutE(" + Helper.stringify(*args) + ")"
+    return self
+  def addInE(self, *args):
+    self.traversalString = self.traversalString + ".addInE(" + Helper.stringify(*args) + ")"
+    return self
+  def dedup(self, *args):
+    self.traversalString = self.traversalString + ".dedup(" + Helper.stringify(*args) + ")"
+    return self
+  def where(self, *args):
+    self.traversalString = self.traversalString + ".where(" + Helper.stringify(*args) + ")"
+    return self
+  def hasNot(self, *args):
+    self.traversalString = self.traversalString + ".hasNot(" + Helper.stringify(*args) + ")"
+    return self
+  def hasLabel(self, *args):
+    self.traversalString = self.traversalString + ".hasLabel(" + Helper.stringify(*args) + ")"
+    return self
+  def hasId(self, *args):
+    self.traversalString = self.traversalString + ".hasId(" + Helper.stringify(*args) + ")"
+    return self
+  def hasKey(self, *args):
+    self.traversalString = self.traversalString + ".hasKey(" + Helper.stringify(*args) + ")"
+    return self
+  def hasValue(self, *args):
+    self.traversalString = self.traversalString + ".hasValue(" + Helper.stringify(*args) + ")"
+    return self
+  def coin(self, *args):
+    self.traversalString = self.traversalString + ".coin(" + Helper.stringify(*args) + ")"
+    return self
+  def timeLimit(self, *args):
+    self.traversalString = self.traversalString + ".timeLimit(" + Helper.stringify(*args) + ")"
+    return self
+  def simplePath(self, *args):
+    self.traversalString = self.traversalString + ".simplePath(" + Helper.stringify(*args) + ")"
+    return self
+  def cyclicPath(self, *args):
+    self.traversalString = self.traversalString + ".cyclicPath(" + Helper.stringify(*args) + ")"
+    return self
+  def sample(self, *args):
+    self.traversalString = self.traversalString + ".sample(" + Helper.stringify(*args) + ")"
+    return self
+  def sideEffect(self, *args):
+    self.traversalString = self.traversalString + ".sideEffect(" + Helper.stringify(*args) + ")"
+    return self
+  def subgraph(self, *args):
+    self.traversalString = self.traversalString + ".subgraph(" + Helper.stringify(*args) + ")"
+    return self
+  def aggregate(self, *args):
+    self.traversalString = self.traversalString + ".aggregate(" + Helper.stringify(*args) + ")"
+    return self
+  def branch(self, *args):
+    self.traversalString = self.traversalString + ".branch(" + Helper.stringify(*args) + ")"
+    return self
+  def optional(self, *args):
+    self.traversalString = self.traversalString + ".optional(" + Helper.stringify(*args) + ")"
+    return self
+  def coalesce(self, *args):
+    self.traversalString = self.traversalString + ".coalesce(" + Helper.stringify(*args) + ")"
+    return self
+  def repeat(self, *args):
+    self.traversalString = self.traversalString + ".repeat(" + Helper.stringify(*args) + ")"
+    return self
+  def emit(self, *args):
+    self.traversalString = self.traversalString + ".emit(" + Helper.stringify(*args) + ")"
+    return self
+  def local(self, *args):
+    self.traversalString = self.traversalString + ".local(" + Helper.stringify(*args) + ")"
+    return self
+  def pageRank(self, *args):
+    self.traversalString = self.traversalString + ".pageRank(" + Helper.stringify(*args) + ")"
+    return self
+  def peerPressure(self, *args):
+    self.traversalString = self.traversalString + ".peerPressure(" + Helper.stringify(*args) + ")"
+    return self
+  def barrier(self, *args):
+    self.traversalString = self.traversalString + ".barrier(" + Helper.stringify(*args) + ")"
+    return self
+  def by(self, *args):
+    self.traversalString = self.traversalString + ".by(" + Helper.stringify(*args) + ")"
+    return self
+  def option(self, *args):
+    self.traversalString = self.traversalString + ".option(" + Helper.stringify(*args) + ")"
+    return self
+  def choose(self, *args):
+    self.traversalString = self.traversalString + ".choose(" + Helper.stringify(*args) + ")"
+    return self
+  def cap(self, *args):
+    self.traversalString = self.traversalString + ".cap(" + Helper.stringify(*args) + ")"
+    return self
+  def inject(self, *args):
+    self.traversalString = self.traversalString + ".inject(" + Helper.stringify(*args) + ")"
+    return self
+  def drop(self, *args):
+    self.traversalString = self.traversalString + ".drop(" + Helper.stringify(*args) + ")"
+    return self
+  def times(self, *args):
+    self.traversalString = self.traversalString + ".times(" + Helper.stringify(*args) + ")"
+    return self
+  def _as(self, *args):
+    self.traversalString = self.traversalString + ".as(" + Helper.stringify(*args) + ")"
+    return self
+  def label(self, *args):
+    self.traversalString = self.traversalString + ".label(" + Helper.stringify(*args) + ")"
+    return self
+  def propertyMap(self, *args):
+    self.traversalString = self.traversalString + ".propertyMap(" + Helper.stringify(*args) + ")"
+    return self
+  def constant(self, *args):
+    self.traversalString = self.traversalString + ".constant(" + Helper.stringify(*args) + ")"
+    return self
+  def until(self, *args):
+    self.traversalString = self.traversalString + ".until(" + Helper.stringify(*args) + ")"
+    return self
+  def has(self, *args):
+    self.traversalString = self.traversalString + ".has(" + Helper.stringify(*args) + ")"
+    return self
+  def union(self, *args):
+    self.traversalString = self.traversalString + ".union(" + Helper.stringify(*args) + ")"
+    return self
+  def groupCount(self, *args):
+    self.traversalString = self.traversalString + ".groupCount(" + Helper.stringify(*args) + ")"
+    return self
+  def flatMap(self, *args):
+    self.traversalString = self.traversalString + ".flatMap(" + Helper.stringify(*args) + ")"
+    return self
+  def iterate(self, *args):
+    self.traversalString = self.traversalString + ".iterate(" + Helper.stringify(*args) + ")"
+    return self
+  def properties(self, *args):
+    self.traversalString = self.traversalString + ".properties(" + Helper.stringify(*args) + ")"
+    return self
+  def to(self, *args):
+    self.traversalString = self.traversalString + ".to(" + Helper.stringify(*args) + ")"
+    return self
+  def _from(self, *args):
+    self.traversalString = self.traversalString + ".from(" + Helper.stringify(*args) + ")"
+    return self
+  def _not(self, *args):
+    self.traversalString = self.traversalString + ".not(" + Helper.stringify(*args) + ")"
+    return self
+  def _is(self, *args):
+    self.traversalString = self.traversalString + ".is(" + Helper.stringify(*args) + ")"
+    return self
+  def select(self, *args):
+    self.traversalString = self.traversalString + ".select(" + Helper.stringify(*args) + ")"
+    return self
+  def asAdmin(self, *args):
+    self.traversalString = self.traversalString + ".asAdmin(" + Helper.stringify(*args) + ")"
+    return self
+  def program(self, *args):
+    self.traversalString = self.traversalString + ".program(" + Helper.stringify(*args) + ")"
+    return self
+  def next(self, *args):
+    self.traversalString = self.traversalString + ".next(" + Helper.stringify(*args) + ")"
+    return self.toList()
+  def fill(self, *args):
+    self.traversalString = self.traversalString + ".fill(" + Helper.stringify(*args) + ")"
+    return self.toList()
+  def forEachRemaining(self, *args):
+    self.traversalString = self.traversalString + ".forEachRemaining(" + Helper.stringify(*args) + ")"
+    return self.toList()
+  def toSet(self, *args):
+    self.traversalString = self.traversalString + ".toSet(" + Helper.stringify(*args) + ")"
+    return self.toList()
+  def tryNext(self, *args):
+    self.traversalString = self.traversalString + ".tryNext(" + Helper.stringify(*args) + ")"
+    return self.toList()
+  def explain(self, *args):
+    self.traversalString = self.traversalString + ".explain(" + Helper.stringify(*args) + ")"
+    return self.toList()
+  def toStream(self, *args):
+    self.traversalString = self.traversalString + ".toStream(" + Helper.stringify(*args) + ")"
+    return self.toList()
+  def toBulkSet(self, *args):
+    self.traversalString = self.traversalString + ".toBulkSet(" + Helper.stringify(*args) + ")"
+    return self.toList()
+  def remove(self, *args):
+    self.traversalString = self.traversalString + ".remove(" + Helper.stringify(*args) + ")"
+    return self.toList()
+  def hasNext(self, *args):
+    self.traversalString = self.traversalString + ".hasNext(" + Helper.stringify(*args) + ")"
+    return self.toList()
+
+
+class __(object):
+  @staticmethod
+  def group(*args):
+    return PythonGraphTraversal("__").group(*args)
+  @staticmethod
+  def limit(*args):
+    return PythonGraphTraversal("__").limit(*args)
+  @staticmethod
+  def value(*args):
+    return PythonGraphTraversal("__").value(*args)
+  @staticmethod
+  def count(*args):
+    return PythonGraphTraversal("__").count(*args)
+  @staticmethod
+  def values(*args):
+    return PythonGraphTraversal("__").values(*args)
+  @staticmethod
+  def min(*args):
+    return PythonGraphTraversal("__").min(*args)
+  @staticmethod
+  def max(*args):
+    return PythonGraphTraversal("__").max(*args)
+  @staticmethod
+  def V(*args):
+    return PythonGraphTraversal("__").V(*args)
+  @staticmethod
+  def identity(*args):
+    return PythonGraphTraversal("__").identity(*args)
+  @staticmethod
+  def _in(*args):
+    return PythonGraphTraversal("__")._in(*args)
+  @staticmethod
+  def out(*args):
+    return PythonGraphTraversal("__").out(*args)
+  @staticmethod
+  def key(*args):
+    return PythonGraphTraversal("__").key(*args)
+  @staticmethod
+  def start(*args):
+    return PythonGraphTraversal("__").start(*args)
+  @staticmethod
+  def store(*args):
+    return PythonGraphTraversal("__").store(*args)
+  @staticmethod
+  def path(*args):
+    return PythonGraphTraversal("__").path(*args)
+  @staticmethod
+  def sum(*args):
+    return PythonGraphTraversal("__").sum(*args)
+  @staticmethod
+  def toV(*args):
+    return PythonGraphTraversal("__").toV(*args)
+  @staticmethod
+  def filter(*args):
+    return PythonGraphTraversal("__").filter(*args)
+  @staticmethod
+  def tree(*args):
+    return PythonGraphTraversal("__").tree(*args)
+  @staticmethod
+  def match(*args):
+    return PythonGraphTraversal("__").match(*args)
+  @staticmethod
+  def range(*args):
+    return PythonGraphTraversal("__").range(*args)
+  @staticmethod
+  def order(*args):
+    return PythonGraphTraversal("__").order(*args)
+  @staticmethod
+  def map(*args):
+    return PythonGraphTraversal("__").map(*args)
+  @staticmethod
+  def tail(*args):
+    return PythonGraphTraversal("__").tail(*args)
+  @staticmethod
+  def _and(*args):
+    return PythonGraphTraversal("__")._and(*args)
+  @staticmethod
+  def _or(*args):
+    return PythonGraphTraversal("__")._or(*args)
+  @staticmethod
+  def id(*args):
+    return PythonGraphTraversal("__").id(*args)
+  @staticmethod
+  def outE(*args):
+    return PythonGraphTraversal("__").outE(*args)
+  @staticmethod
+  def toE(*args):
+    return PythonGraphTraversal("__").toE(*args)
+  @staticmethod
+  def inE(*args):
+    return PythonGraphTraversal("__").inE(*args)
+  @staticmethod
+  def property(*args):
+    return PythonGraphTraversal("__").property(*args)
+  @staticmethod
+  def both(*args):
+    return PythonGraphTraversal("__").both(*args)
+  @staticmethod
+  def bothE(*args):
+    return PythonGraphTraversal("__").bothE(*args)
+  @staticmethod
+  def inV(*args):
+    return PythonGraphTraversal("__").inV(*args)
+  @staticmethod
+  def outV(*args):
+    return PythonGraphTraversal("__").outV(*args)
+  @staticmethod
+  def bothV(*args):
+    return PythonGraphTraversal("__").bothV(*args)
+  @staticmethod
+  def otherV(*args):
+    return PythonGraphTraversal("__").otherV(*args)
+  @staticmethod
+  def valueMap(*args):
+    return PythonGraphTraversal("__").valueMap(*args)
+  @staticmethod
+  def mapValues(*args):
+    return PythonGraphTraversal("__").mapValues(*args)
+  @staticmethod
+  def mapKeys(*args):
+    return PythonGraphTraversal("__").mapKeys(*args)
+  @staticmethod
+  def sack(*args):
+    return PythonGraphTraversal("__").sack(*args)
+  @staticmethod
+  def loops(*args):
+    return PythonGraphTraversal("__").loops(*args)
+  @staticmethod
+  def project(*args):
+    return PythonGraphTraversal("__").project(*args)
+  @staticmethod
+  def unfold(*args):
+    return PythonGraphTraversal("__").unfold(*args)
+  @staticmethod
+  def fold(*args):
+    return PythonGraphTraversal("__").fold(*args)
+  @staticmethod
+  def mean(*args):
+    return PythonGraphTraversal("__").mean(*args)
+  @staticmethod
+  def groupV3d0(*args):
+    return PythonGraphTraversal("__").groupV3d0(*args)
+  @staticmethod
+  def addV(*args):
+    return PythonGraphTraversal("__").addV(*args)
+  @staticmethod
+  def addE(*args):
+    return PythonGraphTraversal("__").addE(*args)
+  @staticmethod
+  def addOutE(*args):
+    return PythonGraphTraversal("__").addOutE(*args)
+  @staticmethod
+  def addInE(*args):
+    return PythonGraphTraversal("__").addInE(*args)
+  @staticmethod
+  def dedup(*args):
+    return PythonGraphTraversal("__").dedup(*args)
+  @staticmethod
+  def where(*args):
+    return PythonGraphTraversal("__").where(*args)
+  @staticmethod
+  def hasNot(*args):
+    return PythonGraphTraversal("__").hasNot(*args)
+  @staticmethod
+  def hasLabel(*args):
+    return PythonGraphTraversal("__").hasLabel(*args)
+  @staticmethod
+  def hasId(*args):
+    return PythonGraphTraversal("__").hasId(*args)
+  @staticmethod
+  def hasKey(*args):
+    return PythonGraphTraversal("__").hasKey(*args)
+  @staticmethod
+  def hasValue(*args):
+    return PythonGraphTraversal("__").hasValue(*args)
+  @staticmethod
+  def coin(*args):
+    return PythonGraphTraversal("__").coin(*args)
+  @staticmethod
+  def timeLimit(*args):
+    return PythonGraphTraversal("__").timeLimit(*args)
+  @staticmethod
+  def simplePath(*args):
+    return PythonGraphTraversal("__").simplePath(*args)
+  @staticmethod
+  def cyclicPath(*args):
+    return PythonGraphTraversal("__").cyclicPath(*args)
+  @staticmethod
+  def sample(*args):
+    return PythonGraphTraversal("__").sample(*args)
+  @staticmethod
+  def sideEffect(*args):
+    return PythonGraphTraversal("__").sideEffect(*args)
+  @staticmethod
+  def subgraph(*args):
+    return PythonGraphTraversal("__").subgraph(*args)
+  @staticmethod
+  def aggregate(*args):
+    return PythonGraphTraversal("__").aggregate(*args)
+  @staticmethod
+  def branch(*args):
+    return PythonGraphTraversal("__").branch(*args)
+  @staticmethod
+  def optional(*args):
+    return PythonGraphTraversal("__").optional(*args)
+  @staticmethod
+  def coalesce(*args):
+    return PythonGraphTraversal("__").coalesce(*args)
+  @staticmethod
+  def repeat(*args):
+    return PythonGraphTraversal("__").repeat(*args)
+  @staticmethod
+  def emit(*args):
+    return PythonGraphTraversal("__").emit(*args)
+  @staticmethod
+  def local(*args):
+    return PythonGraphTraversal("__").local(*args)
+  @staticmethod
+  def barrier(*args):
+    return PythonGraphTraversal("__").barrier(*args)
+  @staticmethod
+  def choose(*args):
+    return PythonGraphTraversal("__").choose(*args)
+  @staticmethod
+  def cap(*args):
+    return PythonGraphTraversal("__").cap(*args)
+  @staticmethod
+  def inject(*args):
+    return PythonGraphTraversal("__").inject(*args)
+  @staticmethod
+  def drop(*args):
+    return PythonGraphTraversal("__").drop(*args)
+  @staticmethod
+  def times(*args):
+    return PythonGraphTraversal("__").times(*args)
+  @staticmethod
+  def _as(*args):
+    return PythonGraphTraversal("__")._as(*args)
+  @staticmethod
+  def label(*args):
+    return PythonGraphTraversal("__").label(*args)
+  @staticmethod
+  def propertyMap(*args):
+    return PythonGraphTraversal("__").propertyMap(*args)
+  @staticmethod
+  def constant(*args):
+    return PythonGraphTraversal("__").constant(*args)
+  @staticmethod
+  def until(*args):
+    return PythonGraphTraversal("__").until(*args)
+  @staticmethod
+  def __(*args):
+    return PythonGraphTraversal("__").__(*args)
+  @staticmethod
+  def has(*args):
+    return PythonGraphTraversal("__").has(*args)
+  @staticmethod
+  def union(*args):
+    return PythonGraphTraversal("__").union(*args)
+  @staticmethod
+  def groupCount(*args):
+    return PythonGraphTraversal("__").groupCount(*args)
+  @staticmethod
+  def flatMap(*args):
+    return PythonGraphTraversal("__").flatMap(*args)
+  @staticmethod
+  def properties(*args):
+    return PythonGraphTraversal("__").properties(*args)
+  @staticmethod
+  def to(*args):
+    return PythonGraphTraversal("__").to(*args)
+  @staticmethod
+  def _not(*args):
+    return PythonGraphTraversal("__")._not(*args)
+  @staticmethod
+  def _is(*args):
+    return PythonGraphTraversal("__")._is(*args)
+  @staticmethod
+  def select(*args):
+    return PythonGraphTraversal("__").select(*args)
+  @staticmethod
+  def wait(*args):
+    return PythonGraphTraversal("__").wait(*args)
+  @staticmethod
+  def equals(*args):
+    return PythonGraphTraversal("__").equals(*args)
+  @staticmethod
+  def toString(*args):
+    return PythonGraphTraversal("__").toString(*args)
+  @staticmethod
+  def hashCode(*args):
+    return PythonGraphTraversal("__").hashCode(*args)
+  @staticmethod
+  def getClass(*args):
+    return PythonGraphTraversal("__").getClass(*args)
+  @staticmethod
+  def notify(*args):
+    return PythonGraphTraversal("__").notify(*args)
+  @staticmethod
+  def notifyAll(*args):
+    return PythonGraphTraversal("__").notifyAll(*args)
+
+
diff --git a/giraph-gremlin/pom.xml b/giraph-gremlin/pom.xml
index 2ea333b..3684c44 100644
--- a/giraph-gremlin/pom.xml
+++ b/giraph-gremlin/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.4-SNAPSHOT</version>
+        <version>3.2.2-SNAPSHOT</version>
     </parent>
     <artifactId>giraph-gremlin</artifactId>
     <name>Apache TinkerPop :: Giraph Gremlin</name>
diff --git a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphGraphComputer.java b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphGraphComputer.java
index 18bb25e..b06b40a 100644
--- a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphGraphComputer.java
+++ b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphGraphComputer.java
@@ -30,6 +30,7 @@
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.mapreduce.Cluster;
 import org.apache.hadoop.mapreduce.InputFormat;
+import org.apache.hadoop.mapreduce.OutputFormat;
 import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
 import org.apache.hadoop.util.Tool;
@@ -42,6 +43,7 @@
 import org.apache.tinkerpop.gremlin.hadoop.process.computer.util.MapReduceHelper;
 import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.FileSystemStorage;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.GraphFilterAware;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.InputOutputHelper;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritable;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritableIterator;
@@ -50,18 +52,23 @@
 import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
+import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.util.DefaultComputerResult;
 import org.apache.tinkerpop.gremlin.process.computer.util.MapMemory;
 import org.apache.tinkerpop.gremlin.structure.io.Storage;
 import org.apache.tinkerpop.gremlin.util.Gremlin;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import java.io.File;
+import java.io.IOException;
 import java.io.NotSerializableException;
+import java.net.URI;
+import java.util.HashSet;
+import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Future;
-import java.util.stream.Stream;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -71,6 +78,7 @@
     protected GiraphConfiguration giraphConfiguration = new GiraphConfiguration();
     private MapMemory memory = new MapMemory();
     private boolean useWorkerThreadsInConfiguration;
+    private Set<String> vertexProgramConfigurationKeys = new HashSet<>();
 
     public GiraphGraphComputer(final HadoopGraph hadoopGraph) {
         super(hadoopGraph);
@@ -107,7 +115,9 @@
         super.program(vertexProgram);
         this.memory.addVertexProgramMemoryComputeKeys(this.vertexProgram);
         final BaseConfiguration apacheConfiguration = new BaseConfiguration();
+        apacheConfiguration.setDelimiterParsingDisabled(true);
         vertexProgram.storeState(apacheConfiguration);
+        IteratorUtils.fill(apacheConfiguration.getKeys(), this.vertexProgramConfigurationKeys);
         ConfUtil.mergeApacheIntoHadoopConfiguration(apacheConfiguration, this.giraphConfiguration);
         this.vertexProgram.getMessageCombiner().ifPresent(combiner -> this.giraphConfiguration.setMessageCombinerClass(GiraphMessageCombiner.class));
         return this;
@@ -124,15 +134,17 @@
         final Configuration apacheConfiguration = ConfUtil.makeApacheConfiguration(this.giraphConfiguration);
         return CompletableFuture.<ComputerResult>supplyAsync(() -> {
             try {
-                final FileSystem fs = FileSystem.get(this.giraphConfiguration);
-                this.loadJars(fs);
+                this.loadJars(giraphConfiguration);
                 ToolRunner.run(this, new String[]{});
             } catch (final Exception e) {
                 //e.printStackTrace();
                 throw new IllegalStateException(e.getMessage(), e);
             }
-
             this.memory.setRuntime(System.currentTimeMillis() - startTime);
+            // clear properties that should not be propagated in an OLAP chain
+            apacheConfiguration.clearProperty(Constants.GREMLIN_HADOOP_GRAPH_FILTER);
+            apacheConfiguration.clearProperty(Constants.GREMLIN_HADOOP_VERTEX_PROGRAM_INTERCEPTOR);
+            this.vertexProgramConfigurationKeys.forEach(apacheConfiguration::clearProperty); // clear out vertex program specific configurations
             return new DefaultComputerResult(InputOutputHelper.getOutputGraph(apacheConfiguration, this.resultGraph, this.persist), this.memory.asImmutable());
         }, exec);
     }
@@ -141,19 +153,25 @@
     public int run(final String[] args) {
         final Storage storage = FileSystemStorage.open(this.giraphConfiguration);
         storage.rm(this.giraphConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION));
-        this.giraphConfiguration.setBoolean(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT_HAS_EDGES, this.persist.equals(Persist.EDGES));
+        this.giraphConfiguration.setBoolean(Constants.GREMLIN_HADOOP_GRAPH_WRITER_HAS_EDGES, this.persist.equals(Persist.EDGES));
         try {
+            // store vertex and edge filters (will propagate down to native InputFormat or else GiraphVertexInputFormat will process)
+            final BaseConfiguration apacheConfiguration = new BaseConfiguration();
+            apacheConfiguration.setDelimiterParsingDisabled(true);
+            GraphFilterAware.storeGraphFilter(apacheConfiguration, this.giraphConfiguration, this.graphFilter);
+
             // it is possible to run graph computer without a vertex program (and thus, only map reduce jobs if they exist)
             if (null != this.vertexProgram) {
                 // a way to verify in Giraph whether the traversal will go over the wire or not
                 try {
                     VertexProgram.createVertexProgram(this.hadoopGraph, ConfUtil.makeApacheConfiguration(this.giraphConfiguration));
-                } catch (IllegalStateException e) {
+                } catch (final IllegalStateException e) {
                     if (e.getCause() instanceof NumberFormatException)
                         throw new NotSerializableException("The provided traversal is not serializable and thus, can not be distributed across the cluster");
                 }
-                // prepare the giraph vertex-centric computing job
-                final GiraphJob job = new GiraphJob(this.giraphConfiguration, Constants.GREMLIN_HADOOP_GIRAPH_JOB_PREFIX + this.vertexProgram);
+                // remove historic combiners in configuration propagation (this occurs when job chaining)
+                if (!this.vertexProgram.getMessageCombiner().isPresent())
+                    this.giraphConfiguration.unset(GiraphConstants.MESSAGE_COMBINER_CLASS.getKey());
                 // split required workers across system (open map slots + max threads per machine = total amount of TinkerPop workers)
                 if (!this.useWorkerThreadsInConfiguration) {
                     final Cluster cluster = new Cluster(GiraphGraphComputer.this.giraphConfiguration);
@@ -169,26 +187,34 @@
                         this.giraphConfiguration.setNumComputeThreads(threadsPerMapper);
                     }
                 }
-                // handle input paths (if any)
-                if (FileInputFormat.class.isAssignableFrom(this.giraphConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, InputFormat.class))) {
-                    FileInputFormat.setInputPaths(job.getInternalJob(), Constants.getSearchGraphLocation(this.giraphConfiguration.get(Constants.GREMLIN_HADOOP_INPUT_LOCATION), storage).get());
-                }
-                // handle output paths
-                final Path outputPath = new Path(Constants.getGraphLocation(this.giraphConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION)));
-                FileOutputFormat.setOutputPath(job.getInternalJob(), outputPath);
+                // prepare the giraph vertex-centric computing job
+                final GiraphJob job = new GiraphJob(this.giraphConfiguration, Constants.GREMLIN_HADOOP_GIRAPH_JOB_PREFIX + this.vertexProgram);
                 job.getInternalJob().setJarByClass(GiraphGraphComputer.class);
                 this.logger.info(Constants.GREMLIN_HADOOP_GIRAPH_JOB_PREFIX + this.vertexProgram);
+                // handle input paths (if any)
+                String inputLocation = this.giraphConfiguration.get(Constants.GREMLIN_HADOOP_INPUT_LOCATION, null);
+                if (null != inputLocation && FileInputFormat.class.isAssignableFrom(this.giraphConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_READER, InputFormat.class))) {
+                    inputLocation = Constants.getSearchGraphLocation(inputLocation, storage).orElse(this.giraphConfiguration.get(Constants.GREMLIN_HADOOP_INPUT_LOCATION));
+                    FileInputFormat.setInputPaths(job.getInternalJob(), new Path(inputLocation));
+                }
+                // handle output paths (if any)
+                String outputLocation = this.giraphConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, null);
+                if (null != outputLocation && FileOutputFormat.class.isAssignableFrom(this.giraphConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_WRITER, OutputFormat.class))) {
+                    outputLocation = Constants.getGraphLocation(this.giraphConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION));
+                    FileOutputFormat.setOutputPath(job.getInternalJob(), new Path(outputLocation));
+                }
                 // execute the job and wait until it completes (if it fails, throw an exception)
                 if (!job.run(true))
-                    throw new IllegalStateException("The GiraphGraphComputer job failed -- aborting all subsequent MapReduce jobs");  // how do I get the exception that occured?
+                    throw new IllegalStateException("The GiraphGraphComputer job failed -- aborting all subsequent MapReduce jobs: " + job.getInternalJob().getStatus().getFailureInfo());
                 // add vertex program memory values to the return memory
-                for (final String memoryKey : this.vertexProgram.getMemoryComputeKeys()) {
-                    if (storage.exists(Constants.getMemoryLocation(this.giraphConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION), memoryKey))) {
-                        final ObjectWritableIterator iterator = new ObjectWritableIterator(this.giraphConfiguration, new Path(Constants.getMemoryLocation(this.giraphConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION), memoryKey)));
+                for (final MemoryComputeKey memoryComputeKey : this.vertexProgram.getMemoryComputeKeys()) {
+                    if (!memoryComputeKey.isTransient() && storage.exists(Constants.getMemoryLocation(this.giraphConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION), memoryComputeKey.getKey()))) {
+                        final ObjectWritableIterator iterator = new ObjectWritableIterator(this.giraphConfiguration, new Path(Constants.getMemoryLocation(this.giraphConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION), memoryComputeKey.getKey())));
                         if (iterator.hasNext()) {
-                            this.memory.set(memoryKey, iterator.next().getValue());
+                            this.memory.set(memoryComputeKey.getKey(), iterator.next().getValue());
                         }
-                        storage.rm(Constants.getMemoryLocation(this.giraphConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION), memoryKey));
+                        // vertex program memory items are not stored on disk
+                        storage.rm(Constants.getMemoryLocation(this.giraphConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION), memoryComputeKey.getKey()));
                     }
                 }
                 final Path path = new Path(Constants.getMemoryLocation(this.giraphConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION), Constants.HIDDEN_ITERATION));
@@ -196,7 +222,7 @@
                 storage.rm(Constants.getMemoryLocation(this.giraphConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION), Constants.HIDDEN_ITERATION));
             }
             // do map reduce jobs
-            this.giraphConfiguration.setBoolean(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT_HAS_EDGES, this.giraphConfiguration.getBoolean(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT_HAS_EDGES, true));
+            this.giraphConfiguration.setBoolean(Constants.GREMLIN_HADOOP_GRAPH_READER_HAS_EDGES, this.giraphConfiguration.getBoolean(Constants.GREMLIN_HADOOP_GRAPH_WRITER_HAS_EDGES, true));
             for (final MapReduce mapReduce : this.mapReducers) {
                 this.memory.addMapReduceMemoryKey(mapReduce);
                 MapReduceHelper.executeMapReduceJob(mapReduce, this.memory, this.giraphConfiguration);
@@ -221,36 +247,25 @@
         return this.giraphConfiguration;
     }
 
-    private void loadJars(final FileSystem fs) {
-        final String hadoopGremlinLibsRemote = "hadoop-gremlin-" + Gremlin.version() + "-libs";
-        if (this.giraphConfiguration.getBoolean(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, true)) {
-            final String hadoopGremlinLibsLocal = null == System.getProperty(Constants.HADOOP_GREMLIN_LIBS) ? System.getenv(Constants.HADOOP_GREMLIN_LIBS) : System.getProperty(Constants.HADOOP_GREMLIN_LIBS);
-            if (null == hadoopGremlinLibsLocal)
-                this.logger.warn(Constants.HADOOP_GREMLIN_LIBS + " is not set -- proceeding regardless");
-            else {
-                final String[] paths = hadoopGremlinLibsLocal.split(":");
-                for (final String path : paths) {
-                    final File file = new File(path);
-                    if (file.exists()) {
-                        Stream.of(file.listFiles()).filter(f -> f.getName().endsWith(Constants.DOT_JAR)).forEach(f -> {
-                            try {
-                                final Path jarFile = new Path(fs.getHomeDirectory() + "/" + hadoopGremlinLibsRemote + "/" + f.getName());
-                                if (!fs.exists(jarFile))
-                                    fs.copyFromLocalFile(new Path(f.getPath()), jarFile);
-                                try {
-                                    DistributedCache.addArchiveToClassPath(jarFile, this.giraphConfiguration, fs);
-                                } catch (final Exception e) {
-                                    throw new RuntimeException(e.getMessage(), e);
-                                }
-                            } catch (final Exception e) {
-                                throw new IllegalStateException(e.getMessage(), e);
-                            }
-                        });
-                    } else {
-                        this.logger.warn(path + " does not reference a valid directory -- proceeding regardless");
-                    }
-                }
+    @Override
+    protected void loadJar(final org.apache.hadoop.conf.Configuration hadoopConfiguration, final File file, final Object... params)
+            throws IOException {
+        final FileSystem defaultFileSystem = FileSystem.get(hadoopConfiguration);
+        try {
+            final Path jarFile = new Path(defaultFileSystem.getHomeDirectory() + "/hadoop-gremlin-" + Gremlin.version() + "-libs/" + file.getName());
+            if (!defaultFileSystem.exists(jarFile)) {
+                final Path sourcePath = new Path(file.getPath());
+                final URI sourceUri = sourcePath.toUri();
+                final FileSystem fs = FileSystem.get(sourceUri, hadoopConfiguration);
+                fs.copyFromLocalFile(sourcePath, jarFile);
             }
+            try {
+                DistributedCache.addArchiveToClassPath(jarFile, this.giraphConfiguration, defaultFileSystem);
+            } catch (final Exception e) {
+                throw new RuntimeException(e.getMessage(), e);
+            }
+        } catch (final Exception e) {
+            throw new IllegalStateException(e.getMessage(), e);
         }
     }
 
diff --git a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphMemory.java b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphMemory.java
index b0cd3f9..56428f3 100644
--- a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphMemory.java
+++ b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphMemory.java
@@ -24,21 +24,23 @@
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.SequenceFile;
 import org.apache.tinkerpop.gremlin.hadoop.Constants;
-import org.apache.tinkerpop.gremlin.hadoop.process.computer.util.Rule;
 import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritable;
 import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 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.MapMemory;
 import org.apache.tinkerpop.gremlin.process.computer.util.MemoryHelper;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.javatuples.Pair;
 
 import java.io.DataInput;
 import java.io.DataOutput;
-import java.util.HashSet;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Set;
+import java.util.function.BinaryOperator;
 import java.util.stream.Collectors;
 
 /**
@@ -48,8 +50,8 @@
 
     private VertexProgram<?> vertexProgram;
     private GiraphWorkerContext worker;
-    private Set<String> memoryKeys;
-    private boolean isMasterCompute = true;
+    private Map<String, MemoryComputeKey> memoryComputeKeys;
+    private boolean inExecute = false;
     private long startTime = System.currentTimeMillis();
 
     public GiraphMemory() {
@@ -59,8 +61,9 @@
     public GiraphMemory(final GiraphWorkerContext worker, final VertexProgram<?> vertexProgram) {
         this.worker = worker;
         this.vertexProgram = vertexProgram;
-        this.memoryKeys = new HashSet<>(this.vertexProgram.getMemoryComputeKeys());
-        this.isMasterCompute = false;
+        this.memoryComputeKeys = new HashMap<>();
+        this.vertexProgram.getMemoryComputeKeys().forEach(key -> this.memoryComputeKeys.put(key.getKey(), key));
+        this.inExecute = true;
     }
 
 
@@ -72,34 +75,35 @@
 
     @Override
     public void compute() {
-        this.isMasterCompute = true;
+        this.inExecute = false;
         if (0 == this.getSuperstep()) { // setup
             final Configuration apacheConfiguration = ConfUtil.makeApacheConfiguration(this.getConf());
             this.vertexProgram = VertexProgram.createVertexProgram(HadoopGraph.open(apacheConfiguration), apacheConfiguration);
-            this.memoryKeys = new HashSet<>(this.vertexProgram.getMemoryComputeKeys());
+            this.memoryComputeKeys = new HashMap<>();
+            this.vertexProgram.getMemoryComputeKeys().forEach(key -> this.memoryComputeKeys.put(key.getKey(), key));
             try {
-                for (final String key : this.memoryKeys) {
-                    MemoryHelper.validateKey(key);
-                    this.registerPersistentAggregator(key, MemoryAggregator.class);
+                for (final MemoryComputeKey key : this.memoryComputeKeys.values()) {
+                    this.registerPersistentAggregator(key.getKey(), MemoryAggregator.class);
                 }
             } catch (final Exception e) {
                 throw new IllegalStateException(e.getMessage(), e);
             }
             this.vertexProgram.setup(this);
         } else {
-            if (this.vertexProgram.terminate(this)) { // terminate
-                // write the memory to HDFS
-                final MapMemory memory = new MapMemory(this);
-                // a hack to get the last iteration memory values to stick
-                this.vertexProgram.terminate(memory);
+            // a hack to get the last iteration memory values to stick
+            final PassThroughMemory memory = new PassThroughMemory(this);
+            if (this.vertexProgram.terminate(memory)) { // terminate
                 final String outputLocation = this.getConf().get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, null);
                 if (null != outputLocation) {
                     try {
                         for (final String key : this.keys()) {
-                            final SequenceFile.Writer writer = SequenceFile.createWriter(FileSystem.get(this.getConf()), this.getConf(), new Path(outputLocation + "/" + key), ObjectWritable.class, ObjectWritable.class);
-                            writer.append(ObjectWritable.getNullObjectWritable(), new ObjectWritable<>(memory.get(key)));
-                            writer.close();
+                            if (!this.memoryComputeKeys.get(key).isTransient()) { // do not write transient memory keys to disk
+                                final SequenceFile.Writer writer = SequenceFile.createWriter(FileSystem.get(this.getConf()), this.getConf(), new Path(outputLocation + "/" + key), ObjectWritable.class, ObjectWritable.class);
+                                writer.append(ObjectWritable.getNullObjectWritable(), new ObjectWritable<>(memory.get(key)));
+                                writer.close();
+                            }
                         }
+                        // written for GiraphGraphComputer to read and then is deleted by GiraphGraphComputer
                         final SequenceFile.Writer writer = SequenceFile.createWriter(FileSystem.get(this.getConf()), this.getConf(), new Path(outputLocation + "/" + Constants.HIDDEN_ITERATION), ObjectWritable.class, ObjectWritable.class);
                         writer.append(ObjectWritable.getNullObjectWritable(), new ObjectWritable<>(memory.getIteration()));
                         writer.close();
@@ -114,11 +118,11 @@
 
     @Override
     public int getIteration() {
-        if (this.isMasterCompute) {
+        if (this.inExecute) {
+            return (int) this.worker.getSuperstep();
+        } else {
             final int temp = (int) this.getSuperstep();
             return temp == 0 ? temp : temp - 1;
-        } else {
-            return (int) this.worker.getSuperstep();
         }
     }
 
@@ -129,80 +133,56 @@
 
     @Override
     public Set<String> keys() {
-        return this.memoryKeys.stream().filter(this::exists).collect(Collectors.toSet());
+        return this.memoryComputeKeys.values().stream().filter(key -> this.exists(key.getKey())).map(MemoryComputeKey::getKey).collect(Collectors.toSet());
     }
 
     @Override
     public boolean exists(final String key) {
-        final Rule rule = this.isMasterCompute ? this.getAggregatedValue(key) : this.worker.getAggregatedValue(key);
-        return null != rule.getObject();
+        if (this.inExecute && this.memoryComputeKeys.containsKey(key) && !this.memoryComputeKeys.get(key).isBroadcast())
+            return false;
+        final ObjectWritable value = this.inExecute ? this.worker.getAggregatedValue(key) : this.getAggregatedValue(key);
+        return null != value && !value.isEmpty();
     }
 
     @Override
     public <R> R get(final String key) throws IllegalArgumentException {
-        //this.checkKey(key);
-        final Rule rule = this.isMasterCompute ? this.getAggregatedValue(key) : this.worker.getAggregatedValue(key);
-        if (null == rule.getObject())
+        if (!this.memoryComputeKeys.containsKey(key))
+            throw Memory.Exceptions.memoryDoesNotExist(key);
+        if (this.inExecute && !this.memoryComputeKeys.get(key).isBroadcast())
+            throw Memory.Exceptions.memoryDoesNotExist(key);
+        final ObjectWritable<Pair<BinaryOperator, Object>> value = this.inExecute ?
+                this.worker.<ObjectWritable<Pair<BinaryOperator, Object>>>getAggregatedValue(key) :
+                this.<ObjectWritable<Pair<BinaryOperator, Object>>>getAggregatedValue(key);
+        if (null == value || value.isEmpty())
             throw Memory.Exceptions.memoryDoesNotExist(key);
         else
-            return rule.getObject();
+            return (R) value.get().getValue1();
     }
 
     @Override
-    public void set(final String key, Object value) {
+    public void set(final String key, final Object value) {
         this.checkKeyValue(key, value);
-        if (this.isMasterCompute)
-            this.setAggregatedValue(key, new Rule(Rule.Operation.SET, value));
-        else
-            this.worker.aggregate(key, new Rule(Rule.Operation.SET, value));
+        if (this.inExecute)
+            throw Memory.Exceptions.memorySetOnlyDuringVertexProgramSetUpAndTerminate(key);
+        this.setAggregatedValue(key, new ObjectWritable<>(new Pair<>(this.memoryComputeKeys.get(key).getReducer(), value)));
     }
 
     @Override
-    public void and(final String key, final boolean bool) {
-        this.checkKeyValue(key, bool);
-        if (this.isMasterCompute) {  // only called on setup() and terminate()
-            Boolean value = this.<Rule>getAggregatedValue(key).<Boolean>getObject();
-            value = null == value ? bool : bool && value;
-            this.setAggregatedValue(key, new Rule(Rule.Operation.AND, value));
-        } else {
-            this.worker.aggregate(key, new Rule(Rule.Operation.AND, bool));
-        }
-    }
-
-    @Override
-    public void or(final String key, final boolean bool) {
-        this.checkKeyValue(key, bool);
-        if (this.isMasterCompute) {   // only called on setup() and terminate()
-            Boolean value = this.<Rule>getAggregatedValue(key).<Boolean>getObject();
-            value = null == value ? bool : bool || value;
-            this.setAggregatedValue(key, new Rule(Rule.Operation.OR, value));
-        } else {
-            this.worker.aggregate(key, new Rule(Rule.Operation.OR, bool));
-        }
-    }
-
-    @Override
-    public void incr(final String key, final long delta) {
-        this.checkKeyValue(key, delta);
-        if (this.isMasterCompute) {   // only called on setup() and terminate()
-            Number value = this.<Rule>getAggregatedValue(key).<Number>getObject();
-            value = null == value ? delta : value.longValue() + delta;
-            this.setAggregatedValue(key, new Rule(Rule.Operation.INCR, value));
-        } else {
-            this.worker.aggregate(key, new Rule(Rule.Operation.INCR, delta));
-        }
+    public void add(final String key, final Object value) {
+        this.checkKeyValue(key, value);
+        if (!this.inExecute)
+            throw Memory.Exceptions.memoryAddOnlyDuringVertexProgramExecute(key);
+        this.worker.aggregate(key, new ObjectWritable<>(new Pair<>(this.memoryComputeKeys.get(key).getReducer(), value)));
     }
 
     @Override
     public void write(final DataOutput output) {
-        // no need to serialize the master compute as it gets its data from aggregators
-        // is this true?
+        // all aggregator data is propagated through writables
     }
 
     @Override
     public void readFields(final DataInput input) {
-        // no need to serialize the master compute as it gets its data from aggregators
-        // is this true?
+        // all aggregator data is propagated through writables
     }
 
     @Override
@@ -211,7 +191,7 @@
     }
 
     private void checkKeyValue(final String key, final Object value) {
-        if (!this.memoryKeys.contains(key))
+        if (!this.memoryComputeKeys.containsKey(key))
             throw GraphComputer.Exceptions.providedKeyIsNotAMemoryComputeKey(key);
         MemoryHelper.validateValue(value);
     }
diff --git a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphMessenger.java b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphMessenger.java
index 4abb3e7..03818b2 100644
--- a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphMessenger.java
+++ b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphMessenger.java
@@ -23,7 +23,6 @@
 import org.apache.tinkerpop.gremlin.process.computer.Messenger;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StartStep;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -56,7 +55,7 @@
     public void sendMessage(final MessageScope messageScope, final M message) {
         if (messageScope instanceof MessageScope.Local) {
             final MessageScope.Local<M> localMessageScope = (MessageScope.Local) messageScope;
-            final Traversal.Admin<Vertex, Edge> incidentTraversal = GiraphMessenger.setVertexStart(localMessageScope.getIncidentTraversal().get(), this.giraphVertex.getValue().get());
+            final Traversal.Admin<Vertex, Edge> incidentTraversal = GiraphMessenger.setVertexStart(localMessageScope.getIncidentTraversal().get().asAdmin(), this.giraphVertex.getValue().get());
             final Direction direction = GiraphMessenger.getOppositeDirection(incidentTraversal);
             incidentTraversal.forEachRemaining(edge ->
                     this.giraphComputation.sendMessage(
@@ -69,8 +68,8 @@
         }
     }
 
-    private static <T extends Traversal.Admin<Vertex, Edge>> T setVertexStart(final Traversal<Vertex, Edge> incidentTraversal, final Vertex vertex) {
-        incidentTraversal.asAdmin().addStep(0, new StartStep<>(incidentTraversal.asAdmin(), vertex));
+    private static <T extends Traversal.Admin<Vertex, Edge>> T setVertexStart(final Traversal.Admin<Vertex, Edge> incidentTraversal, final Vertex vertex) {
+        incidentTraversal.asAdmin().addStart(incidentTraversal.getTraverserGenerator().generate(vertex, incidentTraversal.getStartStep(), 1l));
         return (T) incidentTraversal;
     }
 
diff --git a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphWorkerContext.java b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphWorkerContext.java
index 86b733c..0122ab4 100644
--- a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphWorkerContext.java
+++ b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphWorkerContext.java
@@ -28,6 +28,7 @@
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.util.ImmutableMemory;
 import org.apache.tinkerpop.gremlin.process.computer.util.VertexProgramPool;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimServiceLoader;
 
 import java.util.Iterator;
 
@@ -45,7 +46,7 @@
 
     public void preApplication() throws InstantiationException, IllegalAccessException {
         final Configuration apacheConfiguration = ConfUtil.makeApacheConfiguration(this.getContext().getConfiguration());
-        HadoopPools.initialize(apacheConfiguration);
+        KryoShimServiceLoader.applyConfiguration(apacheConfiguration);
         final VertexProgram vertexProgram = VertexProgram.createVertexProgram(HadoopGraph.open(apacheConfiguration), apacheConfiguration);
         this.vertexProgramPool = new VertexProgramPool(vertexProgram, this.getContext().getConfiguration().getInt(GiraphConstants.NUM_COMPUTE_THREADS.getKey(), 1));
         this.memory = new GiraphMemory(this, vertexProgram);
diff --git a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/MemoryAggregator.java b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/MemoryAggregator.java
index 1e56892..4929546 100644
--- a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/MemoryAggregator.java
+++ b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/MemoryAggregator.java
@@ -19,76 +19,50 @@
 package org.apache.tinkerpop.gremlin.giraph.process.computer;
 
 import org.apache.giraph.aggregators.Aggregator;
-import org.apache.tinkerpop.gremlin.hadoop.process.computer.util.Rule;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritable;
+import org.javatuples.Pair;
+
+import java.util.function.BinaryOperator;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class MemoryAggregator implements Aggregator<Rule> {
+public final class MemoryAggregator implements Aggregator<ObjectWritable<Pair<BinaryOperator, Object>>> {
 
-    private Object currentObject;
-    private Rule.Operation lastOperation = null;
+    private ObjectWritable<Pair<BinaryOperator, Object>> currentObject = ObjectWritable.<Pair<BinaryOperator, Object>>empty();
 
-    public MemoryAggregator() {
-        this.currentObject = null;
+    public MemoryAggregator() { // for Giraph serialization
+
     }
 
     @Override
-    public Rule getAggregatedValue() {
-        if (null == this.currentObject)
-            return createInitialValue();
-        else if (this.currentObject instanceof Long)
-            return new Rule(Rule.Operation.INCR, this.currentObject);
-        else
-            return new Rule(null == this.lastOperation ? Rule.Operation.NO_OP : this.lastOperation, this.currentObject);
+    public ObjectWritable<Pair<BinaryOperator, Object>> getAggregatedValue() {
+        return this.currentObject;
     }
 
     @Override
-    public void setAggregatedValue(final Rule rule) {
-        this.currentObject = null == rule ? null : rule.getObject();
+    public void setAggregatedValue(final ObjectWritable<Pair<BinaryOperator, Object>> object) {
+        if (null != object)
+            this.currentObject = object;
+    }
+
+    @Override
+    public void aggregate(final ObjectWritable<Pair<BinaryOperator, Object>> object) {
+        if (null == object)
+            return;
+        else if (this.currentObject.isEmpty())
+            this.currentObject = object;
+        else if (!object.isEmpty())
+            this.currentObject.set(new Pair<>(object.get().getValue0(), object.get().getValue0().apply(this.currentObject.get().getValue1(), object.get().getValue1())));
     }
 
     @Override
     public void reset() {
-        this.currentObject = null;
+        this.currentObject = ObjectWritable.<Pair<BinaryOperator, Object>>empty();
     }
 
     @Override
-    public Rule createInitialValue() {
-        return new Rule(Rule.Operation.NO_OP, null);
-    }
-
-    @Override
-    public void aggregate(final Rule ruleWritable) {
-        final Rule.Operation rule = ruleWritable.getOperation();
-        final Object object = ruleWritable.getObject();
-        if (rule != Rule.Operation.NO_OP)
-            this.lastOperation = rule;
-
-        if (null == this.currentObject || rule.equals(Rule.Operation.SET)) {
-            this.currentObject = object;
-        } else {
-            if (rule.equals(Rule.Operation.INCR)) {
-                this.currentObject = (Long) this.currentObject + (Long) object;
-            } else if (rule.equals(Rule.Operation.AND)) {
-                this.currentObject = (Boolean) this.currentObject && (Boolean) object;
-            } else if (rule.equals(Rule.Operation.OR)) {
-                this.currentObject = (Boolean) this.currentObject || (Boolean) object;
-            } else if (rule.equals(Rule.Operation.NO_OP)) {
-                if (object instanceof Boolean) { // only happens when NO_OP booleans are being propagated will this occur
-                    if (null == this.lastOperation) {
-                        // do nothing ... why?
-                    } else if (this.lastOperation.equals(Rule.Operation.AND)) {
-                        this.currentObject = (Boolean) this.currentObject && (Boolean) object;
-                    } else if (this.lastOperation.equals(Rule.Operation.OR)) {
-                        this.currentObject = (Boolean) this.currentObject || (Boolean) object;
-                    } else {
-                        throw new IllegalStateException("This state should not have occurred: " + ruleWritable);
-                    }
-                }
-            } else {
-                throw new IllegalArgumentException("The provided rule is unknown: " + ruleWritable);
-            }
-        }
+    public ObjectWritable<Pair<BinaryOperator, Object>> createInitialValue() {
+        return ObjectWritable.<Pair<BinaryOperator, Object>>empty();
     }
 }
\ No newline at end of file
diff --git a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/PassThroughMemory.java b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/PassThroughMemory.java
new file mode 100644
index 0000000..dc40e7b
--- /dev/null
+++ b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/process/computer/PassThroughMemory.java
@@ -0,0 +1,99 @@
+/*
+ * 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.giraph.process.computer;
+
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class PassThroughMemory implements Memory.Admin {
+
+    private final GiraphMemory giraphMemory;
+    private long runtime = 0l;
+    private int iteration = -1;
+    private final Map<String, Object> memoryMap = new HashMap<>();
+
+    public PassThroughMemory(final GiraphMemory giraphMemory) {
+        this.giraphMemory = giraphMemory;
+        giraphMemory.keys().forEach(key -> this.memoryMap.put(key, giraphMemory.get(key)));
+        this.iteration = giraphMemory.getIteration();
+    }
+
+    @Override
+    public Set<String> keys() {
+        return this.memoryMap.keySet();
+    }
+
+    @Override
+    public <R> R get(final String key) throws IllegalArgumentException {
+        final R r = (R) this.memoryMap.get(key);
+        if (null == r)
+            throw Memory.Exceptions.memoryDoesNotExist(key);
+        else
+            return r;
+    }
+
+    @Override
+    public void set(final String key, Object value) {
+        this.memoryMap.put(key, value);
+        this.giraphMemory.set(key, value);
+    }
+
+    @Override
+    public int getIteration() {
+        return this.iteration;
+    }
+
+    @Override
+    public long getRuntime() {
+        return this.runtime;
+    }
+
+    @Override
+    public void add(final String key, final Object value) {
+        this.giraphMemory.add(key, value);
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.memoryString(this);
+    }
+
+    @Override
+    public void incrIteration() {
+        this.iteration = this.iteration + 1;
+    }
+
+    @Override
+    public void setIteration(final int iteration) {
+        this.iteration = iteration;
+    }
+
+    @Override
+    public void setRuntime(long runtime) {
+        this.runtime = runtime;
+    }
+}
diff --git a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/structure/io/GiraphVertexInputFormat.java b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/structure/io/GiraphVertexInputFormat.java
index 6b6638a..5900663 100644
--- a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/structure/io/GiraphVertexInputFormat.java
+++ b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/structure/io/GiraphVertexInputFormat.java
@@ -21,14 +21,10 @@
 import org.apache.giraph.io.VertexInputFormat;
 import org.apache.giraph.io.VertexReader;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.io.NullWritable;
-import org.apache.hadoop.mapreduce.InputFormat;
 import org.apache.hadoop.mapreduce.InputSplit;
 import org.apache.hadoop.mapreduce.JobContext;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
-import org.apache.hadoop.util.ReflectionUtils;
-import org.apache.tinkerpop.gremlin.hadoop.Constants;
-import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
+import org.apache.tinkerpop.gremlin.hadoop.process.computer.GraphFilterInputFormat;
 
 import java.io.IOException;
 import java.util.List;
@@ -38,8 +34,6 @@
  */
 public final class GiraphVertexInputFormat extends VertexInputFormat {
 
-    private InputFormat<NullWritable, VertexWritable> hadoopGraphInputFormat;
-
     @Override
     public void checkInputSpecs(final Configuration configuration) {
 
@@ -47,23 +41,17 @@
 
     @Override
     public List<InputSplit> getSplits(final JobContext context, final int minSplitCountHint) throws IOException, InterruptedException {
-        this.constructor(context.getConfiguration());
-        return this.hadoopGraphInputFormat.getSplits(context);
+        return new GraphFilterInputFormat().getSplits(context);
     }
 
     @Override
     public VertexReader createVertexReader(final InputSplit split, final TaskAttemptContext context) throws IOException {
-        this.constructor(context.getConfiguration());
         try {
-            return new GiraphVertexReader(this.hadoopGraphInputFormat.createRecordReader(split, context));
-        } catch (InterruptedException e) {
-            throw new IOException(e);
-        }
-    }
-
-    private final void constructor(final Configuration configuration) {
-        if (null == this.hadoopGraphInputFormat) {
-            this.hadoopGraphInputFormat = ReflectionUtils.newInstance(configuration.getClass(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, InputFormat.class, InputFormat.class), configuration);
+            final GiraphVertexReader reader = new GiraphVertexReader();
+            reader.initialize(split, context);
+            return reader;
+        } catch (final InterruptedException e) {
+            throw new IOException(e.getMessage(), e);
         }
     }
 
diff --git a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/structure/io/GiraphVertexOutputFormat.java b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/structure/io/GiraphVertexOutputFormat.java
index 2d9b4ba..9881c77 100644
--- a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/structure/io/GiraphVertexOutputFormat.java
+++ b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/structure/io/GiraphVertexOutputFormat.java
@@ -18,17 +18,15 @@
  */
 package org.apache.tinkerpop.gremlin.giraph.structure.io;
 
-import org.apache.tinkerpop.gremlin.hadoop.Constants;
-import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
 import org.apache.giraph.io.VertexOutputFormat;
 import org.apache.giraph.io.VertexWriter;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.io.NullWritable;
 import org.apache.hadoop.mapreduce.JobContext;
 import org.apache.hadoop.mapreduce.OutputCommitter;
 import org.apache.hadoop.mapreduce.OutputFormat;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
 import org.apache.hadoop.util.ReflectionUtils;
+import org.apache.tinkerpop.gremlin.hadoop.Constants;
 
 import java.io.IOException;
 
@@ -37,29 +35,21 @@
  */
 public final class GiraphVertexOutputFormat extends VertexOutputFormat {
 
-    private OutputFormat<NullWritable, VertexWritable> hadoopGraphOutputFormat;
-
     @Override
     public VertexWriter createVertexWriter(final TaskAttemptContext context) throws IOException, InterruptedException {
-        this.constructor(context.getConfiguration());
-        return new GiraphVertexWriter(this.hadoopGraphOutputFormat);
+        return new GiraphVertexWriter();
     }
 
     @Override
     public void checkOutputSpecs(final JobContext context) throws IOException, InterruptedException {
-        this.constructor(context.getConfiguration());
-        this.hadoopGraphOutputFormat.checkOutputSpecs(context);
+        final Configuration configuration = context.getConfiguration();
+        ReflectionUtils.newInstance(configuration.getClass(Constants.GREMLIN_HADOOP_GRAPH_WRITER, OutputFormat.class, OutputFormat.class), configuration).checkOutputSpecs(context);
     }
 
     @Override
     public OutputCommitter getOutputCommitter(final TaskAttemptContext context) throws IOException, InterruptedException {
-        this.constructor(context.getConfiguration());
-        return this.hadoopGraphOutputFormat.getOutputCommitter(context);
+        final Configuration configuration = context.getConfiguration();
+        return ReflectionUtils.newInstance(configuration.getClass(Constants.GREMLIN_HADOOP_GRAPH_WRITER, OutputFormat.class, OutputFormat.class), configuration).getOutputCommitter(context);
     }
 
-    private final void constructor(final Configuration configuration) {
-        if (null == this.hadoopGraphOutputFormat) {
-            this.hadoopGraphOutputFormat = ReflectionUtils.newInstance(configuration.getClass(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT, OutputFormat.class, OutputFormat.class), configuration);
-        }
-    }
 }
\ No newline at end of file
diff --git a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/structure/io/GiraphVertexReader.java b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/structure/io/GiraphVertexReader.java
index 2a6ade6..5335980 100644
--- a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/structure/io/GiraphVertexReader.java
+++ b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/structure/io/GiraphVertexReader.java
@@ -25,6 +25,7 @@
 import org.apache.hadoop.mapreduce.RecordReader;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
 import org.apache.tinkerpop.gremlin.giraph.process.computer.GiraphVertex;
+import org.apache.tinkerpop.gremlin.hadoop.process.computer.GraphFilterRecordReader;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
 
 import java.io.IOException;
@@ -36,8 +37,8 @@
 
     private RecordReader<NullWritable, VertexWritable> recordReader;
 
-    public GiraphVertexReader(final RecordReader<NullWritable, VertexWritable> recordReader) {
-        this.recordReader = recordReader;
+    public GiraphVertexReader() {
+        this.recordReader = new GraphFilterRecordReader();
     }
 
     @Override
diff --git a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/structure/io/GiraphVertexWriter.java b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/structure/io/GiraphVertexWriter.java
index 43c4b0b..3c94137 100644
--- a/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/structure/io/GiraphVertexWriter.java
+++ b/giraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/giraph/structure/io/GiraphVertexWriter.java
@@ -20,29 +20,42 @@
 
 import org.apache.giraph.graph.Vertex;
 import org.apache.giraph.io.VertexWriter;
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.io.NullWritable;
 import org.apache.hadoop.mapreduce.OutputFormat;
 import org.apache.hadoop.mapreduce.RecordWriter;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
+import org.apache.hadoop.util.ReflectionUtils;
 import org.apache.tinkerpop.gremlin.giraph.process.computer.GiraphVertex;
+import org.apache.tinkerpop.gremlin.hadoop.Constants;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
+import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
+import org.apache.tinkerpop.gremlin.process.computer.VertexComputeKey;
+import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.util.VertexProgramHelper;
+import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
 
 import java.io.IOException;
+import java.util.stream.Collectors;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public final class GiraphVertexWriter extends VertexWriter {
-    private final OutputFormat<NullWritable, VertexWritable> outputFormat;
     private RecordWriter<NullWritable, VertexWritable> recordWriter;
+    private String[] transientComputeKeys;
 
-    public GiraphVertexWriter(final OutputFormat<NullWritable, VertexWritable> outputFormat) {
-        this.outputFormat = outputFormat;
+    public GiraphVertexWriter() {
+
     }
 
     @Override
     public void initialize(final TaskAttemptContext context) throws IOException, InterruptedException {
-        this.recordWriter = this.outputFormat.getRecordWriter(context);
+        final Configuration configuration = context.getConfiguration();
+        this.recordWriter = ReflectionUtils.newInstance(configuration.getClass(Constants.GREMLIN_HADOOP_GRAPH_WRITER, OutputFormat.class, OutputFormat.class), configuration).getRecordWriter(context);
+        this.transientComputeKeys = VertexProgramHelper.vertexComputeKeysAsArray(((VertexProgram<?>) VertexProgram.createVertexProgram(EmptyGraph.instance(), ConfUtil.makeApacheConfiguration(configuration))).getVertexComputeKeys().stream().
+                filter(VertexComputeKey::isTransient).
+                collect(Collectors.toSet()));
     }
 
     @Override
@@ -52,6 +65,7 @@
 
     @Override
     public void writeVertex(final Vertex vertex) throws IOException, InterruptedException {
+        ((GiraphVertex) vertex).getValue().get().dropVertexProperties(this.transientComputeKeys); // remove all transient compute keys before writing to OutputFormat
         this.recordWriter.write(NullWritable.get(), ((GiraphVertex) vertex).getValue());
     }
 }
diff --git a/giraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphHadoopGraphProvider.java b/giraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphHadoopGraphProvider.java
index 07b7897..8eae4f1 100644
--- a/giraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphHadoopGraphProvider.java
+++ b/giraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/giraph/process/computer/GiraphHadoopGraphProvider.java
@@ -22,8 +22,8 @@
 import org.apache.tinkerpop.gremlin.GraphProvider;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.hadoop.HadoopGraphProvider;
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.ComputerTraversalEngine;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 
 import java.util.Map;
@@ -35,7 +35,6 @@
 @GraphProvider.Descriptor(computer = GiraphGraphComputer.class)
 public final class GiraphHadoopGraphProvider extends HadoopGraphProvider {
 
-
     @Override
     public Map<String, Object> getBaseConfiguration(final String graphName, final Class<?> test, final String testMethodName, final LoadGraphWith.GraphData loadGraphWith) {
         final Map<String, Object> config = super.getBaseConfiguration(graphName, test, testMethodName, loadGraphWith);
@@ -59,6 +58,11 @@
 
     @Override
     public GraphTraversalSource traversal(final Graph graph) {
-        return GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(GiraphGraphComputer.class)).create(graph);
+        return graph.traversal().withComputer(GiraphGraphComputer.class);
+    }
+
+    @Override
+    public GraphComputer getGraphComputer(final Graph graph) {
+        return graph.compute(GiraphGraphComputer.class);
     }
 }
diff --git a/gremlin-archetype/gremlin-archetype-server/pom.xml b/gremlin-archetype/gremlin-archetype-server/pom.xml
index 104e445..ed6e137 100644
--- a/gremlin-archetype/gremlin-archetype-server/pom.xml
+++ b/gremlin-archetype/gremlin-archetype-server/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>gremlin-archetype</artifactId>
-        <version>3.1.4-SNAPSHOT</version>
+        <version>3.2.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>gremlin-archetype-server</artifactId>
diff --git a/gremlin-archetype/gremlin-archetype-tinkergraph/pom.xml b/gremlin-archetype/gremlin-archetype-tinkergraph/pom.xml
index 7466b47..d4c009f 100644
--- a/gremlin-archetype/gremlin-archetype-tinkergraph/pom.xml
+++ b/gremlin-archetype/gremlin-archetype-tinkergraph/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>gremlin-archetype</artifactId>
-        <version>3.1.4-SNAPSHOT</version>
+        <version>3.2.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>gremlin-archetype-tinkergraph</artifactId>
diff --git a/gremlin-archetype/pom.xml b/gremlin-archetype/pom.xml
index 2a9eb2d..c2c39e9 100644
--- a/gremlin-archetype/pom.xml
+++ b/gremlin-archetype/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <artifactId>tinkerpop</artifactId>
         <groupId>org.apache.tinkerpop</groupId>
-        <version>3.1.4-SNAPSHOT</version>
+        <version>3.2.2-SNAPSHOT</version>
     </parent>
 
     <artifactId>gremlin-archetype</artifactId>
diff --git a/gremlin-benchmark/pom.xml b/gremlin-benchmark/pom.xml
new file mode 100644
index 0000000..adc0a24
--- /dev/null
+++ b/gremlin-benchmark/pom.xml
@@ -0,0 +1,130 @@
+<!--
+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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>tinkerpop</artifactId>
+        <groupId>org.apache.tinkerpop</groupId>
+        <version>3.2.2-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>gremlin-benchmark</artifactId>
+    <name>Apache TinkerPop :: Gremlin Benchmark</name>
+    <properties>
+        <jmh.version>1.11.3</jmh.version>
+        <!-- Skip benchmarks by default because they are time consuming. -->
+        <skipBenchmarks>true</skipBenchmarks>
+        <skipTests>${skipBenchmarks}</skipTests>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>${junit.version}</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tinkerpop</groupId>
+            <artifactId>gremlin-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tinkerpop</groupId>
+            <artifactId>gremlin-test</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tinkerpop</groupId>
+            <artifactId>tinkergraph-gremlin</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openjdk.jmh</groupId>
+            <artifactId>jmh-core</artifactId>
+            <version>${jmh.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openjdk.jmh</groupId>
+            <artifactId>jmh-generator-annprocess</artifactId>
+            <version>${jmh.version}</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-deploy-plugin</artifactId>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <testSourceDirectory>${project.build.sourceDirectory}</testSourceDirectory>
+                    <testClassesDirectory>${project.build.outputDirectory}</testClassesDirectory>
+                    <includes>
+                        <include>**/*Benchmark*.java</include>
+                    </includes>
+                    <excludes>
+                        <exclude>**/*$*.class</exclude>
+                        <exclude>**/Abstract*</exclude>
+                        <exclude>**/*_jmhType*</exclude>
+                    </excludes>
+                    <systemPropertyVariables>
+                        <benchmarkReportDir>${project.build.directory}/reports/benchmark/</benchmarkReportDir>
+                    </systemPropertyVariables>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <version>2.2</version>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <configuration>
+                            <createDependencyReducedPom>false</createDependencyReducedPom>
+                            <transformers>
+                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                    <mainClass>org.openjdk.jmh.Main</mainClass>
+                                </transformer>
+                            </transformers>
+                            <filters>
+                                <filter>
+                                    <artifact>*:*</artifact>
+                                    <excludes>
+                                        <exclude>META-INF/*.SF</exclude>
+                                        <exclude>META-INF/*.DSA</exclude>
+                                        <exclude>META-INF/*.RSA</exclude>
+                                    </excludes>
+                                </filter>
+                            </filters>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/gremlin-benchmark/src/main/java/org/apache/tinkerpop/benchmark/util/AbstractBenchmarkBase.java b/gremlin-benchmark/src/main/java/org/apache/tinkerpop/benchmark/util/AbstractBenchmarkBase.java
new file mode 100644
index 0000000..2f8bb66
--- /dev/null
+++ b/gremlin-benchmark/src/main/java/org/apache/tinkerpop/benchmark/util/AbstractBenchmarkBase.java
@@ -0,0 +1,117 @@
+/*
+ * 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.benchmark.util;
+
+import org.junit.Test;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.results.format.ResultFormatType;
+import org.openjdk.jmh.runner.Runner;
+import org.openjdk.jmh.runner.options.ChainedOptionsBuilder;
+import org.openjdk.jmh.runner.options.OptionsBuilder;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * Base class for all TinkerPop OpenJDK JMH benchmarks.  Based upon Netty's approach to running JMH benchmarks
+ * from JUnit.
+ *
+ * @see <a href="http://netty.io/wiki/microbenchmarks.html"</a>
+ *
+ * @author Ted Wilmes (http://twilmes.org)
+ */
+@Warmup(iterations = AbstractBenchmarkBase.DEFAULT_WARMUP_ITERATIONS)
+@Measurement(iterations = AbstractBenchmarkBase.DEFAULT_MEASURE_ITERATIONS)
+@Fork(AbstractBenchmarkBase.DEFAULT_FORKS)
+public abstract class AbstractBenchmarkBase {
+
+    protected static final int DEFAULT_WARMUP_ITERATIONS = 10;
+    protected static final int DEFAULT_MEASURE_ITERATIONS = 10;
+    protected static final int DEFAULT_FORKS = 2;
+    protected static final String DEFAULT_BENCHMARK_DIRECTORY = "./benchmarks/";
+
+    protected static final String[] JVM_ARGS = {
+            "-server", "-Xms2g", "-Xmx2g"
+    };
+
+    @Test
+    public void run() throws Exception {
+        final String className = getClass().getSimpleName();
+
+        final ChainedOptionsBuilder runnerOptions = new OptionsBuilder()
+                .include(".*" + className + ".*")
+                .jvmArgs(JVM_ARGS);
+
+        if (getWarmupIterations() > 0) {
+            runnerOptions.warmupIterations(getWarmupIterations());
+        }
+
+        if (getMeasureIterations() > 0) {
+            runnerOptions.measurementIterations(getMeasureIterations());
+        }
+
+        if (getForks() > 0) {
+            runnerOptions.forks(getForks());
+        }
+
+        if (getReportDir() != null) {
+            final String dtmStr = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
+            final String filePath = getReportDir() + className + "-" + dtmStr + ".json";
+            final File file = new File(filePath);
+            if (file.exists()) {
+                file.delete();
+            } else {
+                file.getParentFile().mkdirs();
+                file.createNewFile();
+            }
+
+            runnerOptions.resultFormat(ResultFormatType.JSON);
+            runnerOptions.result(filePath);
+        }
+
+        new Runner(runnerOptions.build()).run();
+    }
+
+    protected int getWarmupIterations() {
+        return getIntProperty("warmupIterations", DEFAULT_WARMUP_ITERATIONS);
+    }
+
+    protected int getMeasureIterations() {
+        return getIntProperty("measureIterations", DEFAULT_MEASURE_ITERATIONS);
+    }
+
+    protected int getForks() {
+        return getIntProperty("forks", DEFAULT_FORKS);
+    }
+
+    protected String getReportDir() {
+        return System.getProperty("benchmark.dir", DEFAULT_BENCHMARK_DIRECTORY);
+    }
+
+    private int getIntProperty(final String propertyName, final int defaultValue) {
+        final String propertyValue = System.getProperty(propertyName);
+        if(propertyValue == null) {
+            return defaultValue;
+        }
+        return Integer.valueOf(propertyValue);
+    }
+}
diff --git a/gremlin-benchmark/src/main/java/org/apache/tinkerpop/benchmark/util/AbstractGraphBenchmark.java b/gremlin-benchmark/src/main/java/org/apache/tinkerpop/benchmark/util/AbstractGraphBenchmark.java
new file mode 100644
index 0000000..ba0105c
--- /dev/null
+++ b/gremlin-benchmark/src/main/java/org/apache/tinkerpop/benchmark/util/AbstractGraphBenchmark.java
@@ -0,0 +1,85 @@
+/*
+ * 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.benchmark.util;
+
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.io.GraphReader;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
+
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * Read-only graph benchmarks extend {@code AbstractGraphBenchmark}.  Annotating your benchmark class with {@link LoadGraphWith}
+ * will load the {@link TinkerGraph} instance with the desired data set.
+ *
+ * @author Ted Wilmes (http://twilmes.org)
+ */
+@State(Scope.Thread)
+public class AbstractGraphBenchmark extends AbstractBenchmarkBase {
+
+    private final String PATH = "/org/apache/tinkerpop/gremlin/structure/io/gryo/";
+
+    protected Graph graph;
+    protected GraphTraversalSource g;
+
+    /**
+     * Opens a new {@link TinkerGraph} instance and optionally preloads it with one of the test data sets enumerated
+     * in {@link LoadGraphWith}.
+     *
+     * @throws IOException on failure to load graph
+     */
+    @Setup
+    public void prepare() throws IOException {
+        graph = TinkerGraph.open();
+        g = graph.traversal();
+
+        final LoadGraphWith[] loadGraphWiths = this.getClass().getAnnotationsByType(LoadGraphWith.class);
+        final LoadGraphWith loadGraphWith = loadGraphWiths.length == 0 ? null : loadGraphWiths[0];
+        final LoadGraphWith.GraphData loadGraphWithData = null == loadGraphWith ? null : loadGraphWith.value();
+
+        String graphFile;
+        if(loadGraphWithData != null) {
+            if (loadGraphWithData.equals(LoadGraphWith.GraphData.GRATEFUL)) {
+                graphFile = "grateful-dead.kryo";
+            } else if (loadGraphWithData.equals(LoadGraphWith.GraphData.MODERN)) {
+                graphFile = "tinkerpop-modern.kryo";
+            } else if (loadGraphWithData.equals(LoadGraphWith.GraphData.CLASSIC)) {
+                graphFile = "tinkerpop-classic.kryo";
+            } else if (loadGraphWithData.equals(LoadGraphWith.GraphData.CREW)) {
+                graphFile = "tinkerpop-crew.kryo";
+            } else {
+                throw new RuntimeException("Could not load graph with " + loadGraphWithData);
+            }
+
+            final GraphReader reader = GryoReader.build().create();
+            try (final InputStream stream = AbstractGraphBenchmark.class.
+                    getResourceAsStream(PATH + graphFile)) {
+                reader.readGraph(stream, graph);
+            }
+        }
+    }
+}
diff --git a/gremlin-benchmark/src/main/java/org/apache/tinkerpop/benchmark/util/AbstractGraphMutateBenchmark.java b/gremlin-benchmark/src/main/java/org/apache/tinkerpop/benchmark/util/AbstractGraphMutateBenchmark.java
new file mode 100644
index 0000000..79d9916
--- /dev/null
+++ b/gremlin-benchmark/src/main/java/org/apache/tinkerpop/benchmark/util/AbstractGraphMutateBenchmark.java
@@ -0,0 +1,48 @@
+/*
+ * 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.benchmark.util;
+
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
+
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+
+/**
+ * Graph write and update benchmarks extend {@code AbstractGraphMutateBenchmark}.  {@code AbstractGraphMutateBenchmark}
+ * runs setup once per invocation so that benchmark measurements are made on an empty {@link TinkerGraph}.  This approach
+ * was taken to isolate the tested method from the performance side effects of unbounded graph growth.
+ *
+ * @author Ted Wilmes (http://twilmes.org)
+ */
+@State(Scope.Thread)
+public abstract class AbstractGraphMutateBenchmark extends AbstractBenchmarkBase {
+
+    protected Graph graph;
+    protected GraphTraversalSource g;
+
+    @Setup(Level.Invocation)
+    public void prepare() {
+        graph = TinkerGraph.open();
+        g = graph.traversal();
+    }
+}
diff --git a/gremlin-benchmark/src/main/java/org/apache/tinkerpop/gremlin/process/GraphMutateBenchmark.java b/gremlin-benchmark/src/main/java/org/apache/tinkerpop/gremlin/process/GraphMutateBenchmark.java
new file mode 100644
index 0000000..04d7138
--- /dev/null
+++ b/gremlin-benchmark/src/main/java/org/apache/tinkerpop/gremlin/process/GraphMutateBenchmark.java
@@ -0,0 +1,92 @@
+/*
+ * 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;
+
+import org.apache.tinkerpop.benchmark.util.AbstractGraphMutateBenchmark;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.Setup;
+
+/**
+ * {@code GraphMutateBenchmark} benchmarks {@link org.apache.tinkerpop.gremlin.process.traversal.Traversal} and
+ * {@link org.apache.tinkerpop.gremlin.structure.Graph} mutation methods.
+ *
+ * @author Ted Wilmes (http://twilmes.org)
+ */
+public class GraphMutateBenchmark extends AbstractGraphMutateBenchmark {
+
+    private Vertex a;
+    private Vertex b;
+    private Vertex c;
+    private Edge e;
+
+    @Setup
+    @Override
+    public void prepare() {
+        super.prepare();
+        a = g.addV().next();
+        b = g.addV().next();
+        c = g.addV().next();
+        e = b.addEdge("knows", c);
+    }
+
+    @Benchmark
+    public Vertex testAddVertex() {
+        return graph.addVertex("test");
+    }
+
+    @Benchmark
+    public VertexProperty testVertexProperty() {
+        return a.property("name", "Susan");
+    }
+
+    @Benchmark
+    public Edge testAddEdge() {
+        return a.addEdge("knows", b);
+    }
+
+    @Benchmark
+    public Property testEdgeProperty() {
+        return e.property("met", 1967);
+    }
+
+    @Benchmark
+    public Vertex testAddV() {
+        return g.addV("test").next();
+    }
+
+    @Benchmark
+    public Vertex testVertexPropertyStep() {
+        return g.V(a).property("name", "Susan").next();
+    }
+
+    @Benchmark
+    public Edge testAddE() {
+        return g.V(a).as("a").V(b).as("b").addE("knows").from("a").to("b").next();
+    }
+
+    @Benchmark
+    public Edge testEdgePropertyStep() {
+        return g.E(e).property("met", 1967).next();
+    }
+}
diff --git a/gremlin-benchmark/src/main/java/org/apache/tinkerpop/gremlin/process/GraphTraversalBenchmark.java b/gremlin-benchmark/src/main/java/org/apache/tinkerpop/gremlin/process/GraphTraversalBenchmark.java
new file mode 100644
index 0000000..191f5e7
--- /dev/null
+++ b/gremlin-benchmark/src/main/java/org/apache/tinkerpop/gremlin/process/GraphTraversalBenchmark.java
@@ -0,0 +1,101 @@
+/*
+ * 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;
+
+import org.apache.tinkerpop.benchmark.util.AbstractGraphBenchmark;
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+
+import org.openjdk.jmh.annotations.Benchmark;
+
+import java.util.List;
+import java.util.Map;
+
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+
+/**
+ * Runs a traversal benchmarks against a {@link org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph} loaded
+ * with the Grateful Dead data set.
+ *
+ * @author Ted Wilmes (http://twilmes.org)
+ */
+@LoadGraphWith(LoadGraphWith.GraphData.GRATEFUL)
+public class GraphTraversalBenchmark extends AbstractGraphBenchmark {
+
+    @Benchmark
+    public List<Vertex> g_V_outE_inV_outE_inV_outE_inV() throws Exception {
+        return g.V().outE().inV().outE().inV().outE().inV().toList();
+    }
+
+    @Benchmark
+    public List<Vertex> g_V_out_out_out() throws Exception {
+        return g.V().out().out().out().toList();
+    }
+
+    @Benchmark
+    public List<Path> g_V_out_out_out_path() throws Exception {
+        return g.V().out().out().out().path().toList();
+    }
+
+    @Benchmark
+    public List<Vertex> g_V_repeatXoutX_timesX2X() throws Exception {
+        return g.V().repeat(out()).times(2).toList();
+    }
+
+    @Benchmark
+    public List<Vertex> g_V_repeatXoutX_timesX3X() throws Exception {
+        return g.V().repeat(out()).times(3).toList();
+    }
+
+    @Benchmark
+    public List<List<Object>> g_V_localXout_out_valuesXnameX_foldX() throws Exception {
+        return g.V().local(out().out().values("name").fold()).toList();
+    }
+
+    @Benchmark
+    public List<List<Object>> g_V_out_localXout_out_valuesXnameX_foldX() throws Exception {
+        return g.V().out().local(out().out().values("name").fold()).toList();
+    }
+
+    @Benchmark
+    public List<List<Object>> g_V_out_mapXout_out_valuesXnameX_toListX() throws Exception {
+        return g.V().out().map(v -> g.V(v.get()).out().out().values("name").toList()).toList();
+    }
+
+    @Benchmark
+    public List<Map<Object, Long>> g_V_label_groupCount() throws Exception {
+        return g.V().label().groupCount().toList();
+    }
+
+    @Benchmark
+    public List<Object> g_V_match_selectXbX_valuesXnameX() throws Exception {
+        return g.V().match(
+                __.as("a").has("name", "Garcia"),
+                __.as("a").in("writtenBy").as("b"),
+                __.as("a").in("sungBy").as("b")).select("b").values("name").toList();
+    }
+
+    @Benchmark
+    public List<Edge> g_E_hasLabelXwrittenByX_whereXinV_inEXsungByX_count_isX0XX_subgraphXsgX() throws Exception {
+        return g.E().hasLabel("writtenBy").where(__.inV().inE("sungBy").count().is(0)).subgraph("sg").toList();
+    }
+}
diff --git a/gremlin-console/conf/remote-graph.properties b/gremlin-console/conf/remote-graph.properties
new file mode 100644
index 0000000..ba232d7
--- /dev/null
+++ b/gremlin-console/conf/remote-graph.properties
@@ -0,0 +1,34 @@
+# 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.
+
+##############################################################
+# This configuration is meant for use with RemoteGraph.
+#
+# gremlin> graph = RemoteGraph.open('conf/remote-graph.properties')
+#
+# This file will work with:
+# - gremlin-server.yaml
+# - gremlin-server-classic.yaml
+# - gremlin-server-modern.yaml
+# - gremlin-server-modern-readonly.yaml
+# - gremlin-server-secure.yaml
+##############################################################
+
+gremlin.graph=org.apache.tinkerpop.gremlin.process.remote.RemoteGraph
+gremlin.remoteGraph.remoteConnectionClass=org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection
+gremlin.remoteGraph.driver.clusterFile=conf/remote-objects.yaml
+gremlin.remoteGraph.driver.graphName=graph
\ No newline at end of file
diff --git a/gremlin-console/pom.xml b/gremlin-console/pom.xml
index 54e66f8..f201a1e 100644
--- a/gremlin-console/pom.xml
+++ b/gremlin-console/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <artifactId>tinkerpop</artifactId>
         <groupId>org.apache.tinkerpop</groupId>
-        <version>3.1.4-SNAPSHOT</version>
+        <version>3.2.2-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-console</artifactId>
     <name>Apache TinkerPop :: Gremlin Console</name>
@@ -42,6 +42,11 @@
             <version>4.5.1</version>
         </dependency>
         <dependency>
+            <groupId>commons-cli</groupId>
+            <artifactId>commons-cli</artifactId>
+            <version>1.2</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.tinkerpop</groupId>
             <artifactId>gremlin-driver</artifactId>
             <version>${project.version}</version>
diff --git a/gremlin-console/src/main/bin/gremlin.bat b/gremlin-console/src/main/bin/gremlin.bat
index 481d5ac..1d5e9bd 100644
--- a/gremlin-console/src/main/bin/gremlin.bat
+++ b/gremlin-console/src/main/bin/gremlin.bat
@@ -39,45 +39,6 @@
 
 :: Launch the application
 
-if "%1" == "" goto console
-if "%1" == "-e" goto script
-if "%1" == "-v" goto version
-
-:console
-
 java %JAVA_OPTIONS% %JAVA_ARGS% -cp %LIBDIR%/*;%EXTDIR%; org.apache.tinkerpop.gremlin.console.Console %*
 
-set CLASSPATH=%OLD_CLASSPATH%
-goto :eof
-
-:script
-
-set strg=
-
-FOR %%X IN (%*) DO (
-CALL :concat %%X %1 %2
-)
-
-java %JAVA_OPTIONS% %JAVA_ARGS% -cp %LIBDIR%/*;%EXTDIR%; org.apache.tinkerpop.gremlin.groovy.jsr223.ScriptExecutor %strg%
-goto :eof
-
-:version
-java %JAVA_OPTIONS% %JAVA_ARGS% -cp %LIBDIR%/*;%EXTDIR%; org.apache.tinkerpop.gremlin.util.Gremlin
-
-goto :eof
-
-:concat
-
-if %1 == %2 goto skip
-
-SET strg=%strg% %1
-
-:concatsep
-
-if "%CP%" == "" (
-set CP=%LIBDIR%\%1
-)else (
-set CP=%CP%;%LIBDIR%\%1
-)
-
-:skip
+set CLASSPATH=%OLD_CLASSPATH%
\ No newline at end of file
diff --git a/gremlin-console/src/main/bin/gremlin.sh b/gremlin-console/src/main/bin/gremlin.sh
index 84ba8179..6ff0254 100755
--- a/gremlin-console/src/main/bin/gremlin.sh
+++ b/gremlin-console/src/main/bin/gremlin.sh
@@ -76,15 +76,8 @@
 fi
 
 # Process options
-MAIN_CLASS=org.apache.tinkerpop.gremlin.console.Console
-while getopts "elv" opt; do
+while getopts ":l" opt; do
     case "$opt" in
-    e) MAIN_CLASS=org.apache.tinkerpop.gremlin.groovy.jsr223.ScriptExecutor
-       # For compatibility with behavior pre-Titan-0.5.0, stop
-       # processing gremlin.sh arguments as soon as the -e switch is
-       # seen; everything following -e becomes arguments to the
-       # ScriptExecutor main class
-       break;;
     l) eval GREMLIN_LOG_LEVEL=\$$OPTIND
        OPTIND="$(( $OPTIND + 1 ))"
        if [ "$GREMLIN_LOG_LEVEL" = "TRACE" -o \
@@ -92,22 +85,18 @@
 	   SCRIPT_DEBUG=y
        fi
        ;;
-    v) MAIN_CLASS=org.apache.tinkerpop.gremlin.util.Gremlin
     esac
 done
 
-# Remove processed options from $@. Anything after -e is preserved by the break;; in the case
-shift $(( $OPTIND - 1 ))
-
 JAVA_OPTIONS="${JAVA_OPTIONS} -Dtinkerpop.ext=${USER_EXT_DIR:-${SYSTEM_EXT_DIR}} -Dlog4j.configuration=conf/log4j-console.properties -Dgremlin.log4j.level=$GREMLIN_LOG_LEVEL"
 JAVA_OPTIONS=$(awk -v RS=' ' '!/^$/ {if (!x[$0]++) print}' <<< "${JAVA_OPTIONS}" | grep -v '^$' | paste -sd ' ' -)
 
 if [ -n "$SCRIPT_DEBUG" ]; then
+    # in debug mode enable debugging of :install command
+    JAVA_OPTIONS="${JAVA_OPTIONS} -Divy.message.logger.level=4 -Dgroovy.grape.report.downloads=true"
     echo "CLASSPATH: $CLASSPATH"
     set -x
 fi
 
-# include the following in $JAVA_OPTIONS "-Divy.message.logger.level=4 -Dgroovy.grape.report.downloads=true" to debug :install
-
 # Start the JVM, execute the application, and return its exit code
-exec $JAVA $JAVA_OPTIONS $MAIN_CLASS "$@"
+exec $JAVA $JAVA_OPTIONS org.apache.tinkerpop.gremlin.console.Console "$@"
diff --git a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Console.groovy b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Console.groovy
index 0daf650..8dcb272 100644
--- a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Console.groovy
+++ b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/Console.groovy
@@ -18,11 +18,20 @@
  */
 package org.apache.tinkerpop.gremlin.console
 
-import org.apache.tinkerpop.gremlin.console.commands.*
+import jline.TerminalFactory
+import jline.console.history.FileHistory
+import org.apache.commons.cli.Option
+import org.apache.tinkerpop.gremlin.console.commands.GremlinSetCommand
+import org.apache.tinkerpop.gremlin.console.commands.InstallCommand
+import org.apache.tinkerpop.gremlin.console.commands.PluginCommand
+import org.apache.tinkerpop.gremlin.console.commands.RemoteCommand
+import org.apache.tinkerpop.gremlin.console.commands.SubmitCommand
+import org.apache.tinkerpop.gremlin.console.commands.UninstallCommand
 import org.apache.tinkerpop.gremlin.console.plugin.PluggedIn
 import org.apache.tinkerpop.gremlin.groovy.loaders.GremlinLoader
 import org.apache.tinkerpop.gremlin.groovy.plugin.GremlinPlugin
-import jline.console.history.FileHistory
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalExplanation
+import org.apache.tinkerpop.gremlin.util.Gremlin
 import org.apache.tinkerpop.gremlin.util.iterator.ArrayIterator
 import org.codehaus.groovy.tools.shell.AnsiDetector
 import org.codehaus.groovy.tools.shell.ExitNotification
@@ -30,6 +39,7 @@
 import org.codehaus.groovy.tools.shell.IO
 import org.codehaus.groovy.tools.shell.InteractiveShellRunner
 import org.codehaus.groovy.tools.shell.commands.SetCommand
+import org.codehaus.groovy.tools.shell.util.HelpFormatter
 import org.codehaus.groovy.tools.shell.util.Preferences
 import org.fusesource.jansi.Ansi
 import org.fusesource.jansi.AnsiConsole
@@ -66,15 +76,28 @@
 
     private Iterator tempIterator = Collections.emptyIterator()
 
-    private final IO io = new IO(System.in, System.out, System.err)
+    private final IO io
     private final Groovysh groovy
+    private final boolean interactive
 
-
+    /**
+     * @deprecated As of release 3.2.1.
+     */
+    @Deprecated
     public Console(final String initScriptFile) {
-        io.out.println()
-        io.out.println("         \\,,,/")
-        io.out.println("         (o o)")
-        io.out.println("-----oOOo-(3)-oOOo-----")
+        this(new IO(System.in, System.out, System.err), initScriptFile.size() != null ? [initScriptFile] : null, true)
+    }
+
+    public Console(final IO io, final List<String> scriptAndArgs, final boolean interactive) {
+        this.io = io
+        this.interactive = interactive
+
+        if (!io.quiet) {
+            io.out.println()
+            io.out.println("         \\,,,/")
+            io.out.println("         (o o)")
+            io.out.println("-----oOOo-(3)-oOOo-----")
+        }
 
         maxIteration = Integer.parseInt(Preferences.get(PREFERENCE_ITERATION_MAX, Integer.toString(DEFAULT_ITERATION_MAX)))
         Preferences.addChangeListener(new PreferenceChangeListener() {
@@ -92,8 +115,8 @@
 
         groovy = new GremlinGroovysh(mediator)
 
-        def commandsToRemove = groovy.getRegistry().commands().findAll{it instanceof SetCommand}
-        commandsToRemove.each {groovy.getRegistry().remove(it)}
+        def commandsToRemove = groovy.getRegistry().commands().findAll { it instanceof SetCommand }
+        commandsToRemove.each { groovy.getRegistry().remove(it) }
         groovy.register(new GremlinSetCommand(groovy))
         groovy.register(new UninstallCommand(groovy, mediator))
         groovy.register(new InstallCommand(groovy, mediator))
@@ -131,7 +154,9 @@
 
                 if (activePlugins.contains(plugin.class.name)) {
                     pluggedIn.activate()
-                    io.out.println("plugin activated: " + plugin.getName())
+
+                    if (!io.quiet)
+                        io.out.println("plugin activated: " + plugin.getName())
                 }
             }
         }
@@ -140,13 +165,14 @@
         // deactivated, and are thus hanging about
         mediator.writePluginState()
 
-        // start iterating results to show as output
-        showShellEvaluationOutput(true)
-
         try {
             // if the init script contains :x command it will throw an ExitNotification so init script execution
             // needs to appear in the try/catch
-            if (initScriptFile != null) initializeShellWithScript(initScriptFile)
+            if (scriptAndArgs != null && scriptAndArgs.size() > 0) executeInShell(scriptAndArgs)
+
+            // start iterating results to show as output
+            showShellEvaluationOutput(true)
+
             runner.run()
         } catch (ExitNotification ignored) {
             // occurs on exit
@@ -165,7 +191,7 @@
             groovy.setResultHook(handleResultShowNothing)
     }
 
-    private def handlePrompt = { STANDARD_INPUT_PROMPT }
+    private def handlePrompt = { interactive ? STANDARD_INPUT_PROMPT : "" }
 
     private def handleResultShowNothing = { args -> null }
 
@@ -185,7 +211,7 @@
                     io.out.println(buildResultPrompt() + ((null == object) ? NULL : object.toString()))
                     counter++;
                 }
-                if(this.tempIterator.hasNext())
+                if (this.tempIterator.hasNext())
                     io.out.println(ELLIPSIS);
                 this.tempIterator = Collections.emptyIterator();
                 return null
@@ -225,6 +251,10 @@
                             this.tempIterator = Collections.emptyIterator();
                             return null
                         }
+                    } else if (result instanceof TraversalExplanation) {
+                        final int width = TerminalFactory.get().getWidth();
+                        io.out.println(buildResultPrompt() + result.prettyPrint(width < 20 ? 80 : width))
+                        return null
                     } else {
                         io.out.println(buildResultPrompt() + ((null == result) ? NULL : result.toString()))
                         return null
@@ -250,21 +280,28 @@
                     io.err.println(e)
                 }
 
-                io.err.print("Display stack trace? [yN] ")
-                io.err.flush()
-                String line = new BufferedReader(io.in).readLine()
-                if (null == line)
-                    line = ""
-                io.err.print(line.trim())
-                io.err.println()
-                if (line.trim().equals("y") || line.trim().equals("Y")) {
+                if (interactive) {
+                    io.err.print("Display stack trace? [yN] ")
+                    io.err.flush()
+                    String line = new BufferedReader(io.in).readLine()
+                    if (null == line)
+                        line = ""
+                    io.err.print(line.trim())
+                    io.err.println()
+                    if (line.trim().equals("y") || line.trim().equals("Y")) {
+                        e.printStackTrace(io.err)
+                    }
+                } else {
                     e.printStackTrace(io.err)
+                    System.exit(1)
                 }
             } catch (Exception ignored) {
                 io.err.println("An undefined error has occurred: " + err)
+                if (!interactive) System.exit(1)
             }
         } else {
             io.err.println("An undefined error has occurred: " + err.toString())
+            if (!interactive) System.exit(1)
         }
 
         return null
@@ -282,27 +319,100 @@
         return STANDARD_RESULT_PROMPT
     }
 
-    private void initializeShellWithScript(final String initScriptFile) {
+    private void executeInShell(final List<String> scriptAndArgs) {
+        final String scriptFile = scriptAndArgs[0]
         try {
-            final File file = new File(initScriptFile)
-            file.eachLine { line ->
+            // check if this script comes with arguments. if so then set them up in an "args" bundle
+            if (scriptAndArgs.size() > 1) {
+                List<String> args = scriptAndArgs.subList(1, scriptAndArgs.size())
+                groovy.execute("args = [\"" + args.join('\",\"') + "\"]")
+            } else {
+                groovy.execute("args = []")
+            }
+
+            final File file = new File(scriptFile)
+            int lineNumber = 0
+            def lines = file.readLines()
+            for (String line : lines) {
                 try {
+                    lineNumber++
                     groovy.execute(line)
                 } catch (Exception ex) {
-                    io.err.println("Bad line in Gremlin initialization file at [$line] - ${ex.message}")
-                    System.exit(1)
+                    io.err.println("Error in $scriptFile at [$lineNumber: $line] - ${ex.message}")
+                    if (interactive)
+                        break
+                    else {
+                        ex.printStackTrace(io.err)
+                        System.exit(1)
+                    }
+
                 }
             }
+
+            if (!interactive) System.exit(0)
         } catch (FileNotFoundException ignored) {
-            io.err.println("Gremlin initialization file not found at [$initScriptFile].")
-            System.exit(1)
+            io.err.println("Gremlin file not found at [$scriptFile].")
+            if (!interactive) System.exit(1)
         } catch (Exception ex) {
-            io.err.println("Error starting Gremlin with initialization script at [$initScriptFile] - ${ex.message}")
-            System.exit(1)
+            io.err.println("Failure processing Gremlin script [$scriptFile] - ${ex.message}")
+            if (!interactive) System.exit(1)
         }
     }
 
     public static void main(final String[] args) {
-        new Console(args.length == 1 ? args[0] : null)
+        // need to do some up front processing to try to support "bin/gremlin.sh init.groovy" until this deprecated
+        // feature can be removed. ultimately this should be removed when a breaking change can go in
+        IO io = new IO(System.in, System.out, System.err)
+        if (args.length == 1 && !args[0].startsWith("-"))
+            new Console(io, [args[0]], true)
+
+        final CliBuilder cli = new CliBuilder(usage: 'gremlin.sh [options] [...]', formatter: new HelpFormatter(), stopAtNonOption: false)
+
+        // note that the inclusion of -l is really a setting handled by gremlin.sh and not by Console class itself.
+        // it is mainly listed here for informational purposes when the user starts things up with -h
+        cli.with {
+            h(longOpt: 'help', "Display this help message")
+            v(longOpt: 'version', "Display the version")
+            l("Set the logging level of components that use standard logging output independent of the Console")
+            V(longOpt: 'verbose', "Enable verbose Console output")
+            Q(longOpt: 'quiet', "Suppress superfluous Console output")
+            D(longOpt: 'debug', "Enabled debug Console output")
+            i(longOpt: 'interactive', argName: "SCRIPT ARG1 ARG2 ...", args: Option.UNLIMITED_VALUES, valueSeparator: ' ' as char, "Execute the specified script and leave the console open on completion")
+            e(longOpt: 'execute', argName: "SCRIPT ARG1 ARG2 ...", args: Option.UNLIMITED_VALUES, valueSeparator: ' ' as char, "Execute the specified script (SCRIPT ARG1 ARG2 ...) and close the console on completion")
+        }
+        OptionAccessor options = cli.parse(args)
+
+        if (options == null) {
+            // CliBuilder prints error, but does not exit
+            System.exit(22) // Invalid Args
+        }
+
+        if (options.h) {
+            cli.usage()
+            System.exit(0)
+        }
+
+        if (options.v) {
+            println("gremlin " + Gremlin.version())
+            System.exit(0)
+        }
+
+        if (options.V) io.verbosity = IO.Verbosity.VERBOSE
+        if (options.D) io.verbosity = IO.Verbosity.DEBUG
+        if (options.Q) io.verbosity = IO.Verbosity.QUIET
+
+        // override verbosity if not explicitly set and -e is used
+        if (options.e && (!options.V && !options.D && !options.Q))
+            io.verbosity = IO.Verbosity.QUIET
+
+        if (options.i && options.e) {
+            println("-i and -e options are mutually exclusive - provide one or the other")
+            System.exit(0)
+        }
+
+        List<String> scriptAndArgs = options.e ?
+                (options.es != null && options.es ? options.es : null) :
+                (options.is != null && options.is ? options.is : null)
+        new Console(io, scriptAndArgs, !options.e)
     }
 }
diff --git a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiRemoteAcceptor.groovy b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiRemoteAcceptor.groovy
index 1cd3584..4198444 100644
--- a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiRemoteAcceptor.groovy
+++ b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiRemoteAcceptor.groovy
@@ -20,6 +20,8 @@
 
 import groovy.json.JsonOutput
 import groovy.transform.CompileStatic
+import org.apache.http.client.methods.CloseableHttpResponse
+import org.apache.http.client.methods.HttpUriRequest
 import org.apache.http.client.methods.RequestBuilder
 import org.apache.http.entity.StringEntity
 import org.apache.http.impl.client.CloseableHttpClient
@@ -27,19 +29,13 @@
 import org.apache.http.util.EntityUtils
 import org.apache.tinkerpop.gremlin.groovy.plugin.RemoteAcceptor
 import org.apache.tinkerpop.gremlin.groovy.plugin.RemoteException
-import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource
-import org.apache.tinkerpop.gremlin.structure.Direction
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Graph
 import org.apache.tinkerpop.gremlin.structure.Vertex
 import groovy.json.JsonSlurper
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils
 import org.codehaus.groovy.tools.shell.Groovysh
 import org.codehaus.groovy.tools.shell.IO
-import org.javatuples.Pair
-
-import java.util.stream.Collectors
 
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
@@ -49,11 +45,12 @@
 
     private String host = "localhost"
     private int port = 8080
-    private String workspace = "workspace0"
+    private String workspace = "workspace1"
 
     private final Groovysh shell
     private final IO io
 
+    private final Random rand = new Random();
     boolean traversalSubmittedForViz = false
     long vizStepDelay
     private float[] vizStartRGBColor
@@ -76,7 +73,7 @@
         vizDefaultRGBColor = [0.6f, 0.6f, 0.6f]  // light grey
         vizColorToFade = 'g'                 // will fade so blue is strongest
         vizColorFadeRate = 0.7               // the multiplicative rate to fade visited vertices
-        vizStartSize = 20
+        vizStartSize = 10
         vizSizeDecrementRate = 0.33f
     }
 
@@ -193,7 +190,7 @@
             currentColor *= vizColorFadeRate
 
             int currentSize = attrs["size"]
-            currentSize = Math.max(1, currentSize - (currentSize * vizSizeDecrementRate))
+            currentSize = Math.max(vizStartSize, currentSize - (currentSize * vizSizeDecrementRate))
 
             vertexAttributes.get(vertexId).color = currentColor
             vertexAttributes.get(vertexId).size = currentSize
@@ -202,27 +199,6 @@
         }
     }
 
-    def touch(Vertex v) {
-        vertexAttributes.get(v.id().toString()).touch++
-    }
-
-    def applyRelativeSizingInGephi() {
-        def touches = vertexAttributes.values().collect{it["touch"]}
-        def max = touches.max()
-        def min = touches.min()
-
-        vertexAttributes.each { k, v ->
-            double touch = v.touch
-
-            // establishes the relative size of the node with a lower limit of 0.25 of vizStartSize
-            def relative = Math.max((touch - min) / Math.max((max - min).doubleValue(), 0.00001), 0.25)
-            int size = Math.max(1, vizStartSize * relative)
-            v.size = size
-
-            changeVertexAttributes(k)
-        }
-    }
-
     def changeVertexAttributes(def String vertexId) {
         def props = [:]
         props.put(vizColorToFade.toString(), vertexAttributes[vertexId].color)
@@ -233,28 +209,17 @@
     /**
      * Visit a vertex traversed and initialize its color and size.
      */
-    def visitVertexInGephi(def Vertex v, def size = vizStartSize) {
+    def visitVertexInGephi(def Vertex v) {
         def props = [:]
         props.put('r', vizStartRGBColor[0])
         props.put('g', vizStartRGBColor[1])
         props.put('b', vizStartRGBColor[2])
-        props.put('size', size)
+        props.put('size', vizStartSize * 2.5)
         props.put('visited', 1)
 
         updateGephiGraph([cn: [(v.id().toString()): props]])
 
-        vertexAttributes[v.id().toString()] = [color: vizStartRGBColor[fadeColorIndex()], size: size, touch: 1]
-    }
-
-    def visitEdgeInGephi(def Edge e) {
-        def props = [:]
-        props.put('r', vizStartRGBColor[0])
-        props.put('g', vizStartRGBColor[1])
-        props.put('b', vizStartRGBColor[2])
-        props.put('size', vizStartSize)
-        props.put('visited', 1)
-
-        updateGephiGraph([ce: [(e.id().toString()): props]])
+        vertexAttributes[v.id().toString()] = [color: vizStartRGBColor[fadeColorIndex()], size: vizStartSize * 2.5, touch: 1]
     }
 
     def fadeColorIndex() {
@@ -273,6 +238,9 @@
         props.put('r', vizDefaultRGBColor[0])
         props.put('g', vizDefaultRGBColor[1])
         props.put('b', vizDefaultRGBColor[2])
+        props.put('x', rand.nextFloat())
+        props.put('y', rand.nextFloat())
+        props.put('size', 10)
         props.put('visited', 0)
 
         // only add if it does not exist in graph already
@@ -318,7 +286,8 @@
         def requestBuilder = RequestBuilder.get("http://$host:$port/$workspace")
         queryArgs.each { requestBuilder = requestBuilder.addParameter(it.key, it.value) }
 
-        def resp = EntityUtils.toString(httpclient.execute(requestBuilder.build()).entity)
+        def httpResp = makeRequest(requestBuilder.build())
+        def resp = EntityUtils.toString(httpResp.entity)
 
         // gephi streaming plugin does not set the content type or respect the Accept header - treat as text
         if (resp.isEmpty())
@@ -332,7 +301,17 @@
                                            .addParameter("format", "JSON")
                                            .addParameter("operation", "updateGraph")
                                            .setEntity(new StringEntity(JsonOutput.toJson(postBody)))
-        EntityUtils.consume(httpclient.execute(requestBuilder.build()).entity)
+        EntityUtils.consume(makeRequest(requestBuilder.build()).entity)
+    }
+
+    private CloseableHttpResponse makeRequest(HttpUriRequest request) {
+        def httpResp = httpclient.execute(request)
+        if (httpResp.getStatusLine().getStatusCode() == 200) {
+            return httpResp
+        } else {
+            def resp = EntityUtils.toString(httpResp.entity)
+            throw new RuntimeException("Unsuccessful request to Gephi - [${httpResp.getStatusLine().getStatusCode()}] ${httpResp.getStatusLine().getReasonPhrase()} - $resp")
+        }
     }
 
     @Override
diff --git a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiTraversalVisualizationStrategy.groovy b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiTraversalVisualizationStrategy.groovy
index 7e390b0..319500e 100644
--- a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiTraversalVisualizationStrategy.groovy
+++ b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiTraversalVisualizationStrategy.groovy
@@ -26,9 +26,9 @@
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep
 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.GraphStep
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AggregateStep
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.LambdaSideEffectStep
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy
@@ -66,7 +66,7 @@
 
     @Override
     void apply(final Traversal.Admin<?, ?> traversal) {
-        if (traversal.getEngine().isComputer())
+        if (TraversalHelper.onGraphComputer(traversal))
             return
 
         // only apply these strategies if the traversal was :submit to the acceptor - otherwise process as usual
@@ -102,7 +102,7 @@
                 TraversalHelper.insertAfterStep(new LambdaSideEffectStep(traversal, { Traverser traverser ->
                     final BulkSet<Object> objects = ((BulkSet<Object>) traverser.sideEffects(sideEffectKey))
                     if (!objects.isEmpty()) {
-                        final List<String> vertices = objects.findAll{ Object o -> o instanceof Vertex}
+                        final List<String> vertices = objects.findAll { Object o -> o instanceof Vertex }
                                 .collect { Object o -> ((Vertex) o).id().toString() }
                         acceptor.updateVisitedVertices(vertices)
                         objects.clear()
diff --git a/gremlin-console/src/main/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/DriverGremlinPlugin.java b/gremlin-console/src/main/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/DriverGremlinPlugin.java
index b8f7cd4..2c52bd5 100644
--- a/gremlin-console/src/main/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/DriverGremlinPlugin.java
+++ b/gremlin-console/src/main/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/DriverGremlinPlugin.java
@@ -21,6 +21,7 @@
 import org.apache.tinkerpop.gremlin.driver.Cluster;
 import org.apache.tinkerpop.gremlin.driver.exception.ConnectionException;
 import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
+import org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection;
 import org.apache.tinkerpop.gremlin.driver.ser.SerTokens;
 import org.apache.tinkerpop.gremlin.groovy.plugin.AbstractGremlinPlugin;
 import org.apache.tinkerpop.gremlin.groovy.plugin.IllegalEnvironmentException;
@@ -42,6 +43,7 @@
         add(IMPORT_SPACE + ConnectionException.class.getPackage().getName() + DOT_STAR);
         add(IMPORT_SPACE + RequestMessage.class.getPackage().getName() + DOT_STAR);
         add(IMPORT_SPACE + SerTokens.class.getPackage().getName() + DOT_STAR);
+        add(IMPORT_SPACE + DriverRemoteConnection.class.getPackage().getName() + DOT_STAR);
     }};
 
     @Override
diff --git a/gremlin-console/src/main/static/NOTICE b/gremlin-console/src/main/static/NOTICE
index da608d0..a2a769f 100644
--- a/gremlin-console/src/main/static/NOTICE
+++ b/gremlin-console/src/main/static/NOTICE
@@ -18,7 +18,7 @@
 under the Apache License 2.0 (see: StringUtils.containsWhitespace())
 
 ------------------------------------------------------------------------
-Apache Groovy 2.4.6 (AL ASF)
+Apache Groovy 2.4.7 (AL ASF)
 ------------------------------------------------------------------------
 This product includes/uses ANTLR (http://www.antlr2.org/)
 developed by Terence Parr 1989-2006
diff --git a/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/DriverGremlinPluginTest.java b/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/DriverGremlinPluginTest.java
index b30af7b..6ff5721 100644
--- a/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/DriverGremlinPluginTest.java
+++ b/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/DriverGremlinPluginTest.java
@@ -34,15 +34,6 @@
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 public class DriverGremlinPluginTest {
-    @Test
-    public void shouldPluginToAndDoImports() throws Exception {
-        final DriverGremlinPlugin plugin = new DriverGremlinPlugin();
-        final SpyPluginAcceptor spy = new SpyPluginAcceptor();
-        plugin.pluginTo(spy);
-
-        assertEquals(4, spy.getImports().size());
-        spy.getImports().forEach(importString -> assertThat(importString, containsString("org.apache.tinkerpop.gremlin.driver")));
-    }
 
     @Test
     public void shouldConstructEmptyRemoteAcceptorWhenNotInConsoleEnvironment() throws Exception {
diff --git a/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/GephiRemoteAcceptorIntegrateTest.java b/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/GephiRemoteAcceptorIntegrateTest.java
index 6af1641..afda528 100644
--- a/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/GephiRemoteAcceptorIntegrateTest.java
+++ b/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/GephiRemoteAcceptorIntegrateTest.java
@@ -82,31 +82,31 @@
 
     @Test
     public void shouldConnectWithDefaults() throws RemoteException {
-        assertThat(acceptor.connect(Collections.emptyList()).toString(), startsWith("Connection to Gephi - http://localhost:" + port + "/workspace0"));
+        assertThat(acceptor.connect(Collections.emptyList()).toString(), startsWith("Connection to Gephi - http://localhost:" + port + "/workspace1"));
     }
 
     @Test
     public void shouldSubmitGraph() throws RemoteException {
-        stubFor(post(urlPathEqualTo("/workspace0"))
+        stubFor(post(urlPathEqualTo("/workspace1"))
                 .withQueryParam("format", equalTo("JSON"))
                 .withQueryParam("operation", equalTo("updateGraph"))
                 .willReturn(aResponse()
                         .withStatus(200)));
 
-        stubFor(get(urlPathEqualTo("/workspace0"))
+        stubFor(get(urlPathEqualTo("/workspace1"))
                 .withQueryParam("operation", equalTo("getNode"))
                 .willReturn(aResponse()
                         .withStatus(200)));
 
         acceptor.submit(Arrays.asList("g = org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph.open();g.addVertex();g"));
 
-        wireMockRule.verify(4, postRequestedFor(urlPathEqualTo("/workspace0")));
-        wireMockRule.verify(1, getRequestedFor(urlPathEqualTo("/workspace0")));
+        wireMockRule.verify(4, postRequestedFor(urlPathEqualTo("/workspace1")));
+        wireMockRule.verify(1, getRequestedFor(urlPathEqualTo("/workspace1")));
     }
 
     @Test
     public void shouldSubmitTraversalAfterConfigWithDefaultG() throws RemoteException {
-        stubFor(post(urlPathEqualTo("/workspace0"))
+        stubFor(post(urlPathEqualTo("/workspace1"))
                 .withQueryParam("format", equalTo("JSON"))
                 .withQueryParam("operation", equalTo("updateGraph"))
                 .willReturn(aResponse()
@@ -118,12 +118,12 @@
         acceptor.submit(Arrays.asList(
                 "vg.V(2).in('knows').out('knows').has('age',org.apache.tinkerpop.gremlin.process.traversal.P.gt(30)).outE('created').has('weight',org.apache.tinkerpop.gremlin.process.traversal.P.gt(0.5d)).inV().iterate()"));
 
-        wireMockRule.verify(18, postRequestedFor(urlPathEqualTo("/workspace0")));
+        wireMockRule.verify(18, postRequestedFor(urlPathEqualTo("/workspace1")));
     }
 
     @Test
     public void shouldSubmitTraversalAfterConfigWithDefinedG() throws RemoteException {
-        stubFor(post(urlPathEqualTo("/workspace0"))
+        stubFor(post(urlPathEqualTo("/workspace1"))
                 .withQueryParam("format", equalTo("JSON"))
                 .withQueryParam("operation", equalTo("updateGraph"))
                 .willReturn(aResponse()
@@ -135,12 +135,12 @@
         acceptor.submit(Arrays.asList(
                 "x.V(2).in('knows').out('knows').has('age',org.apache.tinkerpop.gremlin.process.traversal.P.gt(30)).outE('created').has('weight',org.apache.tinkerpop.gremlin.process.traversal.P.gt(0.5d)).inV().iterate()"));
 
-        wireMockRule.verify(18, postRequestedFor(urlPathEqualTo("/workspace0")));
+        wireMockRule.verify(18, postRequestedFor(urlPathEqualTo("/workspace1")));
     }
 
     @Test
     public void shouldSubmitTraversalOverRepeat() throws RemoteException {
-        stubFor(post(urlPathEqualTo("/workspace0"))
+        stubFor(post(urlPathEqualTo("/workspace1"))
                 .withQueryParam("format", equalTo("JSON"))
                 .withQueryParam("operation", equalTo("updateGraph"))
                 .willReturn(aResponse()
@@ -152,12 +152,12 @@
         acceptor.submit(Arrays.asList(
                 "vg.V(1).repeat(org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.__().out()).times(2).iterate()"));
 
-        wireMockRule.verify(13, postRequestedFor(urlPathEqualTo("/workspace0")));
+        wireMockRule.verify(13, postRequestedFor(urlPathEqualTo("/workspace1")));
     }
 
     @Test
     public void shouldClearGraph() throws RemoteException {
-        stubFor(post(urlPathEqualTo("/workspace0"))
+        stubFor(post(urlPathEqualTo("/workspace1"))
                 .withQueryParam("format", equalTo("JSON"))
                 .withQueryParam("operation", equalTo("updateGraph"))
                 .withRequestBody(equalToJson("{\"dn\":{\"filter\":\"ALL\"}}"))
@@ -166,7 +166,7 @@
 
         acceptor.submit(Arrays.asList("clear"));
 
-        wireMockRule.verify(1, postRequestedFor(urlPathEqualTo("/workspace0")));
+        wireMockRule.verify(1, postRequestedFor(urlPathEqualTo("/workspace1")));
     }
 
     private static int pickOpenPort() {
diff --git a/gremlin-core/pom.xml b/gremlin-core/pom.xml
index e48d4ef..5f246f2 100644
--- a/gremlin-core/pom.xml
+++ b/gremlin-core/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.4-SNAPSHOT</version>
+        <version>3.2.2-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-core</artifactId>
     <name>Apache TinkerPop :: Gremlin Core</name>
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/Computer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/Computer.java
new file mode 100644
index 0000000..8fca818
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/Computer.java
@@ -0,0 +1,162 @@
+/*
+ * 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.computer;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.function.Function;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class Computer implements Function<Graph, GraphComputer>, Serializable, Cloneable {
+
+    private Class<? extends GraphComputer> graphComputerClass = GraphComputer.class;
+    private Map<String, Object> configuration = new HashMap<>();
+    private int workers = -1;
+    private GraphComputer.Persist persist = null;
+    private GraphComputer.ResultGraph resultGraph = null;
+    private Traversal<Vertex, Vertex> vertices = null;
+    private Traversal<Vertex, Edge> edges = null;
+
+    private Computer(final Class<? extends GraphComputer> graphComputerClass) {
+        this.graphComputerClass = graphComputerClass;
+    }
+
+    public static Computer compute() {
+        return new Computer(GraphComputer.class);
+    }
+
+    public static Computer compute(final Class<? extends GraphComputer> graphComputerClass) {
+        return new Computer(graphComputerClass);
+    }
+
+    public Computer configure(final String key, final Object value) {
+        final Computer clone = this.clone();
+        clone.configuration.put(key, value);
+        return clone;
+    }
+
+    public Computer workers(final int workers) {
+        final Computer clone = this.clone();
+        clone.workers = workers;
+        return clone;
+    }
+
+    public Computer persist(final GraphComputer.Persist persist) {
+        final Computer clone = this.clone();
+        clone.persist = persist;
+        return clone;
+    }
+
+
+    public Computer result(final GraphComputer.ResultGraph resultGraph) {
+        final Computer clone = this.clone();
+        clone.resultGraph = resultGraph;
+        return clone;
+    }
+
+    public Computer vertices(final Traversal<Vertex, Vertex> vertexFilter) {
+        final Computer clone = this.clone();
+        clone.vertices = vertexFilter;
+        return clone;
+    }
+
+    public Computer edges(final Traversal<Vertex, Edge> edgeFilter) {
+        final Computer clone = this.clone();
+        clone.edges = edgeFilter;
+        return clone;
+    }
+
+    public GraphComputer apply(final Graph graph) {
+        GraphComputer computer = this.graphComputerClass.equals(GraphComputer.class) ? graph.compute() : graph.compute(this.graphComputerClass);
+        for (final Map.Entry<String, Object> entry : this.configuration.entrySet()) {
+            computer = computer.configure(entry.getKey(), entry.getValue());
+        }
+        if (-1 != this.workers)
+            computer = computer.workers(this.workers);
+        if (null != this.persist)
+            computer = computer.persist(this.persist);
+        if (null != this.resultGraph)
+            computer = computer.result(this.resultGraph);
+        if (null != this.vertices)
+            computer = computer.vertices(this.vertices);
+        if (null != this.edges)
+            computer.edges(this.edges);
+        return computer;
+    }
+
+    @Override
+    public String toString() {
+        return this.graphComputerClass.getSimpleName().toLowerCase();
+    }
+
+    @Override
+    public Computer clone() {
+        try {
+            final Computer clone = (Computer) super.clone();
+            clone.configuration = new HashMap<>(this.configuration);
+            if (null != this.vertices)
+                clone.vertices = this.vertices.asAdmin().clone();
+            if (null != this.edges)
+                clone.edges = this.edges.asAdmin().clone();
+            return clone;
+        } catch (final CloneNotSupportedException e) {
+            throw new IllegalStateException(e.getMessage());
+        }
+    }
+
+    /////////////////
+    /////////////////
+
+    public Class<? extends GraphComputer> getGraphComputerClass() {
+        return this.graphComputerClass;
+    }
+
+    public Map<String, Object> getConfiguration() {
+        return this.configuration;
+    }
+
+    public Traversal<Vertex, Vertex> getVertices() {
+        return this.vertices;
+    }
+
+    public Traversal<Vertex, Edge> getEdges() {
+        return this.edges;
+    }
+
+    public GraphComputer.Persist getPersist() {
+        return this.persist;
+    }
+
+    public GraphComputer.ResultGraph getResultGraph() {
+        return this.resultGraph;
+    }
+
+    public int getWorkers() {
+        return this.workers;
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputer.java
index 547af9e..50c8015 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphComputer.java
@@ -18,6 +18,10 @@
  */
 package org.apache.tinkerpop.gremlin.process.computer;
 
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+
 import java.util.concurrent.Future;
 
 /**
@@ -104,6 +108,29 @@
     public GraphComputer workers(final int workers);
 
     /**
+     * Add a filter that will limit which vertices are loaded from the graph source.
+     * The provided {@link Traversal} can only check the vertex, its vertex properties, and the vertex property properties.
+     * The loaded graph will only have those vertices that pass through the provided filter.
+     *
+     * @param vertexFilter the traversal to verify whether or not to load the current vertex
+     * @return the updated GraphComputer with newly set vertex filter
+     * @throws IllegalArgumentException if the provided traversal attempts to access vertex edges
+     */
+    public GraphComputer vertices(final Traversal<Vertex, Vertex> vertexFilter) throws IllegalArgumentException;
+
+    /**
+     * Add a filter that will limit which edges of the vertices are loaded from the graph source.
+     * The provided {@link Traversal} can only check the local star graph of the vertex and thus,
+     * can not access properties/labels of the adjacent vertices.
+     * The vertices of the loaded graph will only have those edges that pass through the provided filter.
+     *
+     * @param edgeFilter the traversal that determines which edges are loaded for each vertex
+     * @return the updated GraphComputer with newly set edge filter
+     * @throws IllegalArgumentException if the provided traversal attempts to access adjacent vertices
+     */
+    public GraphComputer edges(final Traversal<Vertex, Edge> edgeFilter) throws IllegalArgumentException;
+
+    /**
      * Set an arbitrary configuration key/value for the underlying {@link org.apache.commons.configuration.Configuration} in the {@link GraphComputer}.
      * Typically, the other fluent methods in {@link GraphComputer} should be used to configure the computation.
      * However, for some custom configuration in the underlying engine, this method should be used.
@@ -180,6 +207,10 @@
             return true;
         }
 
+        public default boolean supportsGraphFilter() {
+            return true;
+        }
+
         /**
          * Supports {@link VertexProgram} and {@link MapReduce} parameters to be direct referenced Java objects (no serialization required).
          * This is typically true for single machine graph computer engines. For cluster oriented graph computers, this is typically false.
@@ -206,6 +237,10 @@
             return new UnsupportedOperationException("The edges and vertices of an adjacent vertex can not be read or updated");
         }
 
+        public static UnsupportedOperationException graphFilterNotSupported() {
+            return new UnsupportedOperationException("The computer does not support graph filter");
+        }
+
         public static IllegalArgumentException providedKeyIsNotAnElementComputeKey(final String key) {
             return new IllegalArgumentException("The provided key is not an element compute key: " + key);
         }
@@ -237,6 +272,14 @@
         public static IllegalArgumentException computerRequiresMoreWorkersThanSupported(final int workers, final int maxWorkers) {
             return new IllegalArgumentException("The computer requires more workers than supported: " + workers + " [max:" + maxWorkers + "]");
         }
+
+        public static IllegalArgumentException vertexFilterAccessesIncidentEdges(final Traversal<Vertex, Vertex> vertexFilter) {
+            return new IllegalArgumentException("The provided vertex filter traversal accesses incident edges: " + vertexFilter);
+        }
+
+        public static IllegalArgumentException edgeFilterAccessesAdjacentVertices(final Traversal<Vertex, Edge> edgeFilter) {
+            return new IllegalArgumentException("The provided edge filter traversal accesses data on adjacent vertices: " + edgeFilter);
+        }
     }
 
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphFilter.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphFilter.java
new file mode 100644
index 0000000..3718d16
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/GraphFilter.java
@@ -0,0 +1,354 @@
+/*
+ * 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.computer;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.UnionStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * GraphFilter is used by {@link GraphComputer} implementations to prune the source graph data being loaded into the OLAP system.
+ * There are two types of filters: a {@link Vertex} filter and an {@link Edge} filter.
+ * The vertex filter is a {@link Traversal} that can only check the id, label, and properties of the vertex.
+ * The edge filter is a {@link Traversal} that starts at the vertex are emits all legal incident edges.
+ * If no vertex filter is provided, then no vertices are filtered. If no edge filter is provided, then no edges are filtered.
+ * The use of a GraphFilter can greatly reduce the amount of data processed by the {@link GraphComputer}.
+ * For instance, for {@code g.V().count()}, there is no reason to load edges, and thus, the edge filter can be {@code bothE().limit(0)}.
+ *
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class GraphFilter implements Cloneable, Serializable {
+
+    /**
+     * A enum denoting whether a particular result will be allowed or not.
+     * {@link Legal#YES} means that the specified element set will definitely not be removed by {@link GraphFilter}.
+     * {@link Legal#MAYBE} means that the element set may or may not be filtered out by the {@link GraphFilter}.
+     * {@link Legal#NO} means that the specified element set will definitely be removed by {@link GraphFilter}.
+     */
+    public enum Legal {
+        YES, MAYBE, NO;
+
+        /**
+         * The enum is either {@link Legal#YES} or {@link Legal#MAYBE}.
+         *
+         * @return true if potentially legal.
+         */
+        public boolean positive() {
+            return this != NO;
+        }
+
+        /**
+         * The enum is {@link Legal#NO}.
+         *
+         * @return true if definitely not legal.
+         */
+        public boolean negative() {
+            return this == NO;
+        }
+    }
+
+    private Traversal.Admin<Vertex, Vertex> vertexFilter = null;
+    private Traversal.Admin<Vertex, Edge> edgeFilter = null;
+    private Map<Direction, Map<String, Legal>> edgeLegality = new HashMap<>();
+    private boolean allowNoEdges = false;
+
+    public GraphFilter() {
+        // no args constructor
+    }
+
+    public GraphFilter(final Computer computer) {
+        if (null != computer.getVertices())
+            this.setVertexFilter(computer.getVertices());
+        if (null != computer.getEdges())
+            this.setEdgeFilter(computer.getEdges());
+    }
+
+    /**
+     * Set the filter for selecting vertices from the source graph.
+     * The vertex filter can only access the vertex, its properties, and its properties properties.
+     * Vertex filters can not access the incident edges of the vertex.
+     *
+     * @param vertexFilter The {@link Traversal} that will either let the vertex pass or not.
+     */
+    public void setVertexFilter(final Traversal<Vertex, Vertex> vertexFilter) {
+        if (!TraversalHelper.isLocalProperties(vertexFilter.asAdmin()))
+            throw GraphComputer.Exceptions.vertexFilterAccessesIncidentEdges(vertexFilter);
+        this.vertexFilter = vertexFilter.asAdmin().clone();
+    }
+
+    /**
+     * Set the filter for selecting edges from the source graph.
+     * The edge filter can only access the local star graph (not adjacent vertices).
+     *
+     * @param edgeFilter The {@link Traversal} that will generate the legal incident edges of the vertex.
+     */
+    public void setEdgeFilter(final Traversal<Vertex, Edge> edgeFilter) {
+        if (!TraversalHelper.isLocalStarGraph(edgeFilter.asAdmin()))
+            throw GraphComputer.Exceptions.edgeFilterAccessesAdjacentVertices(edgeFilter);
+        this.edgeFilter = edgeFilter.asAdmin().clone();
+        ////
+        this.edgeLegality = new HashMap<>();
+        this.edgeLegality.put(Direction.OUT, new HashMap<>());
+        this.edgeLegality.put(Direction.IN, new HashMap<>());
+        this.edgeLegality.put(Direction.BOTH, new HashMap<>());
+        if (this.edgeFilter.getEndStep() instanceof RangeGlobalStep && 0 == ((RangeGlobalStep) this.edgeFilter.getEndStep()).getHighRange())
+            this.allowNoEdges = true;
+        ////
+        if (this.edgeFilter.getStartStep() instanceof VertexStep) {
+            final VertexStep step = (VertexStep) this.edgeFilter.getStartStep();
+            final Map<String, Legal> map = this.edgeLegality.get(step.getDirection());
+            if (step.returnsEdge()) {
+                if (step.getEdgeLabels().length == 0)
+                    map.put(null, 1 == this.edgeFilter.getSteps().size() ? Legal.YES : Legal.MAYBE);
+                else {
+                    for (final String label : step.getEdgeLabels()) {
+                        map.put(label, 1 == this.edgeFilter.getSteps().size() ? Legal.YES : Legal.MAYBE);
+                    }
+                }
+            }
+        } else if (this.edgeFilter.getStartStep() instanceof UnionStep) {
+            final UnionStep<?, ?> step = (UnionStep) this.edgeFilter.getStartStep();
+            for (final Traversal.Admin<?, ?> union : step.getGlobalChildren()) {
+                if (union.getStartStep() instanceof VertexStep) {
+                    final VertexStep vertexStep = (VertexStep) union.getStartStep();
+                    final Map<String, Legal> map = this.edgeLegality.get(vertexStep.getDirection());
+                    if (vertexStep.returnsEdge()) {
+                        if (vertexStep.getEdgeLabels().length == 0)
+                            map.put(null, 2 == union.getSteps().size() ? Legal.YES : Legal.MAYBE);
+                        else {
+                            for (final String label : vertexStep.getEdgeLabels()) {
+                                map.put(label, 2 == union.getSteps().size() ? Legal.YES : Legal.MAYBE);
+                            }
+                        }
+
+                    }
+                }
+            }
+        }
+        final Map<String, Legal> outMap = this.edgeLegality.get(Direction.OUT);
+        final Map<String, Legal> inMap = this.edgeLegality.get(Direction.IN);
+        final Map<String, Legal> bothMap = this.edgeLegality.get(Direction.BOTH);
+        for (final Map.Entry<String, Legal> entry : bothMap.entrySet()) {
+            final Legal legal = inMap.get(entry.getKey());
+            if (null == legal || legal.compareTo(entry.getValue()) > 0)
+                inMap.put(entry.getKey(), entry.getValue());
+        }
+        for (final Map.Entry<String, Legal> entry : bothMap.entrySet()) {
+            final Legal legal = outMap.get(entry.getKey());
+            if (null == legal || legal.compareTo(entry.getValue()) > 0)
+                outMap.put(entry.getKey(), entry.getValue());
+        }
+        for (final Map.Entry<String, Legal> entry : outMap.entrySet()) {
+            final Legal legal = inMap.get(entry.getKey());
+            if (null != legal)
+                bothMap.put(entry.getKey(), legal.compareTo(entry.getValue()) > 0 ? legal : entry.getValue());
+        }
+        if (outMap.isEmpty() && inMap.isEmpty() && bothMap.isEmpty()) { // the edge filter could not be reasoned on
+            outMap.put(null, Legal.MAYBE);
+            inMap.put(null, Legal.MAYBE);
+            bothMap.put(null, Legal.MAYBE);
+        }
+    }
+
+    /**
+     * Returns true if the provided vertex meets the vertex-filter criteria.
+     * If no vertex filter is provided, then the vertex is considered legal.
+     *
+     * @param vertex the vertex to test for legality
+     * @return whether the vertex is {@link Legal#YES}.
+     */
+    public boolean legalVertex(final Vertex vertex) {
+        return null == this.vertexFilter || TraversalUtil.test(vertex, this.vertexFilter);
+    }
+
+    /**
+     * Returns an iterator of legal edges incident to the provided vertex.
+     * If no edge filter is provided, then all incident edges are returned.
+     *
+     * @param vertex the vertex whose legal edges are to be access.
+     * @return an iterator of edges that are {@link Legal#YES}.
+     */
+    public Iterator<Edge> legalEdges(final Vertex vertex) {
+        return null == this.edgeFilter ?
+                vertex.edges(Direction.BOTH) :
+                TraversalUtil.applyAll(vertex, this.edgeFilter);
+    }
+
+    /**
+     * Get the vertex filter associated with this graph filter.
+     *
+     * @return the vertex filter or null if no vertex filter was provided.
+     */
+    public final Traversal.Admin<Vertex, Vertex> getVertexFilter() {
+        return this.vertexFilter;
+    }
+
+    /**
+     * Get the edge filter associated with this graph filter.
+     *
+     * @return the edge filter or null if no edge filter was provided.
+     */
+    public final Traversal.Admin<Vertex, Edge> getEdgeFilter() {
+        return this.edgeFilter;
+    }
+
+    /**
+     * Whether filters have been defined.
+     *
+     * @return true if either a vertex or edge filter has been provided.
+     */
+    public boolean hasFilter() {
+        return this.vertexFilter != null || this.edgeFilter != null;
+    }
+
+    /**
+     * Whether an edge filter has been defined.
+     *
+     * @return true if an edge filter was provided.
+     */
+    public boolean hasEdgeFilter() {
+        return this.edgeFilter != null;
+    }
+
+    /**
+     * Whether a vertex filter has been defined.
+     *
+     * @return true if a vertex filter was provided.
+     */
+    public boolean hasVertexFilter() {
+        return this.vertexFilter != null;
+    }
+
+    /**
+     * For a particular edge directionality, get all the {@link Legal#YES} or {@link Legal#MAYBE} edge labels.
+     * If the label set contains {@code null}, then all edge labels for that direction are positively legal.
+     *
+     * @param direction the direction to get the positively legal edge labels for.
+     * @return the set of positively legal edge labels for the direction.
+     */
+    public Set<String> getLegallyPositiveEdgeLabels(final Direction direction) {
+        if (null == this.edgeFilter)
+            return Collections.singleton(null);
+        else if (this.allowNoEdges)
+            return Collections.emptySet();
+        else
+            return this.edgeLegality.get(direction).containsKey(null) ?
+                    Collections.singleton(null) :
+                    this.edgeLegality.get(direction).entrySet()
+                            .stream()
+                            .filter(entry -> entry.getValue().positive())
+                            .map(Map.Entry::getKey)
+                            .collect(Collectors.toSet());
+    }
+
+    /**
+     * Get the legality of a particular edge direction and label.
+     *
+     * @param direction the direction of the edge.
+     * @param label     the label of the edge.
+     * @return the {@link Legal} of the arguments.
+     */
+    public Legal checkEdgeLegality(final Direction direction, final String label) {
+        if (null == this.edgeFilter)
+            return Legal.YES;
+        if (this.checkEdgeLegality(direction).negative())
+            return Legal.NO;
+        final Map<String, Legal> legalMap = this.edgeLegality.get(direction);
+        if (legalMap.containsKey(label))
+            return legalMap.get(label);
+        else if (legalMap.containsKey(null))
+            return legalMap.get(null);
+        else
+            return Legal.NO;
+    }
+
+    /**
+     * Get the legality of a particular edge direction.
+     *
+     * @param direction the direction of the edge.
+     * @return the {@link Legal} of the edge direction.
+     */
+    public Legal checkEdgeLegality(final Direction direction) {
+        if (null == this.edgeFilter)
+            return Legal.YES;
+        else if (this.allowNoEdges)
+            return Legal.NO;
+        return this.edgeLegality.get(direction).values()
+                .stream()
+                .reduce(Legal.NO, (a, b) -> a.compareTo(b) < 0 ? a : b);
+    }
+
+    @Override
+    public int hashCode() {
+        return (null == this.edgeFilter ? 111 : this.edgeFilter.hashCode()) ^ (null == this.vertexFilter ? 222 : this.vertexFilter.hashCode());
+    }
+
+    @Override
+    public boolean equals(final Object object) {
+        if (!(object instanceof GraphFilter))
+            return false;
+        else if (((GraphFilter) object).hasVertexFilter() && !((GraphFilter) object).getVertexFilter().equals(this.vertexFilter))
+            return false;
+        else if (((GraphFilter) object).hasEdgeFilter() && !((GraphFilter) object).getEdgeFilter().equals(this.edgeFilter))
+            return false;
+        else
+            return true;
+    }
+
+    @Override
+    public GraphFilter clone() {
+        try {
+            final GraphFilter clone = (GraphFilter) super.clone();
+            if (null != this.vertexFilter)
+                clone.vertexFilter = this.vertexFilter.clone();
+            if (null != this.edgeFilter)
+                clone.edgeFilter = this.edgeFilter.clone();
+            return clone;
+        } catch (final CloneNotSupportedException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
+
+    @Override
+    public String toString() {
+        if (!this.hasFilter())
+            return "graphfilter[none]";
+        else if (this.hasVertexFilter() && this.hasEdgeFilter())
+            return "graphfilter[" + this.vertexFilter + "," + this.edgeFilter + "]";
+        else if (this.hasVertexFilter())
+            return "graphfilter[" + this.vertexFilter + "]";
+        else
+            return "graphfilter[" + this.edgeFilter + "]";
+    }
+}
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MapReduce.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MapReduce.java
index 3e1eae6..f6e6c0c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MapReduce.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MapReduce.java
@@ -87,12 +87,12 @@
     /**
      * The map() method is logically executed at all vertices in the graph in parallel.
      * The map() method emits key/value pairs given some analysis of the data in the vertices (and/or its incident edges).
+     * All {@link MapReduce} classes must at least provide an implementation of {@code MapReduce#map(Vertex, MapEmitter)}.
      *
      * @param vertex  the current vertex being map() processed.
      * @param emitter the component that allows for key/value pairs to be emitted to the next stage.
      */
-    public default void map(final Vertex vertex, final MapEmitter<MK, MV> emitter) {
-    }
+    public void map(final Vertex vertex, final MapEmitter<MK, MV> emitter);
 
     /**
      * The combine() method is logically executed at all "machines" in parallel.
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/Memory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/Memory.java
index abae106..93931c3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/Memory.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/Memory.java
@@ -62,6 +62,8 @@
      */
     public <R> R get(final String key) throws IllegalArgumentException;
 
+    public void set(final String key, final Object value) throws IllegalArgumentException, IllegalStateException;
+
     /**
      * Set the value of the provided key. This is typically called in setup() and/or terminate() of the {@link VertexProgram}.
      * If this is called during execute(), there is no guarantee as to the ultimately stored value as call order is indeterminate.
@@ -69,7 +71,7 @@
      * @param key   they key to set a value for
      * @param value the value to set for the key
      */
-    public void set(final String key, final Object value);
+    public void add(final String key, final Object value) throws IllegalArgumentException, IllegalStateException;
 
     /**
      * A helper method that generates a {@link Map} of the memory key/values.
@@ -78,9 +80,8 @@
      */
     public default Map<String, Object> asMap() {
         final Map<String, Object> map = keys().stream()
-                .filter(this::exists)
                 .map(key -> Pair.with(key, get(key)))
-                .collect(Collectors.toMap(kv -> kv.getValue0(), Pair::getValue1));
+                .collect(Collectors.toMap(Pair::getValue0, Pair::getValue1));
         return Collections.unmodifiableMap(map);
     }
 
@@ -99,30 +100,6 @@
     public long getRuntime();
 
     /**
-     * Add the provided delta value to the long value currently stored at the key.
-     *
-     * @param key   the key of the long value
-     * @param delta the adjusting amount (can be negative for decrement)
-     */
-    public void incr(final String key, final long delta);
-
-    /**
-     * Logically AND the provided boolean value with the boolean value currently stored at the key.
-     *
-     * @param key  the key of the boolean value
-     * @param bool the boolean to AND
-     */
-    public void and(final String key, final boolean bool);
-
-    /**
-     * Logically OR the provided boolean value with the boolean value currently stored at the key.
-     *
-     * @param key  the key of the boolean value
-     * @param bool the boolean to OR
-     */
-    public void or(final String key, final boolean bool);
-
-    /**
      * A helper method that states whether the current iteration is 0.
      *
      * @return whether this is the first iteration
@@ -176,8 +153,12 @@
             return new IllegalArgumentException("The memory does not have a value for provided key: " + key);
         }
 
-        public static UnsupportedOperationException dataTypeOfMemoryValueNotSupported(final Object val) {
-            return new UnsupportedOperationException(String.format("Graph computer memory value [%s] is of type %s is not supported", val, val.getClass()));
+        public static IllegalArgumentException memorySetOnlyDuringVertexProgramSetUpAndTerminate(final String key) {
+            return new IllegalArgumentException("The memory can only be set() during vertex program setup and terminate: " + key);
+        }
+
+        public static IllegalArgumentException memoryAddOnlyDuringVertexProgramExecute(final String key) {
+            return new IllegalArgumentException("The memory can only be add() during vertex program execute: " + key);
         }
     }
 
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
new file mode 100644
index 0000000..94ca675
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MemoryComputeKey.java
@@ -0,0 +1,79 @@
+/*
+ * 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.computer;
+
+import org.apache.tinkerpop.gremlin.process.computer.util.MemoryHelper;
+
+import java.io.Serializable;
+import java.util.function.BinaryOperator;
+
+/**
+ * A {@code MemoryComputeKey} specifies what keys will be used by a {@link Memory} during a {@link GraphComputer} computation.
+ * A MemoryComputeKey maintains a {@link BinaryOperator} which specifies how to reduce parallel values into a single value.
+ * A MemoryComputeKey can be broadcasted and as such, the workers will receive mutations to the {@link Memory} value.
+ * A MemoryComputeKey can be transient and thus, will not be accessible once the {@link GraphComputer} computation is complete.
+ *
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class MemoryComputeKey<A> implements Serializable {
+
+    private final String key;
+    private final BinaryOperator<A> reducer;
+    private final boolean isTransient;
+    private final boolean isBroadcast;
+
+    private MemoryComputeKey(final String key, final BinaryOperator<A> reducer, final boolean isBroadcast, final boolean isTransient) {
+        this.key = key;
+        this.reducer = reducer;
+        this.isTransient = isTransient;
+        this.isBroadcast = isBroadcast;
+        MemoryHelper.validateKey(key);
+    }
+
+    public String getKey() {
+        return this.key;
+    }
+
+    public boolean isTransient() {
+        return this.isTransient;
+    }
+
+    public boolean isBroadcast() {
+        return this.isBroadcast;
+    }
+
+    public BinaryOperator<A> getReducer() {
+        return this.reducer;
+    }
+
+    @Override
+    public int hashCode() {
+        return this.key.hashCode();
+    }
+
+    @Override
+    public boolean equals(final Object object) {
+        return object instanceof MemoryComputeKey && ((MemoryComputeKey) object).key.equals(this.key);
+    }
+
+    public static <A> MemoryComputeKey<A> of(final String key, final BinaryOperator<A> reducer, final boolean isBroadcast, final boolean isTransient) {
+        return new MemoryComputeKey<>(key, reducer, isBroadcast, isTransient);
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MessageScope.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MessageScope.java
index 8fc45c7..721d307 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MessageScope.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/MessageScope.java
@@ -93,7 +93,6 @@
     public final static class Local<M> extends MessageScope {
         public final Supplier<? extends Traversal<Vertex, Edge>> incidentTraversal;
         public final BiFunction<M, Edge, M> edgeFunction;
-        private final String toStringOfTraversal;
 
         private Local(final Supplier<? extends Traversal<Vertex, Edge>> incidentTraversal) {
             this(incidentTraversal, (final M m, final Edge e) -> m); // the default is an identity function
@@ -101,7 +100,6 @@
 
         private Local(final Supplier<? extends Traversal<Vertex, Edge>> incidentTraversal, final BiFunction<M, Edge, M> edgeFunction) {
             this.incidentTraversal = incidentTraversal;
-            this.toStringOfTraversal = this.incidentTraversal.get().toString();
             this.edgeFunction = edgeFunction;
         }
 
@@ -123,13 +121,13 @@
 
         @Override
         public int hashCode() {
-            return this.edgeFunction.hashCode() + this.incidentTraversal.get().toString().hashCode();
+            return this.edgeFunction.hashCode() ^ this.incidentTraversal.get().hashCode();
         }
 
         @Override
         public boolean equals(final Object other) {
             return other instanceof Local &&
-                    ((Local<?>) other).toStringOfTraversal.equals(this.toStringOfTraversal) &&
+                    ((Local<?>) other).incidentTraversal.get().equals(this.incidentTraversal.get()) &&
                     ((Local<?>) other).edgeFunction == this.edgeFunction;
         }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ProgramPhase.java
similarity index 71%
copy from gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
copy to gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ProgramPhase.java
index cb1aeec..ce39505 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ProgramPhase.java
@@ -16,15 +16,25 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.process.traversal.step;
 
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+package org.apache.tinkerpop.gremlin.process.computer;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface EngineDependent {
+public enum ProgramPhase {
 
-    public void onEngine(final TraversalEngine traversalEngine);
+    SETUP,
+    WORKER_ITERATION_START,
+    EXECUTE,
+    WORKER_ITERATION_END,
+    TERMINATE;
 
+    public boolean masterState() {
+        return this == SETUP || this == TERMINATE;
+    }
+
+    public boolean workerState() {
+        return !this.masterState();
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexComputeKey.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexComputeKey.java
new file mode 100644
index 0000000..284430a
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexComputeKey.java
@@ -0,0 +1,64 @@
+/*
+ * 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.computer;
+
+import org.apache.tinkerpop.gremlin.structure.util.ElementHelper;
+
+import java.io.Serializable;
+
+/**
+ * A {@code VertexComputeKey} specifies a property of a vertex that will be used to store {@link GraphComputer} data.
+ * If the VertexComputeKey is specified as transient, it will be dropped from the vertex prior to returning the {@link ComputerResult} graph.
+ *
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class VertexComputeKey implements Serializable {
+
+    private final String key;
+    private final boolean isTransient;
+
+    private VertexComputeKey(final String key, final boolean isTransient) {
+        this.key = key;
+        this.isTransient = isTransient;
+        ElementHelper.validateProperty(key, key);
+    }
+
+    public String getKey() {
+        return this.key;
+    }
+
+    public boolean isTransient() {
+        return this.isTransient;
+    }
+
+    @Override
+    public int hashCode() {
+        return this.key.hashCode();
+    }
+
+    @Override
+    public boolean equals(final Object object) {
+        return object instanceof VertexComputeKey && ((VertexComputeKey) object).key.equals(this.key);
+    }
+
+    public static VertexComputeKey of(final String key, final boolean isTransient) {
+        return new VertexComputeKey(key, isTransient);
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java
index 37ff8e7..15243fa 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/VertexProgram.java
@@ -133,7 +133,7 @@
      *
      * @return the set of element keys that will be mutated during the vertex program's execution
      */
-    public default Set<String> getElementComputeKeys() {
+    public default Set<VertexComputeKey> getVertexComputeKeys() {
         return Collections.emptySet();
     }
 
@@ -144,7 +144,7 @@
      *
      * @return the set of memory keys that will be read/written
      */
-    public default Set<String> getMemoryComputeKeys() {
+    public default Set<MemoryComputeKey> getMemoryComputeKeys() {
         return Collections.emptySet();
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkloading/BulkLoaderVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkloading/BulkLoaderVertexProgram.java
index 3a10582..a6d0f5b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkloading/BulkLoaderVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkloading/BulkLoaderVertexProgram.java
@@ -27,6 +27,7 @@
 import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
 import org.apache.tinkerpop.gremlin.process.computer.Messenger;
+import org.apache.tinkerpop.gremlin.process.computer.VertexComputeKey;
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
@@ -70,7 +71,7 @@
     public static final String DEFAULT_BULK_LOADER_VERTEX_ID = "bulkLoader.vertex.id";
 
     private final MessageScope messageScope;
-    private final Set<String> elementComputeKeys;
+    private final Set<VertexComputeKey> elementComputeKeys;
     private Configuration configuration;
     private BulkLoader bulkLoader;
     private Graph graph;
@@ -152,7 +153,7 @@
             ConfigurationUtils.copy(config, configuration);
         }
         intermediateBatchSize = configuration.getLong(INTERMEDIATE_BATCH_SIZE_CFG_KEY, 0L);
-        elementComputeKeys.add(DEFAULT_BULK_LOADER_VERTEX_ID);
+        elementComputeKeys.add(VertexComputeKey.of(DEFAULT_BULK_LOADER_VERTEX_ID, true));
         bulkLoader = createBulkLoader();
     }
 
@@ -171,7 +172,7 @@
             LOGGER.info("Opened Graph instance: {}", graph);
             try {
                 listener = new BulkLoadingListener();
-                g = GraphTraversalSource.build().with(EventStrategy.build().addListener(listener).create()).create(graph);
+                g = graph.traversal().withStrategies(EventStrategy.build().addListener(listener).create());
             } catch (Exception e) {
                 try {
                     graph.close();
@@ -272,7 +273,7 @@
     }
 
     @Override
-    public Set<String> getElementComputeKeys() {
+    public Set<VertexComputeKey> getVertexComputeKeys() {
         return elementComputeKeys;
     }
 
@@ -301,12 +302,12 @@
     public String toString() {
         final StringBuilder sb = new StringBuilder();
         if (bulkLoader != null) {
-            sb.append("bulkLoader=").append(bulkLoader.getClass().getSimpleName()).append(",");
-            sb.append("vertexIdProperty=").append(bulkLoader.getVertexIdProperty()).append(",");
-            sb.append("userSuppliedIds=").append(bulkLoader.useUserSuppliedIds()).append(",");
-            sb.append("keepOriginalIds=").append(bulkLoader.keepOriginalIds()).append(",");
+            sb.append("bulkLoader=").append(bulkLoader.getClass().getSimpleName()).append(", ");
+            sb.append("vertexIdProperty=").append(bulkLoader.getVertexIdProperty()).append(", ");
+            sb.append("userSuppliedIds=").append(bulkLoader.useUserSuppliedIds()).append(", ");
+            sb.append("keepOriginalIds=").append(bulkLoader.keepOriginalIds()).append(", ");
         } else {
-            sb.append("bulkLoader=").append(bulkLoader).append(",");
+            sb.append("bulkLoader=").append(bulkLoader).append(", ");
         }
         sb.append("batchSize=").append(intermediateBatchSize);
         return StringFactory.vertexProgramString(this, sb.toString());
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 f2989e0..56de255 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
@@ -21,18 +21,20 @@
 import org.apache.commons.configuration.Configuration;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
 import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
 import org.apache.tinkerpop.gremlin.process.computer.Messenger;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalClassFunction;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalObjectFunction;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptFunction;
+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.ConfigurationTraversal;
 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.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.MapHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
@@ -48,7 +50,6 @@
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
-import java.util.function.Supplier;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -61,19 +62,21 @@
     private final Set<MessageScope> COUNT_SCOPE = new HashSet<>(Collections.singletonList(this.countScope));
 
     public static final String CLUSTER = "gremlin.peerPressureVertexProgram.cluster";
-    public static final String VOTE_STRENGTH = "gremlin.peerPressureVertexProgram.voteStrength";
-
+    private static final String VOTE_STRENGTH = "gremlin.peerPressureVertexProgram.voteStrength";
+    private static final String INITIAL_VOTE_STRENGTH_TRAVERSAL = "gremlin.pageRankVertexProgram.initialVoteStrengthTraversal";
+    private static final String PROPERTY = "gremlin.peerPressureVertexProgram.property";
     private static final String MAX_ITERATIONS = "gremlin.peerPressureVertexProgram.maxIterations";
     private static final String DISTRIBUTE_VOTE = "gremlin.peerPressureVertexProgram.distributeVote";
-    private static final String TRAVERSAL_SUPPLIER = "gremlin.peerPressureVertexProgram.traversalSupplier";
+    private static final String EDGE_TRAVERSAL = "gremlin.peerPressureVertexProgram.edgeTraversal";
     private static final String VOTE_TO_HALT = "gremlin.peerPressureVertexProgram.voteToHalt";
 
-    private ConfigurationTraversal<Vertex, Edge> configurationTraversal;
+    private PureTraversal<Vertex, Edge> edgeTraversal = null;
+    private PureTraversal<Vertex, ? extends Number> initialVoteStrengthTraversal = null;
     private int maxIterations = 30;
     private boolean distributeVote = false;
+    private String property = CLUSTER;
 
-    private static final Set<String> ELEMENT_COMPUTE_KEYS = new HashSet<>(Arrays.asList(CLUSTER, VOTE_STRENGTH));
-    private static final Set<String> MEMORY_COMPUTE_KEYS = new HashSet<>(Collections.singletonList(VOTE_TO_HALT));
+    private static final Set<MemoryComputeKey> MEMORY_COMPUTE_KEYS = Collections.singleton(MemoryComputeKey.of(VOTE_TO_HALT, Operator.and, false, true));
 
     private PeerPressureVertexProgram() {
 
@@ -81,11 +84,14 @@
 
     @Override
     public void loadState(final Graph graph, final Configuration configuration) {
-        if (configuration.containsKey(TRAVERSAL_SUPPLIER)) {
-            this.configurationTraversal = ConfigurationTraversal.loadState(graph, configuration, TRAVERSAL_SUPPLIER);
-            this.voteScope = MessageScope.Local.of(this.configurationTraversal);
+        if (configuration.containsKey(INITIAL_VOTE_STRENGTH_TRAVERSAL))
+            this.initialVoteStrengthTraversal = PureTraversal.loadState(configuration, INITIAL_VOTE_STRENGTH_TRAVERSAL, graph);
+        if (configuration.containsKey(EDGE_TRAVERSAL)) {
+            this.edgeTraversal = PureTraversal.loadState(configuration, EDGE_TRAVERSAL, graph);
+            this.voteScope = MessageScope.Local.of(() -> this.edgeTraversal.get().clone());
             this.countScope = MessageScope.Local.of(new MessageScope.Local.ReverseTraversalSupplier(this.voteScope));
         }
+        this.property = configuration.getString(PROPERTY, CLUSTER);
         this.maxIterations = configuration.getInt(MAX_ITERATIONS, 30);
         this.distributeVote = configuration.getBoolean(DISTRIBUTE_VOTE, false);
     }
@@ -93,20 +99,22 @@
     @Override
     public void storeState(final Configuration configuration) {
         super.storeState(configuration);
+        configuration.setProperty(PROPERTY, this.property);
         configuration.setProperty(MAX_ITERATIONS, this.maxIterations);
         configuration.setProperty(DISTRIBUTE_VOTE, this.distributeVote);
-        if (null != this.configurationTraversal) {
-            this.configurationTraversal.storeState(configuration);
-        }
+        if (null != this.edgeTraversal)
+            this.edgeTraversal.storeState(configuration, EDGE_TRAVERSAL);
+        if (null != this.initialVoteStrengthTraversal)
+            this.initialVoteStrengthTraversal.storeState(configuration, INITIAL_VOTE_STRENGTH_TRAVERSAL);
     }
 
     @Override
-    public Set<String> getElementComputeKeys() {
-        return ELEMENT_COMPUTE_KEYS;
+    public Set<VertexComputeKey> getVertexComputeKeys() {
+        return new HashSet<>(Arrays.asList(VertexComputeKey.of(this.property, false), VertexComputeKey.of(VOTE_STRENGTH, true)));
     }
 
     @Override
-    public Set<String> getMemoryComputeKeys() {
+    public Set<MemoryComputeKey> getMemoryComputeKeys() {
         return MEMORY_COMPUTE_KEYS;
     }
 
@@ -136,26 +144,31 @@
             if (this.distributeVote) {
                 messenger.sendMessage(this.countScope, Pair.with('c', 1.0d));
             } else {
-                double voteStrength = 1.0d;
-                vertex.property(VertexProperty.Cardinality.single, CLUSTER, vertex.id());
+                double voteStrength = (null == this.initialVoteStrengthTraversal ?
+                        1.0d :
+                        TraversalUtil.apply(vertex, this.initialVoteStrengthTraversal.get()).doubleValue());
+                vertex.property(VertexProperty.Cardinality.single, this.property, vertex.id());
                 vertex.property(VertexProperty.Cardinality.single, VOTE_STRENGTH, voteStrength);
                 messenger.sendMessage(this.voteScope, new Pair<>((Serializable) vertex.id(), voteStrength));
-                memory.and(VOTE_TO_HALT, false);
+                memory.add(VOTE_TO_HALT, false);
             }
         } else if (1 == memory.getIteration() && this.distributeVote) {
-            double voteStrength = 1.0d / IteratorUtils.reduce(IteratorUtils.map(messenger.receiveMessages(), Pair::getValue1), 0.0d, (a, b) -> a + b);
-            vertex.property(VertexProperty.Cardinality.single, CLUSTER, vertex.id());
+            double voteStrength = (null == this.initialVoteStrengthTraversal ?
+                    1.0d :
+                    TraversalUtil.apply(vertex, this.initialVoteStrengthTraversal.get()).doubleValue()) /
+                    IteratorUtils.reduce(IteratorUtils.map(messenger.receiveMessages(), Pair::getValue1), 0.0d, (a, b) -> a + b);
+            vertex.property(VertexProperty.Cardinality.single, this.property, vertex.id());
             vertex.property(VertexProperty.Cardinality.single, VOTE_STRENGTH, voteStrength);
             messenger.sendMessage(this.voteScope, new Pair<>((Serializable) vertex.id(), voteStrength));
-            memory.and(VOTE_TO_HALT, false);
+            memory.add(VOTE_TO_HALT, false);
         } else {
             final Map<Serializable, Double> votes = new HashMap<>();
-            votes.put(vertex.value(CLUSTER), vertex.<Double>value(VOTE_STRENGTH));
+            votes.put(vertex.value(this.property), vertex.<Double>value(VOTE_STRENGTH));
             messenger.receiveMessages().forEachRemaining(message -> MapHelper.incr(votes, message.getValue0(), message.getValue1()));
             Serializable cluster = PeerPressureVertexProgram.largestCount(votes);
             if (null == cluster) cluster = (Serializable) vertex.id();
-            memory.and(VOTE_TO_HALT, vertex.value(CLUSTER).equals(cluster));
-            vertex.property(VertexProperty.Cardinality.single, CLUSTER, cluster);
+            memory.add(VOTE_TO_HALT, vertex.value(this.property).equals(cluster));
+            vertex.property(VertexProperty.Cardinality.single, this.property, cluster);
             messenger.sendMessage(this.voteScope, new Pair<>(cluster, vertex.<Double>value(VOTE_STRENGTH)));
         }
     }
@@ -166,7 +179,7 @@
         if (voteToHalt) {
             return true;
         } else {
-            memory.or(VOTE_TO_HALT, true);
+            memory.set(VOTE_TO_HALT, true);
             return false;
         }
     }
@@ -190,7 +203,7 @@
 
     @Override
     public String toString() {
-        return StringFactory.vertexProgramString(this, "distributeVote=" + this.distributeVote + ",maxIterations=" + this.maxIterations);
+        return StringFactory.vertexProgramString(this, "distributeVote=" + this.distributeVote + ", maxIterations=" + this.maxIterations);
     }
 
     //////////////////////////////
@@ -206,6 +219,11 @@
             super(PeerPressureVertexProgram.class);
         }
 
+        public Builder property(final String key) {
+            this.configuration.setProperty(PROPERTY, key);
+            return this;
+        }
+
         public Builder maxIterations(final int iterations) {
             this.configuration.setProperty(MAX_ITERATIONS, iterations);
             return this;
@@ -216,20 +234,30 @@
             return this;
         }
 
-        public Builder traversal(final TraversalSource.Builder builder, final String scriptEngine, final String traversalScript, final Object... bindings) {
-            ConfigurationTraversal.storeState(new TraversalScriptFunction<>(builder, scriptEngine, traversalScript, bindings), this.configuration, TRAVERSAL_SUPPLIER);
+        public Builder edges(final Traversal.Admin<Vertex, Edge> edgeTraversal) {
+            PureTraversal.storeState(this.configuration, EDGE_TRAVERSAL, edgeTraversal);
             return this;
         }
 
-        public Builder traversal(final Traversal.Admin<Vertex, Edge> traversal) {
-            ConfigurationTraversal.storeState(new TraversalObjectFunction<>(traversal), this.configuration, TRAVERSAL_SUPPLIER);
+        public Builder initialVoteStrength(final Traversal.Admin<Vertex, ? extends Number> initialVoteStrengthTraversal) {
+            PureTraversal.storeState(this.configuration, INITIAL_VOTE_STRENGTH_TRAVERSAL, initialVoteStrengthTraversal);
             return this;
         }
 
+        /**
+         * @deprecated As of release 3.2.0, replaced by {@link PeerPressureVertexProgram.Builder#edges(Traversal.Admin)}
+         */
+        @Deprecated
+        public Builder traversal(final TraversalSource traversalSource, final String scriptEngine, final String traversalScript, final Object... bindings) {
+            return this.edges(new ScriptTraversal<>(traversalSource, scriptEngine, traversalScript, bindings));
+        }
 
-        public Builder traversal(final Class<? extends Supplier<Traversal.Admin<?, ?>>> traversalClass) {
-            ConfigurationTraversal.storeState(new TraversalClassFunction(traversalClass), this.configuration, TRAVERSAL_SUPPLIER);
-            return this;
+        /**
+         * @deprecated As of release 3.2.0, replaced by {@link PeerPressureVertexProgram.Builder#edges(Traversal.Admin)}
+         */
+        @Deprecated
+        public Builder traversal(final Traversal.Admin<Vertex, Edge> edgeTraversal) {
+            return this.edges(edgeTraversal);
         }
 
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
index efb38ac..7609eba 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgram.java
@@ -24,15 +24,15 @@
 import org.apache.tinkerpop.gremlin.process.computer.MessageCombiner;
 import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
 import org.apache.tinkerpop.gremlin.process.computer.Messenger;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalClassFunction;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalObjectFunction;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptFunction;
+import org.apache.tinkerpop.gremlin.process.computer.VertexComputeKey;
+import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder;
-import org.apache.tinkerpop.gremlin.process.computer.util.ConfigurationTraversal;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticVertexProgram;
 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.__;
+import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
@@ -44,31 +44,31 @@
 import java.util.HashSet;
 import java.util.Optional;
 import java.util.Set;
-import java.util.function.Function;
-import java.util.function.Supplier;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class PageRankVertexProgram extends StaticVertexProgram<Double> {
+public class PageRankVertexProgram implements VertexProgram<Double> {
 
-    private MessageScope.Local<Double> incidentMessageScope = MessageScope.Local.of(__::outE);
-    private MessageScope.Local<Double> countMessageScope = MessageScope.Local.of(new MessageScope.Local.ReverseTraversalSupplier(this.incidentMessageScope));
 
     public static final String PAGE_RANK = "gremlin.pageRankVertexProgram.pageRank";
-    public static final String EDGE_COUNT = "gremlin.pageRankVertexProgram.edgeCount";
-
+    private static final String EDGE_COUNT = "gremlin.pageRankVertexProgram.edgeCount";
+    private static final String PROPERTY = "gremlin.pageRankVertexProgram.property";
     private static final String VERTEX_COUNT = "gremlin.pageRankVertexProgram.vertexCount";
     private static final String ALPHA = "gremlin.pageRankVertexProgram.alpha";
     private static final String TOTAL_ITERATIONS = "gremlin.pageRankVertexProgram.totalIterations";
-    private static final String TRAVERSAL_SUPPLIER = "gremlin.pageRankVertexProgram.traversalSupplier";
+    private static final String EDGE_TRAVERSAL = "gremlin.pageRankVertexProgram.edgeTraversal";
+    private static final String INITIAL_RANK_TRAVERSAL = "gremlin.pageRankVertexProgram.initialRankTraversal";
 
-    private ConfigurationTraversal<Vertex, Edge> configurationTraversal;
+    private MessageScope.Local<Double> incidentMessageScope = MessageScope.Local.of(__::outE);
+    private MessageScope.Local<Double> countMessageScope = MessageScope.Local.of(new MessageScope.Local.ReverseTraversalSupplier(this.incidentMessageScope));
+    private PureTraversal<Vertex, Edge> edgeTraversal = null;
+    private PureTraversal<Vertex, ? extends Number> initialRankTraversal = null;
     private double vertexCountAsDouble = 1.0d;
     private double alpha = 0.85d;
     private int totalIterations = 30;
-
-    private static final Set<String> COMPUTE_KEYS = new HashSet<>(Arrays.asList(PAGE_RANK, EDGE_COUNT));
+    private String property = PAGE_RANK;
+    private Set<VertexComputeKey> vertexComputeKeys;
 
     private PageRankVertexProgram() {
 
@@ -76,25 +76,31 @@
 
     @Override
     public void loadState(final Graph graph, final Configuration configuration) {
-        if (configuration.containsKey(TRAVERSAL_SUPPLIER)) {
-            this.configurationTraversal = ConfigurationTraversal.loadState(graph, configuration, TRAVERSAL_SUPPLIER);
-            this.incidentMessageScope = MessageScope.Local.of(this.configurationTraversal);
+        if (configuration.containsKey(INITIAL_RANK_TRAVERSAL))
+            this.initialRankTraversal = PureTraversal.loadState(configuration, INITIAL_RANK_TRAVERSAL, graph);
+        if (configuration.containsKey(EDGE_TRAVERSAL)) {
+            this.edgeTraversal = PureTraversal.loadState(configuration, EDGE_TRAVERSAL, graph);
+            this.incidentMessageScope = MessageScope.Local.of(() -> this.edgeTraversal.get().clone());
             this.countMessageScope = MessageScope.Local.of(new MessageScope.Local.ReverseTraversalSupplier(this.incidentMessageScope));
         }
         this.vertexCountAsDouble = configuration.getDouble(VERTEX_COUNT, 1.0d);
         this.alpha = configuration.getDouble(ALPHA, 0.85d);
         this.totalIterations = configuration.getInt(TOTAL_ITERATIONS, 30);
+        this.property = configuration.getString(PROPERTY, PAGE_RANK);
+        this.vertexComputeKeys = new HashSet<>(Arrays.asList(VertexComputeKey.of(this.property, false), VertexComputeKey.of(EDGE_COUNT, true)));
     }
 
     @Override
     public void storeState(final Configuration configuration) {
-        configuration.setProperty(VERTEX_PROGRAM, PageRankVertexProgram.class.getName());
+        VertexProgram.super.storeState(configuration);
         configuration.setProperty(VERTEX_COUNT, this.vertexCountAsDouble);
         configuration.setProperty(ALPHA, this.alpha);
         configuration.setProperty(TOTAL_ITERATIONS, this.totalIterations);
-        if (null != this.configurationTraversal) {
-            this.configurationTraversal.storeState(configuration);
-        }
+        configuration.setProperty(PROPERTY, this.property);
+        if (null != this.edgeTraversal)
+            this.edgeTraversal.storeState(configuration, EDGE_TRAVERSAL);
+        if (null != this.initialRankTraversal)
+            this.initialRankTraversal.storeState(configuration, INITIAL_RANK_TRAVERSAL);
     }
 
     @Override
@@ -108,8 +114,8 @@
     }
 
     @Override
-    public Set<String> getElementComputeKeys() {
-        return COMPUTE_KEYS;
+    public Set<VertexComputeKey> getVertexComputeKeys() {
+        return this.vertexComputeKeys;
     }
 
     @Override
@@ -125,6 +131,18 @@
     }
 
     @Override
+    public PageRankVertexProgram clone() {
+        try {
+            final PageRankVertexProgram clone = (PageRankVertexProgram) super.clone();
+            if (null != this.initialRankTraversal)
+                clone.initialRankTraversal = this.initialRankTraversal.clone();
+            return clone;
+        } catch (final CloneNotSupportedException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
+
+    @Override
     public void setup(final Memory memory) {
 
     }
@@ -134,16 +152,20 @@
         if (memory.isInitialIteration()) {
             messenger.sendMessage(this.countMessageScope, 1.0d);
         } else if (1 == memory.getIteration()) {
-            double initialPageRank = 1.0d / this.vertexCountAsDouble;
+            double initialPageRank = (null == this.initialRankTraversal ?
+                    1.0d :
+                    TraversalUtil.apply(vertex, this.initialRankTraversal.get()).doubleValue()) / this.vertexCountAsDouble;
             double edgeCount = IteratorUtils.reduce(messenger.receiveMessages(), 0.0d, (a, b) -> a + b);
-            vertex.property(VertexProperty.Cardinality.single, PAGE_RANK, initialPageRank);
+            vertex.property(VertexProperty.Cardinality.single, this.property, initialPageRank);
             vertex.property(VertexProperty.Cardinality.single, EDGE_COUNT, edgeCount);
-            messenger.sendMessage(this.incidentMessageScope, initialPageRank / edgeCount);
+            if (!this.terminate(memory)) // don't send messages if this is the last iteration
+                messenger.sendMessage(this.incidentMessageScope, initialPageRank / edgeCount);
         } else {
             double newPageRank = IteratorUtils.reduce(messenger.receiveMessages(), 0.0d, (a, b) -> a + b);
             newPageRank = (this.alpha * newPageRank) + ((1.0d - this.alpha) / this.vertexCountAsDouble);
-            vertex.property(VertexProperty.Cardinality.single, PAGE_RANK, newPageRank);
-            messenger.sendMessage(this.incidentMessageScope, newPageRank / vertex.<Double>value(EDGE_COUNT));
+            vertex.property(VertexProperty.Cardinality.single, this.property, newPageRank);
+            if (!this.terminate(memory)) // don't send messages if this is the last iteration
+                messenger.sendMessage(this.incidentMessageScope, newPageRank / vertex.<Double>value(EDGE_COUNT));
         }
     }
 
@@ -154,7 +176,7 @@
 
     @Override
     public String toString() {
-        return StringFactory.vertexProgramString(this, "alpha=" + this.alpha + ",iterations=" + this.totalIterations);
+        return StringFactory.vertexProgramString(this, "alpha=" + this.alpha + ", iterations=" + this.totalIterations);
     }
 
     //////////////////////////////
@@ -179,26 +201,45 @@
             return this;
         }
 
-        public Builder traversal(final TraversalSource.Builder builder, final String scriptEngine, final String traversalScript, final Object... bindings) {
-            ConfigurationTraversal.storeState(new TraversalScriptFunction<>(builder, scriptEngine, traversalScript, bindings), this.configuration, TRAVERSAL_SUPPLIER);
+        public Builder property(final String key) {
+            this.configuration.setProperty(PROPERTY, key);
             return this;
         }
 
-        public Builder traversal(final Traversal.Admin<Vertex, Edge> traversal) {
-            ConfigurationTraversal.storeState(new TraversalObjectFunction<>(traversal), this.configuration, TRAVERSAL_SUPPLIER);
+        public Builder edges(final Traversal.Admin<Vertex, Edge> edgeTraversal) {
+            PureTraversal.storeState(this.configuration, EDGE_TRAVERSAL, edgeTraversal);
             return this;
         }
 
-
-        public Builder traversal(final Class<? extends Supplier<Traversal.Admin<?, ?>>> traversalClass) {
-            ConfigurationTraversal.storeState(new TraversalClassFunction(traversalClass), this.configuration, TRAVERSAL_SUPPLIER);
+        public Builder initialRank(final Traversal.Admin<Vertex, ? extends Number> initialRankTraversal) {
+            PureTraversal.storeState(this.configuration, INITIAL_RANK_TRAVERSAL, initialRankTraversal);
             return this;
         }
 
+        /**
+         * @deprecated As of release 3.2.0, replaced by {@link org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram.Builder#initialRank(Traversal.Admin)}
+         */
+        @Deprecated
         public Builder vertexCount(final long vertexCount) {
             this.configuration.setProperty(VERTEX_COUNT, (double) vertexCount);
             return this;
         }
+
+        /**
+         * @deprecated As of release 3.2.0, replaced by {@link org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram.Builder#edges(Traversal.Admin)}
+         */
+        @Deprecated
+        public Builder traversal(final TraversalSource traversalSource, final String scriptEngine, final String traversalScript, final Object... bindings) {
+            return this.edges(new ScriptTraversal<>(traversalSource, scriptEngine, traversalScript, bindings));
+        }
+
+        /**
+         * @deprecated As of release 3.2.0, replaced by {@link org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram.Builder#edges(Traversal.Admin)}
+         */
+        @Deprecated
+        public Builder traversal(final Traversal.Admin<Vertex, Edge> traversal) {
+            return this.edges(traversal);
+        }
     }
 
     ////////////////////////////
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/MasterExecutor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/MasterExecutor.java
new file mode 100644
index 0000000..b83b6d6
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/MasterExecutor.java
@@ -0,0 +1,149 @@
+/*
+ * 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.computer.traversal;
+
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.HaltedTraverserStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
+import org.apache.tinkerpop.gremlin.process.traversal.step.LocalBarrier;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TailGlobalStep;
+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.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.SackStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
+import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
+import org.apache.tinkerpop.gremlin.structure.util.Attachable;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+final class MasterExecutor {
+
+    private MasterExecutor() {
+
+    }
+
+    protected static void processMemory(final TraversalMatrix<?, ?> traversalMatrix, final Memory memory, final TraverserSet<Object> toProcessTraversers, final Set<String> completedBarriers) {
+        // handle traversers and data that were sent from the workers to the master traversal via memory
+        if (memory.exists(TraversalVertexProgram.MUTATED_MEMORY_KEYS)) {
+            for (final String key : memory.<Set<String>>get(TraversalVertexProgram.MUTATED_MEMORY_KEYS)) {
+                final Step<Object, Object> step = traversalMatrix.getStepById(key);
+                assert step instanceof Barrier;
+                completedBarriers.add(step.getId());
+                if (!(step instanceof LocalBarrier)) {  // local barriers don't do any processing on the master traversal (they just lock on the workers)
+                    final Barrier<Object> barrier = (Barrier<Object>) step;
+                    barrier.addBarrier(memory.get(key));
+                    step.forEachRemaining(toProcessTraversers::add);
+                    // if it was a reducing barrier step, reset the barrier to its seed value
+                    if (step instanceof ReducingBarrierStep)
+                        memory.set(step.getId(), ((ReducingBarrierStep) step).getSeedSupplier().get());
+                }
+            }
+        }
+        memory.set(TraversalVertexProgram.MUTATED_MEMORY_KEYS, new HashSet<>());
+    }
+
+    protected static void processTraversers(final PureTraversal<?, ?> traversal,
+                                            final TraversalMatrix<?, ?> traversalMatrix,
+                                            TraverserSet<Object> toProcessTraversers,
+                                            final TraverserSet<Object> remoteActiveTraversers,
+                                            final TraverserSet<Object> haltedTraversers,
+                                            final HaltedTraverserStrategy haltedTraverserStrategy) {
+
+        while (!toProcessTraversers.isEmpty()) {
+            final TraverserSet<Object> localActiveTraversers = new TraverserSet<>();
+            Step<Object, Object> previousStep = EmptyStep.instance();
+            Step<Object, Object> currentStep = EmptyStep.instance();
+
+            // these are traversers that are at the master traversal and will either halt here or be distributed back to the workers as needed
+            final Iterator<Traverser.Admin<Object>> traversers = toProcessTraversers.iterator();
+            while (traversers.hasNext()) {
+                final Traverser.Admin<Object> traverser = traversers.next();
+                traversers.remove();
+                traverser.set(DetachedFactory.detach(traverser.get(), true)); // why?
+                traverser.setSideEffects(traversal.get().getSideEffects());
+                if (traverser.isHalted())
+                    haltedTraversers.add(haltedTraverserStrategy.halt(traverser));
+                else if (isRemoteTraverser(traverser, traversalMatrix))  // this is so that patterns like order().name work as expected. try and stay local as long as possible
+                    remoteActiveTraversers.add(traverser.detach());
+                else {
+                    currentStep = traversalMatrix.getStepById(traverser.getStepId());
+                    if (!currentStep.getId().equals(previousStep.getId()) && !(previousStep instanceof EmptyStep)) {
+                        while (previousStep.hasNext()) {
+                            final Traverser.Admin<Object> result = previousStep.next();
+                            if (result.isHalted())
+                                haltedTraversers.add(haltedTraverserStrategy.halt(result));
+                            else if (isRemoteTraverser(result, traversalMatrix))
+                                remoteActiveTraversers.add(result.detach());
+                            else
+                                localActiveTraversers.add(result);
+                        }
+                    }
+                    currentStep.addStart(traverser);
+                    previousStep = currentStep;
+                }
+            }
+            if (!(currentStep instanceof EmptyStep)) {
+                while (currentStep.hasNext()) {
+                    final Traverser.Admin<Object> traverser = currentStep.next();
+                    if (traverser.isHalted())
+                        haltedTraversers.add(haltedTraverserStrategy.halt(traverser));
+                    else if (isRemoteTraverser(traverser, traversalMatrix))
+                        remoteActiveTraversers.add(traverser.detach());
+                    else
+                        localActiveTraversers.add(traverser);
+                }
+            }
+            assert toProcessTraversers.isEmpty();
+            toProcessTraversers = localActiveTraversers;
+        }
+    }
+
+    private static boolean isRemoteTraverser(final Traverser.Admin traverser, final TraversalMatrix<?, ?> traversalMatrix) {
+        return traverser.get() instanceof Attachable &&
+                !(traverser.get() instanceof Path) &&
+                !isLocalElement(traversalMatrix.getStepById(traverser.getStepId()));
+    }
+
+    // TODO: once this is complete (fully known), move to TraversalHelper
+    private static boolean isLocalElement(final Step<?, ?> step) {
+        return step instanceof PropertiesStep || step instanceof PropertyMapStep ||
+                step instanceof IdStep || step instanceof LabelStep || step instanceof SackStep ||
+                step instanceof PropertyKeyStep || step instanceof PropertyValueStep ||
+                step instanceof TailGlobalStep || step instanceof RangeGlobalStep || step instanceof HasStep;
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/MemoryTraversalSideEffects.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/MemoryTraversalSideEffects.java
new file mode 100644
index 0000000..bf9f8c0
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/MemoryTraversalSideEffects.java
@@ -0,0 +1,183 @@
+/*
+ * 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.computer.traversal;
+
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
+import org.apache.tinkerpop.gremlin.process.computer.ProgramPhase;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
+
+import java.util.HashSet;
+import java.util.Optional;
+import java.util.Set;
+import java.util.function.BinaryOperator;
+import java.util.function.Supplier;
+import java.util.function.UnaryOperator;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class MemoryTraversalSideEffects implements TraversalSideEffects {
+
+    private TraversalSideEffects sideEffects;
+    private Memory memory;
+    private ProgramPhase phase;
+
+    private MemoryTraversalSideEffects() {
+        // for serialization
+    }
+
+    public MemoryTraversalSideEffects(final TraversalSideEffects sideEffects) {
+        this.sideEffects = sideEffects;
+        this.memory = null;
+    }
+
+    public TraversalSideEffects getSideEffects() {
+        return this.sideEffects;
+    }
+
+    @Override
+    public void set(final String key, final Object value) {
+        this.sideEffects.set(key, value);
+        if (null != this.memory)
+            this.memory.set(key, value);
+    }
+
+    @Override
+    public <V> V get(final String key) throws IllegalArgumentException {
+        return (null != this.memory && this.memory.exists(key)) ? this.memory.get(key) : this.sideEffects.get(key);
+    }
+
+    @Override
+    public void remove(final String key) {
+        this.sideEffects.remove(key);
+    }
+
+    @Override
+    public Set<String> keys() {
+        return this.sideEffects.keys();
+    }
+
+    @Override
+    public void add(final String key, final Object value) {
+        if (this.phase.workerState())
+            this.memory.add(key, value);
+        else
+            this.memory.set(key, this.sideEffects.getReducer(key).apply(this.memory.get(key), value));
+    }
+
+    @Override
+    public <V> void register(final String key, final Supplier<V> initialValue, final BinaryOperator<V> reducer) {
+        this.sideEffects.register(key, initialValue, reducer);
+    }
+
+    @Override
+    public <V> void registerIfAbsent(final String key, final Supplier<V> initialValue, final BinaryOperator<V> reducer) {
+        this.sideEffects.registerIfAbsent(key, initialValue, reducer);
+    }
+
+    @Override
+    public <V> BinaryOperator<V> getReducer(final String key) {
+        return this.sideEffects.getReducer(key);
+    }
+
+    @Override
+    public <V> Supplier<V> getSupplier(final String key) {
+        return this.sideEffects.getSupplier(key);
+    }
+
+    @Override
+    @Deprecated
+    public void registerSupplier(final String key, final Supplier supplier) {
+        this.sideEffects.registerSupplier(key, supplier);
+    }
+
+    @Override
+    @Deprecated
+    public <V> Optional<Supplier<V>> getRegisteredSupplier(final String key) {
+        return this.sideEffects.getRegisteredSupplier(key);
+    }
+
+    @Override
+    public <S> void setSack(final Supplier<S> initialValue, final UnaryOperator<S> splitOperator, final BinaryOperator<S> mergeOperator) {
+        this.sideEffects.setSack(initialValue, splitOperator, mergeOperator);
+    }
+
+    @Override
+    public <S> Supplier<S> getSackInitialValue() {
+        return this.sideEffects.getSackInitialValue();
+    }
+
+    @Override
+    public <S> UnaryOperator<S> getSackSplitter() {
+        return this.sideEffects.getSackSplitter();
+    }
+
+    @Override
+    public <S> BinaryOperator<S> getSackMerger() {
+        return this.sideEffects.getSackMerger();
+    }
+
+    @Override
+    public TraversalSideEffects clone() {
+        try {
+            final MemoryTraversalSideEffects clone = (MemoryTraversalSideEffects) super.clone();
+            clone.sideEffects = this.sideEffects.clone();
+            return clone;
+        } catch (final CloneNotSupportedException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
+
+    @Override
+    public void mergeInto(final TraversalSideEffects sideEffects) {
+        this.sideEffects.mergeInto(sideEffects);
+    }
+
+    public void storeSideEffectsInMemory() {
+        if (this.phase.workerState())
+            this.sideEffects.forEach(this.memory::add);
+        else
+            this.sideEffects.forEach(this.memory::set);
+    }
+
+    public static void setMemorySideEffects(final Traversal.Admin<?, ?> traversal, final Memory memory, final ProgramPhase phase) {
+        final TraversalSideEffects sideEffects = traversal.getSideEffects();
+        if (!(sideEffects instanceof MemoryTraversalSideEffects)) {
+            traversal.setSideEffects(new MemoryTraversalSideEffects(sideEffects));
+        }
+        final MemoryTraversalSideEffects memoryTraversalSideEffects = ((MemoryTraversalSideEffects) traversal.getSideEffects());
+        memoryTraversalSideEffects.memory = memory;
+        memoryTraversalSideEffects.phase = phase;
+    }
+
+    public static Set<MemoryComputeKey> getMemoryComputeKeys(final Traversal.Admin<?, ?> traversal) {
+        final Set<MemoryComputeKey> keys = new HashSet<>();
+        final TraversalSideEffects sideEffects =
+                traversal.getSideEffects() instanceof MemoryTraversalSideEffects ?
+                        ((MemoryTraversalSideEffects) traversal.getSideEffects()).getSideEffects() :
+                        traversal.getSideEffects();
+        sideEffects.keys().
+                stream().
+                forEach(key -> keys.add(MemoryComputeKey.of(key, sideEffects.getReducer(key), true, false)));
+        return keys;
+    }
+}
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 fe01ea2..1a54721 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
@@ -19,49 +19,63 @@
 package org.apache.tinkerpop.gremlin.process.computer.traversal;
 
 import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 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.MessageCombiner;
 import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
 import org.apache.tinkerpop.gremlin.process.computer.Messenger;
+import org.apache.tinkerpop.gremlin.process.computer.ProgramPhase;
+import org.apache.tinkerpop.gremlin.process.computer.VertexComputeKey;
 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.traversal.step.map.TraversalVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.HaltedTraverserStrategy;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;
 import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder;
-import org.apache.tinkerpop.gremlin.process.computer.util.ConfigurationTraversal;
+import org.apache.tinkerpop.gremlin.process.computer.util.SingleMessenger;
+import org.apache.tinkerpop.gremlin.process.computer.util.VertexProgramHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
+import org.apache.tinkerpop.gremlin.process.traversal.step.LocalBarrier;
 import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
+import org.apache.tinkerpop.gremlin.process.traversal.step.MemoryComputing;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectCapStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ProfileStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalClassFunction;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalObjectFunction;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptFunction;
 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.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.util.ElementHelper;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.util.function.MutableMetricsSupplier;
+import org.apache.tinkerpop.gremlin.util.iterator.EmptyIterator;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Optional;
 import java.util.Set;
-import java.util.function.Supplier;
 
 
 /**
@@ -75,66 +89,145 @@
  *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class TraversalVertexProgram implements VertexProgram<TraverserSet<?>> {
+public final class TraversalVertexProgram implements VertexProgram<TraverserSet<Object>> {
 
+    public static final String TRAVERSAL = "gremlin.traversalVertexProgram.traversal";
     public static final String HALTED_TRAVERSERS = "gremlin.traversalVertexProgram.haltedTraversers";
+    public static final String ACTIVE_TRAVERSERS = "gremlin.traversalVertexProgram.activeTraversers";
+    protected static final String MUTATED_MEMORY_KEYS = "gremlin.traversalVertexProgram.mutatedMemoryKeys";
     private static final String VOTE_TO_HALT = "gremlin.traversalVertexProgram.voteToHalt";
-    public static final String TRAVERSAL_SUPPLIER = "gremlin.traversalVertexProgram.traversalSupplier";
+    private static final String COMPLETED_BARRIERS = "gremlin.traversalVertexProgram.completedBarriers";
 
     // TODO: if not an adjacent traversal, use Local message scope -- a dual messaging system.
     private static final Set<MessageScope> MESSAGE_SCOPES = new HashSet<>(Collections.singletonList(MessageScope.Global.instance()));
-    private static final Set<String> ELEMENT_COMPUTE_KEYS = new HashSet<>(Arrays.asList(HALTED_TRAVERSERS, TraversalSideEffects.SIDE_EFFECTS));
-    private static final Set<String> MEMORY_COMPUTE_KEYS = new HashSet<>(Collections.singletonList(VOTE_TO_HALT));
+    private Set<MemoryComputeKey> memoryComputeKeys = new HashSet<>();
+    private static final Set<VertexComputeKey> VERTEX_COMPUTE_KEYS =
+            new HashSet<>(Arrays.asList(VertexComputeKey.of(HALTED_TRAVERSERS, false), VertexComputeKey.of(ACTIVE_TRAVERSERS, true)));
 
-    private ConfigurationTraversal<?, ?> configurationTraversal;
-    private Traversal.Admin<?, ?> traversal;
+    private PureTraversal<?, ?> traversal;
     private TraversalMatrix<?, ?> traversalMatrix;
-
     private final Set<MapReduce> mapReducers = new HashSet<>();
+    private TraverserSet<Object> haltedTraversers;
+    private boolean returnHaltedTraversers = false;
+    private HaltedTraverserStrategy haltedTraverserStrategy;
 
     private TraversalVertexProgram() {
     }
 
     /**
-     * A helper method to yield a {@link Traversal} from the {@link Graph} and provided {@link Configuration}.
+     * Get the {@link PureTraversal} associated with the current instance of the {@link TraversalVertexProgram}.
      *
-     * @param graph         the graph that the traversal will run against
-     * @param configuration The configuration containing the TRAVERSAL_SUPPLIER key.
-     * @return the traversal supplied by the configuration
+     * @return the pure traversal of the instantiated program
      */
-    public static Traversal.Admin<?, ?> getTraversal(final Graph graph, final Configuration configuration) {
-        return VertexProgram.<TraversalVertexProgram>createVertexProgram(graph, configuration).getTraversal();
+    public PureTraversal<?, ?> getTraversal() {
+        return this.traversal;
     }
 
-    public Traversal.Admin<?, ?> getTraversal() {
-        return this.traversal;
+    public static <R> TraverserSet<R> loadHaltedTraversers(final Configuration configuration) {
+        if (!configuration.containsKey(HALTED_TRAVERSERS))
+            return new TraverserSet<>();
+
+        final Object object = configuration.getProperty(HALTED_TRAVERSERS) instanceof String ?
+                VertexProgramHelper.deserialize(configuration, HALTED_TRAVERSERS) :
+                configuration.getProperty(HALTED_TRAVERSERS);
+        if (object instanceof Traverser.Admin)
+            return new TraverserSet<>((Traverser.Admin<R>) object);
+        else {
+            final TraverserSet<R> traverserSet = new TraverserSet<>();
+            traverserSet.addAll((Collection) object);
+            return traverserSet;
+        }
+    }
+
+    public static <R> void storeHaltedTraversers(final Configuration configuration, final TraverserSet<R> haltedTraversers) {
+        if (null != haltedTraversers && !haltedTraversers.isEmpty()) {
+            try {
+                VertexProgramHelper.serialize(haltedTraversers, configuration, HALTED_TRAVERSERS);
+            } catch (final Exception e) {
+                configuration.setProperty(HALTED_TRAVERSERS, haltedTraversers);
+            }
+        }
     }
 
     @Override
     public void loadState(final Graph graph, final Configuration configuration) {
-        this.configurationTraversal = ConfigurationTraversal.loadState(graph, configuration, TRAVERSAL_SUPPLIER);
-        if (null == this.configurationTraversal) {
-            throw new IllegalArgumentException("The configuration does not have a traversal supplier:" + TRAVERSAL_SUPPLIER);
-        }
-        this.traversal = this.configurationTraversal.get();
-        ((ComputerResultStep) this.traversal.getEndStep()).setBypass(true);
-        this.traversalMatrix = new TraversalMatrix<>(this.traversal);
-        for (final MapReducer<?, ?, ?, ?, ?> mapReducer : TraversalHelper.getStepsOfAssignableClassRecursively(MapReducer.class, this.traversal)) {
+        if (!configuration.containsKey(TRAVERSAL))
+            throw new IllegalArgumentException("The configuration does not have a traversal: " + TRAVERSAL);
+        this.traversal = PureTraversal.loadState(configuration, TRAVERSAL, graph);
+        if (!this.traversal.get().isLocked())
+            this.traversal.get().applyStrategies();
+        /// traversal is compiled and ready to be introspected
+        this.traversalMatrix = new TraversalMatrix<>(this.traversal.get());
+        // get any master-traversal halted traversers
+        this.haltedTraversers = TraversalVertexProgram.loadHaltedTraversers(configuration);
+        // if results will be serialized out, don't save halted traversers across the cluster
+        this.returnHaltedTraversers =
+                (this.traversal.get().getParent().asStep().getNextStep() instanceof ComputerResultStep || // if its just going to stream it out, don't distribute
+                        this.traversal.get().getParent().asStep().getNextStep() instanceof EmptyStep ||  // same as above, but if using TraversalVertexProgramStep directly
+                        (this.traversal.get().getParent().asStep().getNextStep() instanceof ProfileStep && // same as above, but needed for profiling
+                                this.traversal.get().getParent().asStep().getNextStep().getNextStep() instanceof ComputerResultStep));
+        // determine how to store halted traversers
+        this.haltedTraverserStrategy = ((HaltedTraverserStrategy) this.traversal.get().getStrategies().toList()
+                .stream()
+                .filter(strategy -> strategy instanceof HaltedTraverserStrategy)
+                .findAny()
+                .orElse(HaltedTraverserStrategy.reference()));
+        // register traversal side-effects in memory
+        this.memoryComputeKeys.addAll(MemoryTraversalSideEffects.getMemoryComputeKeys(this.traversal.get()));
+        // register MapReducer memory compute keys
+        for (final MapReducer<?, ?, ?, ?, ?> mapReducer : TraversalHelper.getStepsOfAssignableClassRecursively(MapReducer.class, this.traversal.get())) {
             this.mapReducers.add(mapReducer.getMapReduce());
+            this.memoryComputeKeys.add(MemoryComputeKey.of(mapReducer.getMapReduce().getMemoryKey(), Operator.assign, false, false));
         }
-        if (!(this.traversal.getEndStep().getPreviousStep() instanceof SideEffectCapStep) && !(this.traversal.getEndStep().getPreviousStep() instanceof ReducingBarrierStep))
-            this.mapReducers.add(new TraverserMapReduce(this.traversal));
+        // register memory computing steps that use memory compute keys
+        for (final MemoryComputing<?> memoryComputing : TraversalHelper.getStepsOfAssignableClassRecursively(MemoryComputing.class, this.traversal.get())) {
+            this.memoryComputeKeys.add(memoryComputing.getMemoryComputeKey());
+        }
+        // register profile steps (TODO: try to hide this)
+        for (final ProfileStep profileStep : TraversalHelper.getStepsOfAssignableClassRecursively(ProfileStep.class, this.traversal.get())) {
+            this.traversal.get().getSideEffects().register(profileStep.getId(), new MutableMetricsSupplier(profileStep.getPreviousStep()), ProfileStep.ProfileBiOperator.instance());
+        }
+        // register TraversalVertexProgram specific memory compute keys
+        this.memoryComputeKeys.add(MemoryComputeKey.of(VOTE_TO_HALT, Operator.and, false, true));
+        this.memoryComputeKeys.add(MemoryComputeKey.of(HALTED_TRAVERSERS, Operator.addAll, false, false));
+        this.memoryComputeKeys.add(MemoryComputeKey.of(ACTIVE_TRAVERSERS, Operator.addAll, true, true));
+        this.memoryComputeKeys.add(MemoryComputeKey.of(MUTATED_MEMORY_KEYS, Operator.addAll, false, true));
+        this.memoryComputeKeys.add(MemoryComputeKey.of(COMPLETED_BARRIERS, Operator.addAll, true, true));
     }
 
     @Override
     public void storeState(final Configuration configuration) {
         VertexProgram.super.storeState(configuration);
-        this.configurationTraversal.storeState(configuration);
+        this.traversal.storeState(configuration, TRAVERSAL);
+        TraversalVertexProgram.storeHaltedTraversers(configuration, this.haltedTraversers);
     }
 
     @Override
     public void setup(final Memory memory) {
+        // memory is local
+        MemoryTraversalSideEffects.setMemorySideEffects(this.traversal.get(), memory, ProgramPhase.SETUP);
+        ((MemoryTraversalSideEffects) this.traversal.get().getSideEffects()).storeSideEffectsInMemory();
         memory.set(VOTE_TO_HALT, true);
+        memory.set(MUTATED_MEMORY_KEYS, new HashSet<>());
+        memory.set(COMPLETED_BARRIERS, new HashSet<>());
+        // if halted traversers are being sent from a previous VertexProgram in an OLAP chain (non-distributed traversers), get them into the flow
+        if (!this.haltedTraversers.isEmpty()) {
+            final TraverserSet<Object> toProcessTraversers = new TraverserSet<>();
+            IteratorUtils.removeOnNext(this.haltedTraversers.iterator()).forEachRemaining(traverser -> {
+                traverser.setStepId(this.traversal.get().getStartStep().getId());
+                toProcessTraversers.add(traverser);
+            });
+            assert this.haltedTraversers.isEmpty();
+            final TraverserSet<Object> remoteActiveTraversers = new TraverserSet<>();
+            MasterExecutor.processTraversers(this.traversal, this.traversalMatrix, toProcessTraversers, remoteActiveTraversers, this.haltedTraversers, this.haltedTraverserStrategy);
+            memory.set(HALTED_TRAVERSERS, this.haltedTraversers);
+            memory.set(ACTIVE_TRAVERSERS, remoteActiveTraversers);
+        } else {
+            memory.set(HALTED_TRAVERSERS, new TraverserSet<>());
+            memory.set(ACTIVE_TRAVERSERS, new TraverserSet<>());
+        }
+        // local variable will no longer be used so null it for GC
+        this.haltedTraversers = null;
     }
 
     @Override
@@ -143,71 +236,113 @@
     }
 
     @Override
-    public void execute(final Vertex vertex, final Messenger<TraverserSet<?>> messenger, final Memory memory) {
-        this.traversal.getSideEffects().setLocalVertex(vertex);
-        if (memory.isInitialIteration()) {    // ITERATION 1
-            final TraverserSet<Object> haltedTraversers = new TraverserSet<>();
-            vertex.property(VertexProperty.Cardinality.single, HALTED_TRAVERSERS, haltedTraversers);
-
-            if (!(this.traversal.getStartStep() instanceof GraphStep))
-                throw new UnsupportedOperationException("TraversalVertexProgram currently only supports GraphStep starts on vertices or edges");
-
-            final GraphStep<Element, Element> graphStep = (GraphStep<Element, Element>) this.traversal.getStartStep();
-            final String future = graphStep.getNextStep().getId();
-            final TraverserGenerator traverserGenerator = this.traversal.getTraverserGenerator();
-            if (graphStep.returnsVertex()) {  // VERTICES (process the first step locally)
-                if (ElementHelper.idExists(vertex.id(), graphStep.getIds())) {
-                    final Traverser.Admin<Element> traverser = traverserGenerator.generate(vertex, graphStep, 1l);
-                    traverser.setStepId(future);
-                    traverser.detach();
-                    if (traverser.isHalted())
-                        haltedTraversers.add((Traverser.Admin) traverser);
-                    else
-                        memory.and(VOTE_TO_HALT, TraverserExecutor.execute(vertex, new SingleMessenger<>(messenger, new TraverserSet<>(traverser)), this.traversalMatrix));
-                }
-            } else {  // EDGES (process the first step via a message pass)
-                boolean voteToHalt = true;
-                final Iterator<Edge> starts = vertex.edges(Direction.OUT);
-                while (starts.hasNext()) {
-                    final Edge start = starts.next();
-                    if (ElementHelper.idExists(start.id(), graphStep.getIds())) {
-                        final Traverser.Admin<Element> traverser = traverserGenerator.generate(start, graphStep, 1l);
-                        traverser.setStepId(future);
-                        traverser.detach();
-                        if (traverser.isHalted())
-                            haltedTraversers.add((Traverser.Admin) traverser);
-                        else {
-                            voteToHalt = false;
-                            messenger.sendMessage(MessageScope.Global.of(vertex), new TraverserSet<>(traverser));
-                        }
-                    }
-                }
-                memory.and(VOTE_TO_HALT, voteToHalt);
-            }
-        } else {  // ITERATION 1+
-            memory.and(VOTE_TO_HALT, TraverserExecutor.execute(vertex, messenger, this.traversalMatrix));
+    public void execute(final Vertex vertex, final Messenger<TraverserSet<Object>> messenger, final Memory memory) {
+        // if any global halted traversers, simply don't use them as they were handled by master setup()
+        // these halted traversers are typically from a previous OLAP job that yielded traversers at the master traversal
+        if (null != this.haltedTraversers)
+            this.haltedTraversers = null;
+        // memory is distributed
+        MemoryTraversalSideEffects.setMemorySideEffects(this.traversal.get(), memory, ProgramPhase.EXECUTE);
+        // if a barrier was completed in another worker, it is also completed here (ensure distributed barriers are synchronized)
+        final Set<String> completedBarriers = memory.get(COMPLETED_BARRIERS);
+        for (final String stepId : completedBarriers) {
+            final Step<?, ?> step = this.traversalMatrix.getStepById(stepId);
+            if (step instanceof Barrier)
+                ((Barrier) this.traversalMatrix.getStepById(stepId)).done();
         }
+        // define halted traversers
+        final TraverserSet<Object> haltedTraversers = vertex.<TraverserSet<Object>>property(HALTED_TRAVERSERS).orElse(new TraverserSet<>());
+        vertex.property(VertexProperty.Cardinality.single, HALTED_TRAVERSERS, haltedTraversers);
+        //////////////////
+        if (memory.isInitialIteration()) {    // ITERATION 1
+            final TraverserSet<Object> activeTraversers = new TraverserSet<>();
+            // if halted traversers are being sent from a previous VertexProgram in an OLAP chain (distributed traversers), get them into the flow
+            IteratorUtils.removeOnNext(haltedTraversers.iterator()).forEachRemaining(traverser -> {
+                traverser.setStepId(this.traversal.get().getStartStep().getId());
+                activeTraversers.add(traverser);
+            });
+            assert haltedTraversers.isEmpty();
+            // for g.V()/E()
+            if (this.traversal.get().getStartStep() instanceof GraphStep) {
+                final GraphStep<Element, Element> graphStep = (GraphStep<Element, Element>) this.traversal.get().getStartStep();
+                graphStep.reset();
+                activeTraversers.forEach(traverser -> graphStep.addStart((Traverser.Admin) traverser));
+                activeTraversers.clear();
+                if (graphStep.returnsVertex())
+                    graphStep.setIteratorSupplier(() -> ElementHelper.idExists(vertex.id(), graphStep.getIds()) ? (Iterator) IteratorUtils.of(vertex) : EmptyIterator.instance());
+                else
+                    graphStep.setIteratorSupplier(() -> (Iterator) IteratorUtils.filter(vertex.edges(Direction.OUT), edge -> ElementHelper.idExists(edge.id(), graphStep.getIds())));
+                graphStep.forEachRemaining(traverser -> {
+                    if (traverser.isHalted()) {
+                        if (this.returnHaltedTraversers)
+                            memory.add(HALTED_TRAVERSERS, new TraverserSet<>(this.haltedTraverserStrategy.halt(traverser)));
+                        else
+                            haltedTraversers.add((Traverser.Admin) traverser.detach());
+                    } else
+                        activeTraversers.add((Traverser.Admin) traverser);
+                });
+            }
+            memory.add(VOTE_TO_HALT, activeTraversers.isEmpty() || WorkerExecutor.execute(vertex, new SingleMessenger<>(messenger, activeTraversers), this.traversalMatrix, memory, this.returnHaltedTraversers, this.haltedTraverserStrategy));
+        } else   // ITERATION 1+
+            memory.add(VOTE_TO_HALT, WorkerExecutor.execute(vertex, messenger, this.traversalMatrix, memory, this.returnHaltedTraversers, this.haltedTraverserStrategy));
+        // save space by not having an empty halted traversers property
+        if (this.returnHaltedTraversers || haltedTraversers.isEmpty())
+            vertex.<TraverserSet>property(HALTED_TRAVERSERS).remove();
     }
 
     @Override
     public boolean terminate(final Memory memory) {
+        // memory is local
+        MemoryTraversalSideEffects.setMemorySideEffects(this.traversal.get(), memory, ProgramPhase.TERMINATE);
         final boolean voteToHalt = memory.<Boolean>get(VOTE_TO_HALT);
+        memory.set(VOTE_TO_HALT, true);
+        memory.set(ACTIVE_TRAVERSERS, new TraverserSet<>());
         if (voteToHalt) {
-            return true;
+            // local traverser sets to process
+            final TraverserSet<Object> toProcessTraversers = new TraverserSet<>();
+            // traversers that need to be sent back to the workers (no longer can be processed locally by the master traversal)
+            final TraverserSet<Object> remoteActiveTraversers = new TraverserSet<>();
+            // halted traversers that have completed their journey
+            final TraverserSet<Object> haltedTraversers = memory.get(HALTED_TRAVERSERS);
+            // get all barrier traversers
+            final Set<String> completedBarriers = new HashSet<>();
+            MasterExecutor.processMemory(this.traversalMatrix, memory, toProcessTraversers, completedBarriers);
+            // process all results from barriers locally and when elements are touched, put them in remoteActiveTraversers
+            MasterExecutor.processTraversers(this.traversal, this.traversalMatrix, toProcessTraversers, remoteActiveTraversers, haltedTraversers, this.haltedTraverserStrategy);
+            // tell parallel barriers that might not have been active in the last round that they are no longer active
+            memory.set(COMPLETED_BARRIERS, completedBarriers);
+            if (!remoteActiveTraversers.isEmpty() ||
+                    completedBarriers.stream().map(this.traversalMatrix::getStepById).filter(step -> step instanceof LocalBarrier).findAny().isPresent()) {
+                // send active traversers back to workers
+                memory.set(ACTIVE_TRAVERSERS, remoteActiveTraversers);
+                return false;
+            } else {
+                // finalize locally with any last traversers dangling in the local traversal
+                final Step<?, Object> endStep = (Step<?, Object>) this.traversal.get().getEndStep();
+                while (endStep.hasNext()) {
+                    haltedTraversers.add(this.haltedTraverserStrategy.halt(endStep.next()));
+                }
+                // the result of a TraversalVertexProgram are the halted traversers
+                memory.set(HALTED_TRAVERSERS, haltedTraversers);
+                // finalize profile side-effect steps. (todo: try and hide this)
+                for (final ProfileSideEffectStep profileStep : TraversalHelper.getStepsOfAssignableClassRecursively(ProfileSideEffectStep.class, this.traversal.get())) {
+                    this.traversal.get().getSideEffects().set(profileStep.getSideEffectKey(), profileStep.generateFinalResult(this.traversal.get().getSideEffects().get(profileStep.getSideEffectKey())));
+                }
+                return true;
+            }
         } else {
-            memory.set(VOTE_TO_HALT, true);
             return false;
         }
     }
 
     @Override
-    public Set<String> getElementComputeKeys() {
-        return ELEMENT_COMPUTE_KEYS;
+    public Set<VertexComputeKey> getVertexComputeKeys() {
+        return VERTEX_COMPUTE_KEYS;
     }
 
     @Override
-    public Set<String> getMemoryComputeKeys() {
-        return MEMORY_COMPUTE_KEYS;
+    public Set<MemoryComputeKey> getMemoryComputeKeys() {
+        return this.memoryComputeKeys;
     }
 
     @Override
@@ -216,7 +351,7 @@
     }
 
     @Override
-    public Optional<MessageCombiner<TraverserSet<?>>> getMessageCombiner() {
+    public Optional<MessageCombiner<TraverserSet<Object>>> getMessageCombiner() {
         return (Optional) TraversalVertexProgramMessageCombiner.instance();
     }
 
@@ -225,7 +360,9 @@
         try {
             final TraversalVertexProgram clone = (TraversalVertexProgram) super.clone();
             clone.traversal = this.traversal.clone();
-            clone.traversalMatrix = new TraversalMatrix<>(clone.traversal);
+            if (!clone.traversal.get().isLocked())
+                clone.traversal.get().applyStrategies();
+            clone.traversalMatrix = new TraversalMatrix<>(clone.traversal.get());
             return clone;
         } catch (final CloneNotSupportedException e) {
             throw new IllegalStateException(e.getMessage(), e);
@@ -244,7 +381,7 @@
 
     @Override
     public String toString() {
-        final String traversalString = this.traversal.toString().substring(1);
+        final String traversalString = this.traversal.get().toString().substring(1);
         return StringFactory.vertexProgramString(this, traversalString.substring(0, traversalString.length() - 1));
     }
 
@@ -263,12 +400,6 @@
         };
     }
 
-    public <S, E> Traversal.Admin<S, E> computerResultTraversal(final ComputerResult result) {
-        final Traversal.Admin<S, E> traversal = (Traversal.Admin<S, E>) this.getTraversal();
-        ((ComputerResultStep) traversal.getEndStep()).populateTraversers(result);
-        return traversal;
-    }
-
     //////////////
 
     public static Builder build() {
@@ -281,22 +412,33 @@
             super(TraversalVertexProgram.class);
         }
 
-        public Builder traversal(final TraversalSource.Builder builder, final String scriptEngine, final String traversalScript, final Object... bindings) {
-            ConfigurationTraversal.storeState(new TraversalScriptFunction<>(builder, scriptEngine, traversalScript, bindings), this.configuration, TRAVERSAL_SUPPLIER);
+        public Builder haltedTraversers(final TraverserSet<Object> haltedTraversers) {
+            TraversalVertexProgram.storeHaltedTraversers(this.configuration, haltedTraversers);
             return this;
         }
 
-        public Builder traversal(final Traversal.Admin<?, ?> traversal) {
-            ConfigurationTraversal.storeState(new TraversalObjectFunction<>(traversal), this.configuration, TRAVERSAL_SUPPLIER);
-            return this;
+        public Builder traversal(final TraversalSource traversalSource, final String scriptEngine, final String traversalScript, final Object... bindings) {
+            return this.traversal(new ScriptTraversal<>(traversalSource, scriptEngine, traversalScript, bindings));
         }
 
-        public Builder traversal(final Class<? extends Supplier<Traversal.Admin<?, ?>>> traversalClass) {
-            ConfigurationTraversal.storeState(new TraversalClassFunction(traversalClass), this.configuration, TRAVERSAL_SUPPLIER);
+        public Builder traversal(Traversal.Admin<?, ?> traversal) {
+            // this is necessary if the job was submitted via TraversalVertexProgram.build() instead of TraversalVertexProgramStep.
+            if (!(traversal.getParent() instanceof TraversalVertexProgramStep)) {
+                final MemoryTraversalSideEffects memoryTraversalSideEffects = new MemoryTraversalSideEffects(traversal.getSideEffects());
+                final Traversal.Admin<?, ?> parentTraversal = new DefaultTraversal<>();
+                traversal.getGraph().ifPresent(parentTraversal::setGraph);
+                final TraversalStrategies strategies = traversal.getStrategies().clone();
+                strategies.addStrategies(ComputerVerificationStrategy.instance(), new VertexProgramStrategy(Computer.compute()));
+                parentTraversal.setStrategies(strategies);
+                traversal.setStrategies(strategies);
+                parentTraversal.setSideEffects(memoryTraversalSideEffects);
+                parentTraversal.addStep(new TraversalVertexProgramStep(parentTraversal, traversal));
+                traversal = ((TraversalVertexProgramStep) parentTraversal.getStartStep()).getGlobalChildren().get(0);
+                traversal.setSideEffects(memoryTraversalSideEffects);
+            }
+            PureTraversal.storeState(this.configuration, TRAVERSAL, traversal);
             return this;
         }
-
-        // TODO Builder resolveElements(boolean) to be fed to ComputerResultStep
     }
 
 }
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgramMessageCombiner.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgramMessageCombiner.java
index ad33da6..c8065fb 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgramMessageCombiner.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgramMessageCombiner.java
@@ -26,7 +26,7 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class TraversalVertexProgramMessageCombiner implements MessageCombiner<TraverserSet<?>> {
+public final class TraversalVertexProgramMessageCombiner implements MessageCombiner<TraverserSet<Object>> {
 
     private static final Optional<TraversalVertexProgramMessageCombiner> INSTANCE = Optional.of(new TraversalVertexProgramMessageCombiner());
 
@@ -34,8 +34,8 @@
 
     }
 
-    public TraverserSet<?> combine(final TraverserSet<?> messageA, final TraverserSet<?> messageB) {
-        messageA.addAll((TraverserSet) messageB);
+    public TraverserSet<Object> combine(final TraverserSet<Object> messageA, final TraverserSet<Object> messageB) {
+        messageA.addAll(messageB);
         return messageA;
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java
deleted file mode 100644
index 078e880..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraverserExecutor.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * 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.computer.traversal;
-
-import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
-import org.apache.tinkerpop.gremlin.process.computer.Messenger;
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
-import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.structure.util.Attachable;
-
-import java.util.Iterator;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class TraverserExecutor {
-
-    public static boolean execute(final Vertex vertex, final Messenger<TraverserSet<?>> messenger, final TraversalMatrix<?, ?> traversalMatrix) {
-
-        final TraverserSet<Object> haltedTraversers = vertex.value(TraversalVertexProgram.HALTED_TRAVERSERS);
-        final AtomicBoolean voteToHalt = new AtomicBoolean(true);
-        final TraverserSet<Object> aliveTraversers = new TraverserSet<>();
-        final TraverserSet<Object> toProcessTraversers = new TraverserSet<>();
-
-        final Iterator<TraverserSet<?>> messages = messenger.receiveMessages();
-        final TraversalSideEffects traversalSideEffects = traversalMatrix.getTraversal().getSideEffects();
-        while (messages.hasNext()) {
-            final Iterator<Traverser.Admin<Object>> traversers = (Iterator) messages.next().iterator();
-            while (traversers.hasNext()) {
-                final Traverser.Admin<Object> traverser = traversers.next();
-                traversers.remove();
-                traverser.setSideEffects(traversalSideEffects);
-                traverser.attach(Attachable.Method.get(vertex));
-                toProcessTraversers.add((Traverser.Admin) traverser);
-            }
-        }
-        // while there are still local traversers, process them until they leave the vertex or halt (i.e. isHalted()).
-        while (!toProcessTraversers.isEmpty()) {
-            // process local traversers and if alive, repeat, else halt.
-            Step<?, ?> previousStep = EmptyStep.instance();
-            Iterator<Traverser.Admin<Object>> traversers = toProcessTraversers.iterator();
-            while (traversers.hasNext()) {
-                final Traverser.Admin<Object> traverser = traversers.next();
-                traversers.remove();
-                final Step<?, ?> currentStep = traversalMatrix.getStepById(traverser.getStepId());
-                if (!currentStep.getId().equals(previousStep.getId()))
-                    TraverserExecutor.drainStep(previousStep, aliveTraversers, haltedTraversers);
-                currentStep.addStart((Traverser.Admin) traverser);
-                previousStep = currentStep;
-            }
-            TraverserExecutor.drainStep(previousStep, aliveTraversers, haltedTraversers);
-            assert toProcessTraversers.isEmpty();
-            // process all the local objects and send messages or store locally again
-            if (!aliveTraversers.isEmpty()) {
-                traversers = aliveTraversers.iterator();
-                while (traversers.hasNext()) {
-                    final Traverser.Admin<Object> traverser = traversers.next();
-                    traversers.remove();
-                    if (traverser.get() instanceof Element || traverser.get() instanceof Property) {      // GRAPH OBJECT
-                        // if the element is remote, then message, else store it locally for re-processing
-                        final Vertex hostingVertex = TraverserExecutor.getHostingVertex(traverser.get());
-                        if (!vertex.equals(hostingVertex)) { // necessary for path access
-                            voteToHalt.set(false);
-                            traverser.detach();
-                            messenger.sendMessage(MessageScope.Global.of(hostingVertex), new TraverserSet<>(traverser));
-                        } else {
-                            if (traverser.get() instanceof Attachable)   // necessary for path access to local object
-                                traverser.attach(Attachable.Method.get(vertex));
-                            toProcessTraversers.add(traverser);
-                        }
-                    } else                                                                              // STANDARD OBJECT
-                        toProcessTraversers.add(traverser);
-                }
-                assert aliveTraversers.isEmpty();
-            }
-        }
-        return voteToHalt.get();
-    }
-
-    private static void drainStep(final Step<?, ?> step, final TraverserSet<?> aliveTraversers, final TraverserSet<?> haltedTraversers) {
-        step.forEachRemaining(traverser -> {
-            if (traverser.asAdmin().isHalted()) {
-                traverser.asAdmin().detach();
-                haltedTraversers.add((Traverser.Admin) traverser);
-            } else
-                aliveTraversers.add((Traverser.Admin) traverser);
-        });
-    }
-
-    private static Vertex getHostingVertex(final Object object) {
-        Object obj = object;
-        while (true) {
-            if (obj instanceof Vertex)
-                return (Vertex) obj;
-            else if (obj instanceof Edge)
-                return ((Edge) obj).outVertex();
-            else if (obj instanceof Property)
-                obj = ((Property) obj).element();
-            else
-                throw new IllegalStateException("The host of the object is unknown: " + obj.toString() + ':' + obj.getClass().getCanonicalName());
-        }
-    }
-}
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/VertexTraversalSideEffects.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/VertexTraversalSideEffects.java
deleted file mode 100644
index d9889f1..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/VertexTraversalSideEffects.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * 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.computer.traversal;
-
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
-
-import java.util.Collections;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.function.BinaryOperator;
-import java.util.function.Supplier;
-import java.util.function.UnaryOperator;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class VertexTraversalSideEffects implements TraversalSideEffects {
-
-    private static final UnsupportedOperationException EXCEPTION = new UnsupportedOperationException(VertexTraversalSideEffects.class.getSimpleName() + " is a read only facade to the underlying sideEffect at the local vertex");
-
-    private Map<String, Object> objectMap;
-
-    private VertexTraversalSideEffects() {
-
-    }
-
-    @Override
-    public void registerSupplier(final String key, final Supplier supplier) {
-        throw EXCEPTION;
-    }
-
-    @Override
-    public <V> Optional<Supplier<V>> getRegisteredSupplier(final String key) {
-        throw EXCEPTION;
-    }
-
-    @Override
-    public void registerSupplierIfAbsent(final String key, final Supplier supplier) {
-        throw EXCEPTION;
-    }
-
-    @Override
-    public <S> void setSack(final Supplier<S> initialValue, final UnaryOperator<S> splitOperator, final BinaryOperator<S> mergeOperator) {
-        throw EXCEPTION;
-    }
-
-    @Override
-    public <S> Supplier<S> getSackInitialValue() {
-        throw EXCEPTION;
-    }
-
-    @Override
-    public <S> UnaryOperator<S> getSackSplitter() {
-        throw EXCEPTION;
-    }
-
-    @Override
-    public <S> BinaryOperator<S> getSackMerger() {
-        throw EXCEPTION;
-    }
-
-    @Override
-    public void set(final String key, final Object value) {
-        throw EXCEPTION;
-    }
-
-    @Override
-    public <V> Optional<V> get(final String key) throws IllegalArgumentException {
-        return Optional.ofNullable((V) this.objectMap.get(key));
-    }
-
-    @Override
-    public <V> V getOrCreate(final String key, final Supplier<V> orCreate) {
-        throw EXCEPTION;
-    }
-
-    @Override
-    public void remove(final String key) {
-        throw EXCEPTION;
-    }
-
-    @Override
-    public Set<String> keys() {
-        return Collections.unmodifiableSet(this.objectMap.keySet());
-    }
-
-    @Override
-    public void setLocalVertex(final Vertex vertex) {
-        this.objectMap = vertex.<Map<String, Object>>property(SIDE_EFFECTS).orElse(Collections.emptyMap());
-    }
-
-    @Override
-    public void mergeInto(final TraversalSideEffects sideEffects) {
-        throw EXCEPTION;
-    }
-
-    @Override
-    public String toString() {
-        return StringFactory.traversalSideEffectsString(this);
-    }
-
-    @Override
-    public VertexTraversalSideEffects clone() {
-        try {
-            return (VertexTraversalSideEffects) super.clone();
-        } catch (final CloneNotSupportedException e) {
-            throw new IllegalStateException(e.getMessage(), e);
-        }
-    }
-
-    /////
-
-    public static TraversalSideEffects of(final Vertex vertex) {
-        final TraversalSideEffects sideEffects = new VertexTraversalSideEffects();
-        sideEffects.setLocalVertex(vertex);
-        return sideEffects;
-    }
-}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/WorkerExecutor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/WorkerExecutor.java
new file mode 100644
index 0000000..0a3aad2
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/WorkerExecutor.java
@@ -0,0 +1,245 @@
+/*
+ * 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.computer.traversal;
+
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
+import org.apache.tinkerpop.gremlin.process.computer.Messenger;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.HaltedTraverserStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Bypassing;
+import org.apache.tinkerpop.gremlin.process.traversal.step.LocalBarrier;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Element;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.util.Attachable;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceFactory;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+final class WorkerExecutor {
+
+    private WorkerExecutor() {
+
+    }
+
+    protected static boolean execute(final Vertex vertex,
+                                     final Messenger<TraverserSet<Object>> messenger,
+                                     final TraversalMatrix<?, ?> traversalMatrix,
+                                     final Memory memory,
+                                     final boolean returnHaltedTraversers,
+                                     final HaltedTraverserStrategy haltedTraverserStrategy) {
+        final TraversalSideEffects traversalSideEffects = traversalMatrix.getTraversal().getSideEffects();
+        final AtomicBoolean voteToHalt = new AtomicBoolean(true);
+        final TraverserSet<Object> haltedTraversers = vertex.value(TraversalVertexProgram.HALTED_TRAVERSERS);
+        final TraverserSet<Object> activeTraversers = new TraverserSet<>();
+        final TraverserSet<Object> toProcessTraversers = new TraverserSet<>();
+
+        ////////////////////////////////
+        // GENERATE LOCAL TRAVERSERS //
+        ///////////////////////////////
+
+        // MASTER ACTIVE
+        // these are traversers that are going from OLTP (master) to OLAP (workers)
+        // these traversers were broadcasted from the master traversal to the workers for attachment
+        final TraverserSet<Object> maybeActiveTraversers = memory.get(TraversalVertexProgram.ACTIVE_TRAVERSERS);
+        // some memory systems are interacted with by multiple threads and thus, concurrent modification can happen at iterator.remove().
+        // its better to reduce the memory footprint and shorten the active traverser list so synchronization is worth it.
+        // most distributed OLAP systems have the memory partitioned and thus, this synchronization does nothing.
+        synchronized (maybeActiveTraversers) {
+            if (!maybeActiveTraversers.isEmpty()) {
+                final Iterator<Traverser.Admin<Object>> iterator = maybeActiveTraversers.iterator();
+                while (iterator.hasNext()) {
+                    final Traverser.Admin<Object> traverser = iterator.next();
+                    if (vertex.equals(WorkerExecutor.getHostingVertex(traverser.get()))) {
+                        iterator.remove();
+                        traverser.attach(Attachable.Method.get(vertex));
+                        traverser.setSideEffects(traversalSideEffects);
+                        toProcessTraversers.add(traverser);
+                    }
+                }
+            }
+        }
+
+        // WORKER ACTIVE
+        // these are traversers that exist from from a local barrier
+        // these traversers will simply saved at the local vertex while the master traversal synchronized the barrier
+        vertex.<TraverserSet<Object>>property(TraversalVertexProgram.ACTIVE_TRAVERSERS).ifPresent(previousActiveTraversers -> {
+            IteratorUtils.removeOnNext(previousActiveTraversers.iterator()).forEachRemaining(traverser -> {
+                traverser.attach(Attachable.Method.get(vertex));
+                traverser.setSideEffects(traversalSideEffects);
+                toProcessTraversers.add(traverser);
+            });
+            assert previousActiveTraversers.isEmpty();
+            // remove the property to save space
+            vertex.property(TraversalVertexProgram.ACTIVE_TRAVERSERS).remove();
+        });
+
+        // TRAVERSER MESSAGES (WORKER -> WORKER)
+        // these are traversers that have been messaged to the vertex from another vertex
+        final Iterator<TraverserSet<Object>> messages = messenger.receiveMessages();
+        while (messages.hasNext()) {
+            IteratorUtils.removeOnNext(messages.next().iterator()).forEachRemaining(traverser -> {
+                if (traverser.isHalted()) {
+                    if (returnHaltedTraversers)
+                        memory.add(TraversalVertexProgram.HALTED_TRAVERSERS, new TraverserSet<>(haltedTraverserStrategy.halt(traverser)));
+                    else
+                        haltedTraversers.add(traverser); // the traverser has already been detached so no need to detach it again
+                } else {
+                    // traverser is not halted and thus, should be processed locally
+                    // attach it and process
+                    traverser.attach(Attachable.Method.get(vertex));
+                    traverser.setSideEffects(traversalSideEffects);
+                    toProcessTraversers.add(traverser);
+                }
+            });
+        }
+
+        ///////////////////////////////
+        // PROCESS LOCAL TRAVERSERS //
+        //////////////////////////////
+
+        // while there are still local traversers, process them until they leave the vertex (message pass) or halt (store).
+        while (!toProcessTraversers.isEmpty()) {
+            Step<Object, Object> previousStep = EmptyStep.instance();
+            Iterator<Traverser.Admin<Object>> traversers = toProcessTraversers.iterator();
+            while (traversers.hasNext()) {
+                final Traverser.Admin<Object> traverser = traversers.next();
+                traversers.remove();
+                final Step<Object, Object> currentStep = traversalMatrix.getStepById(traverser.getStepId());
+                // try and fill up the current step as much as possible with traversers to get a bulking optimization
+                if (!currentStep.getId().equals(previousStep.getId()) && !(previousStep instanceof EmptyStep))
+                    WorkerExecutor.drainStep(vertex, previousStep, activeTraversers, haltedTraversers, memory, returnHaltedTraversers, haltedTraverserStrategy);
+                currentStep.addStart(traverser);
+                previousStep = currentStep;
+            }
+            WorkerExecutor.drainStep(vertex, previousStep, activeTraversers, haltedTraversers, memory, returnHaltedTraversers, haltedTraverserStrategy);
+            // all processed traversers should be either halted or active
+            assert toProcessTraversers.isEmpty();
+            // process all the local objects and send messages or store locally again
+            if (!activeTraversers.isEmpty()) {
+                traversers = activeTraversers.iterator();
+                while (traversers.hasNext()) {
+                    final Traverser.Admin<Object> traverser = traversers.next();
+                    traversers.remove();
+                    // decide whether to message the traverser or to process it locally
+                    if (traverser.get() instanceof Element || traverser.get() instanceof Property) {      // GRAPH OBJECT
+                        // if the element is remote, then message, else store it locally for re-processing
+                        final Vertex hostingVertex = WorkerExecutor.getHostingVertex(traverser.get());
+                        if (!vertex.equals(hostingVertex)) { // if its host is not the current vertex, then send the traverser to the hosting vertex
+                            voteToHalt.set(false); // if message is passed, then don't vote to halt
+                            messenger.sendMessage(MessageScope.Global.of(hostingVertex), new TraverserSet<>(traverser.detach()));
+                        } else {
+                            traverser.attach(Attachable.Method.get(vertex)); // necessary for select() steps that reference the current object
+                            toProcessTraversers.add(traverser);
+                        }
+                    } else                                                                              // STANDARD OBJECT
+                        toProcessTraversers.add(traverser);
+                }
+                assert activeTraversers.isEmpty();
+            }
+        }
+        return voteToHalt.get();
+    }
+
+    private static void drainStep(final Vertex vertex,
+                                  final Step<Object, Object> step,
+                                  final TraverserSet<Object> activeTraversers,
+                                  final TraverserSet<Object> haltedTraversers,
+                                  final Memory memory,
+                                  final boolean returnHaltedTraversers,
+                                  final HaltedTraverserStrategy haltedTraverserStrategy) {
+        if (step instanceof Barrier) {
+            if (step instanceof Bypassing)
+                ((Bypassing) step).setBypass(true);
+            if (step instanceof LocalBarrier) {
+                // local barrier traversers are stored on the vertex until the master traversal synchronizes the system
+                final LocalBarrier<Object> barrier = (LocalBarrier<Object>) step;
+                final TraverserSet<Object> localBarrierTraversers = vertex.<TraverserSet<Object>>property(TraversalVertexProgram.ACTIVE_TRAVERSERS).orElse(new TraverserSet<>());
+                vertex.property(TraversalVertexProgram.ACTIVE_TRAVERSERS, localBarrierTraversers);
+                while (barrier.hasNextBarrier()) {
+                    final TraverserSet<Object> barrierSet = barrier.nextBarrier();
+                    IteratorUtils.removeOnNext(barrierSet.iterator()).forEachRemaining(traverser -> {
+                        traverser.addLabels(step.getLabels());  // this might need to be generalized for working with global barriers too
+                        if (traverser.isHalted() &&
+                                (returnHaltedTraversers ||
+                                        (!(traverser.get() instanceof Element) && !(traverser.get() instanceof Property)) ||
+                                        getHostingVertex(traverser.get()).equals(vertex))) {
+                            if (returnHaltedTraversers)
+                                memory.add(TraversalVertexProgram.HALTED_TRAVERSERS, new TraverserSet<>(haltedTraverserStrategy.halt(traverser)));
+                            else
+                                haltedTraversers.add(traverser.detach());
+                        } else
+                            localBarrierTraversers.add(traverser.detach());
+                    });
+                }
+                memory.add(TraversalVertexProgram.MUTATED_MEMORY_KEYS, new HashSet<>(Collections.singleton(step.getId())));
+            } else {
+                final Barrier barrier = (Barrier) step;
+                while (barrier.hasNextBarrier()) {
+                    memory.add(step.getId(), barrier.nextBarrier());
+                }
+                memory.add(TraversalVertexProgram.MUTATED_MEMORY_KEYS, new HashSet<>(Collections.singleton(step.getId())));
+            }
+        } else { // LOCAL PROCESSING
+            step.forEachRemaining(traverser -> {
+                if (traverser.isHalted() &&
+                        // if its a ReferenceFactory (one less iteration required)
+                        ((returnHaltedTraversers || ReferenceFactory.class == haltedTraverserStrategy.getHaltedTraverserFactory()) &&
+                                (!(traverser.get() instanceof Element) && !(traverser.get() instanceof Property)) ||
+                                getHostingVertex(traverser.get()).equals(vertex))) {
+                    if (returnHaltedTraversers)
+                        memory.add(TraversalVertexProgram.HALTED_TRAVERSERS, new TraverserSet<>(haltedTraverserStrategy.halt(traverser)));
+                    else
+                        haltedTraversers.add(traverser.detach());
+                } else {
+                    activeTraversers.add(traverser);
+                }
+            });
+        }
+    }
+
+    private static Vertex getHostingVertex(final Object object) {
+        Object obj = object;
+        while (true) {
+            if (obj instanceof Vertex)
+                return (Vertex) obj;
+            else if (obj instanceof Edge)
+                return ((Edge) obj).outVertex();
+            else if (obj instanceof Property)
+                obj = ((Property) obj).element();
+            else
+                throw new IllegalStateException("The host of the object is unknown: " + obj.toString() + ':' + obj.getClass().getCanonicalName());
+        }
+    }
+}
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/lambda/HaltedTraversersCountTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/lambda/HaltedTraversersCountTraversal.java
new file mode 100644
index 0000000..a91d52e
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/lambda/HaltedTraversersCountTraversal.java
@@ -0,0 +1,56 @@
+/*
+ * 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.computer.traversal.lambda;
+
+import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.AbstractLambdaTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class HaltedTraversersCountTraversal extends AbstractLambdaTraversal<Vertex, Long> {
+
+    private Long count;
+
+    @Override
+    public Long next() {
+        return this.count;
+    }
+
+    @Override
+    public void addStart(final Traverser.Admin<Vertex> start) {
+        final VertexProperty<TraverserSet<Object>> property = start.get().<TraverserSet<Object>>property(TraversalVertexProgram.HALTED_TRAVERSERS);
+        this.count = property.isPresent() ? property.value().bulkSize() : 0l;
+    }
+
+    @Override
+    public String toString() {
+        return "count(" + TraversalVertexProgram.HALTED_TRAVERSERS + ")";
+    }
+
+    @Override
+    public int hashCode() {
+        return this.getClass().hashCode();
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/VertexComputing.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/VertexComputing.java
new file mode 100644
index 0000000..33f185a
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/VertexComputing.java
@@ -0,0 +1,65 @@
+/*
+ * 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.computer.traversal.step;
+
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public interface VertexComputing {
+
+    /**
+     * Set the {@link Computer} to be used to generate the {@link GraphComputer}.
+     *
+     * @param computer the computer specification.
+     */
+    public void setComputer(final Computer computer);
+
+    /**
+     * Get the {@link Computer} for generating the {@link GraphComputer}.
+     * Inferences on the state of the {@link org.apache.tinkerpop.gremlin.process.traversal.Step}
+     * within the {@link org.apache.tinkerpop.gremlin.process.traversal.Traversal} can be use applied here.
+     *
+     * @return the computer specification for generating the graph computer.
+     */
+    public Computer getComputer();
+
+    /**
+     * Generate the {@link VertexProgram}.
+     *
+     * @param graph  the {@link Graph} that the program will be executed over.
+     * @param memory the {@link Memory} from the previous OLAP job if it exists, else its an empty memory structure.
+     * @return the generated vertex program instance.
+     */
+    public VertexProgram generateProgram(final Graph graph, final Memory memory);
+
+    /**
+     * @deprecated As of release 3.2.1. Please use {@link VertexComputing#getComputer()}.
+     */
+    @Deprecated
+    public default GraphComputer generateComputer(final Graph graph) {
+        return this.getComputer().apply(graph);
+    }
+}
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 1855c30..b5fd8e8 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
@@ -19,105 +19,56 @@
 package org.apache.tinkerpop.gremlin.process.computer.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
-import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 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.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.step.Bypassing;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectCapStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 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;
 import org.apache.tinkerpop.gremlin.structure.util.Attachable;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.util.iterator.EmptyIterator;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import java.util.EnumSet;
-import java.util.HashMap;
 import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.util.NoSuchElementException;
 import java.util.Set;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class ComputerResultStep<S> extends AbstractStep<S, S> implements Bypassing {
+public final class ComputerResultStep<S> extends AbstractStep<ComputerResult, S> {
 
-    private final transient GraphComputer graphComputer;
-    private final transient ComputerResult computerResult;
+    private final boolean attachElements = Boolean.valueOf(System.getProperty("is.testing", "false"));
+    private Iterator<Traverser.Admin<S>> currentIterator = EmptyIterator.instance();
 
-    private Iterator<Traverser.Admin<S>> traversers;
-    private Graph graph;
-    private final boolean attachElements; // should be part of graph computer with "propagate properties"
-    private boolean first = true;
-    private boolean byPass = false;
-
-    public ComputerResultStep(final Traversal.Admin traversal, final GraphComputer graphComputer, final boolean attachElements) {
+    public ComputerResultStep(final Traversal.Admin traversal) {
         super(traversal);
-        this.attachElements = attachElements;
-        this.graphComputer = graphComputer;
-        this.computerResult = null;
     }
 
-    public ComputerResultStep(final Traversal.Admin traversal, final ComputerResult computerResult, final boolean attachElements) {
-        super(traversal);
-        this.attachElements = attachElements;
-        this.graphComputer = null;
-        this.computerResult = computerResult;
-        this.populateTraversers(this.computerResult);
+    public Iterator<Traverser.Admin<S>> attach(final Iterator<Traverser.Admin<S>> iterator, final Graph graph) {
+        return IteratorUtils.map(iterator, traverser -> {
+            traverser.setSideEffects(this.getTraversal().getSideEffects());   // necessary to ensure no NPE
+            if (this.attachElements && (traverser.get() instanceof Attachable) && !(traverser.get() instanceof Property))
+                traverser.set((S) ((Attachable<Element>) traverser.get()).attach(Attachable.Method.get(graph)));
+            return traverser;
+        });
     }
 
     @Override
-    public Traverser<S> processNextStart() {
-        if (this.byPass) return this.starts.next();
-        if (this.first && null == this.computerResult) {
-            try {
-                populateTraversers(this.graphComputer.program(TraversalVertexProgram.build().traversal(this.getTraversal()).create(this.graph)).submit().get());
-            } catch (final Exception e) {
-                throw new IllegalStateException(e.getMessage(), e);
-            }
-            this.first = false;
-        }
-
-        final Traverser.Admin<S> traverser = this.traversers.next();
-        if (this.attachElements && (traverser.get() instanceof Attachable) && !(traverser.get() instanceof Property))
-            traverser.set((S) ((Attachable<Element>) traverser.get()).attach(Attachable.Method.get(graph)));
-        return traverser;
-    }
-
-    public void populateTraversers(final ComputerResult result) {
-        this.graph = result.graph();
-        result.memory().keys().forEach(key -> this.getTraversal().getSideEffects().set(key, result.memory().get(key)));
-        final Step endStep = this.getPreviousStep();
-        if (endStep instanceof SideEffectCapStep) {
-            final List<String> sideEffectKeys = ((SideEffectCapStep<?, ?>) endStep).getSideEffectKeys();
-            if (sideEffectKeys.size() == 1)
-                this.traversers = IteratorUtils.of(this.getTraversal().getTraverserGenerator().generate(result.memory().get(sideEffectKeys.get(0)), this, 1l));
+    protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
+        while (true) {
+            if (this.currentIterator.hasNext())
+                return this.currentIterator.next();
             else {
-                final Map<String, Object> sideEffects = new HashMap<>();
-                for (final String sideEffectKey : sideEffectKeys) {
-                    sideEffects.put(sideEffectKey, result.memory().get(sideEffectKey));
-                }
-                this.traversers = IteratorUtils.of(this.getTraversal().getTraverserGenerator().generate((S) sideEffects, this, 1l));
+                final ComputerResult result = this.starts.next().get();
+                this.currentIterator = attach(result.memory().<TraverserSet<S>>get(TraversalVertexProgram.HALTED_TRAVERSERS).iterator(), result.graph());
             }
-        } else if (result.memory().exists(ReducingBarrierStep.REDUCING)) {
-            this.traversers = IteratorUtils.of(this.getTraversal().getTraverserGenerator().generate(result.memory().get(ReducingBarrierStep.REDUCING), this, 1l));
-        } else {
-            this.traversers = result.memory().get(TraverserMapReduce.TRAVERSERS);
         }
-        this.first = false;
-        this.byPass = false;
-    }
-
-    @Override
-    public void setBypass(final boolean byPass) {
-        this.byPass = byPass;
     }
 
     @Override
@@ -129,4 +80,11 @@
     public Set<TraverserRequirement> getRequirements() {
         return EnumSet.of(TraverserRequirement.OBJECT);
     }
+
+    @Override
+    public ComputerResultStep<S> clone() {
+        final ComputerResultStep<S> clone = (ComputerResultStep<S>) super.clone();
+        clone.currentIterator = EmptyIterator.instance();
+        return clone;
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java
new file mode 100644
index 0000000..364d092
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java
@@ -0,0 +1,121 @@
+/*
+ * 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.computer.traversal.step.map;
+
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.lambda.HaltedTraversersCountTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TimesModulating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class PageRankVertexProgramStep extends VertexProgramStep implements TraversalParent, ByModulating, TimesModulating {
+
+    private PureTraversal<Vertex, Edge> edgeTraversal;
+    private String pageRankProperty = PageRankVertexProgram.PAGE_RANK;
+    private int times = 30;
+    private final double alpha;
+
+    public PageRankVertexProgramStep(final Traversal.Admin traversal, final double alpha) {
+        super(traversal);
+        this.alpha = alpha;
+        this.modulateBy(__.<Vertex>outE().asAdmin());
+    }
+
+    @Override
+    public void modulateBy(final Traversal.Admin<?, ?> edgeTraversal) {
+        this.edgeTraversal = new PureTraversal<>((Traversal.Admin<Vertex, Edge>) edgeTraversal);
+        this.integrateChild(this.edgeTraversal.get());
+    }
+
+    @Override
+    public void modulateBy(final String pageRankProperty) {
+        this.pageRankProperty = pageRankProperty;
+    }
+
+    @Override
+    public void modulateTimes(int times) {
+        this.times = times;
+    }
+
+    @Override
+    public List<Traversal.Admin<Vertex, Edge>> getLocalChildren() {
+        return Collections.singletonList(this.edgeTraversal.get());
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.stepString(this, this.edgeTraversal.get(), this.pageRankProperty, this.times, new GraphFilter(this.computer));
+    }
+
+    @Override
+    public PageRankVertexProgram generateProgram(final Graph graph, final Memory memory) {
+        final Traversal.Admin<Vertex, Edge> detachedTraversal = this.edgeTraversal.getPure();
+        detachedTraversal.setStrategies(TraversalStrategies.GlobalCache.getStrategies(graph.getClass()));
+        final PageRankVertexProgram.Builder builder = PageRankVertexProgram.build()
+                .property(this.pageRankProperty)
+                .iterations(this.times + 1)
+                .alpha(this.alpha)
+                .edges(detachedTraversal);
+        if (this.previousTraversalVertexProgram())
+            builder.initialRank(new HaltedTraversersCountTraversal());
+        return builder.create(graph);
+    }
+
+    @Override
+    public Set<TraverserRequirement> getRequirements() {
+        return TraversalParent.super.getSelfAndChildRequirements();
+    }
+
+    @Override
+    public PageRankVertexProgramStep clone() {
+        final PageRankVertexProgramStep clone = (PageRankVertexProgramStep) super.clone();
+        clone.edgeTraversal = this.edgeTraversal.clone();
+        return clone;
+    }
+
+    @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.integrateChild(this.edgeTraversal.get());
+    }
+
+    @Override
+    public int hashCode() {
+        return super.hashCode() ^ this.edgeTraversal.hashCode() ^ this.pageRankProperty.hashCode() ^ this.times;
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressureVertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressureVertexProgramStep.java
new file mode 100644
index 0000000..47d4160
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressureVertexProgramStep.java
@@ -0,0 +1,118 @@
+/*
+ * 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.computer.traversal.step.map;
+
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.PeerPressureVertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.lambda.HaltedTraversersCountTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TimesModulating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class PeerPressureVertexProgramStep extends VertexProgramStep implements TraversalParent, ByModulating, TimesModulating {
+
+    private PureTraversal<Vertex, Edge> edgeTraversal;
+    private String clusterProperty = PeerPressureVertexProgram.CLUSTER;
+    private int times = 30;
+
+    public PeerPressureVertexProgramStep(final Traversal.Admin traversal) {
+        super(traversal);
+        this.modulateBy(__.<Vertex>outE().asAdmin());
+    }
+
+    @Override
+    public int hashCode() {
+        return super.hashCode() ^ this.edgeTraversal.hashCode() ^ this.clusterProperty.hashCode() ^ this.times;
+    }
+
+    @Override
+    public void modulateBy(final Traversal.Admin<?, ?> edgeTraversal) {
+        this.edgeTraversal = new PureTraversal<>((Traversal.Admin<Vertex, Edge>) edgeTraversal);
+        this.integrateChild(this.edgeTraversal.get());
+    }
+
+    @Override
+    public void modulateBy(final String clusterProperty) {
+        this.clusterProperty = clusterProperty;
+    }
+
+    @Override
+    public void modulateTimes(int times) {
+        this.times = times;
+    }
+
+    @Override
+    public List<Traversal.Admin<Vertex, Edge>> getLocalChildren() {
+        return Collections.singletonList(this.edgeTraversal.get());
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.stepString(this, this.edgeTraversal.get(), this.clusterProperty, this.times, new GraphFilter(this.computer));
+    }
+
+    @Override
+    public PeerPressureVertexProgram generateProgram(final Graph graph, final Memory memory) {
+        final Traversal.Admin<Vertex, Edge> detachedTraversal = this.edgeTraversal.getPure();
+        detachedTraversal.setStrategies(TraversalStrategies.GlobalCache.getStrategies(graph.getClass()));
+        final PeerPressureVertexProgram.Builder builder = PeerPressureVertexProgram.build()
+                .property(this.clusterProperty)
+                .maxIterations(this.times)
+                .edges(detachedTraversal);
+        if (this.previousTraversalVertexProgram())
+            builder.initialVoteStrength(new HaltedTraversersCountTraversal());
+        return builder.create(graph);
+    }
+
+    @Override
+    public Set<TraverserRequirement> getRequirements() {
+        return TraversalParent.super.getSelfAndChildRequirements();
+    }
+
+    @Override
+    public PeerPressureVertexProgramStep clone() {
+        final PeerPressureVertexProgramStep clone = (PeerPressureVertexProgramStep) super.clone();
+        clone.edgeTraversal = this.edgeTraversal.clone();
+        return clone;
+    }
+
+    @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.integrateChild(this.edgeTraversal.get());
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ProgramVertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ProgramVertexProgramStep.java
new file mode 100644
index 0000000..31eb04b
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ProgramVertexProgramStep.java
@@ -0,0 +1,73 @@
+/*
+ * 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.computer.traversal.step.map;
+
+import org.apache.commons.configuration.MapConfiguration;
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class ProgramVertexProgramStep extends VertexProgramStep {
+
+    private final Map<String, Object> configuration;
+    private final String toStringOfVertexProgram;
+
+    public ProgramVertexProgramStep(final Traversal.Admin traversal, final VertexProgram vertexProgram) {
+        super(traversal);
+        this.configuration = new HashMap<>();
+        final MapConfiguration base = new MapConfiguration(this.configuration);
+        base.setDelimiterParsingDisabled(true);
+        vertexProgram.storeState(base);
+        this.toStringOfVertexProgram = vertexProgram.toString();
+    }
+
+    @Override
+    public VertexProgram generateProgram(final Graph graph, final Memory memory) {
+        final MapConfiguration base = new MapConfiguration(this.configuration);
+        base.setDelimiterParsingDisabled(true);
+        PureTraversal.storeState(base, ROOT_TRAVERSAL, TraversalHelper.getRootTraversal(this.getTraversal()).clone());
+        base.setProperty(STEP_ID, this.getId());
+        if (memory.exists(TraversalVertexProgram.HALTED_TRAVERSERS))
+            TraversalVertexProgram.storeHaltedTraversers(base, memory.get(TraversalVertexProgram.HALTED_TRAVERSERS));
+        return VertexProgram.createVertexProgram(graph, base);
+    }
+
+    @Override
+    public int hashCode() {
+        return super.hashCode() ^ this.configuration.hashCode();
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.stepString(this, this.toStringOfVertexProgram, new GraphFilter(this.computer));
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
new file mode 100644
index 0000000..cb7db29
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/TraversalVertexProgramStep.java
@@ -0,0 +1,111 @@
+/*
+ * 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.computer.traversal.step.map;
+
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.MemoryTraversalSideEffects;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class TraversalVertexProgramStep extends VertexProgramStep implements TraversalParent {
+
+    public PureTraversal<?, ?> computerTraversal;
+
+    public TraversalVertexProgramStep(final Traversal.Admin traversal, final Traversal.Admin<?, ?> computerTraversal) {
+        super(traversal);
+        this.computerTraversal = new PureTraversal<>(computerTraversal);
+        this.integrateChild(this.computerTraversal.get());
+    }
+
+    public List<Traversal.Admin<?, ?>> getGlobalChildren() {
+        return Collections.singletonList(this.computerTraversal.get());
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.stepString(this, this.computerTraversal.get(), new GraphFilter(this.computer));
+    }
+
+    @Override
+    public Set<TraverserRequirement> getRequirements() {
+        return TraversalParent.super.getSelfAndChildRequirements(TraverserRequirement.BULK);
+    }
+
+    @Override
+    public TraversalVertexProgram generateProgram(final Graph graph, final Memory memory) {
+        final Traversal.Admin<?, ?> computerSpecificTraversal = this.computerTraversal.getPure();
+        final TraversalStrategies computerSpecificStrategies = this.getTraversal().getStrategies().clone();
+        TraversalStrategies.GlobalCache.getStrategies(graph.getClass())
+                .toList()
+                .stream()
+                .filter(s -> s instanceof TraversalStrategy.ProviderOptimizationStrategy)
+                .forEach(computerSpecificStrategies::addStrategies);
+        computerSpecificTraversal.setStrategies(computerSpecificStrategies);
+        computerSpecificTraversal.setSideEffects(new MemoryTraversalSideEffects(this.getTraversal().getSideEffects()));
+        computerSpecificTraversal.setParent(this);
+        final TraversalVertexProgram.Builder builder = TraversalVertexProgram.build().traversal(computerSpecificTraversal);
+        if (memory.exists(TraversalVertexProgram.HALTED_TRAVERSERS))
+            builder.haltedTraversers(memory.get(TraversalVertexProgram.HALTED_TRAVERSERS));
+        return builder.create(graph);
+    }
+
+    @Override
+    public GraphComputer generateComputer(final Graph graph) {
+        final GraphComputer graphComputer = this.computer.apply(graph);
+        if (!this.isEndStep())
+            graphComputer.persist(GraphComputer.Persist.EDGES).result(GraphComputer.ResultGraph.NEW);
+        return graphComputer;
+    }
+
+    @Override
+    public TraversalVertexProgramStep clone() {
+        final TraversalVertexProgramStep clone = (TraversalVertexProgramStep) super.clone();
+        clone.computerTraversal = this.computerTraversal.clone();
+        return clone;
+    }
+
+    @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.integrateChild(this.computerTraversal.get());
+    }
+
+    /*@Override
+    public int hashCode() {
+        return super.hashCode() ^ this.computerTraversal.hashCode();
+    }*/
+
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java
new file mode 100644
index 0000000..a5d7105
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java
@@ -0,0 +1,135 @@
+/*
+ * 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.computer.traversal.step.map;
+
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
+import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.VertexComputing;
+import org.apache.tinkerpop.gremlin.process.computer.util.EmptyMemory;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+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.step.util.ProfileStep;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalInterruptedException;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+import java.util.NoSuchElementException;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public abstract class VertexProgramStep extends AbstractStep<ComputerResult, ComputerResult> implements VertexComputing {
+
+    public static final String ROOT_TRAVERSAL = "gremlin.vertexProgramStep.rootTraversal";
+    public static final String STEP_ID = "gremlin.vertexProgramStep.stepId";
+
+    protected Computer computer = Computer.compute();
+
+    protected boolean first = true;
+
+    public VertexProgramStep(final Traversal.Admin traversal) {
+        super(traversal);
+    }
+
+    @Override
+    protected Traverser.Admin<ComputerResult> processNextStart() throws NoSuchElementException {
+        Future<ComputerResult> future = null;
+        try {
+            if (this.first && this.getPreviousStep() instanceof EmptyStep) {
+                this.first = false;
+                final Graph graph = this.getTraversal().getGraph().get();
+                future = this.generateComputer(graph).program(this.generateProgram(graph, EmptyMemory.instance())).submit();
+                final ComputerResult result = future.get();
+                this.processMemorySideEffects(result.memory());
+                return this.getTraversal().getTraverserGenerator().generate(result, this, 1l);
+            } else {
+                final Traverser.Admin<ComputerResult> traverser = this.starts.next();
+                final Graph graph = traverser.get().graph();
+                final Memory memory = traverser.get().memory();
+                future = this.generateComputer(graph).program(this.generateProgram(graph, memory)).submit();
+                final ComputerResult result = future.get();
+                this.processMemorySideEffects(result.memory());
+                return traverser.split(result, this);
+            }
+        } catch (final InterruptedException ie) {
+            // the thread running the traversal took an interruption while waiting on the call the future.get().
+            // the future should then be cancelled with interruption so that the the GraphComputer that created
+            // the future knows we don't care about it anymore. The GraphComputer should attempt to respect this
+            // cancellation request.
+            if (future != null) future.cancel(true);
+            throw new TraversalInterruptedException();
+        } catch (ExecutionException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
+
+    @Override
+    public Computer getComputer() {
+        Computer tempComputer = this.computer;
+        if (!this.isEndStep()) {
+            if (null == tempComputer.getPersist())
+                tempComputer = tempComputer.persist(GraphComputer.Persist.EDGES);
+            if (null == tempComputer.getResultGraph())
+                tempComputer = tempComputer.result(GraphComputer.ResultGraph.NEW);
+        }
+        return tempComputer;
+    }
+
+    @Override
+    public void setComputer(final Computer computer) {
+        this.computer = computer;
+    }
+
+    protected boolean previousTraversalVertexProgram() {
+        Step<?, ?> currentStep = this;
+        while (!(currentStep instanceof EmptyStep)) {
+            if (currentStep instanceof TraversalVertexProgramStep)
+                return true;
+            currentStep = currentStep.getPreviousStep();
+        }
+        return false;
+    }
+
+    private void processMemorySideEffects(final Memory memory) {
+        // update the traversal side-effects with the state of the memory after the OLAP job execution
+        final TraversalSideEffects sideEffects = this.getTraversal().getSideEffects();
+        for (final String key : memory.keys()) {
+            if (sideEffects.exists(key)) {
+                // halted traversers should never be propagated through sideEffects
+                assert !key.equals(TraversalVertexProgram.HALTED_TRAVERSERS);
+                sideEffects.set(key, memory.get(key));
+            }
+        }
+    }
+
+    protected boolean isEndStep() {
+        return this.getNextStep() instanceof ComputerResultStep || (this.getNextStep() instanceof ProfileStep && this.getNextStep().getNextStep() instanceof ComputerResultStep);
+    }
+
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
deleted file mode 100644
index 14bb472..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/sideEffect/mapreduce/TraverserMapReduce.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * 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.computer.traversal.step.sideEffect.mapreduce;
-
-import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
-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.step.filter.DedupGlobalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeGlobalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TailGlobalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.CollectingBarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.util.function.ChainedComparator;
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
-
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.Optional;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class TraverserMapReduce extends StaticMapReduce<Comparable, Traverser<?>, Comparable, Traverser<?>, Iterator<Traverser<?>>> {
-
-    public static final String TRAVERSERS = Graph.Hidden.hide("traversers");
-
-    private Traversal.Admin<?, ?> traversal;
-    private Optional<Comparator<Comparable>> comparator = Optional.empty();
-    private Optional<CollectingBarrierStep<?>> collectingBarrierStep = Optional.empty();
-    private Optional<RangeGlobalStep<?>> rangeGlobalStep = Optional.empty();
-    private Optional<TailGlobalStep<?>> tailGlobalStep = Optional.empty();
-    private boolean dedupGlobal = false;
-
-    private TraverserMapReduce() {
-    }
-
-    public TraverserMapReduce(final Traversal.Admin<?, ?> traversal) {
-        this.traversal = traversal;
-        this.genericLoadState();
-    }
-
-    @Override
-    public void loadState(final Graph graph, final Configuration configuration) {
-        this.traversal = TraversalVertexProgram.getTraversal(graph, configuration);
-        this.genericLoadState();
-    }
-
-    private void genericLoadState() {
-        final Step<?, ?> traversalEndStep = traversal.getEndStep().getPreviousStep();  // don't get the ComputerResultStep
-        this.comparator = Optional.ofNullable(traversalEndStep instanceof OrderGlobalStep ? new ChainedComparator<Comparable>(((OrderGlobalStep) traversalEndStep).getComparators()) : null);
-        if (!this.comparator.isPresent() && traversalEndStep instanceof CollectingBarrierStep)
-            this.collectingBarrierStep = Optional.of((CollectingBarrierStep<?>) traversalEndStep);
-        if (traversalEndStep instanceof RangeGlobalStep)
-            this.rangeGlobalStep = Optional.of(((RangeGlobalStep) traversalEndStep).clone());
-        if (traversalEndStep instanceof TailGlobalStep)
-            this.tailGlobalStep = Optional.of(((TailGlobalStep) traversalEndStep).clone());
-        if (traversalEndStep instanceof DedupGlobalStep)
-            this.dedupGlobal = true;
-
-    }
-
-    @Override
-    public boolean doStage(final Stage stage) {
-        return stage.equals(Stage.MAP) || this.collectingBarrierStep.isPresent() || this.rangeGlobalStep.isPresent() || this.tailGlobalStep.isPresent() || this.dedupGlobal;
-    }
-
-    @Override
-    public void map(final Vertex vertex, final MapEmitter<Comparable, Traverser<?>> emitter) {
-        if (this.comparator.isPresent())
-            vertex.<TraverserSet<?>>property(TraversalVertexProgram.HALTED_TRAVERSERS).ifPresent(traverserSet -> traverserSet.forEach(traverser -> emitter.emit(traverser, traverser)));
-        else
-            vertex.<TraverserSet<?>>property(TraversalVertexProgram.HALTED_TRAVERSERS).ifPresent(traverserSet -> traverserSet.forEach(emitter::emit));
-    }
-
-    @Override
-    public Optional<Comparator<Comparable>> getMapKeySort() {
-        return this.comparator;
-    }
-
-    @Override
-    public void combine(final Comparable comparable, final Iterator<Traverser<?>> values, final ReduceEmitter<Comparable, Traverser<?>> emitter) {
-        this.reduce(comparable, values, emitter);
-    }
-
-    @Override
-    public void reduce(final Comparable comparable, final Iterator<Traverser<?>> values, final ReduceEmitter<Comparable, Traverser<?>> emitter) {
-        final TraverserSet<?> traverserSet = new TraverserSet<>();
-        while (values.hasNext()) {
-            traverserSet.add((Traverser.Admin) values.next().asAdmin());
-        }
-        traverserSet.forEach(emitter::emit);
-    }
-
-    @Override
-    public Iterator<Traverser<?>> generateFinalResult(final Iterator<KeyValue<Comparable, Traverser<?>>> keyValues) {
-        if (this.collectingBarrierStep.isPresent()) {
-            final TraverserSet<?> traverserSet = new TraverserSet<>();
-            while (keyValues.hasNext()) {
-                traverserSet.add((Traverser.Admin) keyValues.next().getValue().asAdmin());
-            }
-            this.collectingBarrierStep.get().barrierConsumer((TraverserSet) traverserSet);
-            return (Iterator) traverserSet.iterator();
-        } else if (this.rangeGlobalStep.isPresent()) {
-            final RangeGlobalStep<?> rangeGlobalStep = this.rangeGlobalStep.get();
-            rangeGlobalStep.setBypass(false);
-            rangeGlobalStep.addStarts(IteratorUtils.map(keyValues, keyValue -> (Traverser) keyValue.getValue()));
-            return (Iterator) rangeGlobalStep;
-        } else if (this.tailGlobalStep.isPresent()) {
-            final TailGlobalStep<?> tailGlobalStep = this.tailGlobalStep.get();
-            tailGlobalStep.setBypass(false);
-            tailGlobalStep.addStarts(IteratorUtils.map(keyValues, keyValue -> (Traverser) keyValue.getValue()));
-            return (Iterator) tailGlobalStep;
-        } else if (this.dedupGlobal) {
-            return IteratorUtils.map(keyValues, keyValue -> {
-                keyValue.getValue().asAdmin().setBulk(1l);
-                return keyValue.getValue();
-            });
-        } else {
-            return IteratorUtils.map(keyValues, KeyValue::getValue);
-        }
-    }
-
-    @Override
-    public String getMemoryKey() {
-        return TRAVERSERS;
-    }
-}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/VertexProgramInterceptor.java
similarity index 70%
copy from gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
copy to gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/VertexProgramInterceptor.java
index cb1aeec..f174034 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/VertexProgramInterceptor.java
@@ -16,15 +16,16 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.process.traversal.step;
 
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+package org.apache.tinkerpop.gremlin.process.computer.traversal.strategy;
+
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface EngineDependent {
+public interface VertexProgramInterceptor<V extends VertexProgram, G, M extends Memory> {
 
-    public void onEngine(final TraversalEngine traversalEngine);
-
+    public G apply(final V vertexProgram, final G graph, final M memory);
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java
new file mode 100644
index 0000000..85a2f83
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/decoration/VertexProgramStrategy.java
@@ -0,0 +1,151 @@
+/*
+ * 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.computer.traversal.strategy.decoration;
+
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.VertexComputing;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ComputerResultStep;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ProgramVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.remote.traversal.strategy.decoration.RemoteStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+
+import java.util.HashSet;
+import java.util.Optional;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class VertexProgramStrategy extends AbstractTraversalStrategy<TraversalStrategy.DecorationStrategy> implements TraversalStrategy.DecorationStrategy {
+
+    private Computer computer;
+
+    private VertexProgramStrategy() {
+
+    }
+
+    public VertexProgramStrategy(final Computer computer) {
+        this.computer = computer;
+    }
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        // VertexPrograms can only execute at the root level of a Traversal and should not be applied locally prior to RemoteStrategy
+        if (!(traversal.getParent() instanceof EmptyStep) || traversal.getStrategies().toList().contains(RemoteStrategy.instance()))
+            return;
+
+        // back propagate as()-labels off of vertex computing steps
+        Step<?, ?> currentStep = traversal.getEndStep();
+        final Set<String> currentLabels = new HashSet<>();
+        while (!(currentStep instanceof EmptyStep)) {
+            if (currentStep instanceof VertexComputing && !(currentStep instanceof ProgramVertexProgramStep)) {  // todo: is there a general solution?
+                currentLabels.addAll(currentStep.getLabels());
+                currentStep.getLabels().forEach(currentStep::removeLabel);
+            } else {
+                currentLabels.forEach(currentStep::addLabel);
+                currentLabels.clear();
+            }
+            currentStep = currentStep.getPreviousStep();
+        }
+
+        // push GraphStep forward in the chain to reduce the number of TraversalVertexProgram compilations
+        currentStep = traversal.getStartStep();
+        while (!(currentStep instanceof EmptyStep)) {
+            if (currentStep instanceof GraphStep && currentStep.getNextStep() instanceof VertexComputing) {
+                int index = TraversalHelper.stepIndex(currentStep.getNextStep(), traversal);
+                traversal.removeStep(currentStep);
+                traversal.addStep(index, currentStep);
+            } else
+                currentStep = currentStep.getNextStep();
+        }
+
+        // wrap all non-VertexComputing steps into a TraversalVertexProgramStep
+        currentStep = traversal.getStartStep();
+        while (!(currentStep instanceof EmptyStep)) {
+            Traversal.Admin<?, ?> computerTraversal = new DefaultTraversal<>();
+            Step<?, ?> firstLegalOLAPStep = getFirstLegalOLAPStep(currentStep);
+            Step<?, ?> lastLegalOLAPStep = getLastLegalOLAPStep(currentStep);
+            if (!(firstLegalOLAPStep instanceof EmptyStep)) {
+                int index = TraversalHelper.stepIndex(firstLegalOLAPStep, traversal);
+                TraversalHelper.removeToTraversal(firstLegalOLAPStep, lastLegalOLAPStep.getNextStep(), (Traversal.Admin) computerTraversal);
+                final TraversalVertexProgramStep traversalVertexProgramStep = new TraversalVertexProgramStep(traversal, computerTraversal);
+                traversal.addStep(index, traversalVertexProgramStep);
+            }
+            currentStep = traversal.getStartStep();
+            while (!(currentStep instanceof EmptyStep)) {
+                if (!(currentStep instanceof VertexComputing))
+                    break;
+                currentStep = currentStep.getNextStep();
+            }
+        }
+        // if the last vertex computing step is a TraversalVertexProgramStep convert to OLTP with ComputerResultStep
+        TraversalHelper.getLastStepOfAssignableClass(VertexComputing.class, traversal).ifPresent(step -> {
+            if (step instanceof TraversalVertexProgramStep) {
+                final ComputerResultStep computerResultStep = new ComputerResultStep<>(traversal);
+                ((TraversalVertexProgramStep) step).getGlobalChildren().get(0).getEndStep().getLabels().forEach(computerResultStep::addLabel);
+                // labeling should happen in TraversalVertexProgram (perhaps MapReduce)
+                TraversalHelper.insertAfterStep(computerResultStep, (Step) step, traversal);
+            }
+        });
+        // if there is a dangling vertex computing step, add an identity traversal (solve this in the future with a specialized MapReduce)
+        if (traversal.getEndStep() instanceof VertexComputing && !(traversal.getEndStep() instanceof TraversalVertexProgramStep)) {
+            final TraversalVertexProgramStep traversalVertexProgramStep = new TraversalVertexProgramStep(traversal, __.identity().asAdmin());
+            traversal.addStep(traversalVertexProgramStep);
+            traversal.addStep(new ComputerResultStep<>(traversal));
+        }
+        // all vertex computing steps needs the graph computer function
+        traversal.getSteps().stream().filter(step -> step instanceof VertexComputing).forEach(step -> ((VertexComputing) step).setComputer(this.computer));
+    }
+
+    private static Step<?, ?> getFirstLegalOLAPStep(Step<?, ?> currentStep) {
+        while (!(currentStep instanceof EmptyStep)) {
+            if (!(currentStep instanceof VertexComputing))
+                return currentStep;
+            currentStep = currentStep.getNextStep();
+        }
+        return EmptyStep.instance();
+    }
+
+    private static Step<?, ?> getLastLegalOLAPStep(Step<?, ?> currentStep) {
+        while (currentStep instanceof VertexComputing)
+            currentStep = currentStep.getNextStep();
+        while (!(currentStep instanceof EmptyStep)) {
+            if (currentStep instanceof VertexComputing)
+                return currentStep.getPreviousStep();
+            currentStep = currentStep.getNextStep();
+        }
+        return EmptyStep.instance();
+    }
+
+    public static Optional<Computer> getComputer(final TraversalStrategies strategies) {
+        final Optional<TraversalStrategy<?>> optional = strategies.toList().stream().filter(strategy -> strategy instanceof VertexProgramStrategy).findAny();
+        return optional.isPresent() ? Optional.of(((VertexProgramStrategy) optional.get()).computer) : Optional.empty();
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/optimization/GraphFilterStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/optimization/GraphFilterStrategy.java
new file mode 100644
index 0000000..c32777b
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/optimization/GraphFilterStrategy.java
@@ -0,0 +1,139 @@
+/*
+ * 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.computer.traversal.strategy.optimization;
+
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.VertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.computer.util.EmptyMemory;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.step.LambdaHolder;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class GraphFilterStrategy extends AbstractTraversalStrategy<TraversalStrategy.OptimizationStrategy> implements TraversalStrategy.OptimizationStrategy {
+
+    private static final GraphFilterStrategy INSTANCE = new GraphFilterStrategy();
+
+    private GraphFilterStrategy() {
+    }
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        if (TraversalHelper.getStepsOfAssignableClass(VertexProgramStep.class, traversal).size() > 1)  // do not do if there is an OLAP chain
+            return;
+        final Graph graph = traversal.getGraph().orElse(EmptyGraph.instance()); // given that this strategy only works for single OLAP jobs, the graph is the traversal graph
+        for (final TraversalVertexProgramStep step : TraversalHelper.getStepsOfClass(TraversalVertexProgramStep.class, traversal)) {   // will be zero or one step
+            final Traversal.Admin<?, ?> computerTraversal = step.generateProgram(graph, EmptyMemory.instance()).getTraversal().get().clone();
+            if (!computerTraversal.isLocked())
+                computerTraversal.applyStrategies();
+            final Computer computer = step.getComputer();
+            if (null == computer.getEdges() && !GraphComputer.Persist.EDGES.equals(computer.getPersist())) {  // if edges() already set, use it
+                final Traversal.Admin<Vertex, Edge> edgeFilter = getEdgeFilter(computerTraversal);
+                if (null != edgeFilter)  // if no edges can be filtered, then don't set edges()
+                    step.setComputer(computer.edges(edgeFilter));
+            }
+        }
+    }
+
+    protected static Traversal.Admin<Vertex, Edge> getEdgeFilter(final Traversal.Admin<?, ?> traversal) {
+        if (traversal.getStartStep() instanceof GraphStep && ((GraphStep) traversal.getStartStep()).returnsEdge())
+            return null; // if the traversal is an edge traversal, don't filter (this can be made less stringent)
+        if (TraversalHelper.hasStepOfAssignableClassRecursively(LambdaHolder.class, traversal))
+            return null; // if the traversal contains lambdas, don't filter as you don't know what is being accessed by the lambdas
+        final Map<Direction, Set<String>> directionLabels = new HashMap<>();
+        final Set<String> outLabels = new HashSet<>();
+        final Set<String> inLabels = new HashSet<>();
+        final Set<String> bothLabels = new HashSet<>();
+        directionLabels.put(Direction.OUT, outLabels);
+        directionLabels.put(Direction.IN, inLabels);
+        directionLabels.put(Direction.BOTH, bothLabels);
+        TraversalHelper.getStepsOfAssignableClassRecursively(VertexStep.class, traversal).forEach(step -> {
+            // in-edge traversals require the outgoing edges for attachment
+            final Direction direction = step.getDirection().equals(Direction.IN) && step.returnsEdge() ?
+                    Direction.BOTH :
+                    step.getDirection();
+            final String[] edgeLabels = step.getEdgeLabels();
+            if (edgeLabels.length == 0)
+                directionLabels.get(direction).add(null); // null means all edges (don't filter)
+            else
+                Collections.addAll(directionLabels.get(direction), edgeLabels); // add edge labels associated with that direction
+        });
+        for (final String label : outLabels) { // if both in and out share the same labels, add them to both
+            if (inLabels.contains(label)) {
+                bothLabels.add(label);
+            }
+        }
+        if (bothLabels.contains(null)) // if both on everything, you can't edges() filter
+            return null;
+
+        for (final String label : bothLabels) { // remove labels from out and in that are already handled by both
+            outLabels.remove(label);
+            inLabels.remove(label);
+        }
+        // construct edges(...)
+        if (outLabels.isEmpty() && inLabels.isEmpty() && bothLabels.isEmpty())  // out/in/both are never called, thus, filter all edges
+            return __.<Vertex>bothE().limit(0).asAdmin();
+        else {
+            final String[] ins = inLabels.contains(null) ? new String[]{} : inLabels.toArray(new String[inLabels.size()]);
+            final String[] outs = outLabels.contains(null) ? new String[]{} : outLabels.toArray(new String[outLabels.size()]);
+            final String[] boths = bothLabels.contains(null) ? new String[]{} : bothLabels.toArray(new String[bothLabels.size()]);
+
+            if (outLabels.isEmpty() && inLabels.isEmpty()) // only both has labels
+                return __.<Vertex>bothE(boths).asAdmin();
+            else if (inLabels.isEmpty() && bothLabels.isEmpty()) // only out has labels
+                return __.<Vertex>outE(outs).asAdmin();
+            else if (outLabels.isEmpty() && bothLabels.isEmpty()) // only in has labels
+                return __.<Vertex>inE(ins).asAdmin();
+            else if (bothLabels.isEmpty())                        // out and in both have labels
+                return __.<Vertex, Edge>union(__.inE(ins), __.outE(outs)).asAdmin();
+            else if (outLabels.isEmpty() && ins.length > 0)       // in and both have labels (and in is not null)
+                return __.<Vertex, Edge>union(__.inE(ins), __.bothE(boths)).asAdmin();
+            else if (inLabels.isEmpty() && outs.length > 0)       // out and both have labels (and out is not null)
+                return __.<Vertex, Edge>union(__.outE(outs), __.bothE(boths)).asAdmin();
+            else
+                return null;
+            //throw new IllegalStateException("The label combination should not have reached this point: " + outLabels + "::" + inLabels + "::" + bothLabels);
+        }
+    }
+
+    public static GraphFilterStrategy instance() {
+        return INSTANCE;
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/AbstractVertexProgramBuilder.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/AbstractVertexProgramBuilder.java
index 50e5157..3d8cedc 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/AbstractVertexProgramBuilder.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/AbstractVertexProgramBuilder.java
@@ -27,14 +27,14 @@
  */
 public abstract class AbstractVertexProgramBuilder<B extends VertexProgram.Builder> implements VertexProgram.Builder {
 
-    public static final String GREMLIN_GROOVY = "gremlin-groovy";
-
     protected final BaseConfiguration configuration = new BaseConfiguration();
 
     public AbstractVertexProgramBuilder() {
+        this.configuration.setDelimiterParsingDisabled(true);
     }
 
     public AbstractVertexProgramBuilder(final Class<? extends VertexProgram> vertexProgramClass) {
+        this();
         this.configuration.setProperty(VertexProgram.VERTEX_PROGRAM, vertexProgramClass.getName());
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ComputerGraph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ComputerGraph.java
index 8c818f1..31438c3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ComputerGraph.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ComputerGraph.java
@@ -20,6 +20,7 @@
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.VertexComputeKey;
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -29,7 +30,6 @@
 import org.apache.tinkerpop.gremlin.structure.Transaction;
 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.structure.util.wrapped.WrappedEdge;
 import org.apache.tinkerpop.gremlin.structure.util.wrapped.WrappedElement;
 import org.apache.tinkerpop.gremlin.structure.util.wrapped.WrappedProperty;
@@ -55,9 +55,9 @@
     private final Set<String> computeKeys;
     private State state;
 
-    private ComputerGraph(final State state, final Vertex starVertex, final Optional<VertexProgram> vertexProgram) {
+    private ComputerGraph(final State state, final Vertex starVertex, final Optional<VertexProgram<?>> vertexProgram) {
         this.state = state;
-        this.computeKeys = vertexProgram.isPresent() ? vertexProgram.get().getElementComputeKeys() : Collections.emptySet();
+        this.computeKeys = vertexProgram.isPresent() ? vertexProgram.get().getVertexComputeKeys().stream().map(VertexComputeKey::getKey).collect(Collectors.toSet()) : Collections.emptySet();
         this.starVertex = new ComputerVertex(starVertex);
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java
index eb8cc83..7142166 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ConfigurationTraversal.java
@@ -21,6 +21,7 @@
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 
 import java.util.function.Function;
@@ -28,7 +29,9 @@
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @deprecated As of release 3.2.0, replaced by {@link org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal}.
  */
+@Deprecated
 public final class ConfigurationTraversal<S, E> implements Supplier<Traversal.Admin<S, E>> {
 
     private Function<Graph, Traversal.Admin<S, E>> traversalFunction;
@@ -67,4 +70,4 @@
         configurationTraversal.traversalFunction = configValue instanceof String ? VertexProgramHelper.deserialize(configuration, configKey) : (Function<Graph, Traversal.Admin<S, E>>) configValue;
         return configurationTraversal;
     }
-}
+}
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/DefaultComputerResult.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/DefaultComputerResult.java
index 66873fb..da1ebfc 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/DefaultComputerResult.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/DefaultComputerResult.java
@@ -20,7 +20,6 @@
 
 import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
 import org.apache.tinkerpop.gremlin.process.computer.Memory;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/EmptyMemory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/EmptyMemory.java
new file mode 100644
index 0000000..f513ee6
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/EmptyMemory.java
@@ -0,0 +1,91 @@
+/*
+ * 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.computer.util;
+
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+
+import java.util.Collections;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class EmptyMemory implements Memory.Admin {
+
+    private static final EmptyMemory INSTANCE = new EmptyMemory();
+
+    private EmptyMemory() {
+
+    }
+
+    public static EmptyMemory instance() {
+        return INSTANCE;
+    }
+
+    @Override
+    public void setIteration(final int iteration) {
+        throw Memory.Exceptions.memoryIsCurrentlyImmutable();
+    }
+
+    @Override
+    public void setRuntime(final long runtime) {
+        throw Memory.Exceptions.memoryIsCurrentlyImmutable();
+    }
+
+    @Override
+    public Memory asImmutable() {
+        return this;
+    }
+
+    @Override
+    public Set<String> keys() {
+        return Collections.emptySet();
+    }
+
+    @Override
+    public <R> R get(final String key) throws IllegalArgumentException {
+        throw Memory.Exceptions.memoryDoesNotExist(key);
+    }
+
+    @Override
+    public void set(final String key, final Object value) throws IllegalArgumentException, IllegalStateException {
+        throw Memory.Exceptions.memoryIsCurrentlyImmutable();
+    }
+
+    @Override
+    public void add(final String key, final Object value) throws IllegalArgumentException, IllegalStateException {
+        throw Memory.Exceptions.memoryIsCurrentlyImmutable();
+    }
+
+    @Override
+    public int getIteration() {
+        return 0;
+    }
+
+    @Override
+    public long getRuntime() {
+        return 0;
+    }
+
+    @Override
+    public boolean exists(final String key) {
+        return false;
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ImmutableMemory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ImmutableMemory.java
index 1c2bb97..45107b5 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ImmutableMemory.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/ImmutableMemory.java
@@ -60,17 +60,7 @@
     }
 
     @Override
-    public void incr(final String key, final long delta) {
-        throw Memory.Exceptions.memoryIsCurrentlyImmutable();
-    }
-
-    @Override
-    public void and(final String key, final boolean bool) {
-        throw Memory.Exceptions.memoryIsCurrentlyImmutable();
-    }
-
-    @Override
-    public void or(final String key, final boolean bool) {
+    public void add(final String key, final Object value) {
         throw Memory.Exceptions.memoryIsCurrentlyImmutable();
     }
 
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 71bd185..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
@@ -21,12 +21,13 @@
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 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;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
@@ -38,25 +39,23 @@
     private long runtime = 0l;
     private int iteration = -1;
     private final Map<String, Object> memoryMap = new HashMap<>();
-    private final Set<String> memoryComputeKeys = new HashSet<>();
+    private final Map<String, MemoryComputeKey> memoryComputeKeys = new HashMap<>();
 
     public MapMemory() {
 
     }
 
     public MapMemory(final Memory otherMemory) {
-        otherMemory.keys().forEach(key -> {
-            this.memoryMap.put(key, otherMemory.get(key));
-        });
+        otherMemory.keys().forEach(key -> this.memoryMap.put(key, otherMemory.get(key)));
         this.iteration = otherMemory.getIteration();
     }
 
     public void addVertexProgramMemoryComputeKeys(final VertexProgram<?> vertexProgram) {
-        this.memoryComputeKeys.addAll(vertexProgram.getMemoryComputeKeys());
+        vertexProgram.getMemoryComputeKeys().forEach(key -> this.memoryComputeKeys.put(key.getKey(), key));
     }
 
     public void addMapReduceMemoryKey(final MapReduce mapReduce) {
-        this.memoryComputeKeys.add(mapReduce.getMemoryKey());
+        this.memoryComputeKeys.put(mapReduce.getMemoryKey(), MemoryComputeKey.of(mapReduce.getMemoryKey(), Operator.assign, false, false));
     }
 
     @Override
@@ -75,6 +74,7 @@
 
     @Override
     public void set(final String key, Object value) {
+        // this.checkKeyValue(key, value);
         this.memoryMap.put(key, value);
     }
 
@@ -89,35 +89,13 @@
     }
 
     @Override
-    public void incr(final String key, final long delta) {
-        this.checkKeyValue(key, delta);
+    public void add(final String key, final Object value) {
+        this.checkKeyValue(key, value);
         if (this.memoryMap.containsKey(key)) {
-            final long newValue = (long) this.memoryMap.get(key) + delta;
+            final Object newValue = this.memoryComputeKeys.get(key).getReducer().apply(this.memoryMap.get(key), value);
             this.memoryMap.put(key, newValue);
         } else {
-            this.memoryMap.put(key, delta);
-        }
-    }
-
-    @Override
-    public void and(final String key, final boolean bool) {
-        this.checkKeyValue(key, bool);
-        if (this.memoryMap.containsKey(key)) {
-            final boolean newValue = (boolean) this.memoryMap.get(key) && bool;
-            this.memoryMap.put(key, newValue);
-        } else {
-            this.memoryMap.put(key, bool);
-        }
-    }
-
-    @Override
-    public void or(final String key, final boolean bool) {
-        this.checkKeyValue(key, bool);
-        if (this.memoryMap.containsKey(key)) {
-            final boolean newValue = (boolean) this.memoryMap.get(key) || bool;
-            this.memoryMap.put(key, newValue);
-        } else {
-            this.memoryMap.put(key, bool);
+            this.memoryMap.put(key, value);
         }
     }
 
@@ -142,7 +120,7 @@
     }
 
     private final void checkKeyValue(final String key, final Object value) {
-        if (!this.memoryComputeKeys.contains(key))
+        if (!this.memoryComputeKeys.containsKey(key))
             throw GraphComputer.Exceptions.providedKeyIsNotAMemoryComputeKey(key);
         MemoryHelper.validateValue(value);
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/SingleMessenger.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/SingleMessenger.java
similarity index 96%
rename from gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/SingleMessenger.java
rename to gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/SingleMessenger.java
index 26ed8a4..63ee282 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/SingleMessenger.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/SingleMessenger.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.process.computer.traversal;
+package org.apache.tinkerpop.gremlin.process.computer.util;
 
 import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
 import org.apache.tinkerpop.gremlin.process.computer.Messenger;
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java
index 3f51ba6..bc67866 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/util/VertexProgramHelper.java
@@ -20,6 +20,7 @@
 
 import org.apache.commons.configuration.AbstractConfiguration;
 import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.process.computer.VertexComputeKey;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeVertexStep;
@@ -28,6 +29,8 @@
 
 import java.io.IOException;
 import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -37,6 +40,26 @@
     private VertexProgramHelper() {
     }
 
+    public static Set<String> vertexComputeKeysAsSet(final Set<VertexComputeKey> vertexComputeKeySet) {
+        final Set<String> set = new HashSet<>(vertexComputeKeySet.size());
+        for (final VertexComputeKey key : vertexComputeKeySet) {
+            set.add(key.getKey());
+        }
+        return set;
+    }
+
+    public static boolean isTransientVertexComputeKey(final String key, final Set<VertexComputeKey> vertexComputeKeySet) {
+        for (final VertexComputeKey vertexComputeKey : vertexComputeKeySet) {
+            if (vertexComputeKey.getKey().equals(key))
+                return vertexComputeKey.isTransient();
+        }
+        throw new IllegalArgumentException("Could not find key in vertex compute key set: " + key);
+    }
+
+    public static String[] vertexComputeKeysAsArray(final Set<VertexComputeKey> vertexComputeKeySet) {
+        return VertexProgramHelper.vertexComputeKeysAsSet(vertexComputeKeySet).toArray(new String[vertexComputeKeySet.size()]);
+    }
+
     public static void serialize(final Object object, final Configuration configuration, final String key) {
         if (configuration instanceof AbstractConfiguration)
             ((AbstractConfiguration) configuration).setDelimiterParsingDisabled(true);
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteConnection.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteConnection.java
new file mode 100644
index 0000000..4e4badc
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteConnection.java
@@ -0,0 +1,36 @@
+/*
+ * 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.remote;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+
+import java.util.Iterator;
+
+/**
+ * A simple abstraction of a "connection" to a "server" that is capable of processing a {@link Traversal} and
+ * returning an {@link Iterator} of {@link Traverser} results.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public interface RemoteConnection extends AutoCloseable {
+
+    public <E> Iterator<Traverser.Admin<E>> submit(final Traversal<?, E> traversal) throws RemoteConnectionException;
+}
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/GroovyTraversalSideEffectsTest.groovy b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteConnectionException.java
similarity index 62%
rename from gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/GroovyTraversalSideEffectsTest.groovy
rename to gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteConnectionException.java
index d0c6038..3ea9698 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/GroovyTraversalSideEffectsTest.groovy
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteConnectionException.java
@@ -16,16 +16,26 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.process.traversal
+package org.apache.tinkerpop.gremlin.process.remote;
+
 /**
+ * A generalized exception for any errors related to {@link RemoteConnection}.
+ *
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-abstract class GroovyTraversalSideEffectsTest {
+public class RemoteConnectionException extends Exception  {
+    public RemoteConnectionException() {
+    }
 
-    public static class Traversals extends TraversalSideEffectsTest {
-        @Override
-        public TraversalSideEffects get_g_V_asAdmin_getSideEffects() {
-            g.V().asAdmin().getSideEffects()
-        }
+    public RemoteConnectionException(String message) {
+        super(message);
+    }
+
+    public RemoteConnectionException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public RemoteConnectionException(Throwable cause) {
+        super(cause);
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
new file mode 100644
index 0000000..590398e
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
@@ -0,0 +1,249 @@
+/*
+ * 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.remote;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.remote.traversal.strategy.decoration.RemoteStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Transaction;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.util.GraphFactory;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
+
+import java.lang.reflect.Constructor;
+import java.util.Collections;
+import java.util.Iterator;
+
+/**
+ * A {@code ServerGraph} represents a proxy by which traversals spawned from this graph are expected over a
+ * {@link RemoteConnection}. This is not a full {@link Graph} implementation in the sense that the most of the methods
+ * will throw an {@link UnsupportedOperationException}.  This implementation can only be used for spawning remote
+ * traversal instances.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+@Graph.OptIn(Graph.OptIn.SUITE_PROCESS_STANDARD)
+@Graph.OptIn(Graph.OptIn.SUITE_PROCESS_COMPUTER)
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTest$Traversals",
+        method = "g_withSideEffectXa_g_VX2XX_VX1X_out_whereXneqXaXX",
+        reason = "RemoteGraph can not handle a sideEffect that is spawned by a traversal")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.CoreTraversalTest",
+        method = "shouldNeverPropagateANoBulkTraverser",
+        reason = "RemoteGraph can't serialize a lambda so the test fails before it has a chance for the Traversal to be evaluated")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.CoreTraversalTest",
+        method = "shouldNeverPropagateANullValuedTraverser",
+        reason = "RemoteGraph can't serialize a lambda so the test fails before it has a chance for the Traversal to be evaluated")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.ProgramTest",
+        method = "*",
+        reason = "RemoteGraph retrieves detached vertices that can't be attached to a remote OLAP graph")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategyProcessTest",
+        method = "*",
+        reason = "RemoteGraph does not support ElementIdStrategy at this time - it requires a lambda in construction which is not serializable")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategyProcessTest",
+        method = "*",
+        reason = "RemoteGraph does not support EventStrategy at this time - some of its members are not serializable")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategyProcessTest",
+        method = "*",
+        reason = "RemoteGraph does not support PartitionStrategy at this time")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgramTest",
+        method = "*",
+        reason = "RemoteGraph does not support direct Graph.compute() access")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.computer.bulkloading.BulkLoaderVertexProgramTest",
+        method = "*",
+        reason = "RemoteGraph does not support direct Graph.compute() access")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.computer.bulkdumping.BulkDumperVertexProgramTest",
+        method = "*",
+        reason = "RemoteGraph does not support direct Graph.compute() access")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.computer.GraphComputerTest",
+        method = "*",
+        reason = "RemoteGraph does not support direct Graph.compute() access")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionTest",
+        method = "*",
+        reason = "The interruption model in the test can't guarantee interruption at the right time with RemoteGraph.")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionComputerTest",
+        method = "*",
+        reason = "The interruption model in the test can't guarantee interruption at the right time with RemoteGraph.")
+public class RemoteGraph implements Graph {
+
+    private final RemoteConnection connection;
+
+    public static final String GREMLIN_REMOTE_GRAPH_REMOTE_CONNECTION_CLASS = "gremlin.remoteGraph.remoteConnectionClass";
+
+    static {
+        TraversalStrategies.GlobalCache.registerStrategies(RemoteGraph.class, TraversalStrategies.GlobalCache.getStrategies(EmptyGraph.class).clone().addStrategies(RemoteStrategy.instance()));
+    }
+
+    private RemoteGraph(final RemoteConnection connection) {
+        this.connection = connection;
+    }
+
+    /**
+     * Creates a new {@link RemoteGraph} instance using the specified configuration, which allows {@link RemoteGraph}
+     * to be compliant with {@link GraphFactory}. Expects key for {@link #GREMLIN_REMOTE_GRAPH_REMOTE_CONNECTION_CLASS}
+     * as well as any configuration required by the underlying {@link RemoteConnection} which will be instantiated.
+     * Note that the {@code Configuration} object is passed down without change to the creation of the
+     * {@link RemoteConnection} instance.
+     */
+    public static RemoteGraph open(final Configuration conf) {
+        if (!conf.containsKey(GREMLIN_REMOTE_GRAPH_REMOTE_CONNECTION_CLASS))
+            throw new IllegalArgumentException("Configuration must contain the '" + GREMLIN_REMOTE_GRAPH_REMOTE_CONNECTION_CLASS + "' key");
+
+        final RemoteConnection remoteConnection;
+        try {
+            final Class<? extends RemoteConnection> clazz = Class.forName(conf.getString(GREMLIN_REMOTE_GRAPH_REMOTE_CONNECTION_CLASS)).asSubclass(RemoteConnection.class);
+            final Constructor<? extends RemoteConnection> ctor = clazz.getConstructor(Configuration.class);
+            remoteConnection = ctor.newInstance(conf);
+        } catch (Exception ex) {
+            throw new IllegalStateException(ex);
+        }
+
+        return new RemoteGraph(remoteConnection);
+    }
+
+    public static RemoteGraph open(final String configFile) throws Exception {
+        return open(new PropertiesConfiguration(configFile));
+    }
+
+    /**
+     * Creates a new {@link RemoteGraph} instance. {@link RemoteGraph} will attempt to call the
+     * {@link RemoteConnection#close()} method when the {@link #close()} method is called on this class.
+     *
+     * @param connection the {@link RemoteConnection} instance to use
+     *                   {@link RemoteConnection}
+     */
+    public static RemoteGraph open(final RemoteConnection connection) {
+        return new RemoteGraph(connection);
+    }
+
+    public RemoteConnection getConnection() {
+        return connection;
+    }
+
+    /**
+     * Closes the underlying {@link RemoteConnection}.
+     */
+    @Override
+    public void close() throws Exception {
+        connection.close();
+    }
+
+    @Override
+    public Vertex addVertex(final Object... keyValues) {
+        throw new UnsupportedOperationException(String.format("RemoteGraph is a proxy to %s - this method is not supported", connection));
+    }
+
+    @Override
+    public <C extends GraphComputer> C compute(final Class<C> graphComputerClass) throws IllegalArgumentException {
+        throw new UnsupportedOperationException(String.format("RemoteGraph is a proxy to %s - this method is not supported", connection));
+    }
+
+    @Override
+    public GraphComputer compute() throws IllegalArgumentException {
+        throw new UnsupportedOperationException(String.format("RemoteGraph is a proxy to %s - this method is not supported", connection));
+    }
+
+    /**
+     * This method returns an empty {@link Iterator} - it is not meant to be called directly.
+     */
+    @Override
+    public Iterator<Vertex> vertices(final Object... vertexIds) {
+        return Collections.emptyIterator();
+    }
+
+    /**
+     * This method returns an empty {@link Iterator} - it is not meant to be called directly.
+     */
+    @Override
+    public Iterator<Edge> edges(final Object... edgeIds) {
+        return Collections.emptyIterator();
+    }
+
+    @Override
+    public Transaction tx() {
+        throw new UnsupportedOperationException(String.format("RemoteGraph is a proxy to %s - this method is not supported", connection));
+    }
+
+    @Override
+    public Variables variables() {
+        throw new UnsupportedOperationException(String.format("RemoteGraph is a proxy to %s - this method is not supported", connection));
+    }
+
+    @Override
+    public Configuration configuration() {
+        throw new UnsupportedOperationException(String.format("RemoteGraph is a proxy to %s - this method is not supported", connection));
+    }
+
+    @Override
+    public Features features() {
+        return RemoteFeatures.INSTANCE;
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.graphString(this, connection.toString());
+    }
+
+    public static class RemoteFeatures implements Features {
+        static RemoteFeatures INSTANCE = new RemoteFeatures();
+
+        private RemoteFeatures() {
+        }
+
+        @Override
+        public GraphFeatures graph() {
+            return RemoteGraphFeatures.INSTANCE;
+        }
+    }
+
+    public static class RemoteGraphFeatures implements Features.GraphFeatures {
+
+        static RemoteGraphFeatures INSTANCE = new RemoteGraphFeatures();
+
+        private RemoteGraphFeatures() {
+        }
+
+        @Override
+        public boolean supportsTransactions() {
+            return false;
+        }
+
+        @Override
+        public boolean supportsThreadedTransactions() {
+            return false;
+        }
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/step/map/RemoteStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/step/map/RemoteStep.java
new file mode 100644
index 0000000..873f86e
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/step/map/RemoteStep.java
@@ -0,0 +1,78 @@
+/*
+ * 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.remote.traversal.step.map;
+
+import org.apache.tinkerpop.gremlin.process.remote.RemoteConnection;
+import org.apache.tinkerpop.gremlin.process.remote.RemoteConnectionException;
+import org.apache.tinkerpop.gremlin.process.remote.traversal.strategy.decoration.RemoteStrategy;
+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.AbstractStep;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+
+/**
+ * Sends a {@link Traversal} to a {@link RemoteConnection} and iterates back the results.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class RemoteStep<S, E> extends AbstractStep<S, E> {
+
+    private transient RemoteConnection remoteConnection;
+    private Traversal.Admin<S, E> remoteTraversal;
+    private Iterator<Traverser.Admin<E>> remoteIterator;
+
+    @SuppressWarnings("unchecked")
+    public RemoteStep(final Traversal.Admin traversal, final Traversal<S, E> remoteTraversal,
+                      final RemoteConnection remoteConnection) {
+        super(traversal);
+        this.remoteConnection = remoteConnection;
+        this.remoteTraversal = remoteTraversal.asAdmin();
+        this.remoteTraversal.setSideEffects(this.getTraversal().getSideEffects());
+        this.remoteTraversal.setStrategies(this.getTraversal().getStrategies().clone().removeStrategies(RemoteStrategy.class));
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.stepString(this, this.remoteConnection);
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    protected Traverser.Admin<E> processNextStart() throws NoSuchElementException {
+
+        if (null == this.remoteIterator) {
+            try {
+                this.remoteIterator = this.remoteConnection.submit(this.remoteTraversal);
+            } catch (final RemoteConnectionException sce) {
+                throw new IllegalStateException(sce);
+            }
+        }
+
+        return this.remoteIterator.next();
+    }
+
+    @Override
+    public int hashCode() {
+        return super.hashCode() ^ this.remoteTraversal.hashCode();
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.java
new file mode 100644
index 0000000..eb10bb5
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/traversal/strategy/decoration/RemoteStrategy.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.remote.traversal.strategy.decoration;
+
+import org.apache.tinkerpop.gremlin.process.remote.RemoteConnection;
+import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
+import org.apache.tinkerpop.gremlin.process.remote.traversal.step.map.RemoteStep;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.step.LambdaHolder;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.VerificationException;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Set;
+
+/**
+ * Reconstructs a {@link Traversal} by appending a {@link RemoteStep} to its end. That step will submit the
+ * {@link Traversal} to a {@link RemoteConnection} instance which will typically send it to a remote server for
+ * execution and return results.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class RemoteStrategy extends AbstractTraversalStrategy<TraversalStrategy.DecorationStrategy>
+        implements TraversalStrategy.DecorationStrategy {
+
+    private static final RemoteStrategy INSTANCE = new RemoteStrategy();
+
+    private static final Set<Class<? extends DecorationStrategy>> POSTS = Collections.singleton(VertexProgramStrategy.class);
+
+    private RemoteStrategy() {
+    }
+
+    public static RemoteStrategy instance() {
+        return INSTANCE;
+    }
+
+    @Override
+    public Set<Class<? extends DecorationStrategy>> applyPost() {
+        return POSTS;
+    }
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        // ensure that ids are not elements so they are serializable
+        TraversalHelper.getStepsOfAssignableClass(GraphStep.class, traversal).forEach(GraphStep::convertElementsToIds);
+
+        if (!(traversal.getParent() instanceof EmptyStep))
+            return;
+
+        // verifications to ensure unsupported steps do not exist in the traversal
+        if (TraversalHelper.hasStepOfAssignableClassRecursively(Arrays.asList(ProfileSideEffectStep.class, LambdaHolder.class), traversal))
+            throw new VerificationException("RemoteGraph does not support profiling nor lambdas", traversal);
+
+        if (!(traversal.getGraph().orElse(EmptyGraph.instance()) instanceof RemoteGraph))
+            throw new IllegalStateException("RemoteStrategy expects a RemoteGraph instance attached to the Traversal");
+
+        final RemoteGraph remoteGraph = (RemoteGraph) traversal.getGraph().get();
+        if (null == remoteGraph.getConnection())
+            throw new IllegalStateException("RemoteStrategy expects the RemoteGraph instance to have a RemoteConnection");
+
+        final Traversal.Admin<?, ?> remoteTraversal = new DefaultTraversal<>();
+        TraversalHelper.removeToTraversal(traversal.getStartStep(), EmptyStep.instance(), (Traversal.Admin) remoteTraversal);
+        final RemoteStep<?, ?> remoteStep = new RemoteStep<>(traversal, remoteTraversal, remoteGraph.getConnection());
+        traversal.addStep(remoteStep);
+
+        assert traversal.getStartStep().equals(remoteStep);
+        assert traversal.getSteps().size() == 1;
+        assert traversal.getEndStep() == remoteStep;
+    }
+}
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..a52f34b 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,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal;
 
+import java.util.Collection;
+import java.util.Map;
 import java.util.function.BinaryOperator;
 
 /**
@@ -25,7 +27,6 @@
  */
 public enum Operator implements BinaryOperator<Object> {
 
-
     sum {
         public Object apply(final Object a, Object b) {
             return NumberHelper.add((Number) a, (Number) b);
@@ -60,5 +61,30 @@
         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);
+        }
+    },
+    addAll {
+        public Object apply(final Object a, final Object b) {
+            if (a instanceof Map)
+                ((Map) a).putAll((Map) b);
+            else
+                ((Collection) a).addAll((Collection) b);
+            return a;
+        }
+    },
+    //////
+    sumLong {
+        public Object apply(final Object a, final Object b) {
+            return (long) a + (long) b;
+        }
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Order.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Order.java
index 72fe715..4e3801a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Order.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Order.java
@@ -48,10 +48,10 @@
             return incr;
         }
     },
-    /*
+    /**
      * @deprecated Use {@link org.apache.tinkerpop.gremlin.structure.Column#keys};
-       @Deprecated
-    */
+     */
+    @Deprecated
     keyIncr {
         @Override
         public int compare(final Object first, final Object second) {
@@ -63,10 +63,10 @@
             return keyDecr;
         }
     },
-    /*
+    /**
      * @deprecated Use {@link org.apache.tinkerpop.gremlin.structure.Column#values};
-     *
-    @Deprecated */
+     */
+    @Deprecated
     valueIncr {
         @Override
         public int compare(final Object first, final Object second) {
@@ -78,10 +78,10 @@
             return valueDecr;
         }
     },
-    /*
+    /**
      * @deprecated Use {@link org.apache.tinkerpop.gremlin.structure.Column#keys};
-     *
-    @Deprecated */
+     */
+    @Deprecated
     keyDecr {
         @Override
         public int compare(final Object first, final Object second) {
@@ -93,10 +93,10 @@
             return keyIncr;
         }
     },
-    /*
+    /**
      * @deprecated Use {@link org.apache.tinkerpop.gremlin.structure.Column#values};
-     *
-    @Deprecated */
+     */
+    @Deprecated
     valueDecr {
         @Override
         public int compare(final Object first, final Object second) {
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java
index b4072cc..3b2d0c2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java
@@ -101,14 +101,14 @@
     public P<V> and(final Predicate<? super V> predicate) {
         if (!(predicate instanceof P))
             throw new IllegalArgumentException("Only P predicates can be and'd together");
-        return new AndP<>(this, (P<V>) predicate);
+        return new AndP<>(Arrays.asList(this, (P<V>) predicate));
     }
 
     @Override
     public P<V> or(final Predicate<? super V> predicate) {
         if (!(predicate instanceof P))
             throw new IllegalArgumentException("Only P predicates can be or'd together");
-        return new OrP<>(this, (P<V>) predicate);
+        return new OrP<>(Arrays.asList(this, (P<V>) predicate));
     }
 
     public P<V> clone() {
@@ -146,15 +146,15 @@
     }
 
     public static <V> P<V> inside(final V first, final V second) {
-        return new AndP<>(new P(Compare.gt, first), new P(Compare.lt, second));
+        return new AndP<V>(Arrays.asList(new P(Compare.gt, first), new P(Compare.lt, second)));
     }
 
     public static <V> P<V> outside(final V first, final V second) {
-        return new OrP<>(new P(Compare.lt, first), new P(Compare.gt, second));
+        return new OrP<V>(Arrays.asList(new P(Compare.lt, first), new P(Compare.gt, second)));
     }
 
     public static <V> P<V> between(final V first, final V second) {
-        return new AndP<>(new P(Compare.gte, first), new P(Compare.lt, second));
+        return new AndP<V>(Arrays.asList(new P(Compare.gte, first), new P(Compare.lt, second)));
     }
 
     public static <V> P<V> within(final V... values) {
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Path.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Path.java
index a302165..c4bc347 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Path.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Path.java
@@ -66,6 +66,14 @@
     public Path extend(final Set<String> labels);
 
     /**
+     * Remove labels from path.
+     *
+     * @param labels the labels to remove
+     * @return the path with removed labels
+     */
+    public Path retract(final Set<String> labels);
+
+    /**
      * Get the object associated with the particular label of the path.
      * If the path as multiple labels of the type, then return a {@link List} of those objects.
      *
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Step.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Step.java
index fe28b21..60e167e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Step.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Step.java
@@ -36,21 +36,21 @@
  * @param <S> The incoming object type of the step
  * @param <E> The outgoing object type of the step
  */
-public interface Step<S, E> extends Iterator<Traverser<E>>, Serializable, Cloneable {
+public interface Step<S, E> extends Iterator<Traverser.Admin<E>>, Serializable, Cloneable {
 
     /**
-     * Add a iterator of {@link Traverser} objects of type S to the step.
+     * Add a iterator of {@link Traverser.Admin} objects of type S to the step.
      *
      * @param starts The iterator of objects to add
      */
-    public void addStarts(final Iterator<Traverser<S>> starts);
+    public void addStarts(final Iterator<Traverser.Admin<S>> starts);
 
     /**
-     * Add a single {@link Traverser} to the step.
+     * Add a single {@link Traverser.Admin} to the step.
      *
      * @param start The traverser to add
      */
-    public void addStart(final Traverser<S> start);
+    public void addStart(final Traverser.Admin<S> start);
 
     /**
      * Set the step that is previous to the current step.
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
index f167fb3..6993250 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traversal.java
@@ -20,15 +20,15 @@
 
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.ComputerTraversalEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectCapStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
 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.util.TraversalExplanation;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 
 import java.io.Serializable;
@@ -43,7 +43,6 @@
 import java.util.Spliterator;
 import java.util.Spliterators;
 import java.util.function.Consumer;
-import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
 
@@ -52,7 +51,7 @@
  * This is the base interface for all traversal's, where each extending interface is seen as a domain specific language.
  * For example, {@link GraphTraversal} is a domain specific language for traversing a graph using "graph concepts" (e.g. vertices, edges).
  * Another example may represent the graph using "social concepts" (e.g. people, cities, artifacts).
- * A {@link Traversal} is evaluated in one of two ways: {@link StandardTraversalEngine} (OLTP) and {@link ComputerTraversalEngine} (OLAP).
+ * A {@link Traversal} is evaluated in one of two ways: iterator-based OLTP or {@link GraphComputer}-based OLAP.
  * OLTP traversals leverage an iterator and are executed within a single JVM (with data access allowed to be remote).
  * OLAP traversals leverage {@link GraphComputer} and are executed between multiple JVMs (and/or cores).
  *
@@ -175,10 +174,12 @@
     /**
      * Profile the traversal.
      *
-     * @return the updated traversal with respective {@link ProfileStep}.
+     * @return the updated traversal with respective {@link ProfileSideEffectStep}.
      */
-    public default Traversal<S, E> profile() {
-        return this.asAdmin().addStep(new ProfileStep<>(this.asAdmin()));
+    public default Traversal<S, TraversalMetrics> profile() {
+        return this.asAdmin()
+                .addStep(new ProfileSideEffectStep<>(this.asAdmin(), ProfileSideEffectStep.DEFAULT_METRICS_KEY))
+                .addStep(new SideEffectCapStep<Object, TraversalMetrics>(this.asAdmin(), ProfileSideEffectStep.DEFAULT_METRICS_KEY));
     }
 
     /**
@@ -238,23 +239,23 @@
     public interface Admin<S, E> extends Traversal<S, E> {
 
         /**
-         * Add an iterator of {@link Traverser} objects to the head/start of the traversal.
+         * Add an iterator of {@link Traverser.Admin} objects to the head/start of the traversal.
          * Users should typically not need to call this method. For dynamic inject of data, they should use {@link org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectStep}.
          *
          * @param starts an iterators of traversers
          */
-        public default void addStarts(final Iterator<Traverser<S>> starts) {
+        public default void addStarts(final Iterator<Traverser.Admin<S>> starts) {
             if (!this.isLocked()) this.applyStrategies();
             this.getStartStep().addStarts(starts);
         }
 
         /**
-         * Add a single {@link Traverser} object to the head of the traversal.
+         * Add a single {@link Traverser.Admin} object to the head of the traversal.
          * Users should typically not need to call this method. For dynamic inject of data, they should use {@link org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectStep}.
          *
          * @param start a traverser to add to the traversal
          */
-        public default void addStart(final Traverser<S> start) {
+        public default void addStart(final Traverser.Admin<S> start) {
             if (!this.isLocked()) this.applyStrategies();
             this.getStartStep().addStart(start);
         }
@@ -345,56 +346,19 @@
         public void applyStrategies() throws IllegalStateException;
 
         /**
-         * Get the {@link TraversalEngine} that will be used to execute this traversal.
-         *
-         * @return get the traversal engine associated with this traversal.
-         */
-        public TraversalEngine getEngine();
-
-        /**
-         * Set the {@link TraversalEngine} to be used for executing this traversal.
-         *
-         * @param engine the engine to execute the traversal with.
-         */
-        public void setEngine(final TraversalEngine engine);
-
-        /**
          * Get the {@link TraverserGenerator} associated with this traversal.
          * The traversal generator creates {@link Traverser} instances that are respective of the traversal's {@link org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement}.
          *
          * @return the generator of traversers
          */
-        public default TraverserGenerator getTraverserGenerator() {
-            return this.getStrategies().getTraverserGeneratorFactory().getTraverserGenerator(this);
-        }
+        public TraverserGenerator getTraverserGenerator();
 
         /**
          * Get the set of all {@link TraverserRequirement}s for this traversal.
          *
          * @return the features of a traverser that are required to execute properly in this traversal
          */
-        public default Set<TraverserRequirement> getTraverserRequirements() {
-            final Set<TraverserRequirement> requirements = this.getSteps().stream()
-                    .flatMap(step -> ((Step<?, ?>) step).getRequirements().stream())
-                    .collect(Collectors.toSet());
-            if (this.getSideEffects().keys().size() > 0)
-                requirements.add(TraverserRequirement.SIDE_EFFECTS);
-            if (null != this.getSideEffects().getSackInitialValue())
-                requirements.add(TraverserRequirement.SACK);
-            if (this.getEngine().isComputer())
-                requirements.add(TraverserRequirement.BULK);
-            if (requirements.contains(TraverserRequirement.ONE_BULK))
-                requirements.remove(TraverserRequirement.BULK);
-            return requirements;
-        }
-
-        /**
-         * Add a {@link TraverserRequirement} to this traversal and respective nested sub-traversals.
-         * This is here to allow {@link TraversalStrategy} and {@link TraversalSource} instances to insert requirements.
-         *
-         * @param traverserRequirement the traverser requirement to add
-         */
-        public void addTraverserRequirement(final TraverserRequirement traverserRequirement);
+        public Set<TraverserRequirement> getTraverserRequirements();
 
         /**
          * Call the {@link Step#reset} method on every step in the traversal.
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalEngine.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalEngine.java
index dda63d7..6003dc8 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalEngine.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalEngine.java
@@ -33,7 +33,9 @@
  * Every {@link TraversalSource} should be provided a {@link TraversalEngine.Builder} so it can construct an engine for each spawned {@link Traversal}.
  *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @deprecated Since 3.2.0. Please use `Computer`.
  */
+@Deprecated
 public interface TraversalEngine extends Serializable {
 
     public enum Type {STANDARD, COMPUTER}
@@ -72,6 +74,7 @@
 
     ///////////
 
+    @Deprecated
     public interface Builder extends Serializable {
 
         /**
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSideEffects.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSideEffects.java
index 4619e23..004de22 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSideEffects.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSideEffects.java
@@ -18,13 +18,10 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal;
 
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-
 import java.io.Serializable;
 import java.util.Optional;
 import java.util.Set;
 import java.util.function.BiConsumer;
-import java.util.function.BiFunction;
 import java.util.function.BinaryOperator;
 import java.util.function.Supplier;
 import java.util.function.UnaryOperator;
@@ -37,20 +34,19 @@
  */
 public interface TraversalSideEffects extends Cloneable, Serializable {
 
-    public static final String SIDE_EFFECTS = "gremlin.traversal.sideEffects";
-
     /**
-     * Set the specified key to the specified value.
-     * If a {@link java.util.function.Supplier} is provided, it is NOT assumed to be a supplier as set by registerSupplier().
+     * Return true if the key is a registered side-effect.
      *
-     * @param key   the key
-     * @param value the value
+     * @param key the key to check for existence
+     * @return whether the key exists or not
      */
-    public void set(final String key, final Object value);
+    public default boolean exists(final String key) {
+        return this.keys().contains(key);
+    }
 
     /**
      * Get the sideEffect associated with the provided key.
-     * If the sideEffect contains an object for the key, return it in an {@link Optional}.
+     * If the sideEffect contains an object for the key, return it.
      * Else if the sideEffect has a registered {@link java.util.function.Supplier} for that key, generate the object, store the object in the sideEffects, and return it.
      *
      * @param key the key to get the value for
@@ -58,7 +54,18 @@
      * @return the value associated with key
      * @throws IllegalArgumentException if the key does not reference an object or a registered supplier.
      */
-    public <V> Optional<V> get(final String key) throws IllegalArgumentException;
+    public <V> V get(final String key) throws IllegalArgumentException;
+
+    /**
+     * Set the specified key to the specified value.
+     * This method should not be used in a distributed environment. Instead, use {@link TraversalSideEffects#add(String, Object)}.
+     * This method is only safe when there is only one representation of the side-effect and thus, not distributed across threads or machines.
+     *
+     * @param key   the key they key of the side-effect
+     * @param value the value the new value for the side-effect
+     * @throws IllegalArgumentException if the key does not reference a registered side-effect.
+     */
+    public void set(final String key, final Object value) throws IllegalArgumentException;
 
     /**
      * Remove both the value and registered {@link java.util.function.Supplier} associated with provided key.
@@ -75,37 +82,59 @@
      */
     public Set<String> keys();
 
-    ////////////
+    /**
+     * Register a side-effect with the {@link TraversalSideEffects} providing a {@link Supplier} and a {@link BinaryOperator}.
+     * If a null value is provided for the supplier or reducer, then it no supplier or reducer is registered.
+     *
+     * @param key          the key of the side-effect value
+     * @param initialValue the initial value supplier
+     * @param reducer      the reducer to use for merging a distributed side-effect value into a single value
+     * @param <V>          the type of the side-effect value
+     */
+    public <V> void register(final String key, final Supplier<V> initialValue, final BinaryOperator<V> reducer);
 
     /**
-     * Register a {@link java.util.function.Supplier} with the provided key.
-     * When sideEffects get() are called, if no object exists and there exists a registered supplier for the key, the object is generated.
-     * Registered suppliers are used for the lazy generation of sideEffect data.
+     * Register a side-effect with the {@link TraversalSideEffects} providing a {@link Supplier} and a {@link BinaryOperator}.
+     * The registration will only overwrite a supplier or reducer if no supplier or reducer existed prior.
+     * If a null value is provided for the supplier or reducer, then it no supplier or reducer is registered.
      *
-     * @param key      the key to register the supplier with
-     * @param supplier the supplier that will generate an object when get() is called if it hasn't already been created
+     * @param key          the key of the side-effect value
+     * @param initialValue the initial value supplier
+     * @param reducer      the reducer to use for merging a distributed side-effect value into a single value
+     * @param <V>          the type of the side-effect value
      */
-    public void registerSupplier(final String key, final Supplier supplier);
+    public <V> void registerIfAbsent(final String key, final Supplier<V> initialValue, final BinaryOperator<V> reducer);
 
     /**
-     * Get the registered {@link java.util.function.Supplier} associated with the specified key.
+     * Get the reducer associated with the side-effect key. If no reducer was registered, then {@link Operator#assign} is provided.
      *
-     * @param key the key associated with the supplier
-     * @param <V> The object type of the supplier
-     * @return A non-empty optional if the supplier exists
+     * @param key the key of the side-effect
+     * @param <V> the type of the side-effect value
+     * @return the registered reducer
+     * @throws IllegalArgumentException if no side-effect exists for the provided key
      */
-    public <V> Optional<Supplier<V>> getRegisteredSupplier(final String key);
+    public <V> BinaryOperator<V> getReducer(final String key) throws IllegalArgumentException;
 
     /**
-     * A helper method to register a {@link java.util.function.Supplier} if it has not already been registered.
+     * Get the supplier associated with the side-effect key. If no supplier was registered, then {@link org.apache.tinkerpop.gremlin.util.function.ConstantSupplier} is provided.
      *
-     * @param key      the key of the supplier to register
-     * @param supplier the supplier to register if the key has not already been registered
+     * @param key the key of the side-effect
+     * @param <V> the type of the side-effect value
+     * @return the registered supplier
+     * @throws IllegalArgumentException if no side-effect exists for the provided key
      */
-    public default void registerSupplierIfAbsent(final String key, final Supplier supplier) {
-        if (!this.getRegisteredSupplier(key).isPresent())
-            this.registerSupplier(key, supplier);
-    }
+    public <V> Supplier<V> getSupplier(final String key) throws IllegalArgumentException;
+
+    /**
+     * Add a value to the global side-effect value.
+     * This should be used by steps to ensure that side-effects are merged properly in a distributed environment.
+     * {@link TraversalSideEffects#set(String, Object)}  should only be used in single-threaded systems or by a master traversal in a distributed environment.
+     *
+     * @param key   the key of the side-effect.
+     * @param value the partital value (to be merged) of the side-effect.
+     * @throws IllegalArgumentException if no side-effect exists for the provided key
+     */
+    public void add(final String key, final Object value) throws IllegalArgumentException;
 
     /**
      * Set the initial value of each {@link Traverser} "sack" along with the operators for splitting and merging sacks.
@@ -146,6 +175,88 @@
      */
     public <S> BinaryOperator<S> getSackMerger();
 
+    ////////////
+
+    public default <V> void forEach(final BiConsumer<String, V> biConsumer) {
+        this.keys().forEach(key -> biConsumer.accept(key, this.<V>get(key)));
+    }
+
+    /**
+     * Cloning is used to duplicate the sideEffects typically in distributed execution environments.
+     *
+     * @return The cloned sideEffects
+     */
+    @SuppressWarnings("CloneDoesntDeclareCloneNotSupportedException")
+    public TraversalSideEffects clone();
+
+    /**
+     * Add the current {@link TraversalSideEffects} values, suppliers, and reducers to the provided {@link TraversalSideEffects}.
+     * The implementation should (under the hood), use {@link TraversalSideEffects#registerIfAbsent(String, Supplier, BinaryOperator)} so that
+     * if the argument {@link TraversalSideEffects} already has a registered supplier or binary operator, then don't overwrite it.
+     *
+     * @param sideEffects the sideEffects to add this traversal's sideEffect data to.
+     */
+    public void mergeInto(final TraversalSideEffects sideEffects);
+
+    public static class Exceptions {
+
+        public static IllegalArgumentException sideEffectKeyCanNotBeEmpty() {
+            return new IllegalArgumentException("Side-effect key can not be the empty string");
+        }
+
+        public static IllegalArgumentException sideEffectKeyCanNotBeNull() {
+            return new IllegalArgumentException("Side-effect key can not be null");
+        }
+
+        public static IllegalArgumentException sideEffectValueCanNotBeNull() {
+            return new IllegalArgumentException("Side-effect value can not be null");
+        }
+
+        public static IllegalArgumentException sideEffectKeyDoesNotExist(final String key) {
+            return new IllegalArgumentException("The side-effect key does not exist in the side-effects: " + key);
+        }
+    }
+
+    /////////////////// DEPRECATED METHOD SINCE 3.2.0
+
+    /**
+     * Register a {@link java.util.function.Supplier} with the provided key.
+     * When sideEffects get() are called, if no object exists and there exists a registered supplier for the key, the object is generated.
+     * Registered suppliers are used for the lazy generation of sideEffect data.
+     *
+     * @param key      the key to register the supplier with
+     * @param supplier the supplier that will generate an object when get() is called if it hasn't already been created
+     * @deprecated Since 3.2.0 -- use {@link TraversalSideEffects#register(String, Supplier, BinaryOperator)}.
+     */
+    @Deprecated
+    public void registerSupplier(final String key, final Supplier supplier);
+
+
+    /**
+     * A helper method to register a {@link java.util.function.Supplier} if it has not already been registered.
+     *
+     * @param key      the key of the supplier to register
+     * @param supplier the supplier to register if the key has not already been registered
+     * @deprecated Since 3.2.0 -- use {@link TraversalSideEffects#registerIfAbsent(String, Supplier, BinaryOperator)}.
+     */
+    @Deprecated
+    public default void registerSupplierIfAbsent(final String key, final Supplier supplier) {
+        if (!this.getRegisteredSupplier(key).isPresent())
+            this.registerSupplier(key, supplier);
+    }
+
+    /**
+     * Get the registered {@link java.util.function.Supplier} associated with the specified key.
+     *
+     * @param key the key associated with the supplier
+     * @param <V> The object type of the supplier
+     * @return A non-empty optional if the supplier exists
+     * @deprecated Since 3.2.0 -- use {@link TraversalSideEffects#getSupplier(String)}.
+     */
+    @Deprecated
+    public <V> Optional<Supplier<V>> getRegisteredSupplier(final String key);
+
+
     /**
      * If the sideEffect contains an object associated with the key, return it.
      * Else if a "with" supplier exists for the key, generate the object, store it in the sideEffects and return the object.
@@ -156,11 +267,13 @@
      * @param orCreate if the object doesn't exist as an object or suppliable object, then generate it with the specified supplier
      * @param <V>      the return type of the object
      * @return the object that is either retrieved, generated, or supplier via orCreate
+     * @deprecated Since 3.2.0 -- use {@link TraversalSideEffects#register(String, Supplier, BinaryOperator)} to register side-effects.
      */
+    @Deprecated
     public default <V> V getOrCreate(final String key, final Supplier<V> orCreate) {
-        final Optional<V> optional = this.get(key);
-        if (optional.isPresent())
-            return optional.get();
+        final V value = this.exists(key) ? this.get(key) : null;
+        if (null != value)
+            return value;
         final Optional<Supplier<V>> with = this.getRegisteredSupplier(key);
         if (with.isPresent()) {
             final V v = with.get().get();
@@ -173,52 +286,6 @@
         }
     }
 
-    ////////////
 
-    public default <V> void forEach(final BiConsumer<String, V> biConsumer) {
-        this.keys().forEach(key -> biConsumer.accept(key, this.<V>get(key).get()));
-    }
-
-    /**
-     * In a distributed {@link org.apache.tinkerpop.gremlin.process.computer.GraphComputer} traversal, the sideEffects of the traversal are not a single object within a single JVM.
-     * Instead, the sideEffects are distributed across the graph and the pieces are stored on the computing vertices.
-     * This method is necessary to call when the {@link Traversal} is processing the {@link Traverser}s at a particular {@link org.apache.tinkerpop.gremlin.structure.Vertex}.
-     *
-     * @param vertex the vertex where the traversal is currently executing.
-     */
-    public void setLocalVertex(final Vertex vertex);
-
-    /**
-     * Cloning is used to duplicate the sideEffects typically in OLAP environments.
-     *
-     * @return The cloned sideEffects
-     */
-    @SuppressWarnings("CloneDoesntDeclareCloneNotSupportedException")
-    public TraversalSideEffects clone();
-
-    /**
-     * Add the current {@link TraversalSideEffects} data and suppliers to the provided {@link TraversalSideEffects}.
-     *
-     * @param sideEffects the sideEffects to add this traversal's sideEffect data to.
-     */
-    public void mergeInto(final TraversalSideEffects sideEffects);
-
-    public static class Exceptions {
-
-        public static IllegalArgumentException sideEffectKeyCanNotBeEmpty() {
-            return new IllegalArgumentException("Side effect key can not be the empty string");
-        }
-
-        public static IllegalArgumentException sideEffectKeyCanNotBeNull() {
-            return new IllegalArgumentException("Side effect key can not be null");
-        }
-
-        public static IllegalArgumentException sideEffectValueCanNotBeNull() {
-            return new IllegalArgumentException("Side effect value can not be null");
-        }
-
-        public static UnsupportedOperationException dataTypeOfSideEffectValueNotSupported(final Object val) {
-            return new UnsupportedOperationException(String.format("Side effect value [%s] is of type %s is not supported", val, val.getClass()));
-        }
-    }
+    ///////////////////
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSource.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSource.java
index 58884ee..cf0b51f 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSource.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSource.java
@@ -18,50 +18,309 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal;
 
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SackStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SideEffectStrategy;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
 
 import java.io.Serializable;
 import java.util.List;
-import java.util.Optional;
+import java.util.function.BinaryOperator;
+import java.util.function.Function;
+import java.util.function.Supplier;
+import java.util.function.UnaryOperator;
 
 /**
- * A {@code TraversalSource} is responsible for generating a {@link Traversal}. A {@code TraversalSource}, once built,
- * can generate any number of {@link Traversal} instances. Each traversal DSL will maintain a corresponding
- * {@code TraversalSource} which specifies the methods which being a "fluent-chaining" of traversal steps.
+ * A {@code TraversalSource} is used to create {@link Traversal} instances.
+ * A traversal source can generate any number of {@link Traversal} instances.
+ * A traversal source is primarily composed of a {@link Graph} and a {@link TraversalStrategies}.
+ * Various {@code withXXX}-based methods are used to configure the traversal strategies (called "configurations").
+ * Various other methods (dependent on the traversal source type) will then generate a traversal given the graph and configured strategies (called "spawns").
+ * A traversal source is immutable in that fluent chaining of configurations create new traversal sources.
+ * This is unlike {@link Traversal} and {@link GraphComputer}, where chained methods configure the same instance.
+ * Every traversal source implementation must maintain two constructors to enable proper reflection-based construction.
+ * <p/>
+ * {@code TraversalSource(Graph)} and {@code TraversalSource(Graph,TraversalStrategies)}
  *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface TraversalSource {
-
-    public TraversalSource.Builder asBuilder();
+public interface TraversalSource extends Cloneable {
 
     /**
-     * Gets the {@link GraphComputer} associated with the {@code TraversalSource} which could be constructed as empty.
+     * Get the {@link TraversalStrategies} associated with this traversal source.
+     *
+     * @return the traversal strategies of the traversal source
      */
-    public Optional<GraphComputer> getGraphComputer();
+    public TraversalStrategies getStrategies();
 
     /**
-     * Gets the {@link Graph} associated with the {@code TraversalSource} which could be constructed as empty.
+     * Get the {@link Graph) associated with this traversal source.
+     *
+     * @return the graph of the traversal source
      */
-    public Optional<Graph> getGraph();
+    public Graph getGraph();
+
+    /////////////////////////////
 
     /**
-     * Gets the list of {@link TraversalStrategy} instances that will be applied to {@link Traversal} objects
-     * generated from this {@code TraversalSource}.
+     * Add an arbitrary collection of {@link TraversalStrategy} instances to the traversal source.
+     *
+     * @param traversalStrategies a colleciton of traversal strategies to add
+     * @return a new traversal source with updated strategies
      */
-    public List<TraversalStrategy> getStrategies();
+    public default TraversalSource withStrategies(final TraversalStrategy... traversalStrategies) {
+        final TraversalSource clone = this.clone();
+        clone.getStrategies().addStrategies(traversalStrategies);
+        return clone;
+    }
 
-    ////////////////
+    /**
+     * Remove an arbitrary collection of {@link TraversalStrategy} classes from the traversal source.
+     *
+     * @param traversalStrategyClasses a collection of traversal strategy classes to remove
+     * @return a new traversal source with updated strategies
+     */
+    @SuppressWarnings({"unchecked", "varargs"})
+    public default TraversalSource withoutStrategies(final Class<? extends TraversalStrategy>... traversalStrategyClasses) {
+        final TraversalSource clone = this.clone();
+        clone.getStrategies().removeStrategies(traversalStrategyClasses);
+        return clone;
+    }
 
+    /**
+     * Add a {@link Function} that will generate a {@link GraphComputer} from the {@link Graph} that will be used to execute the traversal.
+     * This adds a {@link VertexProgramStrategy} to the strategies.
+     *
+     * @param computer a builder to generate a graph computer from the graph
+     * @return a new traversal source with updated strategies
+     */
+    public default TraversalSource withComputer(final Computer computer) {
+        Class<? extends GraphComputer> graphComputerClass;
+        try {
+            graphComputerClass = computer.apply(this.getGraph()).getClass();
+        } catch (final Exception e) {
+            graphComputerClass = computer.getGraphComputerClass();
+        }
+        final List<TraversalStrategy<?>> graphComputerStrategies = TraversalStrategies.GlobalCache.getStrategies(graphComputerClass).toList();
+        final TraversalStrategy[] traversalStrategies = new TraversalStrategy[graphComputerStrategies.size() + 1];
+        traversalStrategies[0] = new VertexProgramStrategy(computer);
+        for (int i = 0; i < graphComputerStrategies.size(); i++) {
+            traversalStrategies[i + 1] = graphComputerStrategies.get(i);
+        }
+        return this.withStrategies(traversalStrategies);
+    }
+
+    /**
+     * Add a {@link GraphComputer} class used to execute the traversal.
+     * This adds a {@link VertexProgramStrategy} to the strategies.
+     *
+     * @param graphComputerClass the graph computer class
+     * @return a new traversal source with updated strategies
+     */
+    public default TraversalSource withComputer(final Class<? extends GraphComputer> graphComputerClass) {
+        return this.withComputer(Computer.compute(graphComputerClass));
+    }
+
+    /**
+     * Add the standard {@link GraphComputer} of the graph that will be used to execute the traversal.
+     * This adds a {@link VertexProgramStrategy} to the strategies.
+     *
+     * @return a new traversal source with updated strategies
+     */
+    public default TraversalSource withComputer() {
+        return this.withComputer(Computer.compute());
+    }
+
+    /**
+     * Add a sideEffect to be used throughout the life of a spawned {@link Traversal}.
+     * This adds a {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SideEffectStrategy} to the strategies.
+     *
+     * @param key          the key of the sideEffect
+     * @param initialValue a supplier that produces the initial value of the sideEffect
+     * @param reducer      a reducer to merge sideEffect mutations into a single result
+     * @return a new traversal source with updated strategies
+     */
+    public default <A> TraversalSource withSideEffect(final String key, final Supplier<A> initialValue, final BinaryOperator<A> reducer) {
+        final TraversalSource clone = this.clone();
+        SideEffectStrategy.addSideEffect(clone.getStrategies(), key, (A) initialValue, reducer);
+        return clone;
+    }
+
+    /**
+     * Add a sideEffect to be used throughout the life of a spawned {@link Traversal}.
+     * This adds a {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SideEffectStrategy} to the strategies.
+     *
+     * @param key          the key of the sideEffect
+     * @param initialValue the initial value of the sideEffect
+     * @param reducer      a reducer to merge sideEffect mutations into a single result
+     * @return a new traversal source with updated strategies
+     */
+    public default <A> TraversalSource withSideEffect(final String key, final A initialValue, final BinaryOperator<A> reducer) {
+        return this.withSideEffect(key, initialValue instanceof Supplier ? (Supplier) initialValue : new ConstantSupplier<>(initialValue), reducer);
+    }
+
+    /**
+     * Add a sideEffect to be used throughout the life of a spawned {@link Traversal}.
+     * This adds a {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SideEffectStrategy} to the strategies.
+     *
+     * @param key          the key of the sideEffect
+     * @param initialValue a supplier that produces the initial value of the sideEffect
+     * @return a new traversal source with updated strategies
+     */
+    public default <A> TraversalSource withSideEffect(final String key, final Supplier<A> initialValue) {
+        return this.withSideEffect(key, initialValue, (BinaryOperator<A>) null);
+    }
+
+    /**
+     * Add a sideEffect to be used throughout the life of a spawned {@link Traversal}.
+     * This adds a {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SideEffectStrategy} to the strategies.
+     *
+     * @param key          the key of the sideEffect
+     * @param initialValue the initial value of the sideEffect
+     * @return a new traversal source with updated strategies
+     */
+    public default <A> TraversalSource withSideEffect(final String key, final A initialValue) {
+        return this.withSideEffect(key, initialValue instanceof Supplier ? (Supplier) initialValue : new ConstantSupplier<>(initialValue));
+    }
+
+    /**
+     * Add a sack to be used throughout the life of a spawned {@link Traversal}.
+     * This adds a {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SackStrategy} to the strategies.
+     *
+     * @param initialValue  a supplier that produces the initial value of the sideEffect
+     * @param splitOperator the sack split operator
+     * @param mergeOperator the sack merge operator
+     * @return a new traversal source with updated strategies
+     */
+    public default <A> TraversalSource withSack(final Supplier<A> initialValue, final UnaryOperator<A> splitOperator, final BinaryOperator<A> mergeOperator) {
+        return this.withStrategies(SackStrategy.<A>build().initialValue(initialValue).splitOperator(splitOperator).mergeOperator(mergeOperator).create());
+    }
+
+    /**
+     * Add a sack to be used throughout the life of a spawned {@link Traversal}.
+     * This adds a {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SackStrategy} to the strategies.
+     *
+     * @param initialValue  the initial value of the sideEffect
+     * @param splitOperator the sack split operator
+     * @param mergeOperator the sack merge operator
+     * @return a new traversal source with updated strategies
+     */
+    public default <A> TraversalSource withSack(final A initialValue, final UnaryOperator<A> splitOperator, final BinaryOperator<A> mergeOperator) {
+        return this.withSack(new ConstantSupplier<>(initialValue), splitOperator, mergeOperator);
+    }
+
+    /**
+     * Add a sack to be used throughout the life of a spawned {@link Traversal}.
+     * This adds a {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SackStrategy} to the strategies.
+     *
+     * @param initialValue the initial value of the sideEffect
+     * @return a new traversal source with updated strategies
+     */
+    public default <A> TraversalSource withSack(final A initialValue) {
+        return this.withSack(initialValue, null, null);
+    }
+
+    /**
+     * Add a sack to be used throughout the life of a spawned {@link Traversal}.
+     * This adds a {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SackStrategy} to the strategies.
+     *
+     * @param initialValue a supplier that produces the initial value of the sideEffect
+     * @return a new traversal source with updated strategies
+     */
+    public default <A> TraversalSource withSack(final Supplier<A> initialValue) {
+        return this.withSack(initialValue, (UnaryOperator<A>) null, null);
+    }
+
+    /**
+     * Add a sack to be used throughout the life of a spawned {@link Traversal}.
+     * This adds a {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SackStrategy} to the strategies.
+     *
+     * @param initialValue  a supplier that produces the initial value of the sideEffect
+     * @param splitOperator the sack split operator
+     * @return a new traversal source with updated strategies
+     */
+    public default <A> TraversalSource withSack(final Supplier<A> initialValue, final UnaryOperator<A> splitOperator) {
+        return this.withSack(initialValue, splitOperator, null);
+    }
+
+    /**
+     * Add a sack to be used throughout the life of a spawned {@link Traversal}.
+     * This adds a {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SackStrategy} to the strategies.
+     *
+     * @param initialValue  the initial value of the sideEffect
+     * @param splitOperator the sack split operator
+     * @return a new traversal source with updated strategies
+     */
+    public default <A> TraversalSource withSack(final A initialValue, final UnaryOperator<A> splitOperator) {
+        return this.withSack(initialValue, splitOperator, null);
+    }
+
+    /**
+     * Add a sack to be used throughout the life of a spawned {@link Traversal}.
+     * This adds a {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SackStrategy} to the strategies.
+     *
+     * @param initialValue  a supplier that produces the initial value of the sideEffect
+     * @param mergeOperator the sack merge operator
+     * @return a new traversal source with updated strategies
+     */
+    public default <A> TraversalSource withSack(final Supplier<A> initialValue, final BinaryOperator<A> mergeOperator) {
+        return this.withSack(initialValue, null, mergeOperator);
+    }
+
+    /**
+     * Add a sack to be used throughout the life of a spawned {@link Traversal}.
+     * This adds a {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SackStrategy} to the strategies.
+     *
+     * @param initialValue  the initial value of the sideEffect
+     * @param mergeOperator the sack merge operator
+     * @return a new traversal source with updated strategies
+     */
+    public default <A> TraversalSource withSack(final A initialValue, final BinaryOperator<A> mergeOperator) {
+        return this.withSack(initialValue, null, mergeOperator);
+    }
+
+    /**
+     * The clone-method should be used to create immutable traversal sources with each call to a configuration method.
+     * The clone-method should clone the internal {@link TraversalStrategies}, mutate the cloned strategies accordingly,
+     * and then return the cloned traversal source.
+     *
+     * @return the cloned traversal source
+     */
+    @SuppressWarnings("CloneDoesntDeclareCloneNotSupportedException")
+    public TraversalSource clone();
+
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
     public interface Builder<C extends TraversalSource> extends Serializable {
 
+        /**
+         * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+         */
+        @Deprecated
         public Builder engine(final TraversalEngine.Builder engine);
 
+        /**
+         * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+         */
+        @Deprecated
         public Builder with(final TraversalStrategy strategy);
 
+        /**
+         * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+         */
+        @Deprecated
         public Builder without(final Class<? extends TraversalStrategy> strategyClass);
 
+        /**
+         * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+         */
+        @Deprecated
         public C create(final Graph graph);
     }
+
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
index cdd2f9a..53b2e77 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
@@ -18,18 +18,22 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal;
 
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.GraphFilterStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.EngineDependentStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.ProfileStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.AdjacentToIncidentStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.FilterRankingStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IdentityRemovalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IncidentToAdjacentStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.MatchPredicateStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.OrderLimitStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.PathProcessorStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.PathRetractionStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.RangeByIsCountStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.RepeatUnrollStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.StandardVerificationStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserGeneratorFactory;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
@@ -86,25 +90,13 @@
      * @param strategyClasses the traversal strategies to remove by their class
      * @return the newly updated/sorted traversal strategies collection
      */
-    @SuppressWarnings("unchecked")
+    @SuppressWarnings({"unchecked", "varargs"})
     public TraversalStrategies removeStrategies(final Class<? extends TraversalStrategy>... strategyClasses);
 
     @SuppressWarnings("CloneDoesntDeclareCloneNotSupportedException")
     public TraversalStrategies clone();
 
     /**
-     * Get the {@link TraverserGeneratorFactory} to use to generate traversers.
-     */
-    public TraverserGeneratorFactory getTraverserGeneratorFactory();
-
-    /**
-     * Set the {@link TraverserGeneratorFactory} to use for determining which {@link Traverser} type to generate for the {@link Traversal}.
-     *
-     * @param traverserGeneratorFactory the factory to use
-     */
-    public void setTraverserGeneratorFactory(final TraverserGeneratorFactory traverserGeneratorFactory);
-
-    /**
      * Sorts the list of provided strategies such that the {@link TraversalStrategy#applyPost()}
      * and {@link TraversalStrategy#applyPrior()} dependencies are respected.
      * <p/>
@@ -191,41 +183,58 @@
 
     public static final class GlobalCache {
 
-        private static final Map<Class<? extends Graph>, TraversalStrategies> CACHE = new HashMap<>();
+        private static final Map<Class<? extends Graph>, TraversalStrategies> GRAPH_CACHE = new HashMap<>();
+        private static final Map<Class<? extends GraphComputer>, TraversalStrategies> GRAPH_COMPUTER_CACHE = new HashMap<>();
 
         static {
-            final TraversalStrategies coreStrategies = new DefaultTraversalStrategies();
-            coreStrategies.addStrategies(
+            final TraversalStrategies graphStrategies = new DefaultTraversalStrategies();
+            graphStrategies.addStrategies(
                     ConnectiveStrategy.instance(),
-                    EngineDependentStrategy.instance(),
-                    ProfileStrategy.instance(),
                     IncidentToAdjacentStrategy.instance(),
                     AdjacentToIncidentStrategy.instance(),
                     FilterRankingStrategy.instance(),
                     IdentityRemovalStrategy.instance(),
                     MatchPredicateStrategy.instance(),
+                    RepeatUnrollStrategy.instance(),
                     RangeByIsCountStrategy.instance(),
-                    ComputerVerificationStrategy.instance(),
+                    PathRetractionStrategy.instance(),
+                    ProfileStrategy.instance(),
                     StandardVerificationStrategy.instance());
-            //LambdaRestrictionStrategy.instance(),
-            //LazyBarrierStrategy.instance(),
 
-            CACHE.put(Graph.class, coreStrategies.clone());
-            CACHE.put(EmptyGraph.class, new DefaultTraversalStrategies());
+            GRAPH_CACHE.put(Graph.class, graphStrategies);
+            GRAPH_CACHE.put(EmptyGraph.class, new DefaultTraversalStrategies());
+
+            /////////////////////
+
+            final TraversalStrategies graphComputerStrategies = new DefaultTraversalStrategies();
+            graphComputerStrategies.addStrategies(
+                    GraphFilterStrategy.instance(),
+                    OrderLimitStrategy.instance(),
+                    PathProcessorStrategy.instance(),
+                    ComputerVerificationStrategy.instance());
+
+            GRAPH_COMPUTER_CACHE.put(GraphComputer.class, graphComputerStrategies);
         }
 
-        public static void registerStrategies(final Class<? extends Graph> graphClass, final TraversalStrategies traversalStrategies) {
-            CACHE.put(graphClass, traversalStrategies);
+        public static void registerStrategies(final Class graphOrGraphComputerClass, final TraversalStrategies traversalStrategies) {
+            if (Graph.class.isAssignableFrom(graphOrGraphComputerClass))
+                GRAPH_CACHE.put(graphOrGraphComputerClass, traversalStrategies);
+            else if (GraphComputer.class.isAssignableFrom(graphOrGraphComputerClass))
+                GRAPH_COMPUTER_CACHE.put(graphOrGraphComputerClass, traversalStrategies);
+            else
+                throw new IllegalArgumentException("The TraversalStrategies.GlobalCache only supports Graph and GraphComputer strategy caching: " + graphOrGraphComputerClass.getCanonicalName());
         }
 
-        public static TraversalStrategies getStrategies(final Class<? extends Graph> graphClass) {
-            final TraversalStrategies traversalStrategies = CACHE.get(graphClass);
-            if (null == traversalStrategies) {
-                if (EmptyGraph.class.isAssignableFrom(graphClass))
-                    return CACHE.get(EmptyGraph.class);
-                else return CACHE.get(Graph.class);
+        public static TraversalStrategies getStrategies(final Class graphOrGraphComputerClass) {
+            if (Graph.class.isAssignableFrom(graphOrGraphComputerClass)) {
+                final TraversalStrategies traversalStrategies = GRAPH_CACHE.get(graphOrGraphComputerClass);
+                return null == traversalStrategies ? GRAPH_CACHE.get(Graph.class) : traversalStrategies;
+            } else if (GraphComputer.class.isAssignableFrom(graphOrGraphComputerClass)) {
+                final TraversalStrategies traversalStrategies = GRAPH_COMPUTER_CACHE.get(graphOrGraphComputerClass);
+                return null == traversalStrategies ? GRAPH_COMPUTER_CACHE.get(GraphComputer.class) : traversalStrategies;
+            } else {
+                throw new IllegalArgumentException("The TraversalStrategies.GlobalCache only supports Graph and GraphComputer strategy caching: " + graphOrGraphComputerClass.getCanonicalName());
             }
-            return traversalStrategies;
         }
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traverser.java
index da43fdf..0c37a34 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traverser.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traverser.java
@@ -96,24 +96,24 @@
     public long bulk();
 
     /**
-     * Get a particular value from the sideEffects of the traverser.
+     * Get a particular value from the side-effects of the traverser (thus, traversal).
      *
      * @param sideEffectKey the key of the value to get from the sideEffects
      * @param <A>           the type of the returned object
      * @return the object in the sideEffects of the respective key
      */
-    public default <A> A sideEffects(final String sideEffectKey) {
-        return this.asAdmin().getSideEffects().<A>get(sideEffectKey).get();
+    public default <A> A sideEffects(final String sideEffectKey) throws IllegalArgumentException {
+        return this.asAdmin().getSideEffects().<A>get(sideEffectKey);
     }
 
     /**
-     * Set a particular value in the sideEffects of the traverser.
+     * Add a particular value to the respective side-effect of the traverser (thus, traversal).
      *
      * @param sideEffectKey   the key of the value to set int the sideEffects
      * @param sideEffectValue the value to set for the sideEffect key
      */
-    public default void sideEffects(final String sideEffectKey, final Object sideEffectValue) {
-        this.asAdmin().getSideEffects().set(sideEffectKey, sideEffectValue);
+    public default void sideEffects(final String sideEffectKey, final Object sideEffectValue) throws IllegalArgumentException {
+        this.asAdmin().getSideEffects().add(sideEffectKey, sideEffectValue);
     }
 
     /**
@@ -183,6 +183,12 @@
 
         public void addLabels(final Set<String> labels);
 
+        public void keepLabels(final Set<String> labels);
+
+        public void dropLabels(final Set<String> labels);
+
+        public void dropPath();
+
         /**
          * Set the current object location of the traverser.
          *
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 dbec9d8..123a907 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,6 +18,10 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.dsl.graph;
 
+import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRankVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PeerPressureVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ProgramVertexProgramStep;
 import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
@@ -26,17 +30,15 @@
 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.ColumnTraversal;
 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.ByModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TimesModulating;
 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.BranchStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.ChooseStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.LocalStep;
@@ -89,9 +91,11 @@
 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.NoOpBarrierStep;
 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.ProjectStep;
 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;
@@ -117,7 +121,7 @@
 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.ProfileSideEffectStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SackValueStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectCapStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StartStep;
@@ -125,11 +129,7 @@
 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.FunctionComparator;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer;
-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.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
@@ -472,7 +472,7 @@
     }
 
     public default <E2> GraphTraversal<S, Collection<E2>> select(final Column column) {
-        return this.map(new FunctionTraverser<>((Function) column));
+        return this.map(new ColumnTraversal(column));
     }
 
     /**
@@ -543,6 +543,13 @@
         return this.asAdmin().addStep(new LoopsStep<>(this.asAdmin()));
     }
 
+    public default <E2> GraphTraversal<S, Map<String, E2>> project(final String projectKey, final String... otherProjectKeys) {
+        final String[] projectKeys = new String[otherProjectKeys.length + 1];
+        projectKeys[0] = projectKey;
+        System.arraycopy(otherProjectKeys, 0, projectKeys, 1, otherProjectKeys.length);
+        return this.asAdmin().addStep(new ProjectStep<>(this.asAdmin(), projectKeys));
+    }
+
     /**
      * Map the {@link Traverser} to a {@link Map} projection of sideEffect values, map values, and/or path values.
      *
@@ -1027,8 +1034,8 @@
         return this.asAdmin().addStep(new StoreStep<>(this.asAdmin(), sideEffectKey));
     }
 
-    public default GraphTraversal<S, E> profile() {
-        return this.asAdmin().addStep(new ProfileStep<>(this.asAdmin()));
+    public default GraphTraversal<S, E> profile(final String sideEffectKey) {
+        return this.asAdmin().addStep(new ProfileSideEffectStep<>(this.asAdmin(), sideEffectKey));
     }
 
     /**
@@ -1109,6 +1116,10 @@
         return this.choose(__.filter(new PredicateTraverser<>(choosePredicate)), trueChoice, falseChoice);
     }
 
+    public default <E2> GraphTraversal<S, E2> optional(final Traversal<?, E2> optionalTraversal) {
+        return this.choose(optionalTraversal, optionalTraversal.asAdmin().clone(), __.identity());
+    }
+
     public default <E2> GraphTraversal<S, E2> union(final Traversal<?, E2>... unionTraversals) {
         return this.asAdmin().addStep(new UnionStep(this.asAdmin(), Arrays.copyOf(unionTraversals, unionTraversals.length, Traversal.Admin[].class)));
     }
@@ -1142,13 +1153,35 @@
     }
 
     public default GraphTraversal<S, E> times(final int maxLoops) {
-        return this.until(new LoopTraversal<>(maxLoops));
+        if (this.asAdmin().getEndStep() instanceof TimesModulating) {
+            ((TimesModulating) this.asAdmin().getEndStep()).modulateTimes(maxLoops);
+            return this;
+        } else
+            return this.until(new LoopTraversal<>(maxLoops));
     }
 
     public default <E2> GraphTraversal<S, E2> local(final Traversal<?, E2> localTraversal) {
         return this.asAdmin().addStep(new LocalStep<>(this.asAdmin(), localTraversal.asAdmin()));
     }
 
+    /////////////////// VERTEX PROGRAM STEPS ////////////////
+
+    public default GraphTraversal<S, E> pageRank() {
+        return this.pageRank(0.85d);
+    }
+
+    public default GraphTraversal<S, E> pageRank(final double alpha) {
+        return this.asAdmin().addStep((Step<E, E>) new PageRankVertexProgramStep(this.asAdmin(), alpha));
+    }
+
+    public default GraphTraversal<S, E> peerPressure() {
+        return this.asAdmin().addStep((Step<E, E>) new PeerPressureVertexProgramStep(this.asAdmin()));
+    }
+
+    public default GraphTraversal<S, E> program(final VertexProgram<?> vertexProgram) {
+        return this.asAdmin().addStep((Step<E, E>) new ProgramVertexProgramStep(this.asAdmin(), vertexProgram));
+    }
+
     ///////////////////// UTILITY STEPS /////////////////////
 
     public default GraphTraversal<S, E> as(final String stepLabel, final String... stepLabels) {
@@ -1166,7 +1199,7 @@
     }
 
     public default GraphTraversal<S, E> barrier(final int maxBarrierSize) {
-        return this.asAdmin().addStep(new LambdaCollectingBarrierStep<>(this.asAdmin(), (Consumer) LambdaCollectingBarrierStep.Consumers.noOp, maxBarrierSize));
+        return this.asAdmin().addStep(new NoOpBarrierStep<>(this.asAdmin(), maxBarrierSize));
     }
 
     public default GraphTraversal<S, E> barrier(final Consumer<TraverserSet<Object>> barrierConsumer) {
@@ -1174,60 +1207,68 @@
     }
 
 
-    //// PROJECTION BY-MODULATORS
+    //// BY-MODULATORS
 
-    public default GraphTraversal<S, E> by(final Traversal<?, ?> byTraversal) {
-        ((TraversalParent) this.asAdmin().getEndStep()).addLocalChild(byTraversal.asAdmin());
+    public default GraphTraversal<S, E> by() {
+        ((ByModulating) this.asAdmin().getEndStep()).modulateBy();
         return this;
     }
 
-    public default GraphTraversal<S, E> by() {
-        return this.by(new IdentityTraversal<>());
+    public default GraphTraversal<S, E> by(final Traversal<?, ?> traversal) {
+        ((ByModulating) this.asAdmin().getEndStep()).modulateBy(traversal.asAdmin());
+        return this;
     }
 
-    public default <V> GraphTraversal<S, E> by(final Function<V, Object> functionProjection) {
-        return functionProjection instanceof T ?
-                this.by((T) functionProjection) :
-                this.by(__.map(new FunctionTraverser<>(functionProjection)));
+    public default GraphTraversal<S, E> by(final T token) {
+        ((ByModulating) this.asAdmin().getEndStep()).modulateBy(token);
+        return this;
     }
 
-    public default GraphTraversal<S, E> by(final T tokenProjection) {
-        return this.by(new TokenTraversal<>(tokenProjection));
+    public default GraphTraversal<S, E> by(final String key) {
+        ((ByModulating) this.asAdmin().getEndStep()).modulateBy(key);
+        return this;
     }
 
-    public default GraphTraversal<S, E> by(final String elementPropertyKey) {
-        return this.by(new ElementValueTraversal<>(elementPropertyKey));
+    public default <V> GraphTraversal<S, E> by(final Function<V, Object> function) {
+        ((ByModulating) this.asAdmin().getEndStep()).modulateBy(function);
+        return this;
     }
 
     //// COMPARATOR BY-MODULATORS
 
+    public default <V> GraphTraversal<S, E> by(final Traversal<?, ?> traversal, final Comparator<V> comparator) {
+        ((ByModulating) this.asAdmin().getEndStep()).modulateBy(traversal.asAdmin(), comparator);
+        return this;
+    }
+
     public default GraphTraversal<S, E> by(final Comparator<E> comparator) {
-        ((ComparatorHolder<E>) this.asAdmin().getEndStep()).addComparator(comparator);
+        ((ByModulating) this.asAdmin().getEndStep()).modulateBy(comparator);
         return this;
     }
 
     public default GraphTraversal<S, E> by(final Order order) {
-        return this.by((Comparator) order);
+        ((ByModulating) this.asAdmin().getEndStep()).modulateBy(order);
+        return this;
     }
 
-    public default <V> GraphTraversal<S, E> by(final Column column, final Comparator<V> objectComparator) {
-        return this.by(new FunctionComparator(column, objectComparator));
+    public default <V> GraphTraversal<S, E> by(final String key, final Comparator<V> comparator) {
+        ((ByModulating) this.asAdmin().getEndStep()).modulateBy(key, comparator);
+        return this;
     }
 
-    public default <V> GraphTraversal<S, E> by(final Function<Element, V> elementFunctionProjection,
-                                               final Comparator<V> elementFunctionValueComparator) {
-        return ((Function) elementFunctionProjection) instanceof Column ?
-                this.by((Column) ((Function) elementFunctionProjection), elementFunctionValueComparator) :
-                this.by((Comparator) new ElementFunctionComparator<>(elementFunctionProjection, elementFunctionValueComparator));
+    /*public default <V> GraphTraversal<S, E> by(final Column column, final Comparator<V> comparator) {
+        ((ByModulating) this.asAdmin().getEndStep()).modulateBy(column, comparator);
+        return this;
     }
 
-    public default <V> GraphTraversal<S, E> by(final String elementPropertyProjection,
-                                               final Comparator<V> propertyValueComparator) {
-        return this.by((Comparator) new ElementValueComparator<>(elementPropertyProjection, propertyValueComparator));
-    }
+    public default <V> GraphTraversal<S, E> by(final T token, final Comparator<V> comparator) {
+        ((ByModulating) this.asAdmin().getEndStep()).modulateBy(token, comparator);
+        return this;
+    }*/
 
-    public default <V> GraphTraversal<S, E> by(final Traversal<?, ?> traversal, final Comparator<V> endComparator) {
-        return this.by(new TraversalComparator(traversal.asAdmin(), endComparator));
+    public default <U> GraphTraversal<S, E> by(final Function<U, Object> function, final Comparator comparator) {
+        ((ByModulating) this.asAdmin().getEndStep()).modulateBy(function, comparator);
+        return this;
     }
 
     ////
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 8395ace..ad33bf8 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
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.dsl.graph;
 
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
@@ -27,74 +28,174 @@
 import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStartStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.RequirementsStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Transaction;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
-import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
-import java.util.Optional;
 import java.util.function.BinaryOperator;
 import java.util.function.Supplier;
 import java.util.function.UnaryOperator;
 
 /**
+ * A {@code GraphTraversalSource} is the primary DSL of the Gremlin traversal machine.
+ * It provides access to all the configurations and steps for Turing complete graph computing.
+ * Any DSL can be constructed based on the methods of both {@code GraphTraversalSource} and {@link GraphTraversal}.
+ *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public class GraphTraversalSource implements TraversalSource {
 
-    public static Builder standard() {
-        return GraphTraversalSource.build().engine(StandardTraversalEngine.build());
-    }
+    private final Graph graph;
+    private TraversalStrategies strategies;
 
-    public static Builder computer() {
-        return GraphTraversalSource.build().engine(ComputerTraversalEngine.build());
-    }
-
-    public static Builder computer(final Class<? extends GraphComputer> graphComputerClass) {
-        return GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(graphComputerClass));
-    }
-
-    ////
-
-    private final transient Graph graph;
-    private final TraversalEngine.Builder engineBuilder;
-    private final TraversalStrategies strategies;
-    private final List<TraversalStrategy> withStrategies;
-    private final List<Class<? extends TraversalStrategy>> withoutStrategies;
-
-    private GraphTraversalSource(final Graph graph, final TraversalEngine.Builder engineBuilder, final List<TraversalStrategy> withStrategies, final List<Class<? extends TraversalStrategy>> withoutStrategies) {
+    public GraphTraversalSource(final Graph graph, final TraversalStrategies traversalStrategies) {
         this.graph = graph;
-        this.engineBuilder = engineBuilder;
-        this.withStrategies = withStrategies;
-        this.withoutStrategies = withoutStrategies;
-        this.withStrategies.addAll(engineBuilder.getWithStrategies());
-        this.withoutStrategies.addAll(engineBuilder.getWithoutStrategies());
-        final TraversalStrategies tempStrategies = TraversalStrategies.GlobalCache.getStrategies(this.graph.getClass());
-        this.strategies = withStrategies.isEmpty() && withoutStrategies.isEmpty() ?
-                tempStrategies :
-                tempStrategies.clone()
-                        .addStrategies(withStrategies.toArray(new TraversalStrategy[withStrategies.size()]))
-                        .removeStrategies(withoutStrategies.toArray(new Class[withoutStrategies.size()]));
+        this.strategies = traversalStrategies;
+    }
+
+    public GraphTraversalSource(final Graph graph) {
+        this(graph, TraversalStrategies.GlobalCache.getStrategies(graph.getClass()));
     }
 
     private <S> GraphTraversal.Admin<S, S> generateTraversal() {
         final GraphTraversal.Admin<S, S> traversal = new DefaultGraphTraversal<>(this.graph);
-        final TraversalEngine engine = this.engineBuilder.create(this.graph);
-        traversal.setEngine(engine);
         traversal.setStrategies(this.strategies);
         return traversal;
     }
 
-    public <S> GraphTraversal<S, S> inject(S... starts) {
-        return (GraphTraversal<S, S>) this.generateTraversal().inject(starts);
+    @Override
+    public TraversalStrategies getStrategies() {
+        return this.strategies;
     }
 
+    @Override
+    public Graph getGraph() {
+        return this.graph;
+    }
+
+    @SuppressWarnings("CloneDoesntDeclareCloneNotSupportedException")
+    public GraphTraversalSource clone() {
+        try {
+            final GraphTraversalSource clone = (GraphTraversalSource) super.clone();
+            clone.strategies = this.strategies.clone();
+            return clone;
+        } catch (final CloneNotSupportedException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
+
+    //// CONFIGURATIONS
+
+    @Override
+    public GraphTraversalSource withComputer(final Computer computer) {
+        return (GraphTraversalSource) TraversalSource.super.withComputer(computer);
+    }
+
+    @Override
+    public GraphTraversalSource withComputer(final Class<? extends GraphComputer> graphComputerClass) {
+        return (GraphTraversalSource) TraversalSource.super.withComputer(graphComputerClass);
+    }
+
+    @Override
+    public GraphTraversalSource withComputer() {
+        return (GraphTraversalSource) TraversalSource.super.withComputer();
+    }
+
+    @Override
+    public GraphTraversalSource withStrategies(final TraversalStrategy... traversalStrategies) {
+        return (GraphTraversalSource) TraversalSource.super.withStrategies(traversalStrategies);
+    }
+
+    @Override
+    @SuppressWarnings({"unchecked", "varargs"})
+    public GraphTraversalSource withoutStrategies(final Class<? extends TraversalStrategy>... traversalStrategyClasses) {
+        return (GraphTraversalSource) TraversalSource.super.withoutStrategies(traversalStrategyClasses);
+    }
+
+    @Override
+    public <A> GraphTraversalSource withSideEffect(final String key, final Supplier<A> initialValue, final BinaryOperator<A> reducer) {
+        return (GraphTraversalSource) TraversalSource.super.withSideEffect(key, initialValue, reducer);
+    }
+
+    @Override
+    public <A> GraphTraversalSource withSideEffect(final String key, final A initialValue, final BinaryOperator<A> reducer) {
+        return (GraphTraversalSource) TraversalSource.super.withSideEffect(key, initialValue, reducer);
+    }
+
+    @Override
+    public <A> GraphTraversalSource withSideEffect(final String key, final A initialValue) {
+        return (GraphTraversalSource) TraversalSource.super.withSideEffect(key, initialValue);
+    }
+
+    @Override
+    public <A> GraphTraversalSource withSideEffect(final String key, final Supplier<A> initialValue) {
+        return (GraphTraversalSource) TraversalSource.super.withSideEffect(key, initialValue);
+    }
+
+    @Override
+    public <A> GraphTraversalSource withSack(final Supplier<A> initialValue, final UnaryOperator<A> splitOperator, final BinaryOperator<A> mergeOperator) {
+        return (GraphTraversalSource) TraversalSource.super.withSack(initialValue, splitOperator, mergeOperator);
+    }
+
+    @Override
+    public <A> GraphTraversalSource withSack(final A initialValue, final UnaryOperator<A> splitOperator, final BinaryOperator<A> mergeOperator) {
+        return (GraphTraversalSource) TraversalSource.super.withSack(initialValue, splitOperator, mergeOperator);
+    }
+
+    @Override
+    public <A> GraphTraversalSource withSack(final A initialValue) {
+        return (GraphTraversalSource) TraversalSource.super.withSack(initialValue);
+    }
+
+    @Override
+    public <A> GraphTraversalSource withSack(final Supplier<A> initialValue) {
+        return (GraphTraversalSource) TraversalSource.super.withSack(initialValue);
+    }
+
+    @Override
+    public <A> GraphTraversalSource withSack(final Supplier<A> initialValue, final UnaryOperator<A> splitOperator) {
+        return (GraphTraversalSource) TraversalSource.super.withSack(initialValue, splitOperator);
+    }
+
+    @Override
+    public <A> GraphTraversalSource withSack(final A initialValue, final UnaryOperator<A> splitOperator) {
+        return (GraphTraversalSource) TraversalSource.super.withSack(initialValue, splitOperator);
+    }
+
+    @Override
+    public <A> GraphTraversalSource withSack(final Supplier<A> initialValue, final BinaryOperator<A> mergeOperator) {
+        return (GraphTraversalSource) TraversalSource.super.withSack(initialValue, mergeOperator);
+    }
+
+    @Override
+    public <A> GraphTraversalSource withSack(final A initialValue, final BinaryOperator<A> mergeOperator) {
+        return (GraphTraversalSource) TraversalSource.super.withSack(initialValue, mergeOperator);
+    }
+
+    public GraphTraversalSource withBulk(final boolean useBulk) {
+        if (!useBulk) {
+            final GraphTraversalSource clone = this.clone();
+            RequirementsStrategy.addRequirements(clone.strategies, TraverserRequirement.ONE_BULK);
+            return clone;
+        } else {
+            return this;
+        }
+    }
+
+    public GraphTraversalSource withPath() {
+        final GraphTraversalSource clone = this.clone();
+        RequirementsStrategy.addRequirements(clone.strategies, TraverserRequirement.PATH);
+        return clone;
+    }
+
+    //// SPAWNS
+
     /**
      * @deprecated As of release 3.1.0, replaced by {@link #addV()}
      */
@@ -116,6 +217,10 @@
         return traversal.addStep(new AddVertexStartStep(traversal, null));
     }
 
+    public <S> GraphTraversal<S, S> inject(S... starts) {
+        return (GraphTraversal<S, S>) this.generateTraversal().inject(starts);
+    }
+
     public GraphTraversal<Vertex, Vertex> V(final Object... vertexIds) {
         final GraphTraversal.Admin<Vertex, Vertex> traversal = this.generateTraversal();
         return traversal.addStep(new GraphStep<>(traversal, Vertex.class, true, vertexIds));
@@ -126,108 +231,57 @@
         return traversal.addStep(new GraphStep<>(traversal, Edge.class, true, edgesIds));
     }
 
-    //// UTILITIES
-
-    public GraphTraversalSourceStub withSideEffect(final String key, final Supplier supplier) {
-        final GraphTraversal.Admin traversal = this.generateTraversal();
-        traversal.getSideEffects().registerSupplier(key, supplier);
-        return new GraphTraversalSourceStub(traversal);
-    }
-
-    public GraphTraversalSourceStub withSideEffect(final String key, final Object object) {
-        final GraphTraversal.Admin traversal = this.generateTraversal();
-        traversal.getSideEffects().registerSupplier(key, new ConstantSupplier<>(object));
-        return new GraphTraversalSourceStub(traversal);
-    }
-
-    public <A> GraphTraversalSourceStub withSack(final A initialValue) {
-        return this.withSack(initialValue, null, null);
-    }
-
-    public <A> GraphTraversalSourceStub withSack(final Supplier<A> initialValue) {
-        final GraphTraversal.Admin traversal = this.generateTraversal();
-        traversal.getSideEffects().setSack(initialValue, null, null);
-        return new GraphTraversalSourceStub(traversal);
-    }
-
-    public <A> GraphTraversalSourceStub withSack(final Supplier<A> initialValue, final UnaryOperator<A> splitOperator) {
-        return this.withSack(initialValue, splitOperator, null);
-    }
-
-    public <A> GraphTraversalSourceStub withSack(final A initialValue, final UnaryOperator<A> splitOperator) {
-        return this.withSack(initialValue, splitOperator, null);
-    }
-
-    public <A> GraphTraversalSourceStub withSack(final Supplier<A> initialValue, final BinaryOperator<A> mergeOperator) {
-        return this.withSack(initialValue, null, mergeOperator);
-    }
-
-    public <A> GraphTraversalSourceStub withSack(final A initialValue, final BinaryOperator<A> mergeOperator) {
-        return this.withSack(initialValue, null, mergeOperator);
-    }
-
-    public <A> GraphTraversalSourceStub withSack(final Supplier<A> initialValue, final UnaryOperator<A> splitOperator, final BinaryOperator<A> mergeOperator) {
-        final GraphTraversal.Admin traversal = this.generateTraversal();
-        traversal.getSideEffects().setSack(initialValue, splitOperator, mergeOperator);
-        return new GraphTraversalSourceStub(traversal);
-    }
-
-    public <A> GraphTraversalSourceStub withSack(final A initialValue, final UnaryOperator<A> splitOperator, final BinaryOperator<A> mergeOperator) {
-        final GraphTraversal.Admin traversal = this.generateTraversal();
-        traversal.getSideEffects().setSack(new ConstantSupplier<>(initialValue), splitOperator, mergeOperator);
-        return new GraphTraversalSourceStub(traversal);
-    }
-
-    public GraphTraversalSourceStub withBulk(final boolean useBulk) {
-        final GraphTraversal.Admin traversal = this.generateTraversal();
-        traversal.addTraverserRequirement(useBulk ? TraverserRequirement.BULK : TraverserRequirement.ONE_BULK);
-        return new GraphTraversalSourceStub(traversal);
-    }
-
-    public <S> GraphTraversalSourceStub withPath() {
-        final GraphTraversal.Admin traversal = this.generateTraversal();
-        traversal.addTraverserRequirement(TraverserRequirement.PATH);
-        return new GraphTraversalSourceStub(traversal);
-    }
 
     public Transaction tx() {
         return this.graph.tx();
     }
 
-    public static Builder build() {
-        return new Builder();
-    }
-
-    @Override
-    public List<TraversalStrategy> getStrategies() {
-        return Collections.unmodifiableList(this.strategies.toList());
-    }
-
-    @Override
-    public Optional<GraphComputer> getGraphComputer() {
-        return this.engineBuilder.create(this.graph).getGraphComputer();
-    }
-
-    @Override
-    public Optional<Graph> getGraph() {
-        return Optional.ofNullable(this.graph);
-    }
-
-    @Override
-    public GraphTraversalSource.Builder asBuilder() {
-        final GraphTraversalSource.Builder builder = GraphTraversalSource.build().engine(this.engineBuilder);
-        this.withStrategies.forEach(builder::with);
-        this.withoutStrategies.forEach(builder::without);
-        return builder;
-    }
 
     @Override
     public String toString() {
         return StringFactory.traversalSourceString(this);
     }
 
-    //////
+    //////////////////
+    // DEPRECATION //
+    /////////////////
 
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
+    public static Builder build() {
+        return new Builder();
+    }
+
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
+    public static Builder standard() {
+        return GraphTraversalSource.build().engine(StandardTraversalEngine.build());
+    }
+
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
+    public static Builder computer() {
+        return GraphTraversalSource.build().engine(ComputerTraversalEngine.build());
+    }
+
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
+    public static Builder computer(final Class<? extends GraphComputer> graphComputerClass) {
+        return GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(graphComputerClass));
+    }
+
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
     public final static class Builder implements TraversalSource.Builder<GraphTraversalSource> {
 
         private TraversalEngine.Builder engineBuilder = StandardTraversalEngine.build();
@@ -237,128 +291,50 @@
         private Builder() {
         }
 
+        /**
+         * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+         */
+        @Deprecated
         @Override
         public Builder engine(final TraversalEngine.Builder engineBuilder) {
             this.engineBuilder = engineBuilder;
             return this;
         }
 
+        /**
+         * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+         */
+        @Deprecated
         @Override
         public Builder with(final TraversalStrategy strategy) {
             this.withStrategies.add(strategy);
             return this;
         }
 
+        /**
+         * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+         */
+        @Deprecated
         @Override
         public TraversalSource.Builder without(final Class<? extends TraversalStrategy> strategyClass) {
             this.withoutStrategies.add(strategyClass);
             return this;
         }
 
-        @Override
-        public GraphTraversalSource create(final Graph graph) {
-            return new GraphTraversalSource(graph, this.engineBuilder, this.withStrategies, this.withoutStrategies);
-        }
-    }
-
-    public static class GraphTraversalSourceStub {
-
-        private final GraphTraversal.Admin traversal;
-
-        public GraphTraversalSourceStub(final GraphTraversal.Admin traversal) {
-            this.traversal = traversal;
-        }
-
-        public <S> GraphTraversal<S, S> inject(S... starts) {
-            return this.traversal.inject(starts);
-        }
-
         /**
-         * @deprecated As of release 3.1.0, replaced by {@link #addV()}
+         * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
          */
         @Deprecated
-        public GraphTraversal<Vertex, Vertex> addV(final Object... keyValues) {
-            this.traversal.addStep(new AddVertexStartStep(this.traversal, null));
-            ((AddVertexStartStep) this.traversal.getEndStep()).addPropertyMutations(keyValues);
-            return this.traversal;
-        }
-
-        public GraphTraversal<Vertex, Vertex> addV(final String label) {
-            return this.traversal.addStep(new AddVertexStartStep(this.traversal, label));
-        }
-
-        public GraphTraversal<Vertex, Vertex> addV() {
-            return this.traversal.addStep(new AddVertexStartStep(this.traversal, null));
-        }
-
-        public GraphTraversal<Vertex, Vertex> V(final Object... vertexIds) {
-            return this.traversal.addStep(new GraphStep<>(this.traversal, Vertex.class, true, vertexIds));
-        }
-
-        public GraphTraversal<Edge, Edge> E(final Object... edgesIds) {
-            return this.traversal.addStep(new GraphStep<>(this.traversal, Edge.class, true, edgesIds));
-        }
-
-        //// UTILITIES
-
-        public GraphTraversalSourceStub withSideEffect(final String key, final Supplier supplier) {
-            this.traversal.getSideEffects().registerSupplier(key, supplier);
-            return this;
-        }
-
-        public GraphTraversalSourceStub withSideEffect(final String key, final Object object) {
-            this.traversal.getSideEffects().registerSupplier(key, new ConstantSupplier<>(object));
-            return this;
-        }
-
-        public <A> GraphTraversalSourceStub withSack(final A initialValue) {
-            this.traversal.getSideEffects().setSack(new ConstantSupplier<>(initialValue), null, null);
-            return this;
-        }
-
-        public <A> GraphTraversalSourceStub withSack(final Supplier<A> initialValue) {
-            this.traversal.getSideEffects().setSack(initialValue, null, null);
-            return this;
-        }
-
-        public <A> GraphTraversalSourceStub withSack(final Supplier<A> initialValue, final UnaryOperator<A> splitOperator) {
-            this.traversal.getSideEffects().setSack(initialValue, splitOperator, null);
-            return this;
-        }
-
-        public <A> GraphTraversalSourceStub withSack(final A initialValue, final UnaryOperator<A> splitOperator) {
-            this.traversal.getSideEffects().setSack(new ConstantSupplier<>(initialValue), splitOperator, null);
-            return this;
-        }
-
-        public <A> GraphTraversalSourceStub withSack(final Supplier<A> initialValue, final BinaryOperator<A> mergeOperator) {
-            this.traversal.getSideEffects().setSack(initialValue, null, mergeOperator);
-            return this;
-        }
-
-        public <A> GraphTraversalSourceStub withSack(final A initialValue, final BinaryOperator<A> mergeOperator) {
-            this.traversal.getSideEffects().setSack(new ConstantSupplier<>(initialValue), null, mergeOperator);
-            return this;
-        }
-
-        public <A> GraphTraversalSourceStub withSack(final Supplier<A> initialValue, final UnaryOperator<A> splitOperator, final BinaryOperator<A> mergeOperator) {
-            this.traversal.getSideEffects().setSack(initialValue, splitOperator, mergeOperator);
-            return this;
-        }
-
-        public <A> GraphTraversalSourceStub withSack(final A initialValue, final UnaryOperator<A> splitOperator, final BinaryOperator<A> mergeOperator) {
-            this.traversal.getSideEffects().setSack(new ConstantSupplier<>(initialValue), splitOperator, mergeOperator);
-            return this;
-        }
-
-        public GraphTraversalSourceStub withBulk(final boolean useBulk) {
-            this.traversal.addTraverserRequirement(useBulk ? TraverserRequirement.BULK : TraverserRequirement.ONE_BULK);
-            return this;
-        }
-
-        public GraphTraversalSourceStub withPath() {
-            this.traversal.addTraverserRequirement(TraverserRequirement.PATH);
-            return this;
+        @Override
+        public GraphTraversalSource create(final Graph graph) {
+            GraphTraversalSource traversalSource = new GraphTraversalSource(graph);
+            if (!this.withStrategies.isEmpty())
+                traversalSource = traversalSource.withStrategies(this.withStrategies.toArray(new TraversalStrategy[this.withStrategies.size()]));
+            if (!this.withoutStrategies.isEmpty())
+                traversalSource = traversalSource.withoutStrategies(this.withoutStrategies.toArray(new Class[this.withoutStrategies.size()]));
+            if (this.engineBuilder instanceof ComputerTraversalEngine.Builder)
+                traversalSource = (GraphTraversalSource) ((ComputerTraversalEngine.Builder) this.engineBuilder).create(traversalSource);
+            return traversalSource;
         }
     }
 }
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 befae78..710fd45 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
@@ -269,6 +269,13 @@
     }
 
     /**
+     * @see GraphTraversal#project(String, String...)
+     */
+    public static <A, B> GraphTraversal<A, Map<String, B>> project(final String projectKey, final String... projectKeys) {
+        return __.<A>start().project(projectKey, projectKeys);
+    }
+
+    /**
      * @see GraphTraversal#select(Column)
      */
     public static <A, B> GraphTraversal<A, Collection<B>> select(final Column column) {
@@ -977,6 +984,13 @@
     }
 
     /**
+     * @see GraphTraversal#optional(Traversal)
+     */
+    public static <A, B> GraphTraversal<A, B> optional(final Traversal<?, B> optionalTraversal) {
+        return __.<A>start().optional(optionalTraversal);
+    }
+
+    /**
      * @see GraphTraversal#union(Traversal[])
      */
     public static <A, B> GraphTraversal<A, B> union(final Traversal<?, B>... traversals) {
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/ComputerTraversalEngine.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/ComputerTraversalEngine.java
index 8461791..3786280 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/ComputerTraversalEngine.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/ComputerTraversalEngine.java
@@ -18,26 +18,26 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.engine;
 
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ComputerResultStep;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.ProfileStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
 
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Optional;
-import java.util.Set;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
  */
+@Deprecated
 public final class ComputerTraversalEngine implements TraversalEngine {
 
     private final transient GraphComputer graphComputer;
@@ -46,88 +46,126 @@
         this.graphComputer = graphComputer;
     }
 
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
     @Override
     public Type getType() {
         return Type.COMPUTER;
     }
 
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
     @Override
     public String toString() {
-        return StringFactory.traversalEngineString(this);
+        return this.getClass().getSimpleName().toLowerCase();
     }
 
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
     @Override
     public Optional<GraphComputer> getGraphComputer() {
         return Optional.ofNullable(this.graphComputer);
     }
 
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
     public static Builder build() {
         return new Builder();
     }
 
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
     public final static class Builder implements TraversalEngine.Builder {
 
         private Class<? extends GraphComputer> graphComputerClass;
         private int workers = -1;
-        private static final List<TraversalStrategy> WITH_STRATEGIES = Collections.singletonList(ComputerResultStrategy.instance());
+        private Traversal<Vertex, Vertex> vertexFilter = null;
+        private Traversal<Vertex, Edge> edgeFilter = null;
 
-
+        /**
+         * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+         */
+        @Deprecated
         @Override
         public List<TraversalStrategy> getWithStrategies() {
-            return WITH_STRATEGIES;
+            return Collections.emptyList();
         }
 
+        /**
+         * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+         */
+        @Deprecated
         public Builder workers(final int workers) {
             this.workers = workers;
             return this;
         }
 
+        /**
+         * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+         */
+        @Deprecated
         public Builder computer(final Class<? extends GraphComputer> graphComputerClass) {
             this.graphComputerClass = graphComputerClass;
             return this;
         }
 
+        /**
+         * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+         */
+        @Deprecated
+        public Builder vertices(final Traversal<Vertex, Vertex> vertexFilter) {
+            this.vertexFilter = vertexFilter;
+            return this;
+        }
 
+        /**
+         * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+         */
+        @Deprecated
+        public Builder edges(final Traversal<Vertex, Edge> edgeFilter) {
+            this.edgeFilter = edgeFilter;
+            return this;
+        }
+
+
+        /**
+         * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+         */
+        @Deprecated
         public ComputerTraversalEngine create(final Graph graph) {
-            final GraphComputer graphComputer = null == this.graphComputerClass ? graph.compute() : graph.compute(this.graphComputerClass);
+            GraphComputer graphComputer = null == this.graphComputerClass ? graph.compute() : graph.compute(this.graphComputerClass);
             if (-1 != this.workers)
-                graphComputer.workers(this.workers);
+                graphComputer = graphComputer.workers(this.workers);
+            if (null != this.vertexFilter)
+                graphComputer = graphComputer.vertices(this.vertexFilter);
+            if (null != this.edgeFilter)
+                graphComputer = graphComputer.edges(this.edgeFilter);
             return new ComputerTraversalEngine(graphComputer);
         }
-    }
 
-    ////
-
-    public static class ComputerResultStrategy extends AbstractTraversalStrategy<TraversalStrategy.FinalizationStrategy> implements TraversalStrategy.FinalizationStrategy {
-
-        private static final ComputerResultStrategy INSTANCE = new ComputerResultStrategy();
-        private static final Set<Class<? extends FinalizationStrategy>> PRIORS = new HashSet<>();
-
-        static {
-            PRIORS.add(ProfileStrategy.class);
-        }
-
-
-        private ComputerResultStrategy() {
-
-        }
-
-        @Override
-        public void apply(final Traversal.Admin<?, ?> traversal) {
-            if (traversal.getParent() instanceof EmptyStep) {
-                final TraversalEngine engine = traversal.getEngine();
-                if (engine.isComputer())
-                    traversal.addStep(new ComputerResultStep<>(traversal, engine.getGraphComputer().get(), true));
-            }
-        }
-
-        @Override
-        public Set<Class<? extends FinalizationStrategy>> applyPrior() {
-            return PRIORS;
-        }
-
-        public static ComputerResultStrategy instance() {
-            return INSTANCE;
+        /**
+         * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+         */
+        @Deprecated
+        public TraversalSource create(final GraphTraversalSource traversalSource) {
+            Computer computer = null == this.graphComputerClass ? Computer.compute() : Computer.compute(this.graphComputerClass);
+            if (-1 != this.workers)
+                computer = computer.workers(this.workers);
+            if (null != this.vertexFilter)
+                computer = computer.vertices(this.vertexFilter);
+            if (null != this.edgeFilter)
+                computer = computer.edges(this.edgeFilter);
+            return traversalSource.withComputer(computer);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/StandardTraversalEngine.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/StandardTraversalEngine.java
index d2a62f1..1dbd8e7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/StandardTraversalEngine.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/engine/StandardTraversalEngine.java
@@ -18,55 +18,87 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.engine;
 
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.util.Optional;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
  */
+@Deprecated
 public final class StandardTraversalEngine implements TraversalEngine {
 
     private static final StandardTraversalEngine INSTANCE = new StandardTraversalEngine();
 
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
     private StandardTraversalEngine() {
 
     }
 
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
     @Override
     public Type getType() {
         return Type.STANDARD;
     }
 
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
     @Override
     public Optional<GraphComputer> getGraphComputer() {
         return Optional.empty();
     }
 
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
     public static Builder build() {
         return Builder.INSTANCE;
     }
 
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
     public static StandardTraversalEngine instance() {
         return INSTANCE;
     }
 
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
     @Override
     public String toString() {
-        return StringFactory.traversalEngineString(this);
+        return this.getClass().getSimpleName().toLowerCase();
     }
 
+    /**
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+     */
+    @Deprecated
     public final static class Builder implements TraversalEngine.Builder {
 
         private static final Builder INSTANCE = new Builder();
 
+        /**
+         * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
+         */
+        @Deprecated
         @Override
         public TraversalEngine create(final Graph graph) {
             return StandardTraversalEngine.INSTANCE;
         }
     }
-}
+}
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java
index 2f27372..fb1fb73 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/AbstractLambdaTraversal.java
@@ -20,15 +20,13 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.O_TraverserGenerator;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_TraverserGenerator;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversalSideEffects;
 import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversalStrategies;
@@ -71,18 +69,8 @@
     }
 
     @Override
-    public TraversalEngine getEngine() {
-        return StandardTraversalEngine.instance();
-    }
-
-    @Override
     public TraverserGenerator getTraverserGenerator() {
-        return O_TraverserGenerator.instance();
-    }
-
-    @Override
-    public void addTraverserRequirement(final TraverserRequirement traverserRequirement) {
-
+        return B_O_TraverserGenerator.instance();
     }
 
     @Override
@@ -135,7 +123,7 @@
     }
 
     @Override
-    public void addStart(final Traverser<S> start) {
+    public void addStart(final Traverser.Admin<S> start) {
     }
 
     @Override
@@ -144,11 +132,6 @@
     }
 
     @Override
-    public void setEngine(final TraversalEngine engine) {
-
-    }
-
-    @Override
     public Optional<Graph> getGraph() {
         return Optional.empty();
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/ColumnTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/ColumnTraversal.java
new file mode 100644
index 0000000..5023805
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/ColumnTraversal.java
@@ -0,0 +1,60 @@
+/*
+ * 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.lambda;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.structure.Column;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class ColumnTraversal extends AbstractLambdaTraversal {
+
+    private Object selection;
+    private final Column column;
+
+    public ColumnTraversal(final Column column) {
+        this.column = column;
+    }
+
+    @Override
+    public Object next() {
+        return this.selection;
+    }
+
+    @Override
+    public void addStart(final Traverser.Admin start) {
+        this.selection = this.column.apply(start.get());
+    }
+
+    @Override
+    public String toString() {
+        return this.column.toString();
+    }
+
+    public Column getColumn() {
+        return this.column;
+    }
+
+    @Override
+    public int hashCode() {
+        return this.getClass().hashCode() ^ this.column.hashCode();
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/ElementValueTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/ElementValueTraversal.java
index a86be39..a38e8e2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/ElementValueTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/ElementValueTraversal.java
@@ -39,7 +39,7 @@
     }
 
     @Override
-    public void addStart(final Traverser<Element> start) {
+    public void addStart(final Traverser.Admin<Element> start) {
         this.value = start.get().value(this.propertyKey);
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/IdentityTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/IdentityTraversal.java
index 88496c3..98f85c0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/IdentityTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/IdentityTraversal.java
@@ -33,7 +33,7 @@
     }
 
     @Override
-    public void addStart(final Traverser<S> start) {
+    public void addStart(final Traverser.Admin<S> start) {
         this.s = start.get();
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/LoopTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/LoopTraversal.java
index c0c40be..ae03c94 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/LoopTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/LoopTraversal.java
@@ -42,7 +42,7 @@
     }
 
     @Override
-    public void addStart(final Traverser<S> start) {
+    public void addStart(final Traverser.Admin<S> start) {
         this.allow = start.loops() >= this.maxLoops;
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/TokenTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/TokenTraversal.java
index a9a6884..4f98a54 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/TokenTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/TokenTraversal.java
@@ -40,7 +40,7 @@
     }
 
     @Override
-    public void addStart(final Traverser<S> start) {
+    public void addStart(final Traverser.Admin<S> start) {
         this.e = (E) this.t.apply(start.get());
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Barrier.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Barrier.java
index 300ebaf..1289f64 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Barrier.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Barrier.java
@@ -19,17 +19,54 @@
 
 package org.apache.tinkerpop.gremlin.process.traversal.step;
 
+import java.util.NoSuchElementException;
+
 /**
  * A Barrier is any step that requires all left traversers to be processed prior to emitting result traversers to the right.
  * Note that some barrier steps may be "lazy" in that if their algorithm permits, they can emit right traversers prior to all traversers being aggregated.
+ * A barrier is the means by which a distributed step in {@link org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram} is synchronized and made to behave a single step.
+ * All Barrier steps implement {@link MemoryComputing} as that is how barriers communicate with one another in {@link org.apache.tinkerpop.gremlin.process.computer.GraphComputer}.
  *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface Barrier {
+public interface Barrier<B> extends MemoryComputing<B> {
 
     /**
      * Process all left traversers by do not yield the resultant output.
      * This method is useful for steps like {@link org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep}, where traversers can be processed "on the fly" and thus, reduce memory consumption.
      */
     public void processAllStarts();
+
+    /**
+     * Whether or not the step has an accessible barrier.
+     *
+     * @return whether a barrier exists or not
+     */
+    public boolean hasNextBarrier();
+
+    /**
+     * Get the next barrier within this step.
+     * Barriers from parallel steps can be the be merged to create a single step with merge barriers.
+     *
+     * @return the next barrier of the step
+     * @throws NoSuchElementException
+     */
+    public B nextBarrier() throws NoSuchElementException;
+
+    /**
+     * Add a barrier to the step.
+     * This typically happens when multiple parallel barriers need to become one barrier at a single step.
+     *
+     * @param barrier the barrier to merge in
+     */
+    public void addBarrier(final B barrier);
+
+    /**
+     * A way to hard set that the barrier is complete.
+     * This is necessary when parallel barriers don't all have barriers and need hard resetting.
+     * The default implementation does nothing.
+     */
+    public default void done() {
+
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ByModulating.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ByModulating.java
new file mode 100644
index 0000000..bea1b56
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ByModulating.java
@@ -0,0 +1,102 @@
+/*
+ * 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;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Order;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.ColumnTraversal;
+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.TokenTraversal;
+import org.apache.tinkerpop.gremlin.structure.Column;
+import org.apache.tinkerpop.gremlin.structure.T;
+
+import java.util.Comparator;
+import java.util.function.Function;
+
+/**
+ * A {@code ByModulating} step is able to take {@link org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal#by} calls.
+ * All the methods have default implementations excecpt {@link ByModulating#modulateBy(Traversal.Admin)}.
+ * In short, given a traversal, what should the ByModulating step do with it.
+ *
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public interface ByModulating {
+
+    public default void modulateBy(final Traversal.Admin<?, ?> traversal) throws UnsupportedOperationException {
+        throw new UnsupportedOperationException("The by()-modulating step does not support traversal-based modulation: " + this);
+    }
+
+    public default void modulateBy(final String string) throws UnsupportedOperationException {
+        this.modulateBy(new ElementValueTraversal(string));
+    }
+
+    public default void modulateBy(final T token) throws UnsupportedOperationException {
+        this.modulateBy(new TokenTraversal(token));
+    }
+
+    public default void modulateBy(final Function function) throws UnsupportedOperationException {
+        if (function instanceof T)
+            this.modulateBy((T) function);
+        else
+            this.modulateBy(__.map(new FunctionTraverser<>(function)).asAdmin());
+    }
+
+    public default void modulateBy() throws UnsupportedOperationException {
+        this.modulateBy(new IdentityTraversal());
+    }
+
+    //////
+
+    public default void modulateBy(final Traversal.Admin<?, ?> traversal, final Comparator comparator) {
+        throw new UnsupportedOperationException("The by()-modulating step does not support traversal/comparator-based modulation: " + this);
+    }
+
+    public default void modulateBy(final String key, final Comparator comparator) {
+        this.modulateBy(new ElementValueTraversal<>(key), comparator);
+    }
+
+    public default void modulateBy(final Comparator comparator) {
+        this.modulateBy(new IdentityTraversal<>(), comparator);
+    }
+
+    public default void modulateBy(final Order order) {
+        this.modulateBy(new IdentityTraversal<>(), order);
+    }
+
+    public default void modulateBy(final T t, final Comparator comparator) {
+        this.modulateBy(new TokenTraversal<>(t), comparator);
+    }
+
+    public default void modulateBy(final Column column, final Comparator comparator) {
+        this.modulateBy(new ColumnTraversal(column), comparator);
+    }
+
+    public default void modulateBy(final Function function, final Comparator comparator) {
+        if (function instanceof T)
+            this.modulateBy((T) function, comparator);
+        else if (function instanceof Column)
+            this.modulateBy((Column) function, comparator);
+        else
+            this.modulateBy(__.map(new FunctionTraverser<>(function)).asAdmin(), comparator);
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Bypassing.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Bypassing.java
index 82eb395..2e67ff7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Bypassing.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Bypassing.java
@@ -19,6 +19,9 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step;
 
 /**
+ * A {@code ByPassing} step can be stated (at runtime) to simply enact the identity function.
+ * This is useful in for steps that need to dynamically change their behavior on {@link org.apache.tinkerpop.gremlin.process.computer.GraphComputer}.
+ *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public interface Bypassing {
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ComparatorHolder.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ComparatorHolder.java
index e8a7141..00d7b37 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ComparatorHolder.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ComparatorHolder.java
@@ -18,16 +18,33 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step;
 
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.IdentityTraversal;
+import org.javatuples.Pair;
+
 import java.util.Comparator;
 import java.util.List;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface ComparatorHolder<S> {
+public interface ComparatorHolder<S, C extends Comparable> {
 
-    public void addComparator(final Comparator<S> comparator);
+    /**
+     * Add a {@link Traversal}-based {@link Comparator} to the holder.
+     * If no traversal is needed, use {@link IdentityTraversal}.
+     *
+     * @param traversal  the traversal to pre-process the object by.
+     * @param comparator the comparator to compare the result of the object after traversal processing
+     */
+    public void addComparator(final Traversal.Admin<S, C> traversal, final Comparator<C> comparator);
 
-    public List<Comparator<S>> getComparators();
+    /**
+     * Get the comparators associated with this holder.
+     * The comparators are ordered according to their oder of operation.
+     *
+     * @return a list of {@link Traversal}/{@link Comparator}-pairs
+     */
+    public List<Pair<Traversal.Admin<S, C>, Comparator<C>>> getComparators();
 
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Generating.java
similarity index 63%
copy from gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
copy to gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Generating.java
index cb1aeec..319b4a1 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Generating.java
@@ -16,15 +16,24 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.tinkerpop.gremlin.process.traversal.step;
 
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-
 /**
+ * A {@code Generating} step is one that has a side-effect that needs post-processing prior to being returned.
+ *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface EngineDependent {
+public interface Generating<S, E> {
 
-    public void onEngine(final TraversalEngine traversalEngine);
-
+    /**
+     * Post-process the side-effect and return the post-processed side-effect.
+     * The default implementation is simply the identity function and returns the argument.
+     *
+     * @param preCap the pre-processed side-effect.
+     * @return the post-processed side-effect.
+     */
+    public default E generateFinalResult(final S preCap) {
+        return (E) preCap;
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GraphComputing.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GraphComputing.java
new file mode 100644
index 0000000..0028eb1
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/GraphComputing.java
@@ -0,0 +1,35 @@
+/*
+ * 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;
+
+/**
+ * A {@code GraphComputing} step is one that will change its behavior whether its on a {@link org.apache.tinkerpop.gremlin.process.computer.GraphComputer} or not.
+ * {@link org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategy} is responsible for calling the {@link GraphComputing#onGraphComputer()} method.
+ * This method is only called for global children steps of a {@link TraversalParent}.
+ *
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public interface GraphComputing {
+
+    /**
+     * The step will be executing on a {@link org.apache.tinkerpop.gremlin.process.computer.GraphComputer}.
+     */
+    public void onGraphComputer();
+
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/LambdaHolder.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/LambdaHolder.java
index 11d56be..2674eec 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/LambdaHolder.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/LambdaHolder.java
@@ -19,6 +19,10 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step;
 
 /**
+ * This is a marker interface stating that the {@link org.apache.tinkerpop.gremlin.process.traversal.Step} contains a
+ * lambda/anonymous function. This information is typically used by a {@link org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy}
+ * in a verification stage as lambdas are not serializable and thus, can not be propagated over the network.
+ *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public interface LambdaHolder {
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/LocalBarrier.java
similarity index 65%
copy from gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
copy to gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/LocalBarrier.java
index cb1aeec..899c43b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/LocalBarrier.java
@@ -16,15 +16,21 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.tinkerpop.gremlin.process.traversal.step;
 
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface EngineDependent {
+public interface LocalBarrier<S> extends Barrier<TraverserSet<S>> {
 
-    public void onEngine(final TraversalEngine traversalEngine);
+    public default MemoryComputeKey getMemoryComputeKey() {
+        return MemoryComputeKey.of(((Step) this).getId(), Operator.and, false, true);
+    }
 
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/MemoryComputing.java
similarity index 65%
copy from gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
copy to gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/MemoryComputing.java
index cb1aeec..c1fdd8e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/MemoryComputing.java
@@ -16,15 +16,22 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.tinkerpop.gremlin.process.traversal.step;
 
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
 
 /**
+ * A {@code MemoryComputing} step uses {@link org.apache.tinkerpop.gremlin.process.computer.Memory} to effect its computation on a {@link org.apache.tinkerpop.gremlin.process.computer.GraphComputer}.
+ *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface EngineDependent {
+public interface MemoryComputing<M> {
 
-    public void onEngine(final TraversalEngine traversalEngine);
-
+    /**
+     * The {@link MemoryComputeKey} that will be used by this step.
+     *
+     * @return the MemoryComputeKey to use
+     */
+    public MemoryComputeKey<M> getMemoryComputeKey();
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/PathProcessor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/PathProcessor.java
index 48a9cc3..0c8ed47 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/PathProcessor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/PathProcessor.java
@@ -19,11 +19,14 @@
 package 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.IdentityTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.lambda.TokenTraversal;
 import org.apache.tinkerpop.gremlin.structure.T;
 
+import java.util.Set;
+
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
@@ -56,4 +59,13 @@
         }
         return max;
     }
+
+    public void setKeepLabels(final Set<String> labels);
+
+    public Set<String> getKeepLabels();
+
+    public static <S> Traverser.Admin<S> processTraverserPathLabels(final Traverser.Admin<S> traverser, final Set<String> labels) {
+        if (null != labels) traverser.keepLabels(labels);
+        return traverser;
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
index 6a1fd91..8c27405 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
@@ -40,8 +40,8 @@
     public static final TraverserRequirement[] TYPICAL_GLOBAL_REQUIREMENTS_ARRAY = new TraverserRequirement[]{TraverserRequirement.OBJECT, TraverserRequirement.LABELED_PATH, TraverserRequirement.SIDE_EFFECTS};
 
     public default <S> S getScopeValue(final Pop pop, final String key, final Traverser.Admin<?> traverser) throws IllegalArgumentException {
-        if (traverser.getSideEffects().get(key).isPresent())
-            return traverser.getSideEffects().<S>get(key).get();
+        if (traverser.getSideEffects().exists(key))
+            return traverser.getSideEffects().<S>get(key);
         ///
         final Object object = traverser.get();
         if (object instanceof Map && ((Map<String, S>) object).containsKey(key))
@@ -55,8 +55,8 @@
     }
 
     public default <S> S getNullableScopeValue(final Pop pop, final String key, final Traverser.Admin<?> traverser) {
-        if (traverser.getSideEffects().get(key).isPresent())
-            return traverser.getSideEffects().<S>get(key).get();
+        if (traverser.getSideEffects().exists(key))
+            return traverser.getSideEffects().<S>get(key);
         ///
         final Object object = traverser.get();
         if (object instanceof Map && ((Map<String, S>) object).containsKey(key))
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/SideEffectCapable.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/SideEffectCapable.java
index 786e161..cba7408 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/SideEffectCapable.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/SideEffectCapable.java
@@ -19,10 +19,19 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step;
 
 /**
+ * A {@code SideEffectCapable} step stores a side-effect data structure accessible by a side-effect key.
+ * All SideEffectCapable steps are {@link Generating} in that they may require a post-processing function once
+ * the side-effect data has been aggregated.
+ *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface SideEffectCapable {
+public interface SideEffectCapable<S, E> extends Generating<S, E> {
 
+    /**
+     * The side-effect key of the step.
+     *
+     * @return the side-effect key
+     */
     public String getSideEffectKey();
 
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/TimesModulating.java
similarity index 79%
rename from gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
rename to gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/TimesModulating.java
index cb1aeec..3e8f32f 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/TimesModulating.java
@@ -16,15 +16,15 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.tinkerpop.gremlin.process.traversal.step;
 
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-
 /**
+ * A {@code TimesModulating} step is one that can do something with {@link org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal#times(int)}.
+ *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface EngineDependent {
+public interface TimesModulating {
 
-    public void onEngine(final TraversalEngine traversalEngine);
-
+    public void modulateTimes(final int times);
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/TraversalParent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/TraversalParent.java
index 14d67de..33272ab 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/TraversalParent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/TraversalParent.java
@@ -20,6 +20,7 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 
 import java.util.Collections;
@@ -73,6 +74,8 @@
     }
 
     public default <S, E> Traversal.Admin<S, E> integrateChild(final Traversal.Admin<?, ?> childTraversal) {
+        if (null == childTraversal)
+            return null;
         childTraversal.setParent(this);
         childTraversal.getSideEffects().mergeInto(this.asStep().getTraversal().getSideEffects());
         childTraversal.setSideEffects(this.asStep().getTraversal().getSideEffects());
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java
index 2989096..19df2a6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java
@@ -20,13 +20,22 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ComputerAwareStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -37,6 +46,7 @@
     protected Traversal.Admin<S, M> branchTraversal;
     protected Map<M, List<Traversal.Admin<S, E>>> traversalOptions = new HashMap<>();
     private boolean first = true;
+    private boolean hasBarrier = false;
 
     public BranchStep(final Traversal.Admin traversal) {
         super(traversal);
@@ -53,6 +63,8 @@
         else
             this.traversalOptions.put(pickToken, new ArrayList<>(Collections.singletonList(traversalOption)));
         traversalOption.addStep(new EndStep(traversalOption));
+        if (!this.hasBarrier && !TraversalHelper.getStepsOfAssignableClassRecursively(Barrier.class, traversalOption).isEmpty())
+            this.hasBarrier = true;
         this.integrateChild(traversalOption);
     }
 
@@ -74,7 +86,7 @@
     }
 
     @Override
-    protected Iterator<Traverser<E>> standardAlgorithm() {
+    protected Iterator<Traverser.Admin<E>> standardAlgorithm() {
         while (true) {
             if (!this.first) {
                 for (final List<Traversal.Admin<S, E>> options : this.traversalOptions.values()) {
@@ -86,29 +98,38 @@
             }
             this.first = false;
             ///
-            final Traverser.Admin<S> start = this.starts.next();
-            final M choice = TraversalUtil.apply(start, this.branchTraversal);
-            final List<Traversal.Admin<S, E>> branch = this.traversalOptions.containsKey(choice) ? this.traversalOptions.get(choice) : this.traversalOptions.get(Pick.none);
-            if (null != branch) {
-                branch.forEach(traversal -> {
-                    traversal.reset();
-                    traversal.addStart(start.split());
-                });
-            }
-            if (choice != Pick.any) {
-                final List<Traversal.Admin<S, E>> anyBranch = this.traversalOptions.get(Pick.any);
-                if (null != anyBranch)
-                    anyBranch.forEach(traversal -> {
-                        traversal.reset();
-                        traversal.addStart(start.split());
-                    });
+            if (this.hasBarrier) {
+                if (!this.starts.hasNext())
+                    throw FastNoSuchElementException.instance();
+                while (this.starts.hasNext()) {
+                    this.handleStart(this.starts.next());
+                }
+            } else {
+                this.handleStart(this.starts.next());
             }
         }
     }
 
+    private final void handleStart(final Traverser.Admin<S> start) {
+        final M choice = TraversalUtil.apply(start, this.branchTraversal);
+        final List<Traversal.Admin<S, E>> branch = this.traversalOptions.containsKey(choice) ? this.traversalOptions.get(choice) : this.traversalOptions.get(Pick.none);
+        if (null != branch) {
+            branch.forEach(traversal -> {
+                traversal.addStart(start.split());
+            });
+        }
+        if (choice != Pick.any) {
+            final List<Traversal.Admin<S, E>> anyBranch = this.traversalOptions.get(Pick.any);
+            if (null != anyBranch)
+                anyBranch.forEach(traversal -> {
+                    traversal.addStart(start.split());
+                });
+        }
+    }
+
     @Override
-    protected Iterator<Traverser<E>> computerAlgorithm() {
-        final List<Traverser<E>> ends = new ArrayList<>();
+    protected Iterator<Traverser.Admin<E>> computerAlgorithm() {
+        final List<Traverser.Admin<E>> ends = new ArrayList<>();
         final Traverser.Admin<S> start = this.starts.next();
         final M choice = TraversalUtil.apply(start, this.branchTraversal);
         final List<Traversal.Admin<S, E>> branch = this.traversalOptions.containsKey(choice) ? this.traversalOptions.get(choice) : this.traversalOptions.get(Pick.none);
@@ -144,18 +165,22 @@
                 final List<Traversal.Admin<S, E>> clonedTraversals = clone.traversalOptions.compute(entry.getKey(), (k, v) ->
                         (v == null) ? new ArrayList<>(traversals.size()) : v);
                 for (final Traversal.Admin<S, E> traversal : traversals) {
-                    final Traversal.Admin<S, E> clonedTraversal = traversal.clone();
-                    clonedTraversals.add(clonedTraversal);
-                    clone.integrateChild(clonedTraversal);
+                    clonedTraversals.add(traversal.clone());
                 }
             }
         }
         clone.branchTraversal = this.branchTraversal.clone();
-        clone.integrateChild(clone.branchTraversal);
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.integrateChild(this.branchTraversal);
+        this.traversalOptions.values().stream().flatMap(List::stream).forEach(this::integrateChild);
+    }
+
+    @Override
     public int hashCode() {
         int result = super.hashCode();
         if (this.traversalOptions != null)
@@ -173,6 +198,7 @@
     @Override
     public void reset() {
         super.reset();
+        this.getGlobalChildren().forEach(Traversal.Admin::reset);
         this.first = true;
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalStep.java
index 123177b..e2affd4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalStep.java
@@ -45,19 +45,6 @@
     }
 
     @Override
-    public LocalStep<S, E> clone() {
-        final LocalStep<S, E> clone = (LocalStep<S, E>) super.clone();
-        clone.localTraversal = clone.integrateChild(this.localTraversal.clone());
-        clone.first = true;
-        return clone;
-    }
-
-    @Override
-    public String toString() {
-        return StringFactory.stepString(this, this.localTraversal);
-    }
-
-    @Override
     public List<Traversal.Admin<S, E>> getLocalChildren() {
         return Collections.singletonList(this.localTraversal);
     }
@@ -68,7 +55,7 @@
     }
 
     @Override
-    protected Traverser<E> processNextStart() throws NoSuchElementException {
+    protected Traverser.Admin<E> processNextStart() throws NoSuchElementException {
         if (this.first) {
             this.first = false;
             this.localTraversal.addStart(this.starts.next());
@@ -86,13 +73,33 @@
     }
 
     @Override
-    public int hashCode() {
-        return super.hashCode() ^ this.localTraversal.hashCode();
-    }
-
-    @Override
     public void reset() {
         super.reset();
         this.first = true;
+        this.localTraversal.reset();
+    }
+
+    @Override
+    public LocalStep<S, E> clone() {
+        final LocalStep<S, E> clone = (LocalStep<S, E>) super.clone();
+        clone.localTraversal = this.localTraversal.clone();
+        clone.first = true;
+        return clone;
+    }
+
+    @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.integrateChild(this.localTraversal);
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.stepString(this, this.localTraversal);
+    }
+
+    @Override
+    public int hashCode() {
+        return super.hashCode() ^ this.localTraversal.hashCode();
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
index 1d0b4b9..b365d7f 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
@@ -136,15 +136,23 @@
     @Override
     public RepeatStep<S> clone() {
         final RepeatStep<S> clone = (RepeatStep<S>) super.clone();
-        clone.repeatTraversal = clone.integrateChild(this.repeatTraversal.clone());
+        clone.repeatTraversal = this.repeatTraversal.clone();
         if (null != this.untilTraversal)
-            clone.untilTraversal = clone.integrateChild(this.untilTraversal.clone());
+            clone.untilTraversal = this.untilTraversal.clone();
         if (null != this.emitTraversal)
-            clone.emitTraversal = clone.integrateChild(this.emitTraversal.clone());
+            clone.emitTraversal = this.emitTraversal.clone();
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.integrateChild(this.repeatTraversal);
+        this.integrateChild(this.untilTraversal);
+        this.integrateChild(this.emitTraversal);
+    }
+
+    @Override
     public int hashCode() {
         int result = super.hashCode() ^ this.repeatTraversal.hashCode();
         result ^= Boolean.hashCode(this.untilFirst);
@@ -157,7 +165,7 @@
     }
 
     @Override
-    protected Iterator<Traverser<S>> standardAlgorithm() throws NoSuchElementException {
+    protected Iterator<Traverser.Admin<S>> standardAlgorithm() throws NoSuchElementException {
         while (true) {
             if (this.repeatTraversal.getEndStep().hasNext()) {
                 return this.repeatTraversal.getEndStep();
@@ -178,7 +186,7 @@
     }
 
     @Override
-    protected Iterator<Traverser<S>> computerAlgorithm() throws NoSuchElementException {
+    protected Iterator<Traverser.Admin<S>> computerAlgorithm() throws NoSuchElementException {
         final Traverser.Admin<S> start = this.starts.next();
         if (doUntil(start, true)) {
             start.resetLoops();
@@ -245,7 +253,7 @@
         }
 
         @Override
-        protected Iterator<Traverser<S>> standardAlgorithm() throws NoSuchElementException {
+        protected Iterator<Traverser.Admin<S>> standardAlgorithm() throws NoSuchElementException {
             final RepeatStep<S> repeatStep = (RepeatStep<S>) this.getTraversal().getParent();
             while (true) {
                 final Traverser.Admin<S> start = this.starts.next();
@@ -268,7 +276,7 @@
         }
 
         @Override
-        protected Iterator<Traverser<S>> computerAlgorithm() throws NoSuchElementException {
+        protected Iterator<Traverser.Admin<S>> computerAlgorithm() throws NoSuchElementException {
             final RepeatStep<S> repeatStep = (RepeatStep<S>) this.getTraversal().getParent();
             final Traverser.Admin<S> start = this.starts.next();
             start.incrLoops(repeatStep.getId());
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java
index d611d30..9bc6f4d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndStep.java
@@ -34,7 +34,7 @@
     }
 
     @Override
-    protected Traverser<S> processNextStart() throws NoSuchElementException {
+    protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
         while (true) {
             final Traverser.Admin<S> start = this.starts.next();
             boolean alive = true;
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/ConnectiveStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/ConnectiveStep.java
index cfa4071..6eac30b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/ConnectiveStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/ConnectiveStep.java
@@ -64,12 +64,20 @@
         final ConnectiveStep<S> clone = (ConnectiveStep<S>) super.clone();
         clone.traversals = new ArrayList<>();
         for (final Traversal.Admin<S, ?> traversal : this.traversals) {
-            clone.traversals.add(clone.integrateChild(traversal.clone()));
+            clone.traversals.add(traversal.clone());
         }
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        for (final Traversal.Admin<S, ?> traversal : this.traversals) {
+            integrateChild(traversal);
+        }
+    }
+
+    @Override
     public String toString() {
         return StringFactory.stepString(this, this.traversals);
     }
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 b18de68..8ef6455 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
@@ -18,33 +18,45 @@
  */
 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;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
-import org.apache.tinkerpop.gremlin.process.traversal.step.Bypassing;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.GraphComputing;
+import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
+import java.util.NoSuchElementException;
 import java.util.Set;
+import java.util.function.BinaryOperator;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class DedupGlobalStep<S> extends FilterStep<S> implements TraversalParent, Scoping, Bypassing, Barrier {
+public final class DedupGlobalStep<S> extends FilterStep<S> implements TraversalParent, Scoping, GraphComputing, Barrier<Map<Object, Traverser.Admin<S>>>, ByModulating, PathProcessor {
 
     private Traversal.Admin<S, Object> dedupTraversal = null;
     private Set<Object> duplicateSet = new HashSet<>();
-    private boolean bypass = false;
+    private boolean onGraphComputer = false;
     private final Set<String> dedupLabels;
+    private Set<String> keepLabels;
 
     public DedupGlobalStep(final Traversal.Admin traversal, final String... dedupLabels) {
         super(traversal);
@@ -53,7 +65,7 @@
 
     @Override
     protected boolean filter(final Traverser.Admin<S> traverser) {
-        if (this.bypass) return true;
+        if (this.onGraphComputer) return true;
         traverser.setBulk(1);
         if (null == this.dedupLabels) {
             return this.duplicateSet.add(TraversalUtil.applyNullable(traverser, this.dedupTraversal));
@@ -65,12 +77,22 @@
     }
 
     @Override
+    public ElementRequirement getMaxRequirement() {
+        return null == this.dedupLabels ? ElementRequirement.ID : PathProcessor.super.getMaxRequirement();
+    }
+
+    @Override
+    protected Traverser.Admin<S> processNextStart() {
+        return PathProcessor.processTraverserPathLabels(super.processNextStart(), this.keepLabels);
+    }
+
+    @Override
     public List<Traversal<S, Object>> getLocalChildren() {
         return null == this.dedupTraversal ? Collections.emptyList() : Collections.singletonList(this.dedupTraversal);
     }
 
     @Override
-    public void addLocalChild(final Traversal.Admin dedupTraversal) {
+    public void modulateBy(final Traversal.Admin<?, ?> dedupTraversal) {
         this.dedupTraversal = this.integrateChild(dedupTraversal);
     }
 
@@ -79,11 +101,17 @@
         final DedupGlobalStep<S> clone = (DedupGlobalStep<S>) super.clone();
         clone.duplicateSet = new HashSet<>();
         if (null != this.dedupTraversal)
-            clone.dedupTraversal = clone.integrateChild(this.dedupTraversal.clone());
+            clone.dedupTraversal = this.dedupTraversal.clone();
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        integrateChild(this.dedupTraversal);
+    }
+
+    @Override
     public int hashCode() {
         int result = super.hashCode();
         if (this.dedupTraversal != null)
@@ -106,12 +134,14 @@
 
     @Override
     public Set<TraverserRequirement> getRequirements() {
-        return this.dedupLabels == null ? this.getSelfAndChildRequirements(TraverserRequirement.BULK) : this.getSelfAndChildRequirements(TraverserRequirement.LABELED_PATH, TraverserRequirement.BULK);
+        return this.dedupLabels == null ?
+                this.getSelfAndChildRequirements(TraverserRequirement.BULK) :
+                this.getSelfAndChildRequirements(TraverserRequirement.LABELED_PATH, TraverserRequirement.BULK);
     }
 
     @Override
-    public void setBypass(final boolean bypass) {
-        this.bypass = bypass;
+    public void onGraphComputer() {
+        this.onGraphComputer = true;
     }
 
     @Override
@@ -123,4 +153,58 @@
     public void processAllStarts() {
 
     }
+
+    @Override
+    public boolean hasNextBarrier() {
+        return this.starts.hasNext();
+    }
+
+    @Override
+    public Map<Object, Traverser.Admin<S>> nextBarrier() throws NoSuchElementException {
+        final Map<Object, Traverser.Admin<S>> map = new HashMap<>();
+        while (this.starts.hasNext()) {
+            final Traverser.Admin<S> traverser = this.starts.next();
+            final Object object;
+            if (null != this.dedupLabels) {
+                object = new ArrayList<>(this.dedupLabels.size());
+                for (final String label : this.dedupLabels) {
+                    ((List) object).add(TraversalUtil.applyNullable((S) this.getScopeValue(Pop.last, label, traverser), this.dedupTraversal));
+                }
+            } else {
+                object = TraversalUtil.applyNullable(traverser, this.dedupTraversal);
+            }
+            if (!map.containsKey(object)) {
+                traverser.setBulk(1l);
+                traverser.set(DetachedFactory.detach(traverser.get(), true));
+                map.put(object, traverser);
+            }
+        }
+        if (map.isEmpty())
+            throw FastNoSuchElementException.instance();
+        else
+            return map;
+
+    }
+
+    @Override
+    public void addBarrier(final Map<Object, Traverser.Admin<S>> barrier) {
+        IteratorUtils.removeOnNext(barrier.entrySet().iterator()).forEachRemaining(entry -> {
+            final Traverser.Admin<S> traverser = entry.getValue();
+            traverser.setSideEffects(this.getTraversal().getSideEffects());
+            this.addStart(traverser);
+        });
+    }
+
+    @Override
+    public MemoryComputeKey<Map<Object, Traverser.Admin<S>>> getMemoryComputeKey() {
+        return MemoryComputeKey.of(this.getId(), (BinaryOperator) Operator.addAll, false, true);
+    }
+
+    @Override
+    public void setKeepLabels(Set<String> labels) {
+        this.keepLabels = labels;
+    }
+
+    @Override
+    public Set<String> getKeepLabels() { return this.keepLabels; }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/FilterStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/FilterStep.java
index f5f0597..e07d951 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/FilterStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/FilterStep.java
@@ -32,7 +32,7 @@
     }
 
     @Override
-    protected Traverser<S> processNextStart() {
+    protected Traverser.Admin<S> processNextStart() {
         while (true) {
             final Traverser.Admin<S> traverser = this.starts.next();
             if (this.filter(traverser))
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/NotStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/NotStep.java
index 56ad497..83059ce 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/NotStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/NotStep.java
@@ -52,11 +52,17 @@
     @Override
     public NotStep<S> clone() {
         final NotStep<S> clone = (NotStep<S>) super.clone();
-        clone.notTraversal = clone.integrateChild(this.notTraversal.clone());
+        clone.notTraversal = this.notTraversal.clone();
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        integrateChild(this.notTraversal);
+    }
+
+    @Override
     public String toString() {
         return StringFactory.stepString(this, "!" + this.notTraversal);
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/OrStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/OrStep.java
index ba49402..70dc430 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/OrStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/OrStep.java
@@ -34,7 +34,7 @@
     }
 
     @Override
-    protected Traverser<S> processNextStart() throws NoSuchElementException {
+    protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
         while (true) {
             final Traverser.Admin<S> start = this.starts.next();
             for (final Traversal.Admin<S, ?> traversal : this.traversals) {
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
index e270204..9458ca9 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeGlobalStep.java
@@ -18,28 +18,38 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
 
+import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Bypassing;
+import org.apache.tinkerpop.gremlin.process.traversal.step.GraphComputing;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Ranging;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
+import java.io.Serializable;
 import java.util.Collections;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.BinaryOperator;
 
 /**
  * @author Bob Briody (http://bobbriody.com)
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class RangeGlobalStep<S> extends FilterStep<S> implements Ranging, Bypassing {
+public final class RangeGlobalStep<S> extends FilterStep<S> implements Ranging, Bypassing, Barrier<TraverserSet<S>> {
 
-    private final long low;
+    private long low;
     private final long high;
     private AtomicLong counter = new AtomicLong(0l);
-    private boolean bypass = false;
+    private boolean bypass;
 
     public RangeGlobalStep(final Traversal.Admin traversal, final long low, final long high) {
         super(traversal);
@@ -50,10 +60,6 @@
         this.high = high;
     }
 
-    public void setBypass(final boolean bypass) {
-        this.bypass = bypass;
-    }
-
     @Override
     protected boolean filter(final Traverser.Admin<S> traverser) {
         if (this.bypass) return true;
@@ -83,7 +89,7 @@
 
         long toEmit = avail - toSkip - toTrim;
         this.counter.getAndAdd(toSkip + toEmit);
-        traverser.asAdmin().setBulk(toEmit);
+        traverser.setBulk(toEmit);
 
         return true;
     }
@@ -99,10 +105,12 @@
         return StringFactory.stepString(this, this.low, this.high);
     }
 
+    @Override
     public long getLowRange() {
         return this.low;
     }
 
+    @Override
     public long getHighRange() {
         return this.high;
     }
@@ -116,11 +124,73 @@
 
     @Override
     public int hashCode() {
-        return super.hashCode() ^ Long.hashCode(this.low) ^ Long.hashCode(this.high) ^ Boolean.hashCode(this.bypass);
+        return super.hashCode() ^ Long.hashCode(this.low) ^ Long.hashCode(this.high);
     }
 
     @Override
     public Set<TraverserRequirement> getRequirements() {
         return Collections.singleton(TraverserRequirement.BULK);
     }
+
+
+    @Override
+    public MemoryComputeKey<TraverserSet<S>> getMemoryComputeKey() {
+        return MemoryComputeKey.of(this.getId(), new RangeBiOperator<>(this.high), false, true);
+    }
+
+    @Override
+    public void setBypass(final boolean bypass) {
+        this.bypass = bypass;
+    }
+
+    @Override
+    public void processAllStarts() {
+
+    }
+
+    @Override
+    public boolean hasNextBarrier() {
+        return this.starts.hasNext();
+    }
+
+    @Override
+    public TraverserSet<S> nextBarrier() throws NoSuchElementException {
+        if(!this.starts.hasNext())
+            throw FastNoSuchElementException.instance();
+        final TraverserSet<S> barrier = new TraverserSet<>();
+        while (this.starts.hasNext()) {
+            barrier.add(this.starts.next());
+        }
+        return barrier;
+    }
+
+    @Override
+    public void addBarrier(final TraverserSet<S> barrier) {
+        IteratorUtils.removeOnNext(barrier.iterator()).forEachRemaining(traverser -> {
+            traverser.setSideEffects(this.getTraversal().getSideEffects());
+            this.addStart(traverser);
+        });
+    }
+
+    ////////////////
+
+    public static final class RangeBiOperator<S> implements BinaryOperator<TraverserSet<S>>, Serializable {
+
+        private final long highRange;
+
+        private RangeBiOperator() {
+            this.highRange = Long.MAX_VALUE;
+        }
+
+        public RangeBiOperator(final long highRange) {
+            this.highRange = highRange;
+        }
+
+        @Override
+        public TraverserSet<S> apply(final TraverserSet<S> mutatingSeed, final TraverserSet<S> set) {
+            if (mutatingSeed.size() < this.highRange)
+                mutatingSeed.addAll(set);
+            return mutatingSeed;
+        }
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleGlobalStep.java
index 3c2dc27..0a4da58 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/SampleGlobalStep.java
@@ -20,12 +20,13 @@
 
 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.CollectingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.lambda.ConstantTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.CollectingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.util.Collections;
@@ -36,7 +37,7 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class SampleGlobalStep<S> extends CollectingBarrierStep<S> implements TraversalParent {
+public final class SampleGlobalStep<S> extends CollectingBarrierStep<S> implements TraversalParent, ByModulating {
 
     private Traversal.Admin<S, Number> probabilityTraversal = new ConstantTraversal<>(1.0d);
     private final int amountToSample;
@@ -53,7 +54,7 @@
     }
 
     @Override
-    public void addLocalChild(final Traversal.Admin<?, ?> probabilityTraversal) {
+    public void modulateBy(final Traversal.Admin<?, ?> probabilityTraversal) {
         this.probabilityTraversal = this.integrateChild(probabilityTraversal);
     }
 
@@ -69,8 +70,8 @@
             return;
         //////////////// else sample the set
         double totalWeight = 0.0d;
-        for (final Traverser<S> s : traverserSet) {
-            totalWeight = totalWeight + TraversalUtil.apply(s.asAdmin(), this.probabilityTraversal).doubleValue() * s.bulk();
+        for (final Traverser.Admin<S> s : traverserSet) {
+            totalWeight = totalWeight + TraversalUtil.apply(s, this.probabilityTraversal).doubleValue() * s.bulk();
         }
         ///////
         final TraverserSet<S> sampledSet = new TraverserSet<>();
@@ -85,8 +86,8 @@
                     for (int i = 0; i < (s.bulk() - sampleBulk); i++) {
                         runningWeight = runningWeight + currentWeight;
                         if (RANDOM.nextDouble() <= ((runningWeight / totalWeight))) {
-                            final Traverser.Admin<S> split = s.asAdmin().split();
-                            split.asAdmin().setBulk(1l);
+                            final Traverser.Admin<S> split = s.split();
+                            split.setBulk(1l);
                             sampledSet.add(split);
                             runningAmountToSample++;
                             totalWeight = totalWeight - currentWeight;
@@ -111,11 +112,17 @@
     @Override
     public SampleGlobalStep<S> clone() {
         final SampleGlobalStep<S> clone = (SampleGlobalStep<S>) super.clone();
-        clone.probabilityTraversal = clone.integrateChild(this.probabilityTraversal.clone());
+        clone.probabilityTraversal = this.probabilityTraversal.clone();
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        integrateChild(this.probabilityTraversal);
+    }
+
+    @Override
     public int hashCode() {
         return super.hashCode() ^ this.amountToSample ^ this.probabilityTraversal.hashCode();
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailGlobalStep.java
index 19d3d95..096151d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TailGlobalStep.java
@@ -18,22 +18,28 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
 
+import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Bypassing;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
+import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import java.util.ArrayDeque;
 import java.util.Collections;
 import java.util.Deque;
+import java.util.NoSuchElementException;
 import java.util.Set;
 
 /**
  * @author Matt Frantz (http://github.com/mhfrantz)
  */
-public final class TailGlobalStep<S> extends AbstractStep<S, S> implements Bypassing {
+public final class TailGlobalStep<S> extends AbstractStep<S, S> implements Bypassing, Barrier<TraverserSet<S>> {
 
     private final long limit;
     private Deque<Traverser.Admin<S>> tail;
@@ -51,7 +57,7 @@
     }
 
     @Override
-    public Traverser<S> processNextStart() {
+    public Traverser.Admin<S> processNextStart() {
         if (this.bypass) {
             // If we are bypassing this step, let everything through.
             return this.starts.next();
@@ -116,4 +122,39 @@
         }
         this.tail.add(start);
     }
+
+
+    @Override
+    public MemoryComputeKey<TraverserSet<S>> getMemoryComputeKey() {
+        return MemoryComputeKey.of(this.getId(), new RangeGlobalStep.RangeBiOperator<>(this.limit), false, true);
+    }
+
+    @Override
+    public void processAllStarts() {
+
+    }
+
+    @Override
+    public boolean hasNextBarrier() {
+        return this.starts.hasNext();
+    }
+
+    @Override
+    public TraverserSet<S> nextBarrier() throws NoSuchElementException {
+        if (!this.starts.hasNext())
+            throw FastNoSuchElementException.instance();
+        final TraverserSet<S> barrier = new TraverserSet<>();
+        while (this.starts.hasNext()) {
+            barrier.add(this.starts.next());
+        }
+        return barrier;
+    }
+
+    @Override
+    public void addBarrier(final TraverserSet<S> barrier) {
+        IteratorUtils.removeOnNext(barrier.iterator()).forEachRemaining(traverser -> {
+            traverser.setSideEffects(this.getTraversal().getSideEffects());
+            this.addStart(traverser);
+        });
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TraversalFilterStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TraversalFilterStep.java
index 6c3dfd1..7391733 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TraversalFilterStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/TraversalFilterStep.java
@@ -54,11 +54,17 @@
     @Override
     public TraversalFilterStep<S> clone() {
         final TraversalFilterStep<S> clone = (TraversalFilterStep<S>) super.clone();
-        clone.filterTraversal = clone.integrateChild(this.filterTraversal.clone());
+        clone.filterTraversal = this.filterTraversal.clone();
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        integrateChild(this.filterTraversal);
+    }
+
+    @Override
     public String toString() {
         return StringFactory.stepString(this, this.filterTraversal);
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WherePredicateStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WherePredicateStep.java
index 6fea7d6..898a42a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WherePredicateStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WherePredicateStep.java
@@ -22,6 +22,7 @@
 import org.apache.tinkerpop.gremlin.process.traversal.Pop;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.util.ConnectiveP;
@@ -33,12 +34,13 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class WherePredicateStep<S> extends FilterStep<S> implements Scoping {
+public final class WherePredicateStep<S> extends FilterStep<S> implements Scoping, PathProcessor {
 
     protected String startKey;
     protected List<String> selectKeys;
     protected P<Object> predicate;
     protected final Set<String> scopeKeys = new HashSet<>();
+    protected Set<String> keepLabels;
 
     public WherePredicateStep(final Traversal.Admin traversal, final Optional<String> startKey, final P<String> predicate) {
         super(traversal);
@@ -115,4 +117,19 @@
                 TYPICAL_GLOBAL_REQUIREMENTS :
                 TYPICAL_LOCAL_REQUIREMENTS;
     }
+
+    @Override
+    protected Traverser.Admin<S> processNextStart() {
+        return PathProcessor.processTraverserPathLabels(super.processNextStart(), this.keepLabels);
+    }
+
+    @Override
+    public void setKeepLabels(final Set<String> labels) {
+        this.keepLabels = labels;
+    }
+
+    @Override
+    public Set<String> getKeepLabels() {
+        return this.keepLabels;
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTraversalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTraversalStep.java
index 78f3756..1dd92e2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTraversalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTraversalStep.java
@@ -22,11 +22,12 @@
 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.step.PathProcessor;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.MapStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StartStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ProfileStep;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
@@ -41,10 +42,11 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class WhereTraversalStep<S> extends FilterStep<S> implements TraversalParent, Scoping {
+public final class WhereTraversalStep<S> extends FilterStep<S> implements TraversalParent, Scoping, PathProcessor {
 
     protected Traversal.Admin<?, ?> whereTraversal;
     protected final Set<String> scopeKeys = new HashSet<>();
+    protected Set<String> keepLabels;
 
     public WhereTraversalStep(final Traversal.Admin traversal, final Traversal<?, ?> whereTraversal) {
         super(traversal);
@@ -80,6 +82,17 @@
         }
     }
 
+    @Override
+    public ElementRequirement getMaxRequirement() {
+        return TraversalHelper.getVariableLocations(this.whereTraversal).contains(Scoping.Variable.START) ?
+                PathProcessor.super.getMaxRequirement() :
+                ElementRequirement.ID;
+    }
+
+    @Override
+    protected Traverser.Admin<S> processNextStart() {
+        return PathProcessor.processTraverserPathLabels(super.processNextStart(), this.keepLabels);
+    }
 
     @Override
     protected boolean filter(final Traverser.Admin<S> traverser) {
@@ -104,22 +117,38 @@
     @Override
     public WhereTraversalStep<S> clone() {
         final WhereTraversalStep<S> clone = (WhereTraversalStep<S>) super.clone();
-        clone.whereTraversal = clone.integrateChild(this.whereTraversal.clone());
+        clone.whereTraversal = this.whereTraversal.clone();
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        integrateChild(this.whereTraversal);
+    }
+
+    @Override
     public int hashCode() {
         return super.hashCode() ^ this.whereTraversal.hashCode();
     }
 
     @Override
     public Set<TraverserRequirement> getRequirements() {
-        return TraversalHelper.getLabels(TraversalHelper.getRootTraversal(this.traversal)).stream().filter(this.scopeKeys::contains).findAny().isPresent() ?
+        return TraversalHelper.getLabels(TraversalHelper.getRootTraversal(this.getTraversal())).stream().filter(this.scopeKeys::contains).findAny().isPresent() ?
                 TYPICAL_GLOBAL_REQUIREMENTS :
                 TYPICAL_LOCAL_REQUIREMENTS;
     }
 
+    @Override
+    public void setKeepLabels(final Set<String> keepLabels) {
+        this.keepLabels = keepLabels;
+    }
+
+    @Override
+    public Set<String> getKeepLabels() {
+        return this.keepLabels;
+    }
+
     //////////////////////////////
 
     public static class WhereStartStep<S> extends MapStep<S, Object> implements Scoping {
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 7313bd8..24fedd2 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
@@ -72,7 +72,7 @@
     }
 
     @Override
-    protected Traverser<Vertex> processNextStart() {
+    protected Traverser.Admin<Vertex> processNextStart() {
         if (this.first) {
             this.first = false;
             final Vertex vertex = this.getTraversal().getGraph().get().addVertex(this.parameters.getKeyValues(EmptyTraverser.instance()));
@@ -104,7 +104,6 @@
     @Override
     public void reset() {
         super.reset();
-        this.first = false;
     }
 
     @Override
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CoalesceStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CoalesceStep.java
index 2f88001..b80b115 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CoalesceStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CoalesceStep.java
@@ -25,7 +25,12 @@
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.iterator.EmptyIterator;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
 
 /**
  * @author Daniel Kuppitz (http://gremlin.guru)
@@ -47,7 +52,7 @@
     protected Iterator<E> flatMap(final Traverser.Admin<S> traverser) {
         for (final Traversal.Admin<S, E> coalesceTraversal : this.coalesceTraversals) {
             coalesceTraversal.reset();
-            coalesceTraversal.addStart(traverser.asAdmin().split());
+            coalesceTraversal.addStart(traverser.split());
             if (coalesceTraversal.hasNext())
                 return coalesceTraversal;
         }
@@ -68,13 +73,21 @@
     public CoalesceStep<S, E> clone() {
         final CoalesceStep<S, E> clone = (CoalesceStep<S, E>) super.clone();
         clone.coalesceTraversals = new ArrayList<>();
-        for (final Traversal.Admin<S, ?> conjunctionTraversal : this.coalesceTraversals) {
-            clone.coalesceTraversals.add(clone.integrateChild(conjunctionTraversal.clone()));
+        for (final Traversal.Admin<S, E> conjunctionTraversal : this.coalesceTraversals) {
+            clone.coalesceTraversals.add(conjunctionTraversal.clone());
         }
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        for (final Traversal.Admin<S, E> conjunctionTraversal : this.coalesceTraversals) {
+            this.integrateChild(conjunctionTraversal);
+        }
+    }
+
+    @Override
     public String toString() {
         return StringFactory.stepString(this, this.coalesceTraversals);
     }
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 096580d..9454243 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,128 +18,38 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
+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.MapReducer;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
-import java.io.Serializable;
-import java.util.Collections;
 import java.util.EnumSet;
-import java.util.Iterator;
 import java.util.Set;
-import java.util.function.BiFunction;
+import java.util.function.BinaryOperator;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class CountGlobalStep<S> extends ReducingBarrierStep<S, Long> implements MapReducer {
+public final class CountGlobalStep<S> extends ReducingBarrierStep<S, Long> {
 
     private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(TraverserRequirement.BULK);
 
     public CountGlobalStep(final Traversal.Admin traversal) {
         super(traversal);
         this.setSeedSupplier(new ConstantSupplier<>(0L));
-        this.setBiFunction(CountBiFunction.<S>instance());
+        this.setReducingBiOperator((BinaryOperator) Operator.sumLong);
     }
 
+    @Override
+    public Long projectTraverser(final Traverser.Admin<S> traverser) {
+        return traverser.bulk();
+    }
 
     @Override
     public Set<TraverserRequirement> getRequirements() {
         return REQUIREMENTS;
     }
 
-    @Override
-    public MapReduce<MapReduce.NullObject, Long, MapReduce.NullObject, Long, Long> getMapReduce() {
-        return CountGlobalMapReduce.instance();
-    }
-
-    ///////////
-
-    private static class CountBiFunction<S> implements BiFunction<Long, Traverser<S>, Long>, Serializable {
-
-        private static final CountBiFunction INSTANCE = new CountBiFunction();
-
-        private CountBiFunction() {
-
-        }
-
-        @Override
-        public Long apply(final Long mutatingSeed, final Traverser<S> traverser) {
-            return mutatingSeed + traverser.bulk();
-        }
-
-        public final static <S> CountBiFunction<S> instance() {
-            return INSTANCE;
-        }
-    }
-
-    ///////////
-
-    private static class CountGlobalMapReduce extends StaticMapReduce<MapReduce.NullObject, Long, MapReduce.NullObject, Long, Long> {
-
-        private static CountGlobalMapReduce INSTANCE = new CountGlobalMapReduce();
-
-        private CountGlobalMapReduce() {
-
-        }
-
-        @Override
-        public boolean doStage(final MapReduce.Stage stage) {
-            return true;
-        }
-
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<NullObject, Long> emitter) {
-            final Iterator<Long> values = IteratorUtils.map(vertex.<Set<Traverser.Admin<Long>>>property(TraversalVertexProgram.HALTED_TRAVERSERS).orElse(Collections.emptySet()).iterator(),
-                    traverser -> traverser.get() * traverser.bulk());
-            long count = getCount(values);
-            if (count > 0)
-                emitter.emit(count);
-        }
-
-        @Override
-        public void combine(final NullObject key, final Iterator<Long> values, final ReduceEmitter<NullObject, Long> emitter) {
-            this.reduce(key, values, emitter);
-        }
-
-        @Override
-        public void reduce(final NullObject key, final Iterator<Long> values, final ReduceEmitter<NullObject, Long> emitter) {
-            long count = getCount(values);
-            if (count > 0)
-                emitter.emit(count);
-        }
-
-        private Long getCount(final Iterator<Long> longs) {
-            long count = 0l;
-            while (longs.hasNext()) {
-                count = count + longs.next();
-            }
-            return count;
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return REDUCING;
-        }
-
-        @Override
-        public Long generateFinalResult(final Iterator<KeyValue<NullObject, Long>> keyValues) {
-            return keyValues.hasNext() ? keyValues.next().getValue() : 0L;
-        }
-
-        public static final CountGlobalMapReduce instance() {
-            return INSTANCE;
-        }
-
-    }
-
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FlatMapStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FlatMapStep.java
index eb111c8..3d7dc24 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FlatMapStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FlatMapStep.java
@@ -38,7 +38,7 @@
     }
 
     @Override
-    protected Traverser<E> processNextStart() {
+    protected Traverser.Admin<E> processNextStart() {
         while (true) {
             if (this.iterator.hasNext()) {
                 return this.head.split(this.iterator.next(), this);
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 c61f89f..934d965 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,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
+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;
@@ -27,8 +28,10 @@
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.EnumSet;
+import java.util.List;
 import java.util.Set;
 import java.util.function.BiFunction;
+import java.util.function.BinaryOperator;
 import java.util.function.Supplier;
 
 /**
@@ -37,15 +40,30 @@
 public final class FoldStep<S, E> extends ReducingBarrierStep<S, E> {
 
     private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(TraverserRequirement.OBJECT);
+    private final boolean listFold;
 
     public FoldStep(final Traversal.Admin traversal) {
-        this(traversal, (Supplier) ArrayListSupplier.instance(), (BiFunction) ArrayListBiFunction.instance());
+        this(traversal, (Supplier) ArrayListSupplier.instance(), (BiFunction) Operator.addAll);
     }
 
     public FoldStep(final Traversal.Admin traversal, final Supplier<E> seed, final BiFunction<E, S, E> foldFunction) {
         super(traversal);
+        this.listFold = Operator.addAll.equals(foldFunction);
         this.setSeedSupplier(seed);
-        this.setBiFunction(new FoldBiFunction<>(foldFunction));
+        this.setReducingBiOperator(new FoldBiOperator<>(foldFunction));
+    }
+
+    @Override
+    public E projectTraverser(final Traverser.Admin<S> traverser) {
+        if (this.listFold) {
+            final List<S> list = new ArrayList<>();
+            for (long i = 0; i < traverser.bulk(); i++) {
+                list.add(traverser.get());
+            }
+            return (E) list;
+        } else {
+            return (E) traverser.get();
+        }
     }
 
     @Override
@@ -53,43 +71,21 @@
         return REQUIREMENTS;
     }
 
-    /////////
+    public static class FoldBiOperator<E> implements BinaryOperator<E>, Serializable {
 
-    private static class ArrayListBiFunction<S> implements BiFunction<ArrayList<S>, S, ArrayList<S>>, Serializable {
+        private BiFunction biFunction;
 
-        private static final ArrayListBiFunction INSTANCE = new ArrayListBiFunction();
-
-        private ArrayListBiFunction() {
-
+        private FoldBiOperator() {
+            // for serialization purposes
         }
 
-        @Override
-        public ArrayList<S> apply(final ArrayList<S> mutatingSeed, final S traverser) {
-            mutatingSeed.add(traverser);
-            return mutatingSeed;
-        }
-
-        public final static <S> ArrayListBiFunction<S> instance() {
-            return INSTANCE;
-        }
-    }
-
-    ///////
-
-    public static class FoldBiFunction<S, E> implements BiFunction<E, Traverser<S>, E>, Serializable {
-
-        private final BiFunction<E, S, E> biFunction;
-
-        public FoldBiFunction(final BiFunction<E, S, E> biFunction) {
+        public FoldBiOperator(final BiFunction biFunction) {
             this.biFunction = biFunction;
         }
 
         @Override
-        public E apply(E seed, final Traverser<S> traverser) {
-            for (int i = 0; i < traverser.bulk(); i++) {
-                seed = this.biFunction.apply(seed, traverser.get());
-            }
-            return seed;
+        public E apply(E seed, E other) {
+            return (E) this.biFunction.apply(seed, other);
         }
 
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
index de3e669..3f169b0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
@@ -18,15 +18,19 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.tinkerpop.gremlin.process.traversal.Compare;
+import org.apache.tinkerpop.gremlin.process.traversal.Contains;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.EngineDependent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.GraphComputing;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer;
 import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.iterator.EmptyIterator;
@@ -41,7 +45,7 @@
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Pieter Martin
  */
-public class GraphStep<S, E extends Element> extends AbstractStep<S, E> implements EngineDependent {
+public class GraphStep<S, E extends Element> extends AbstractStep<S, E> implements GraphComputing {
 
     protected final Class<E> returnClass;
     protected Object[] ids;
@@ -63,7 +67,7 @@
     }
 
     public String toString() {
-        return StringFactory.stepString(this, Arrays.toString(this.ids), this.returnClass.getSimpleName().toLowerCase());
+        return StringFactory.stepString(this, this.returnClass.getSimpleName().toLowerCase(), Arrays.toString(this.ids));
     }
 
     public Class<E> getReturnClass() {
@@ -94,23 +98,32 @@
         return this.ids;
     }
 
+    public void addIds(final Object... newIds) {
+        this.ids = ArrayUtils.addAll(this.ids,
+                (newIds.length == 1 && newIds[0] instanceof Collection) ?
+                        ((Collection) newIds[0]).toArray(new Object[((Collection) newIds[0]).size()]) :
+                        newIds);
+    }
+
     public void clearIds() {
         this.ids = new Object[0];
     }
 
     @Override
-    public void onEngine(final TraversalEngine traversalEngine) {
-        if (traversalEngine.isComputer()) {
-            this.iteratorSupplier = Collections::emptyIterator;
-            for (int i = 0; i < this.ids.length; i++) {    // if this is going to OLAP, convert to ids so you don't serialize elements
-                if (this.ids[i] instanceof Element)
-                    this.ids[i] = ((Element) this.ids[i]).id();
-            }
+    public void onGraphComputer() {
+        this.iteratorSupplier = Collections::emptyIterator;
+        convertElementsToIds();
+    }
+
+    public void convertElementsToIds() {
+        for (int i = 0; i < this.ids.length; i++) {    // if this is going to OLAP, convert to ids so you don't serialize elements
+            if (this.ids[i] instanceof Element)
+                this.ids[i] = ((Element) this.ids[i]).id();
         }
     }
 
     @Override
-    protected Traverser<E> processNextStart() {
+    protected Traverser.Admin<E> processNextStart() {
         while (true) {
             if (this.iterator.hasNext()) {
                 return this.isStart ? this.getTraversal().getTraverserGenerator().generate(this.iterator.next(), (Step) this, 1l) : this.head.split(this.iterator.next(), this);
@@ -134,6 +147,7 @@
     public void reset() {
         super.reset();
         this.head = null;
+        this.done = false;
         this.iterator = EmptyIterator.instance();
     }
 
@@ -146,4 +160,19 @@
         }
         return result;
     }
+
+    /**
+     * Helper method for providers that want to "fold in" {@link HasContainer}'s based on id checking into the ids of the {@link GraphStep}.
+     *
+     * @param graphStep    the GraphStep to potentially {@link GraphStep#addIds(Object...)}.
+     * @param hasContainer The {@link HasContainer} to check for id validation.
+     * @return true if the {@link HasContainer} updated ids and thus, was processed.
+     */
+    public static boolean processHasContainerIds(final GraphStep<?, ?> graphStep, final HasContainer hasContainer) {
+        if (hasContainer.getKey().equals(T.id.getAccessor()) && (hasContainer.getBiPredicate() == Compare.eq || hasContainer.getBiPredicate() == Contains.within)) {
+            graphStep.addIds(hasContainer.getValue());
+            return true;
+        }
+        return false;
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupCountStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupCountStep.java
index 95b954e..a0c02fd 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupCountStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupCountStep.java
@@ -16,56 +16,56 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.MapHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.function.HashMapSupplier;
 
 import java.io.Serializable;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.function.BiFunction;
+import java.util.function.BinaryOperator;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class GroupCountStep<S, E> extends ReducingBarrierStep<S, Map<E, Long>> implements MapReducer, TraversalParent {
+public final class GroupCountStep<S, E> extends ReducingBarrierStep<S, Map<E, Long>> implements TraversalParent, ByModulating {
 
-    private Traversal.Admin<S, E> groupTraversal = null;
+    private Traversal.Admin<S, E> keyTraversal = null;
 
     public GroupCountStep(final Traversal.Admin traversal) {
         super(traversal);
         this.setSeedSupplier(HashMapSupplier.instance());
-        this.setBiFunction(new GroupCountBiFunction(this));
+        this.setReducingBiOperator(GroupCountBiOperator.instance());
     }
 
+    @Override
+    public Map<E, Long> projectTraverser(final Traverser.Admin<S> traverser) {
+        final Map<E, Long> map = new HashMap<>(1);
+        map.put(TraversalUtil.applyNullable(traverser, this.keyTraversal), traverser.bulk());
+        return map;
+    }
 
     @Override
     public void addLocalChild(final Traversal.Admin<?, ?> groupTraversal) {
-        this.groupTraversal = this.integrateChild(groupTraversal);
+        this.keyTraversal = this.integrateChild(groupTraversal);
     }
 
     @Override
     public List<Traversal.Admin<S, E>> getLocalChildren() {
-        return null == this.groupTraversal ? Collections.emptyList() : Collections.singletonList(this.groupTraversal);
+        return null == this.keyTraversal ? Collections.emptyList() : Collections.singletonList(this.keyTraversal);
     }
 
     @Override
@@ -74,103 +74,52 @@
     }
 
     @Override
-    public MapReduce<E, Long, E, Long, Map<E, Long>> getMapReduce() {
-        return GroupCountMapReduce.instance();
+    public void modulateBy(final Traversal.Admin<?, ?> keyTraversal) throws UnsupportedOperationException {
+        this.keyTraversal = this.integrateChild(keyTraversal);
     }
 
     @Override
     public GroupCountStep<S, E> clone() {
         final GroupCountStep<S, E> clone = (GroupCountStep<S, E>) super.clone();
-        if (null != this.groupTraversal)
-            clone.groupTraversal = clone.integrateChild(this.groupTraversal.clone());
-        clone.setBiFunction(new GroupCountBiFunction<>(clone));
+        if (null != this.keyTraversal)
+            clone.keyTraversal = this.keyTraversal.clone();
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        integrateChild(this.keyTraversal);
+    }
+
+    @Override
     public int hashCode() {
         int result = super.hashCode();
-        for (final Traversal.Admin<S, E> traversal : this.getLocalChildren()) {
-            result ^= traversal.hashCode();
-        }
+        if (this.keyTraversal != null) result ^= this.keyTraversal.hashCode();
         return result;
     }
 
     @Override
     public String toString() {
-        return StringFactory.stepString(this, this.groupTraversal);
+        return StringFactory.stepString(this, this.keyTraversal);
     }
 
-    ///////////
+    ///////////////////////////
 
-    private static class GroupCountBiFunction<S, E> implements BiFunction<Map<E, Long>, Traverser<S>, Map<E, Long>>, Serializable {
+    public static final class GroupCountBiOperator<E> implements BinaryOperator<Map<E, Long>>, Serializable {
 
-        private final GroupCountStep<S, E> groupCountStep;
-
-        private GroupCountBiFunction(final GroupCountStep<S, E> groupCountStep) {
-            this.groupCountStep = groupCountStep;
-
-        }
+        private static final GroupCountBiOperator INSTANCE = new GroupCountBiOperator();
 
         @Override
-        public Map<E, Long> apply(final Map<E, Long> mutatingSeed, final Traverser<S> traverser) {
-            MapHelper.incr(mutatingSeed, TraversalUtil.applyNullable(traverser.asAdmin(), this.groupCountStep.groupTraversal), traverser.bulk());
+        public Map<E, Long> apply(final Map<E, Long> mutatingSeed, final Map<E, Long> map) {
+            for (final Map.Entry<E, Long> entry : map.entrySet()) {
+                MapHelper.incr(mutatingSeed, entry.getKey(), entry.getValue());
+            }
             return mutatingSeed;
         }
-    }
 
-    ///////////
-
-    public static final class GroupCountMapReduce<E> extends StaticMapReduce<E, Long, E, Long, Map<E, Long>> {
-
-        private static final GroupCountMapReduce INSTANCE = new GroupCountMapReduce();
-
-        private GroupCountMapReduce() {
-
-        }
-
-        @Override
-        public boolean doStage(final Stage stage) {
-            return true;
-        }
-
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<E, Long> emitter) {
-            final Map<E, Long> groupCount = new HashMap<>();
-            vertex.<TraverserSet<Map<E, Long>>>property(TraversalVertexProgram.HALTED_TRAVERSERS).ifPresent(traverserSet ->
-                    traverserSet.forEach(traverser ->
-                            traverser.get().forEach((k, v) -> MapHelper.incr(groupCount, k, (v * traverser.bulk())))));
-            groupCount.forEach(emitter::emit);
-        }
-
-        @Override
-        public void reduce(final E key, final Iterator<Long> values, final ReduceEmitter<E, Long> emitter) {
-            long counter = 0;
-            while (values.hasNext()) {
-                counter = counter + values.next();
-            }
-            emitter.emit(key, counter);
-        }
-
-        @Override
-        public void combine(final E key, final Iterator<Long> values, final ReduceEmitter<E, Long> emitter) {
-            reduce(key, values, emitter);
-        }
-
-        @Override
-        public Map<E, Long> generateFinalResult(final Iterator<KeyValue<E, Long>> keyValues) {
-            final Map<E, Long> map = new HashMap<>();
-            keyValues.forEachRemaining(keyValue -> map.put(keyValue.getKey(), keyValue.getValue()));
-            return map;
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return REDUCING;
-        }
-
-        public static final <E> GroupCountMapReduce<E> instance() {
+        public static final <E> GroupCountBiOperator<E> instance() {
             return INSTANCE;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
index 069d57e..1187a1a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
@@ -16,89 +16,70 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+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.TokenTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
-import org.apache.tinkerpop.gremlin.process.traversal.step.EngineDependent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.LambdaHolder;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.GroupStepHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.util.function.HashMapSupplier;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+import org.javatuples.Pair;
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.io.Serializable;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.function.BiFunction;
-import java.util.function.Supplier;
+import java.util.function.BinaryOperator;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>> implements MapReducer, EngineDependent, TraversalParent {
+public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>> implements ByModulating, TraversalParent {
 
     private char state = 'k';
-
     private Traversal.Admin<S, K> keyTraversal = null;
-    private Traversal.Admin<S, ?> valueTraversal = this.integrateChild(__.identity().asAdmin());   // used in OLAP
-    private Traversal.Admin<?, V> reduceTraversal = this.integrateChild(__.fold().asAdmin());      // used in OLAP
-    private Traversal.Admin<S, V> valueReduceTraversal = this.integrateChild(__.fold().asAdmin()); // used in OLTP
-    private boolean byPass = false;
+    private Traversal.Admin<S, ?> preTraversal;
+    private Traversal.Admin<S, V> valueTraversal;
 
     public GroupStep(final Traversal.Admin traversal) {
         super(traversal);
-        this.setSeedSupplier((Supplier) new GroupStepHelper.GroupMapSupplier());
-        this.setBiFunction(new GroupBiFunction(this));
+        this.valueTraversal = this.integrateChild(__.fold().asAdmin());
+        this.preTraversal = this.integrateChild(generatePreTraversal(this.valueTraversal));
+        this.setReducingBiOperator(new GroupBiOperator<>(this.valueTraversal));
+        this.setSeedSupplier(HashMapSupplier.instance());
     }
 
     @Override
-    public void onEngine(final TraversalEngine traversalEngine) {
-        this.byPass = traversalEngine.isComputer();
-    }
-
-    @Override
-    public List<Traversal.Admin<?, ?>> getLocalChildren() {
-        final List<Traversal.Admin<?, ?>> children = new ArrayList<>(4);
-        if (null != this.keyTraversal)
-            children.add((Traversal.Admin) this.keyTraversal);
-        children.add(this.valueReduceTraversal);
-        children.add(this.valueTraversal);
-        children.add(this.reduceTraversal);
-        return children;
-    }
-
-    @Override
-    public void addLocalChild(final Traversal.Admin<?, ?> kvTraversal) {
+    public void modulateBy(final Traversal.Admin<?, ?> kvTraversal) {
         if ('k' == this.state) {
             this.keyTraversal = this.integrateChild(kvTraversal);
             this.state = 'v';
         } else if ('v' == this.state) {
-            this.valueReduceTraversal = this.integrateChild(GroupStepHelper.convertValueTraversal(kvTraversal));
-            final List<Traversal.Admin<?, ?>> splitTraversal = GroupStepHelper.splitOnBarrierStep(this.valueReduceTraversal);
-            this.valueTraversal = this.integrateChild(splitTraversal.get(0));
-            this.reduceTraversal = this.integrateChild(splitTraversal.get(1));
+            this.valueTraversal = this.integrateChild(convertValueTraversal(kvTraversal));
+            this.preTraversal = this.integrateChild(generatePreTraversal(this.valueTraversal));
+            this.setReducingBiOperator(new GroupBiOperator<>(this.valueTraversal));
             this.state = 'x';
         } else {
             throw new IllegalStateException("The key and value traversals for group()-step have already been set: " + this);
@@ -106,6 +87,35 @@
     }
 
     @Override
+    public Map<K, V> projectTraverser(final Traverser.Admin<S> traverser) {
+        final Map<K, V> map = new HashMap<>(1);
+        if (null == this.preTraversal) {
+            map.put(TraversalUtil.applyNullable(traverser, this.keyTraversal), (V) traverser);
+        } else {
+            final TraverserSet traverserSet = new TraverserSet<>();
+            this.preTraversal.reset();
+            this.preTraversal.addStart(traverser);
+            this.preTraversal.getEndStep().forEachRemaining(traverserSet::add);
+            map.put(TraversalUtil.applyNullable(traverser, this.keyTraversal), (V) traverserSet);
+        }
+        return map;
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.stepString(this, this.keyTraversal, this.valueTraversal);
+    }
+
+    @Override
+    public List<Traversal.Admin<?, ?>> getLocalChildren() {
+        final List<Traversal.Admin<?, ?>> children = new ArrayList<>(2);
+        if (null != this.keyTraversal)
+            children.add((Traversal.Admin) this.keyTraversal);
+        children.add(this.valueTraversal);
+        return children;
+    }
+
+    @Override
     public Set<TraverserRequirement> getRequirements() {
         return this.getSelfAndChildRequirements(TraverserRequirement.OBJECT, TraverserRequirement.BULK);
     }
@@ -114,154 +124,250 @@
     public GroupStep<S, K, V> clone() {
         final GroupStep<S, K, V> clone = (GroupStep<S, K, V>) super.clone();
         if (null != this.keyTraversal)
-            clone.keyTraversal = clone.integrateChild(this.keyTraversal.clone());
-        clone.valueReduceTraversal = clone.integrateChild(this.valueReduceTraversal.clone());
-        clone.valueTraversal = clone.integrateChild(this.valueTraversal.clone());
-        clone.reduceTraversal = clone.integrateChild(this.reduceTraversal.clone());
-        clone.setBiFunction(new GroupBiFunction<>((GroupStep) clone));
+            clone.keyTraversal = this.keyTraversal.clone();
+        clone.valueTraversal = this.valueTraversal.clone();
+        clone.preTraversal = this.integrateChild(GroupStep.generatePreTraversal(clone.valueTraversal));
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        integrateChild(this.keyTraversal);
+        integrateChild(this.valueTraversal);
+        integrateChild(this.preTraversal);
+    }
+
+    @Override
     public int hashCode() {
-        int result = this.valueReduceTraversal.hashCode();
+        int result = super.hashCode();
         if (this.keyTraversal != null) result ^= this.keyTraversal.hashCode();
+        result ^= this.valueTraversal.hashCode();
         return result;
     }
 
     @Override
-    public MapReduce<K, Collection<?>, K, V, Map<K, V>> getMapReduce() {
-        return new GroupMapReduce<>(this);
+    public Map<K, V> generateFinalResult(final Map<K, V> object) {
+        return GroupStep.doFinalReduction((Map<K, Object>) object, this.valueTraversal);
     }
 
-    @Override
-    public Traverser<Map<K, V>> processNextStart() {
-        if (this.byPass) {
-            final Traverser.Admin<S> traverser = this.starts.next();
-            final K key = TraversalUtil.applyNullable(traverser, this.keyTraversal);
-            this.valueTraversal.addStart(traverser);
-            final BulkSet<?> value = this.valueTraversal.toBulkSet();
-            return traverser.asAdmin().split(new Object[]{key, value}, (Step) this);
+    ///////////////////////
+
+    public static final class GroupBiOperator<K, V> implements BinaryOperator<Map<K, V>>, Serializable {
+
+        // size limit before Barrier.processAllStarts() to lazy reduce
+        private static final int SIZE_LIMIT = 1000;
+
+        private Traversal.Admin<?, V> valueTraversal;
+        private Barrier barrierStep;
+
+        public GroupBiOperator(final Traversal.Admin<?, V> valueTraversal) {
+            // if there is a lambda that can not be serialized, then simply use TraverserSets
+            if (TraversalHelper.hasStepOfAssignableClassRecursively(LambdaHolder.class, valueTraversal)) {
+                this.valueTraversal = null;
+                this.barrierStep = null;
+            } else {
+                this.valueTraversal = valueTraversal;
+                this.barrierStep = TraversalHelper.getFirstStepOfAssignableClass(Barrier.class, this.valueTraversal).orElse(null);
+            }
+        }
+
+        public GroupBiOperator() {
+            // no-arg constructor for serialization
+        }
+
+        @Override
+        public Map<K, V> apply(final Map<K, V> mapA, final Map<K, V> mapB) {
+            for (final K key : mapB.keySet()) {
+                Object objectA = mapA.get(key);
+                final Object objectB = mapB.get(key);
+                assert null != objectB;
+                if (null == objectA) {
+                    objectA = objectB;
+                } else {
+                    // TRAVERSER
+                    if (objectA instanceof Traverser.Admin) {
+                        if (objectB instanceof Traverser.Admin) {
+                            final TraverserSet set = new TraverserSet();
+                            set.add((Traverser.Admin) objectA);
+                            set.add((Traverser.Admin) objectB);
+                            objectA = set;
+                        } else if (objectB instanceof TraverserSet) {
+                            final TraverserSet set = (TraverserSet) objectB;
+                            set.add((Traverser.Admin) objectA);
+                            if (null != this.barrierStep && set.size() > SIZE_LIMIT) {
+                                this.valueTraversal.reset();
+                                ((Step) this.barrierStep).addStarts(set.iterator());
+                                objectA = this.barrierStep.nextBarrier();
+                            } else
+                                objectA = objectB;
+                        } else if (objectB instanceof Pair) {
+                            final TraverserSet set = (TraverserSet) ((Pair) objectB).getValue0();
+                            set.add((Traverser.Admin) objectA);
+                            if (set.size() > SIZE_LIMIT) {    // barrier step can never be null -- no need to check
+                                this.valueTraversal.reset();
+                                ((Step) this.barrierStep).addStarts(set.iterator());
+                                this.barrierStep.addBarrier(((Pair) objectB).getValue1());
+                                objectA = this.barrierStep.nextBarrier();
+                            } else
+                                objectA = Pair.with(set, ((Pair) objectB).getValue1());
+                        } else
+                            objectA = Pair.with(new TraverserSet((Traverser.Admin) objectA), objectB);
+                        // TRAVERSER SET
+                    } else if (objectA instanceof TraverserSet) {
+                        if (objectB instanceof Traverser.Admin) {
+                            final TraverserSet set = (TraverserSet) objectA;
+                            set.add((Traverser.Admin) objectB);
+                            if (null != this.barrierStep && set.size() > SIZE_LIMIT) {
+                                this.valueTraversal.reset();
+                                ((Step) this.barrierStep).addStarts(set.iterator());
+                                objectA = this.barrierStep.nextBarrier();
+                            }
+                        } else if (objectB instanceof TraverserSet) {
+                            final TraverserSet set = (TraverserSet) objectA;
+                            set.addAll((TraverserSet) objectB);
+                            if (null != this.barrierStep && set.size() > SIZE_LIMIT) {
+                                this.valueTraversal.reset();
+                                ((Step) this.barrierStep).addStarts(set.iterator());
+                                objectA = this.barrierStep.nextBarrier();
+                            }
+                        } else if (objectB instanceof Pair) {
+                            final TraverserSet set = (TraverserSet) objectA;
+                            set.addAll((TraverserSet) ((Pair) objectB).getValue0());
+                            if (set.size() > SIZE_LIMIT) {  // barrier step can never be null -- no need to check
+                                this.valueTraversal.reset();
+                                ((Step) this.barrierStep).addStarts(set.iterator());
+                                this.barrierStep.addBarrier(((Pair) objectB).getValue1());
+                                objectA = this.barrierStep.nextBarrier();
+                            } else
+                                objectA = Pair.with(set, ((Pair) objectB).getValue1());
+                        } else
+                            objectA = Pair.with(objectA, objectB);
+                        // TRAVERSER SET + BARRIER
+                    } else if (objectA instanceof Pair) {
+                        if (objectB instanceof Traverser.Admin) {
+                            final TraverserSet set = ((TraverserSet) ((Pair) objectA).getValue0());
+                            set.add((Traverser.Admin) objectB);
+                            if (set.size() > SIZE_LIMIT) { // barrier step can never be null -- no need to check
+                                this.valueTraversal.reset();
+                                ((Step) this.barrierStep).addStarts(set.iterator());
+                                this.barrierStep.addBarrier(((Pair) objectA).getValue1());
+                                objectA = this.barrierStep.nextBarrier();
+                            }
+                        } else if (objectB instanceof TraverserSet) {
+                            final TraverserSet set = (TraverserSet) ((Pair) objectA).getValue0();
+                            set.addAll((TraverserSet) objectB);
+                            if (set.size() > SIZE_LIMIT) {   // barrier step can never be null -- no need to check
+                                this.valueTraversal.reset();
+                                ((Step) this.barrierStep).addStarts(set.iterator());
+                                this.barrierStep.addBarrier(((Pair) objectA).getValue1());
+                                objectA = this.barrierStep.nextBarrier();
+                            }
+                        } else if (objectB instanceof Pair) {
+                            this.valueTraversal.reset();
+                            this.barrierStep.addBarrier(((Pair) objectA).getValue1());
+                            this.barrierStep.addBarrier(((Pair) objectB).getValue1());
+                            ((Step) this.barrierStep).addStarts(((TraverserSet) ((Pair) objectA).getValue0()).iterator());
+                            ((Step) this.barrierStep).addStarts(((TraverserSet) ((Pair) objectB).getValue0()).iterator());
+                            objectA = this.barrierStep.nextBarrier();
+                        } else {
+                            this.valueTraversal.reset();
+                            this.barrierStep.addBarrier(((Pair) objectA).getValue1());
+                            this.barrierStep.addBarrier(objectB);
+                            ((Step) this.barrierStep).addStarts(((TraverserSet) ((Pair) objectA).getValue0()).iterator());
+                            objectA = this.barrierStep.nextBarrier();
+                        }
+                        // BARRIER
+                    } else {
+                        if (objectB instanceof Traverser.Admin) {
+                            objectA = Pair.with(new TraverserSet<>((Traverser.Admin) objectB), objectA);
+                        } else if (objectB instanceof TraverserSet) {
+                            objectA = Pair.with(objectB, objectA);
+                        } else if (objectB instanceof Pair) {
+                            this.valueTraversal.reset();
+                            this.barrierStep.addBarrier(objectA);
+                            this.barrierStep.addBarrier(((Pair) objectB).getValue1());
+                            ((Step) this.barrierStep).addStarts(((TraverserSet) ((Pair) objectB).getValue0()).iterator());
+                            objectA = this.barrierStep.nextBarrier();
+                        } else {
+                            this.valueTraversal.reset();
+                            this.barrierStep.addBarrier(objectA);
+                            this.barrierStep.addBarrier(objectB);
+                            objectA = this.barrierStep.nextBarrier();
+                        }
+                    }
+                }
+                mapA.put(key, (V) objectA);
+            }
+            return mapA;
+        }
+
+        // necessary to control Java Serialization to ensure proper clearing of internal traverser data
+        private void writeObject(final ObjectOutputStream outputStream) throws IOException {
+            // necessary as a non-root child is being sent over the wire
+            if (null != this.valueTraversal) this.valueTraversal.setParent(EmptyStep.instance());
+            outputStream.writeObject(null == this.valueTraversal ? null : this.valueTraversal.clone()); // todo: reset() instead?
+        }
+
+        private void readObject(final ObjectInputStream inputStream) throws IOException, ClassNotFoundException {
+            this.valueTraversal = (Traversal.Admin<?, V>) inputStream.readObject();
+            this.barrierStep = null == this.valueTraversal ? null : TraversalHelper.getFirstStepOfAssignableClass(Barrier.class, this.valueTraversal).orElse(null);
+        }
+    }
+
+
+    ///////////////////////
+
+    public static <S, E> Traversal.Admin<S, E> convertValueTraversal(final Traversal.Admin<S, E> valueTraversal) {
+        if (valueTraversal instanceof ElementValueTraversal ||
+                valueTraversal instanceof TokenTraversal ||
+                valueTraversal instanceof IdentityTraversal ||
+                valueTraversal.getStartStep() instanceof LambdaMapStep && ((LambdaMapStep) valueTraversal.getStartStep()).getMapFunction() instanceof FunctionTraverser) {
+            return (Traversal.Admin<S, E>) __.map(valueTraversal).fold();
         } else {
-            return super.processNextStart();
+            return valueTraversal;
         }
     }
 
-    @Override
-    public String toString() {
-        return StringFactory.stepString(this, this.keyTraversal, this.valueReduceTraversal);
+    public static Traversal.Admin<?, ?> generatePreTraversal(final Traversal.Admin<?, ?> valueTraversal) {
+        if (!TraversalHelper.hasStepOfAssignableClass(Barrier.class, valueTraversal))
+            return valueTraversal;
+        final Traversal.Admin<?, ?> first = __.identity().asAdmin();
+        for (final Step step : valueTraversal.getSteps()) {
+            if (step instanceof Barrier)
+                break;
+            first.addStep(step.clone());
+        }
+        return first.getSteps().size() == 1 ? null : first;
     }
 
-    ///////////
-
-    private static class GroupBiFunction<S, K, V> implements BiFunction<Map<K, Traversal.Admin<S, V>>, Traverser.Admin<S>, Map<K, Traversal.Admin<S, V>>>, Serializable {
-
-        private final GroupStep<S, K, V> groupStep;
-        private Map<K, Integer> counters = new HashMap<>();
-
-        private GroupBiFunction(final GroupStep<S, K, V> groupStep) {
-            this.groupStep = groupStep;
-        }
-
-        @Override
-        public Map<K, Traversal.Admin<S, V>> apply(final Map<K, Traversal.Admin<S, V>> mutatingSeed, final Traverser.Admin<S> traverser) {
-            final K key = TraversalUtil.applyNullable(traverser, this.groupStep.keyTraversal);
-            Traversal.Admin<S, V> traversal = mutatingSeed.get(key);
-            if (null == traversal) {
-                traversal = this.groupStep.valueReduceTraversal.clone();
-                this.counters.put(key, 0);
-                mutatingSeed.put(key, traversal);
+    public static <K, V> Map<K, V> doFinalReduction(final Map<K, Object> map, final Traversal.Admin<?, V> valueTraversal) {
+        final Map<K, V> reducedMap = new HashMap<>(map.size());
+        final Barrier reducingBarrierStep = TraversalHelper.getFirstStepOfAssignableClass(Barrier.class, valueTraversal).orElse(null);
+        IteratorUtils.removeOnNext(map.entrySet().iterator()).forEachRemaining(entry -> {
+            valueTraversal.reset();
+            if (null == reducingBarrierStep) {
+                reducedMap.put(entry.getKey(), entry.getValue() instanceof TraverserSet ?
+                        ((TraverserSet<V>) entry.getValue()).iterator().next().get() :
+                        (V) entry.getValue());
+            } else {
+                if (entry.getValue() instanceof Traverser.Admin)
+                    ((Step) reducingBarrierStep).addStart((Traverser.Admin) entry.getValue());
+                else if (entry.getValue() instanceof TraverserSet)
+                    ((Step) reducingBarrierStep).addStarts(((TraverserSet) entry.getValue()).iterator());
+                else if (entry.getValue() instanceof Pair) {
+                    ((Step) reducingBarrierStep).addStarts(((TraverserSet) (((Pair) entry.getValue()).getValue0())).iterator());
+                    reducingBarrierStep.addBarrier((((Pair) entry.getValue()).getValue1()));
+                } else
+                    reducingBarrierStep.addBarrier(entry.getValue());
+                reducedMap.put(entry.getKey(), valueTraversal.next());
             }
-
-            traversal.addStart(traverser);
-            final int count = this.counters.compute(key, (k, i) -> ++i);
-            if (count > 10000) {
-                this.counters.put(key, 0);
-                TraversalHelper.getFirstStepOfAssignableClass(Barrier.class, traversal).ifPresent(Barrier::processAllStarts);
-            }
-            return mutatingSeed;
-        }
+        });
+        assert map.isEmpty();
+        map.clear();
+        map.putAll(reducedMap);
+        return (Map<K, V>) map;
     }
+}
 
-    ///////////
 
-    public static final class GroupMapReduce<S, K, V> implements MapReduce<K, Collection<?>, K, V, Map<K, V>> {
-
-        public static final String GROUP_BY_STEP_STEP_ID = "gremlin.groupStep.stepId";
-
-        private String groupStepId;
-        private Traversal.Admin<?, V> reduceTraversal;
-
-        private GroupMapReduce() {
-
-        }
-
-        public GroupMapReduce(final GroupStep<S, K, V> step) {
-            this.groupStepId = step.getId();
-            this.reduceTraversal = step.reduceTraversal.clone();
-        }
-
-        @Override
-        public void storeState(final Configuration configuration) {
-            MapReduce.super.storeState(configuration);
-            configuration.setProperty(GROUP_BY_STEP_STEP_ID, this.groupStepId);
-        }
-
-        @Override
-        public void loadState(final Graph graph, final Configuration configuration) {
-            this.groupStepId = configuration.getString(GROUP_BY_STEP_STEP_ID);
-            this.reduceTraversal = ((GroupStep) new TraversalMatrix<>(TraversalVertexProgram.getTraversal(graph, configuration)).getStepById(this.groupStepId)).reduceTraversal.clone();
-        }
-
-        @Override
-        public boolean doStage(final Stage stage) {
-            return !stage.equals(Stage.COMBINE);
-        }
-
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<K, Collection<?>> emitter) {
-            vertex.<TraverserSet<Object[]>>property(TraversalVertexProgram.HALTED_TRAVERSERS).ifPresent(traverserSet -> traverserSet.forEach(traverser -> {
-                final Object[] objects = traverser.get();
-                emitter.emit((K) objects[0], (Collection<?>) objects[1]);
-            }));
-        }
-
-        @Override
-        public void reduce(final K key, final Iterator<Collection<?>> values, final ReduceEmitter<K, V> emitter) {
-            Traversal.Admin<?, V> reduceTraversalClone = this.reduceTraversal.clone();
-            while (values.hasNext()) {
-                reduceTraversalClone.addStarts(reduceTraversalClone.getTraverserGenerator().generateIterator(values.next().iterator(), (Step) reduceTraversalClone.getStartStep(), 1l));
-                TraversalHelper.getFirstStepOfAssignableClass(Barrier.class, reduceTraversalClone).ifPresent(Barrier::processAllStarts);
-            }
-            emitter.emit(key, reduceTraversalClone.next());
-        }
-
-        @Override
-        public Map<K, V> generateFinalResult(final Iterator<KeyValue<K, V>> keyValues) {
-            final Map<K, V> map = new HashMap<>();
-            keyValues.forEachRemaining(keyValue -> map.put(keyValue.getKey(), keyValue.getValue()));
-            return map;
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return REDUCING;
-        }
-
-        @Override
-        public GroupMapReduce<S, K, V> clone() {
-            try {
-                final GroupMapReduce<S, K, V> clone = (GroupMapReduce<S, K, V>) super.clone();
-                clone.reduceTraversal = this.reduceTraversal.clone();
-                return clone;
-            } catch (final CloneNotSupportedException e) {
-                throw new IllegalStateException(e.getMessage(), e);
-            }
-        }
-
-        @Override
-        public String toString() {
-            return StringFactory.mapReduceString(this, this.getMemoryKey());
-        }
-    }
-}
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStepV3d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStepV3d0.java
index a988d4e..c630992 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStepV3d0.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStepV3d0.java
@@ -19,62 +19,67 @@
 
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.EngineDependent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.FinalGet;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.util.function.HashMapSupplier;
 
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.function.BiFunction;
-import java.util.function.Supplier;
+import java.util.function.BinaryOperator;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @deprecated Since 3.1.0 -- use {@link GroupStep}
  */
-@Deprecated
-public final class GroupStepV3d0<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R>> implements MapReducer, EngineDependent, TraversalParent {
+public final class GroupStepV3d0<S, K, V, R> extends ReducingBarrierStep<S, Map<K, R>> implements TraversalParent, ByModulating {
 
     private char state = 'k';
-
     private Traversal.Admin<S, K> keyTraversal = null;
     private Traversal.Admin<S, V> valueTraversal = null;
     private Traversal.Admin<Collection<V>, R> reduceTraversal = null;
-    private boolean byPass = false;
 
     public GroupStepV3d0(final Traversal.Admin traversal) {
         super(traversal);
-        this.setSeedSupplier((Supplier) new GroupMapSupplierV3d0());
-        this.setBiFunction(new GroupBiFunction(this));
+        this.setSeedSupplier(HashMapSupplier.instance());
+        this.setReducingBiOperator(GroupBiOperatorV3d0.instance());
     }
 
     @Override
-    public void onEngine(final TraversalEngine traversalEngine) {
-        this.byPass = traversalEngine.isComputer();
+    public Map<K, R> projectTraverser(final Traverser.Admin<S> traverser) {
+        final K key = TraversalUtil.applyNullable(traverser, this.keyTraversal);
+        final BulkSet<V> values = new BulkSet<>();
+        final V value = TraversalUtil.applyNullable(traverser, this.valueTraversal);
+        TraversalHelper.addToCollectionUnrollIterator(values, value, traverser.bulk());
+        return Collections.singletonMap(key, (R) values);
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.stepString(this, this.keyTraversal, this.valueTraversal, this.reduceTraversal);
+    }
+
+    @Override
+    public Map<K, R> generateFinalResult(final Map<K, R> valueMap) {
+        final Map<K, R> reducedMap = new HashMap<>();
+        for (final K key : valueMap.keySet()) {
+            final R r = TraversalUtil.applyNullable(((Map<K, Collection<V>>) valueMap).get(key), this.reduceTraversal);
+            reducedMap.put(key, r);
+        }
+        return reducedMap;
     }
 
     @Override
@@ -89,12 +94,8 @@
         return children;
     }
 
-    public Traversal.Admin<Collection<V>, R> getReduceTraversal() {
-        return this.reduceTraversal;
-    }
-
     @Override
-    public void addLocalChild(final Traversal.Admin<?, ?> kvrTraversal) {
+    public void modulateBy(final Traversal.Admin<?, ?> kvrTraversal) {
         if ('k' == this.state) {
             this.keyTraversal = this.integrateChild(kvrTraversal);
             this.state = 'v';
@@ -118,181 +119,54 @@
     public GroupStepV3d0<S, K, V, R> clone() {
         final GroupStepV3d0<S, K, V, R> clone = (GroupStepV3d0<S, K, V, R>) super.clone();
         if (null != this.keyTraversal)
-            clone.keyTraversal = clone.integrateChild(this.keyTraversal.clone());
+            clone.keyTraversal = this.keyTraversal.clone();
         if (null != this.valueTraversal)
-            clone.valueTraversal = clone.integrateChild(this.valueTraversal.clone());
+            clone.valueTraversal = this.valueTraversal.clone();
         if (null != this.reduceTraversal)
-            clone.reduceTraversal = clone.integrateChild(this.reduceTraversal.clone());
-        clone.setBiFunction(new GroupBiFunction<>((GroupStepV3d0) clone));
+            clone.reduceTraversal = this.reduceTraversal.clone();
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        integrateChild(this.keyTraversal);
+        integrateChild(this.valueTraversal);
+        integrateChild(this.reduceTraversal);
+    }
+
+    @Override
     public int hashCode() {
         int result = super.hashCode();
-        for (final Traversal.Admin traversal : this.getLocalChildren()) {
-            result ^= traversal.hashCode();
-        }
+        if (this.keyTraversal != null) result ^= this.keyTraversal.hashCode();
+        if (this.valueTraversal != null) result ^= this.valueTraversal.hashCode();
+        if (this.reduceTraversal != null) result ^= this.reduceTraversal.hashCode();
         return result;
     }
 
-    @Override
-    public MapReduce<K, Collection<V>, K, R, Map<K, R>> getMapReduce() {
-        return new GroupMapReduceV3d0<>(this);
-    }
-
-    @Override
-    public Traverser<Map<K, R>> processNextStart() {
-        if (this.byPass) {
-            final Traverser.Admin<S> traverser = this.starts.next();
-            final Object[] kvPair = new Object[]{TraversalUtil.applyNullable(traverser, (Traversal.Admin<S, Map>) this.keyTraversal), TraversalUtil.applyNullable(traverser, (Traversal.Admin<S, Map>) this.valueTraversal)};
-            return traverser.asAdmin().split(kvPair, (Step) this);
-        } else {
-            return super.processNextStart();
-        }
-    }
-
-    @Override
-    public String toString() {
-        return StringFactory.stepString(this, this.keyTraversal, this.valueTraversal, this.reduceTraversal);
-    }
-
-    ///////////
-
-    private static class GroupBiFunction<S, K, V> implements BiFunction<Map<K, Collection<V>>, Traverser.Admin<S>, Map<K, Collection<V>>>, Serializable {
-
-        private final GroupStepV3d0<S, K, V, ?> groupStep;
-
-        private GroupBiFunction(final GroupStepV3d0<S, K, V, ?> groupStep) {
-            this.groupStep = groupStep;
-        }
-
-        @Override
-        public Map<K, Collection<V>> apply(final Map<K, Collection<V>> mutatingSeed, final Traverser.Admin<S> traverser) {
-            final K key = TraversalUtil.applyNullable(traverser, this.groupStep.keyTraversal);
-            final V value = TraversalUtil.applyNullable(traverser, this.groupStep.valueTraversal);
-            Collection<V> values = mutatingSeed.get(key);
-            if (null == values) {
-                values = new BulkSet<>();
-                mutatingSeed.put(key, values);
-            }
-            TraversalHelper.addToCollectionUnrollIterator(values, value, traverser.bulk());
-            return mutatingSeed;
-        }
-    }
-
     //////////
 
-    private class GroupMapV3d0 extends HashMap<K, Collection<V>> implements FinalGet<Map<K, R>> {
+    @Deprecated
+    public static class GroupBiOperatorV3d0<K, V> implements BinaryOperator<Map<K, V>>, Serializable {
+
+        private final static GroupBiOperatorV3d0 INSTANCE = new GroupBiOperatorV3d0();
 
         @Override
-        public Map<K, R> getFinal() {
-            if (null == GroupStepV3d0.this.reduceTraversal)
-                return (Map<K, R>) this;
-            else {
-                final Map<K, R> reduceMap = new HashMap<>();
-                this.forEach((k, vv) -> reduceMap.put(k, TraversalUtil.applyNullable(vv, GroupStepV3d0.this.reduceTraversal)));
-                return reduceMap;
-            }
-        }
-    }
-
-    private class GroupMapSupplierV3d0 implements Supplier<GroupMapV3d0>, Serializable {
-
-        private GroupMapSupplierV3d0() {
-        }
-
-        @Override
-        public GroupMapV3d0 get() {
-            return new GroupMapV3d0();
-        }
-    }
-
-    ///////////
-
-    public static final class GroupMapReduceV3d0<K, V, R> implements MapReduce<K, Collection<V>, K, R, Map<K, R>> {
-
-        public static final String GROUP_BY_STEP_STEP_ID = "gremlin.groupStep.stepId";
-
-        private String groupStepId;
-        private Traversal.Admin<Collection<V>, R> reduceTraversal;
-
-        private GroupMapReduceV3d0() {
-
-        }
-
-        public GroupMapReduceV3d0(final GroupStepV3d0<?, K, V, R> step) {
-            this.groupStepId = step.getId();
-            this.reduceTraversal = step.getReduceTraversal();
-        }
-
-        @Override
-        public void storeState(final Configuration configuration) {
-            MapReduce.super.storeState(configuration);
-            configuration.setProperty(GROUP_BY_STEP_STEP_ID, this.groupStepId);
-        }
-
-        @Override
-        public void loadState(final Graph graph, final Configuration configuration) {
-            this.groupStepId = configuration.getString(GROUP_BY_STEP_STEP_ID);
-            this.reduceTraversal = ((GroupStepV3d0) new TraversalMatrix<>(TraversalVertexProgram.getTraversal(graph, configuration)).getStepById(this.groupStepId)).getReduceTraversal();
-        }
-
-        @Override
-        public boolean doStage(final Stage stage) {
-            return !stage.equals(Stage.COMBINE);
-        }
-
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<K, Collection<V>> emitter) {
-            vertex.<TraverserSet<Object[]>>property(TraversalVertexProgram.HALTED_TRAVERSERS).ifPresent(traverserSet -> traverserSet.forEach(traverser -> {
-                final Object[] objects = traverser.get();
-                for (int i = 0; i < traverser.bulk(); i++) {
-                    if (objects[1] instanceof Collection)
-                        emitter.emit((K) objects[0], (Collection<V>) objects[1]);
-                    else {
-                        final List<V> collection = new ArrayList<>();
-                        collection.add((V) objects[1]);
-                        emitter.emit((K) objects[0], collection);
-                    }
+        public Map<K, V> apply(final Map<K, V> mutatingSeed, final Map<K, V> map) {
+            for (final K key : map.keySet()) {
+                final BulkSet<V> values = (BulkSet<V>) map.get(key);
+                BulkSet<V> seedValues = (BulkSet<V>) mutatingSeed.get(key);
+                if (null == seedValues) {
+                    seedValues = new BulkSet<>();
+                    mutatingSeed.put(key, (V) seedValues);
                 }
-            }));
-        }
-
-        @Override
-        public void reduce(final K key, final Iterator<Collection<V>> values, final ReduceEmitter<K, R> emitter) {
-            final Set<V> set = new BulkSet<>();
-            values.forEachRemaining(set::addAll);
-            emitter.emit(key, TraversalUtil.applyNullable(set, this.reduceTraversal));
-        }
-
-        @Override
-        public Map<K, R> generateFinalResult(final Iterator<KeyValue<K, R>> keyValues) {
-            final Map<K, R> map = new HashMap<>();
-            keyValues.forEachRemaining(keyValue -> map.put(keyValue.getKey(), keyValue.getValue()));
-            return map;
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return REDUCING;
-        }
-
-        @Override
-        public GroupMapReduceV3d0<K, V, R> clone() {
-            try {
-                final GroupMapReduceV3d0<K, V, R> clone = (GroupMapReduceV3d0<K, V, R>) super.clone();
-                if (null != clone.reduceTraversal)
-                    clone.reduceTraversal = this.reduceTraversal.clone();
-                return clone;
-            } catch (final CloneNotSupportedException e) {
-                throw new IllegalStateException(e.getMessage(), e);
+                seedValues.addAll(values);
             }
+            return mutatingSeed;
         }
 
-        @Override
-        public String toString() {
-            return StringFactory.mapReduceString(this, this.getMemoryKey());
+        public static final <K, V> GroupBiOperatorV3d0<K, V> instance() {
+            return INSTANCE;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/HasNextStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/HasNextStep.java
index a5709cb..b1b6c6e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/HasNextStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/HasNextStep.java
@@ -35,11 +35,11 @@
     }
 
     @Override
-    protected Traverser<Boolean> processNextStart() throws NoSuchElementException {
+    protected Traverser.Admin<Boolean> processNextStart() throws NoSuchElementException {
         if (this.starts.hasNext()) {
             final Traverser.Admin<S> s = this.starts.next();
             return s.split(Boolean.TRUE, this);
         } else
-            return this.traversal.asAdmin().getTraverserGenerator().generate(Boolean.FALSE, (Step) this, 1l);
+            return this.getTraversal().getTraverserGenerator().generate(Boolean.FALSE, (Step) this, 1l);
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LambdaCollectingBarrierStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LambdaCollectingBarrierStep.java
index dbad6a0..0019708 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LambdaCollectingBarrierStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LambdaCollectingBarrierStep.java
@@ -32,6 +32,10 @@
  */
 public final class LambdaCollectingBarrierStep<S> extends CollectingBarrierStep<S> implements LambdaHolder {
 
+    /**
+     * @deprecated Since 3.2.0 -- use {@link NoOpBarrierStep}.
+     */
+    @Deprecated
     public enum Consumers implements Consumer<TraverserSet<Object>> {
         noOp {
             @Override
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapStep.java
index a0890c1..03e544e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapStep.java
@@ -32,7 +32,7 @@
     }
 
     @Override
-    protected Traverser<E> processNextStart() {
+    protected Traverser.Admin<E> processNextStart() {
         final Traverser.Admin<S> traverser = this.starts.next();
         return traverser.split(this.map(traverser), this);
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
index 5452c17..8909d68 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
@@ -24,6 +24,7 @@
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.AndStep;
@@ -31,14 +32,17 @@
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.NotStep;
 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.sideEffect.ProfileStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StartStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ComputerAwareStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ProfileStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.PathRetractionStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.PathUtil;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
@@ -63,7 +67,7 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>> implements TraversalParent, Scoping {
+public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>> implements TraversalParent, Scoping, PathProcessor {
 
     public enum TraversalType {WHERE_PREDICATE, WHERE_TRAVERSAL, MATCH_TRAVERSAL}
 
@@ -76,9 +80,11 @@
     private final String computedStartLabel;
     private MatchAlgorithm matchAlgorithm;
     private Class<? extends MatchAlgorithm> matchAlgorithmClass = CountMatchAlgorithm.class; // default is CountMatchAlgorithm (use MatchAlgorithmStrategy to change)
+    private Map<String, Set<String>> referencedLabelsMap; // memoization of referenced labels for MatchEndSteps (Map<startStepId, referencedLabels>)
 
     private Set<List<Object>> dedups = null;
     private Set<String> dedupLabels = null;
+    private Set<String> keepLabels = null;
 
     public MatchStep(final Traversal.Admin traversal, final ConnectiveStep.Connective connective, final Traversal... matchTraversals) {
         super(traversal);
@@ -154,6 +160,7 @@
         }
     }
 
+
     public ConnectiveStep.Connective getConnective() {
         return this.connective;
     }
@@ -174,6 +181,26 @@
     }
 
     @Override
+    public void setKeepLabels(final Set<String> labels) {
+        this.keepLabels = new HashSet<>(labels);
+        if (null != this.dedupLabels)
+            this.keepLabels.addAll(this.dedupLabels);
+    }
+
+    @Override
+    public Set<String> getKeepLabels() {
+        return keepLabels;
+    }
+
+    public Set<String> getMatchEndLabels() {
+        return this.matchEndLabels;
+    }
+
+    public Set<String> getMatchStartLabels() {
+        return this.matchStartLabels;
+    }
+
+    @Override
     public Set<String> getScopeKeys() {
         if (null == this.scopeKeys) {
             this.scopeKeys = new HashSet<>();
@@ -216,16 +243,26 @@
         final MatchStep<S, E> clone = (MatchStep<S, E>) super.clone();
         clone.matchTraversals = new ArrayList<>();
         for (final Traversal.Admin<Object, Object> traversal : this.matchTraversals) {
-            clone.matchTraversals.add(clone.integrateChild(traversal.clone()));
+            clone.matchTraversals.add(traversal.clone());
         }
         if (this.dedups != null) clone.dedups = new HashSet<>();
         return clone;
     }
 
+    @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        for (final Traversal.Admin<Object, Object> traversal : this.matchTraversals) {
+            this.integrateChild(traversal);
+        }
+    }
+
     public void setDedupLabels(final Set<String> labels) {
         if (!labels.isEmpty()) {
             this.dedups = new HashSet<>();
             this.dedupLabels = new HashSet<>(labels);
+            if (null != this.keepLabels)
+                this.keepLabels.addAll(this.dedupLabels);
         }
     }
 
@@ -301,27 +338,56 @@
         return false;
     }
 
+    private Map<String, Set<String>> getReferencedLabelsMap() {
+        if (null == this.referencedLabelsMap) {
+            this.referencedLabelsMap = new HashMap<>();
+            for (final Traversal.Admin<?, ?> traversal : this.matchTraversals) {
+                final Set<String> referencedLabels = new HashSet<>();
+                for (final Step<?, ?> step : traversal.getSteps()) {
+                    referencedLabels.addAll(PathUtil.getReferencedLabels(step));
+                }
+                this.referencedLabelsMap.put(traversal.getStartStep().getId(), referencedLabels);
+            }
+        }
+        return this.referencedLabelsMap;
+    }
+
+    private final TraverserSet standardAlgorithmBarrier = new TraverserSet();
+
     @Override
-    protected Iterator<Traverser<Map<String, E>>> standardAlgorithm() throws NoSuchElementException {
+    protected Iterator<Traverser.Admin<Map<String, E>>> standardAlgorithm() throws NoSuchElementException {
         while (true) {
-            Traverser.Admin traverser = null;
             if (this.first) {
                 this.first = false;
                 this.initializeMatchAlgorithm(TraversalEngine.Type.STANDARD);
-            } else {
+                if (null != this.keepLabels &&
+                        this.keepLabels.containsAll(this.matchEndLabels) &&
+                        this.keepLabels.containsAll(this.matchStartLabels))
+                    this.keepLabels = null;
+            } else { // TODO: if(standardAlgorithmBarrier.isEmpty()) -- leads to consistent counts without retracting paths, but orders of magnitude slower (or make Traverser.tags an equality concept)
+                boolean stop = false;
                 for (final Traversal.Admin<?, ?> matchTraversal : this.matchTraversals) {
-                    if (matchTraversal.hasNext()) {
-                        traverser = matchTraversal.getEndStep().next().asAdmin();
-                        break;
+                    while (matchTraversal.hasNext()) { // TODO: perhaps make MatchStep a LocalBarrierStep ??
+                        this.standardAlgorithmBarrier.add(matchTraversal.getEndStep().next());
+                        if (null == this.keepLabels || this.standardAlgorithmBarrier.size() >= PathRetractionStrategy.DEFAULT_STANDARD_BARRIER_SIZE) {
+                            stop = true;
+                            break;
+                        }
                     }
+                    if (stop) break;
                 }
             }
-            if (null == traverser) {
+            final Traverser.Admin traverser;
+            if (this.standardAlgorithmBarrier.isEmpty()) {
                 traverser = this.starts.next();
-                if (!this.hasPathLabel(traverser.path(), this.matchStartLabels))
-                    traverser.addLabels(Collections.singleton(this.computedStartLabel)); // if the traverser doesn't have a legal start, then provide it the pre-computed one
-                traverser.getTags().add(this.getId()); // so the traverser never returns to this branch ever again
-            }
+                if (!traverser.getTags().contains(this.getId())) {
+                    traverser.getTags().add(this.getId()); // so the traverser never returns to this branch ever again
+                    if (!this.hasPathLabel(traverser.path(), this.matchStartLabels))
+                        traverser.addLabels(Collections.singleton(this.computedStartLabel)); // if the traverser doesn't have a legal start, then provide it the pre-computed one
+                }
+            } else
+                traverser = this.standardAlgorithmBarrier.remove();
+
             ///
             if (!this.isDuplicate(traverser)) {
                 if (hasMatched(this.connective, traverser))
@@ -343,16 +409,22 @@
     }
 
     @Override
-    protected Iterator<Traverser<Map<String, E>>> computerAlgorithm() throws NoSuchElementException {
+    protected Iterator<Traverser.Admin<Map<String, E>>> computerAlgorithm() throws NoSuchElementException {
         while (true) {
             if (this.first) {
                 this.first = false;
                 this.initializeMatchAlgorithm(TraversalEngine.Type.COMPUTER);
+                if (null != this.keepLabels &&
+                        this.keepLabels.containsAll(this.matchEndLabels) &&
+                        this.keepLabels.containsAll(this.matchStartLabels))
+                    this.keepLabels = null;
             }
             final Traverser.Admin traverser = this.starts.next();
-            if (!this.hasPathLabel(traverser.path(), this.matchStartLabels))
-                traverser.addLabels(Collections.singleton(this.computedStartLabel)); // if the traverser doesn't have a legal start, then provide it the pre-computed one
-            traverser.getTags().add(this.getId()); // so the traverser never returns to this branch ever again
+            if (!traverser.getTags().contains(this.getId())) {
+                traverser.getTags().add(this.getId()); // so the traverser never returns to this branch ever again
+                if (!this.hasPathLabel(traverser.path(), this.matchStartLabels))
+                    traverser.addLabels(Collections.singleton(this.computedStartLabel)); // if the traverser doesn't have a legal start, then provide it the pre-computed one
+            }
             ///
             if (!this.isDuplicate(traverser)) {
                 if (hasMatched(this.connective, traverser)) {
@@ -366,7 +438,7 @@
                     traverser.setStepId(matchTraversal.getStartStep().getId()); // go down the traversal match sub-pattern
                     return IteratorUtils.of(traverser);
                 } else { // OR
-                    final List<Traverser<Map<String, E>>> traversers = new ArrayList<>(this.matchTraversals.size());
+                    final List<Traverser.Admin<Map<String, E>>> traversers = new ArrayList<>(this.matchTraversals.size());
                     for (final Traversal.Admin<?, ?> matchTraversal : this.matchTraversals) {
                         final Traverser.Admin split = traverser.split();
                         split.getTags().add(matchTraversal.getStartStep().getId());
@@ -395,10 +467,11 @@
 
     //////////////////////////////
 
-    public static class MatchStartStep extends AbstractStep<Object, Object> implements Scoping {
+    public static final class MatchStartStep extends AbstractStep<Object, Object> implements Scoping {
 
         private final String selectKey;
         private Set<String> scopeKeys = null;
+        private MatchStep<?, ?> parent = null;
 
         public MatchStartStep(final Traversal.Admin traversal, final String selectKey) {
             super(traversal);
@@ -406,10 +479,12 @@
         }
 
         @Override
-        protected Traverser<Object> processNextStart() throws NoSuchElementException {
+        protected Traverser.Admin<Object> processNextStart() throws NoSuchElementException {
+            if (null == this.parent)
+                this.parent = (MatchStep<?, ?>) this.getTraversal().getParent();
+
             final Traverser.Admin<Object> traverser = this.starts.next();
-            traverser.addLabels(Collections.singleton(this.getId()));
-            ((MatchStep<?, ?>) this.getTraversal().getParent()).getMatchAlgorithm().recordStart(traverser, this.getTraversal());
+            this.parent.getMatchAlgorithm().recordStart(traverser, this.getTraversal());
             // TODO: sideEffect check?
             return null == this.selectKey ? traverser : traverser.split(traverser.path().get(Pop.last, this.selectKey), this);
         }
@@ -445,35 +520,57 @@
         }
     }
 
-    public static class MatchEndStep extends EndStep<Object> {
+    public static final class MatchEndStep extends EndStep<Object> {
 
         private final String matchKey;
+        private final Set<String> matchKeyCollection;
+        private MatchStep<?, ?> parent = null;
 
         public MatchEndStep(final Traversal.Admin traversal, final String matchKey) {
             super(traversal);
             this.matchKey = matchKey;
+            this.matchKeyCollection = Collections.singleton(this.matchKey);
+        }
+
+
+        private <S> Traverser.Admin<S> retractUnnecessaryLabels(final Traverser.Admin<S> traverser) {
+            if (null == this.parent.getKeepLabels())
+                return traverser;
+
+            final Set<String> keepers = new HashSet<>(this.parent.getKeepLabels());
+            final Set<String> tags = traverser.getTags();
+            for (final Traversal.Admin<?, ?> matchTraversal : this.parent.getGlobalChildren()) { // get remaining traversal patterns for the traverser
+                final String startStepId = matchTraversal.getStartStep().getId();
+                if (!tags.contains(startStepId)) {
+                    keepers.addAll(this.parent.getReferencedLabelsMap().get(startStepId)); // get the reference labels required for those remaining traversals
+                }
+            }
+            return PathProcessor.processTraverserPathLabels(traverser, keepers); // remove all reference labels that are no longer required
         }
 
         @Override
-        protected Traverser<Object> processNextStart() throws NoSuchElementException {
+        protected Traverser.Admin<Object> processNextStart() throws NoSuchElementException {
+            if (null == this.parent)
+                this.parent = ((MatchStep) this.getTraversal().getParent().asStep());
+
             while (true) {
                 final Traverser.Admin traverser = this.starts.next();
                 // no end label
                 if (null == this.matchKey) {
-                    if (this.traverserStepIdAndLabelsSetByChild)
-                        traverser.setStepId(((MatchStep<?, ?>) this.getTraversal().getParent()).getId());
-                    ((MatchStep<?, ?>) this.getTraversal().getParent()).getMatchAlgorithm().recordEnd(traverser, this.getTraversal());
-                    return traverser;
+                    // if (this.traverserStepIdAndLabelsSetByChild) -- traverser equality is based on stepId, lets ensure they are all at the parent
+                    traverser.setStepId(this.parent.getId());
+                    this.parent.getMatchAlgorithm().recordEnd(traverser, this.getTraversal());
+                    return this.retractUnnecessaryLabels(traverser);
                 }
                 // TODO: sideEffect check?
                 // path check
                 final Path path = traverser.path();
                 if (!path.hasLabel(this.matchKey) || traverser.get().equals(path.get(Pop.last, this.matchKey))) {
-                    if (this.traverserStepIdAndLabelsSetByChild)
-                        traverser.setStepId(((MatchStep<?, ?>) this.getTraversal().getParent()).getId());
-                    traverser.addLabels(Collections.singleton(this.matchKey));
-                    ((MatchStep<?, ?>) this.getTraversal().getParent()).getMatchAlgorithm().recordEnd(traverser, this.getTraversal());
-                    return traverser;
+                    // if (this.traverserStepIdAndLabelsSetByChild) -- traverser equality is based on stepId and thus, lets ensure they are all at the parent
+                    traverser.setStepId(this.parent.getId());
+                    traverser.addLabels(this.matchKeyCollection);
+                    this.parent.getMatchAlgorithm().recordEnd(traverser, this.getTraversal());
+                    return this.retractUnnecessaryLabels(traverser);
                 }
             }
         }
@@ -563,7 +660,6 @@
                 }
                 return 0;
             });
-            //System.out.println(sort);
             return sort.get(0);
         }
     }
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 c552bab..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,36 +18,31 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
+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.MapReducer;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
-import java.io.Serializable;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.Set;
-import java.util.function.BiFunction;
-
-import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.max;
+import java.util.function.BinaryOperator;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class MaxGlobalStep<S extends Number> extends ReducingBarrierStep<S, S> implements MapReducer {
+public final class MaxGlobalStep<S extends Number> extends ReducingBarrierStep<S, S> {
 
     public MaxGlobalStep(final Traversal.Admin traversal) {
         super(traversal);
-        this.setSeedSupplier(new ConstantSupplier<>(null));
-        this.setBiFunction(MaxGlobalBiFunction.<S>instance());
+        this.setSeedSupplier(new ConstantSupplier<>((S) Integer.valueOf(Integer.MIN_VALUE)));
+        this.setReducingBiOperator((BinaryOperator) Operator.max);
+    }
+
+    @Override
+    public S projectTraverser(Traverser.Admin<S> traverser) {
+        return traverser.get();
     }
 
     @Override
@@ -55,87 +50,4 @@
         return Collections.singleton(TraverserRequirement.OBJECT);
     }
 
-    @Override
-    public MapReduce<MapReduce.NullObject, Number, MapReduce.NullObject, Number, Number> getMapReduce() {
-        return MaxGlobalMapReduce.instance();
-    }
-
-    /////
-
-    private static class MaxGlobalBiFunction<S extends Number> implements BiFunction<S, Traverser<S>, S>, Serializable {
-
-        private static final MaxGlobalBiFunction INSTANCE = new MaxGlobalBiFunction();
-
-        private MaxGlobalBiFunction() {
-
-        }
-
-        @Override
-        public S apply(final S mutatingSeed, final Traverser<S> traverser) {
-            final S value = traverser.get();
-            return mutatingSeed != null ? (S) max(mutatingSeed, traverser.get()) : value;
-        }
-
-        public static <S extends Number> MaxGlobalBiFunction<S> instance() {
-            return INSTANCE;
-        }
-    }
-
-    ///////////
-
-    private static class MaxGlobalMapReduce extends StaticMapReduce<MapReduce.NullObject, Number, MapReduce.NullObject, Number, Number> {
-
-        private static final MaxGlobalMapReduce INSTANCE = new MaxGlobalMapReduce();
-
-        private MaxGlobalMapReduce() {
-
-        }
-
-        @Override
-        public boolean doStage(final MapReduce.Stage stage) {
-            return true;
-        }
-
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<NullObject, Number> emitter) {
-            final Iterator<Number> values = IteratorUtils.map(vertex.<Set<Traverser.Admin<Number>>>property(TraversalVertexProgram.HALTED_TRAVERSERS).orElse(Collections.emptySet()).iterator(), Traverser.Admin::get);
-            if (values.hasNext())
-                emitter.emit(getMax(values));
-        }
-
-        @Override
-        public void combine(final NullObject key, final Iterator<Number> values, final ReduceEmitter<NullObject, Number> emitter) {
-            this.reduce(key, values, emitter);
-        }
-
-        @Override
-        public void reduce(final NullObject key, final Iterator<Number> values, final ReduceEmitter<NullObject, Number> emitter) {
-            if (values.hasNext())
-                emitter.emit(getMax(values));
-        }
-
-        private Number getMax(final Iterator<Number> numbers) {
-            Number max = null;
-            while (numbers.hasNext()) {
-                final Number value = numbers.next();
-                max = max != null ? max(value, max) : value;
-            }
-            return max;
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return REDUCING;
-        }
-
-        @Override
-        public Number generateFinalResult(final Iterator<KeyValue<NullObject, Number>> keyValues) {
-            return keyValues.hasNext() ? keyValues.next().getValue() : Double.NaN;
-
-        }
-
-        public static MaxGlobalMapReduce instance() {
-            return INSTANCE;
-        }
-    }
 }
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java
index a4e4272..806d35c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MeanGlobalStep.java
@@ -18,29 +18,19 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
 import org.apache.tinkerpop.gremlin.process.traversal.NumberHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.FinalGet;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 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.Vertex;
 import org.apache.tinkerpop.gremlin.util.function.MeanNumberSupplier;
 
 import java.io.Serializable;
 import java.util.EnumSet;
-import java.util.Iterator;
 import java.util.Set;
-import java.util.function.BiFunction;
+import java.util.function.BinaryOperator;
 import java.util.function.Supplier;
 
-import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.add;
 import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.div;
 import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.mul;
 
@@ -48,14 +38,19 @@
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Daniel Kuppitz (http://gremlin.guru)
  */
-public final class MeanGlobalStep<S extends Number, E extends Number> extends ReducingBarrierStep<S, E> implements MapReducer {
+public final class MeanGlobalStep<S extends Number, E extends Number> extends ReducingBarrierStep<S, E> {
 
     private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(TraverserRequirement.OBJECT, TraverserRequirement.BULK);
 
     public MeanGlobalStep(final Traversal.Admin traversal) {
         super(traversal);
         this.setSeedSupplier((Supplier) MeanNumberSupplier.instance());
-        this.setBiFunction((BiFunction) MeanGlobalBiFunction.instance());
+        this.setReducingBiOperator(MeanGlobalBiOperator.INSTANCE);
+    }
+
+    @Override
+    public E projectTraverser(final Traverser.Admin<S> traverser) {
+        return (E) new MeanNumber(traverser.get(), traverser.bulk());
     }
 
     @Override
@@ -64,94 +59,31 @@
     }
 
     @Override
-    public MapReduce<Number, Long, Number, Long, Number> getMapReduce() {
-        return MeanGlobalMapReduce.instance();
+    public E generateFinalResult(final E meanNumber) {
+        return (E) ((MeanNumber) meanNumber).getFinal();
     }
 
     /////
 
-    private static class MeanGlobalBiFunction<S extends Number> implements BiFunction<S, Traverser<S>, S>, Serializable {
+    public static final class MeanGlobalBiOperator<S extends Number> implements BinaryOperator<S>, Serializable {
 
-        private static final MeanGlobalBiFunction INSTANCE = new MeanGlobalBiFunction();
-
-        private MeanGlobalBiFunction() {
-
-        }
+        private static final MeanGlobalBiOperator INSTANCE = new MeanGlobalBiOperator();
 
         @Override
-        public S apply(final S mutatingSeed, final Traverser<S> traverser) {
-            return (S) ((MeanNumber) mutatingSeed).add(traverser.get(), traverser.bulk());
-        }
-
-        public static <S extends Number> MeanGlobalBiFunction<S> instance() {
-            return INSTANCE;
+        public S apply(final S mutatingSeed, final S number) {
+            if (mutatingSeed instanceof MeanNumber) {
+                return (number instanceof MeanNumber) ?
+                        (S) ((MeanNumber) mutatingSeed).add((MeanNumber) number) :
+                        (S) ((MeanNumber) mutatingSeed).add(number, 1l);
+            } else {
+                return (number instanceof MeanNumber) ?
+                        (S) ((MeanNumber) number).add(mutatingSeed, 1l) :
+                        (S) new MeanNumber(number, 1l).add(mutatingSeed, 1l);
+            }
         }
     }
 
-    ///////////
-
-    private static final class MeanGlobalMapReduce extends StaticMapReduce<Number, Long, Number, Long, Number> {
-
-        private static final MeanGlobalMapReduce INSTANCE = new MeanGlobalMapReduce();
-
-        private MeanGlobalMapReduce() {
-
-        }
-
-        @Override
-        public boolean doStage(final MapReduce.Stage stage) {
-            return true;
-        }
-
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<Number, Long> emitter) {
-            vertex.<TraverserSet<Number>>property(TraversalVertexProgram.HALTED_TRAVERSERS).ifPresent(traverserSet -> traverserSet.forEach(traverser -> emitter.emit(traverser.get(), traverser.bulk())));
-        }
-
-        @Override
-        public void combine(final Number key, final Iterator<Long> values, final ReduceEmitter<Number, Long> emitter) {
-            this.reduce(key, values, emitter);
-        }
-
-        @Override
-        public void reduce(final Number key, final Iterator<Long> values, final ReduceEmitter<Number, Long> emitter) {
-            long counter = 0;
-            while (values.hasNext()) {
-                counter = counter + values.next();
-            }
-            emitter.emit(key, counter);
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return REDUCING;
-        }
-
-        @Override
-        public Number generateFinalResult(final Iterator<KeyValue<Number, Long>> keyValues) {
-            if (keyValues.hasNext()) {
-                KeyValue<Number, Long> pair = keyValues.next();
-                long counter = pair.getValue();
-                Number result = mul(pair.getKey(), counter);
-                while (keyValues.hasNext()) {
-                    long incr = pair.getValue();
-                    pair = keyValues.next();
-                    result = add(result, mul(pair.getKey(), incr));
-                    counter += incr;
-                }
-                return div(result, counter, true);
-            }
-            return Double.NaN;
-        }
-
-        public static MeanGlobalMapReduce instance() {
-            return INSTANCE;
-        }
-    }
-
-    ///
-
-    public static final class MeanNumber extends Number implements Comparable<Number>, FinalGet<Number> {
+    public static final class MeanNumber extends Number implements Comparable<Number> {
 
         private long count;
         private Number sum;
@@ -218,7 +150,6 @@
             return Double.valueOf(this.doubleValue()).hashCode();
         }
 
-        @Override
         public Number getFinal() {
             return div(this.sum, this.count, true);
         }
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 88dd46f..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,122 +18,35 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
+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.MapReducer;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
-import java.io.Serializable;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.Set;
-import java.util.function.BiFunction;
-
-import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.min;
+import java.util.function.BinaryOperator;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class MinGlobalStep<S extends Number> extends ReducingBarrierStep<S, S> implements MapReducer {
+public final class MinGlobalStep<S extends Number> extends ReducingBarrierStep<S, S> {
 
     public MinGlobalStep(final Traversal.Admin traversal) {
         super(traversal);
-        this.setSeedSupplier(new ConstantSupplier<>(null));
-        this.setBiFunction(MinGlobalBiFunction.instance());
+        this.setSeedSupplier(new ConstantSupplier<>((S)Integer.valueOf(Integer.MAX_VALUE)));
+        this.setReducingBiOperator((BinaryOperator) Operator.min);
+    }
+
+    @Override
+    public S projectTraverser(final Traverser.Admin<S> traverser) {
+        return traverser.get();
     }
 
     @Override
     public Set<TraverserRequirement> getRequirements() {
         return Collections.singleton(TraverserRequirement.OBJECT);
     }
-
-    @Override
-    public MapReduce<MapReduce.NullObject, Number, MapReduce.NullObject, Number, Number> getMapReduce() {
-        return MinGlobalMapReduce.instance();
-    }
-
-    /////
-
-    private static class MinGlobalBiFunction<S extends Number> implements BiFunction<S, Traverser<S>, S>, Serializable {
-
-        private static final MinGlobalBiFunction INSTANCE = new MinGlobalBiFunction();
-
-        private MinGlobalBiFunction() {
-
-        }
-
-        @Override
-        public S apply(final S mutatingSeed, final Traverser<S> traverser) {
-            final S value = traverser.get();
-            return mutatingSeed != null ? (S) min(mutatingSeed, traverser.get()) : value;
-        }
-
-        public static <S extends Number> MinGlobalBiFunction<S> instance() {
-            return INSTANCE;
-        }
-    }
-
-    ///////////
-
-    private static class MinGlobalMapReduce extends StaticMapReduce<MapReduce.NullObject, Number, MapReduce.NullObject, Number, Number> {
-
-        private static final MinGlobalMapReduce INSTANCE = new MinGlobalMapReduce();
-
-        private MinGlobalMapReduce() {
-
-        }
-
-        @Override
-        public boolean doStage(final MapReduce.Stage stage) {
-            return true;
-        }
-
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<NullObject, Number> emitter) {
-            final Iterator<Number> values = IteratorUtils.map(vertex.<Set<Traverser.Admin<Number>>>property(TraversalVertexProgram.HALTED_TRAVERSERS).orElse(Collections.emptySet()).iterator(), Traverser.Admin::get);
-            if (values.hasNext())
-                emitter.emit(getMin(values));
-        }
-
-        @Override
-        public void combine(final NullObject key, final Iterator<Number> values, final ReduceEmitter<NullObject, Number> emitter) {
-            this.reduce(key, values, emitter);
-        }
-
-        @Override
-        public void reduce(final NullObject key, final Iterator<Number> values, final ReduceEmitter<NullObject, Number> emitter) {
-            if (values.hasNext()) emitter.emit(getMin(values));
-        }
-
-        private Number getMin(final Iterator<Number> numbers) {
-            Number min = null;
-            while (numbers.hasNext()) {
-                final Number value = numbers.next();
-                min = min != null ? min(value, min) : value;
-            }
-            return min;
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return REDUCING;
-        }
-
-        @Override
-        public Number generateFinalResult(final Iterator<KeyValue<NullObject, Number>> keyValues) {
-            return keyValues.hasNext() ? keyValues.next().getValue() : Double.NaN;
-        }
-
-        public static MinGlobalMapReduce instance() {
-            return INSTANCE;
-        }
-    }
 }
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/NoOpBarrierStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/NoOpBarrierStep.java
new file mode 100644
index 0000000..bedf078
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/NoOpBarrierStep.java
@@ -0,0 +1,118 @@
+/*
+ * 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.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.LocalBarrier;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
+import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+
+import java.util.Collections;
+import java.util.NoSuchElementException;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class NoOpBarrierStep<S> extends AbstractStep<S, S> implements LocalBarrier<S> {
+
+    private int maxBarrierSize;
+    private TraverserSet<S> barrier = new TraverserSet<>();
+
+    public NoOpBarrierStep(final Traversal.Admin traversal) {
+        this(traversal, Integer.MAX_VALUE);
+    }
+
+    public NoOpBarrierStep(final Traversal.Admin traversal, final int maxBarrierSize) {
+        super(traversal);
+        this.maxBarrierSize = maxBarrierSize;
+    }
+
+    @Override
+    protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
+        if (this.barrier.isEmpty())
+            this.processAllStarts();
+        return this.barrier.remove();
+    }
+
+    @Override
+    public Set<TraverserRequirement> getRequirements() {
+        return Collections.singleton(TraverserRequirement.BULK);
+    }
+
+    @Override
+    public void processAllStarts() {
+        while (this.starts.hasNext() && (this.maxBarrierSize == Integer.MAX_VALUE || this.barrier.size() < this.maxBarrierSize)) {
+            final Traverser.Admin<S> traverser = this.starts.next();
+            traverser.setStepId(this.getNextStep().getId()); // when barrier is reloaded, the traversers should be at the next step
+            this.barrier.add(traverser);
+        }
+    }
+
+    @Override
+    public boolean hasNextBarrier() {
+        this.processAllStarts();
+        return !this.barrier.isEmpty();
+    }
+
+    @Override
+    public TraverserSet<S> nextBarrier() throws NoSuchElementException {
+        this.processAllStarts();
+        if (this.barrier.isEmpty())
+            throw FastNoSuchElementException.instance();
+        else {
+            final TraverserSet<S> temp = this.barrier;
+            this.barrier = new TraverserSet<>();
+            return temp;
+        }
+    }
+
+    @Override
+    public void addBarrier(final TraverserSet<S> barrier) {
+        this.barrier.addAll(barrier);
+    }
+
+    @Override
+    public NoOpBarrierStep<S> clone() {
+        final NoOpBarrierStep<S> clone = (NoOpBarrierStep<S>) super.clone();
+        clone.barrier = new TraverserSet<>();
+        return clone;
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.stepString(this, this.maxBarrierSize == Integer.MAX_VALUE ? null : this.maxBarrierSize);
+    }
+
+    @Override
+    public int hashCode() {
+        return super.hashCode() ^ this.maxBarrierSize;
+    }
+
+    @Override
+    public void reset() {
+        super.reset();
+        this.barrier.clear();
+    }
+}
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 dd085e9..1daa31a 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
@@ -18,32 +18,39 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
+import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
 import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.IdentityTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.ComparatorHolder;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.CollectingBarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.ComparatorTraverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.TraversalComparator;
 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.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.function.ChainedComparator;
+import org.javatuples.Pair;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
+import java.util.function.BinaryOperator;
 import java.util.stream.Collectors;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class OrderGlobalStep<S> extends CollectingBarrierStep<S> implements ComparatorHolder<S>, TraversalParent {
+public final class OrderGlobalStep<S, C extends Comparable> extends CollectingBarrierStep<S> implements ComparatorHolder<S, C>, TraversalParent, ByModulating {
 
-    private List<Comparator<S>> comparators = new ArrayList<>();
-    private ChainedComparator chainedComparator = null;
+    private List<Pair<Traversal.Admin<S, C>, Comparator<C>>> comparators = new ArrayList<>();
+    private ChainedComparator<S, C> chainedComparator = null;
+    private long limit = Long.MAX_VALUE;
 
     public OrderGlobalStep(final Traversal.Admin traversal) {
         super(traversal);
@@ -52,23 +59,39 @@
     @Override
     public void barrierConsumer(final TraverserSet<S> traverserSet) {
         if (null == this.chainedComparator)
-            this.chainedComparator = new ChainedComparator<>(ComparatorTraverser.convertComparator((List) this.getComparators()));
+            this.chainedComparator = new ChainedComparator<>(true, this.comparators);
         if (this.chainedComparator.isShuffle())
             traverserSet.shuffle();
         else
-            traverserSet.sort(this.chainedComparator);
+            traverserSet.sort((Comparator) this.chainedComparator);
+    }
+
+    public void setLimit(final long limit) {
+        this.limit = limit;
+    }
+
+    public long getLimit() {
+        return this.limit;
     }
 
     @Override
-    public void addComparator(final Comparator<S> comparator) {
-        if (comparator instanceof TraversalComparator)
-            this.integrateChild(((TraversalComparator) comparator).getTraversal());
-        this.comparators.add(comparator);
+    public void addComparator(final Traversal.Admin<S, C> traversal, final Comparator<C> comparator) {
+        this.comparators.add(new Pair<>(this.integrateChild(traversal), comparator));
     }
 
     @Override
-    public List<Comparator<S>> getComparators() {
-        return this.comparators.isEmpty() ? Collections.singletonList((Comparator) Order.incr) : Collections.unmodifiableList(this.comparators);
+    public void modulateBy(final Traversal.Admin<?, ?> traversal) {
+        this.addComparator((Traversal.Admin<S, C>) traversal, (Comparator) Order.incr);
+    }
+
+    @Override
+    public void modulateBy(final Traversal.Admin<?, ?> traversal, final Comparator comparator) {
+        this.addComparator((Traversal.Admin<S, C>) traversal, comparator);
+    }
+
+    @Override
+    public List<Pair<Traversal.Admin<S, C>, Comparator<C>>> getComparators() {
+        return this.comparators.isEmpty() ? Collections.singletonList(new Pair<>(new IdentityTraversal(), (Comparator) Order.incr)) : Collections.unmodifiableList(this.comparators);
     }
 
     @Override
@@ -79,8 +102,8 @@
     @Override
     public int hashCode() {
         int result = super.hashCode();
-        for (final Comparator<S> comparator : this.comparators) {
-            result ^= comparator.hashCode();
+        for (int i = 0; i < this.comparators.size(); i++) {
+            result ^= this.comparators.get(i).hashCode() * (i+1);
         }
         return result;
     }
@@ -91,26 +114,68 @@
     }
 
     @Override
-    public <S, E> List<Traversal.Admin<S, E>> getLocalChildren() {
-        return Collections.unmodifiableList(this.comparators.stream()
-                .filter(comparator -> comparator instanceof TraversalComparator)
-                .map(traversalComparator -> ((TraversalComparator<S, E>) traversalComparator).getTraversal())
-                .collect(Collectors.toList()));
+    public List<Traversal.Admin<S, C>> getLocalChildren() {
+        return (List) this.comparators.stream().map(Pair::getValue0).collect(Collectors.toList());
     }
 
     @Override
-    public void addLocalChild(final Traversal.Admin<?, ?> localChildTraversal) {
-        this.addComparator(new TraversalComparator<>((Traversal.Admin) localChildTraversal, Order.incr));
-    }
-
-    @Override
-    public OrderGlobalStep<S> clone() {
-        final OrderGlobalStep<S> clone = (OrderGlobalStep<S>) super.clone();
+    public OrderGlobalStep<S, C> clone() {
+        final OrderGlobalStep<S, C> clone = (OrderGlobalStep<S, C>) super.clone();
         clone.comparators = new ArrayList<>();
-        for (final Comparator<S> comparator : this.comparators) {
-            clone.addComparator(comparator instanceof TraversalComparator ? ((TraversalComparator) comparator).clone() : comparator);
+        for (final Pair<Traversal.Admin<S, C>, Comparator<C>> comparator : this.comparators) {
+            clone.comparators.add(new Pair<>(comparator.getValue0().clone(), comparator.getValue1()));
         }
         clone.chainedComparator = null;
         return clone;
     }
+
+    @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.comparators.stream().map(Pair::getValue0).forEach(TraversalParent.super::integrateChild);
+    }
+
+    @Override
+    public MemoryComputeKey<TraverserSet<S>> getMemoryComputeKey() {
+        if (null == this.chainedComparator)
+            this.chainedComparator = new ChainedComparator<>(true, this.comparators);
+        return MemoryComputeKey.of(this.getId(), new OrderBiOperator<>(this.chainedComparator, this.limit), false, true);
+    }
+
+    ////////////////
+
+    public static final class OrderBiOperator<S> implements BinaryOperator<TraverserSet<S>>, Serializable {
+
+        private ChainedComparator chainedComparator;
+        private long limit;
+
+        private OrderBiOperator() {
+            // for serializers that need a no-arg constructor
+        }
+
+        public OrderBiOperator(final ChainedComparator<S,?> chainedComparator, final long limit) {
+            this.chainedComparator = chainedComparator;
+            this.limit = limit;
+        }
+
+        @Override
+        public TraverserSet<S> apply(final TraverserSet<S> setA, final TraverserSet<S> setB) {
+            setA.addAll(setB);
+            if (Long.MAX_VALUE != this.limit && setA.bulkSize() > this.limit) {
+                if (this.chainedComparator.isShuffle())
+                    setA.shuffle();
+                else
+                    setA.sort(this.chainedComparator);
+                long counter = 0l;
+                final Iterator<Traverser.Admin<S>> traversers = setA.iterator();
+                while (traversers.hasNext()) {
+                    final Traverser.Admin<S> traverser = traversers.next();
+                    if (counter > this.limit)
+                        traversers.remove();
+                    counter = counter + traverser.bulk();
+                }
+            }
+            return setA;
+        }
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java
index 37d6c33..56f3404 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java
@@ -21,12 +21,14 @@
 import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.IdentityTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.ComparatorHolder;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.TraversalComparator;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.function.ChainedComparator;
+import org.javatuples.Pair;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -41,10 +43,10 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class OrderLocalStep<S, M> extends MapStep<S, S> implements ComparatorHolder<M>, TraversalParent {
+public final class OrderLocalStep<S, C extends Comparable> extends MapStep<S, S> implements ComparatorHolder<S, C>, ByModulating, TraversalParent {
 
-    private List<Comparator<M>> comparators = new ArrayList<>();
-    private ChainedComparator<M> chainedComparator = null;
+    private List<Pair<Traversal.Admin<S, C>, Comparator<C>>> comparators = new ArrayList<>();
+    private ChainedComparator<S, C> chainedComparator = null;
 
     public OrderLocalStep(final Traversal.Admin traversal) {
         super(traversal);
@@ -53,7 +55,7 @@
     @Override
     protected S map(final Traverser.Admin<S> traverser) {
         if (null == this.chainedComparator)
-            this.chainedComparator = new ChainedComparator<>(this.getComparators());
+            this.chainedComparator = new ChainedComparator<>(false, this.comparators);
         final S start = traverser.get();
         if (start instanceof Collection)
             return (S) OrderLocalStep.sortCollection((Collection) start, this.chainedComparator);
@@ -64,15 +66,23 @@
     }
 
     @Override
-    public void addComparator(final Comparator<M> comparator) {
-        this.comparators.add(comparator);
-        if (comparator instanceof TraversalComparator)
-            this.integrateChild(((TraversalComparator) comparator).getTraversal());
+    public void addComparator(final Traversal.Admin<S, C> traversal, final Comparator<C> comparator) {
+        this.comparators.add(new Pair<>(this.integrateChild(traversal), comparator));
     }
 
     @Override
-    public List<Comparator<M>> getComparators() {
-        return this.comparators.isEmpty() ? Collections.singletonList((Comparator) Order.incr) : Collections.unmodifiableList(this.comparators);
+    public void modulateBy(final Traversal.Admin<?, ?> traversal) {
+        this.addComparator((Traversal.Admin<S, C>) traversal, (Comparator) Order.incr);
+    }
+
+    @Override
+    public void modulateBy(final Traversal.Admin<?, ?> traversal, final Comparator comparator) {
+        this.addComparator((Traversal.Admin<S, C>) traversal, comparator);
+    }
+
+    @Override
+    public List<Pair<Traversal.Admin<S, C>, Comparator<C>>> getComparators() {
+        return this.comparators.isEmpty() ? Collections.singletonList(new Pair<>(new IdentityTraversal(), (Comparator) Order.incr)) : Collections.unmodifiableList(this.comparators);
     }
 
     @Override
@@ -83,8 +93,8 @@
     @Override
     public int hashCode() {
         int result = super.hashCode();
-        for (final Comparator<M> comparator : this.comparators) {
-            result ^= comparator.hashCode();
+        for (int i = 0; i < this.comparators.size(); i++) {
+            result ^= this.comparators.get(i).hashCode() * (i + 1);
         }
         return result;
     }
@@ -95,49 +105,48 @@
     }
 
     @Override
-    public <S, E> List<Traversal.Admin<S, E>> getLocalChildren() {
-        return Collections.unmodifiableList(this.comparators.stream()
-                .filter(comparator -> comparator instanceof TraversalComparator)
-                .map(traversalComparator -> ((TraversalComparator<S, E>) traversalComparator).getTraversal())
-                .collect(Collectors.toList()));
+    public List<Traversal.Admin<S, C>> getLocalChildren() {
+        return (List) this.comparators.stream().map(Pair::getValue0).collect(Collectors.toList());
     }
 
-    @Override
-    public void addLocalChild(final Traversal.Admin<?, ?> localChildTraversal) {
-        this.addComparator(new TraversalComparator<>((Traversal.Admin) localChildTraversal, Order.incr));
-    }
 
     @Override
-    public OrderLocalStep<S, M> clone() {
-        final OrderLocalStep<S, M> clone = (OrderLocalStep<S, M>) super.clone();
+    public OrderLocalStep<S, C> clone() {
+        final OrderLocalStep<S, C> clone = (OrderLocalStep<S, C>) super.clone();
         clone.comparators = new ArrayList<>();
-        for (final Comparator<M> comparator : this.comparators) {
-            clone.addComparator(comparator instanceof TraversalComparator ? ((TraversalComparator) comparator).clone() : comparator);
+        for (final Pair<Traversal.Admin<S, C>, Comparator<C>> comparator : this.comparators) {
+            clone.comparators.add(new Pair<>(comparator.getValue0().clone(), comparator.getValue1()));
         }
         clone.chainedComparator = null;
         return clone;
     }
 
+    @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.comparators.stream().map(Pair::getValue0).forEach(TraversalParent.super::integrateChild);
+    }
+
     /////////////
 
-    private static final <A> List<A> sortCollection(final Collection<A> collection, final ChainedComparator<?> comparator) {
+    private static final <A> List<A> sortCollection(final Collection<A> collection, final ChainedComparator comparator) {
         if (collection instanceof List) {
             if (comparator.isShuffle())
                 Collections.shuffle((List) collection);
             else
-                Collections.sort((List) collection, (Comparator) comparator);
+                Collections.sort((List) collection, comparator);
             return (List<A>) collection;
         } else {
             return sortCollection(new ArrayList<>(collection), comparator);
         }
     }
 
-    private static final <K, V> Map<K, V> sortMap(final Map<K, V> map, final ChainedComparator<?> comparator) {
+    private static final <K, V> Map<K, V> sortMap(final Map<K, V> map, final ChainedComparator comparator) {
         final List<Map.Entry<K, V>> entries = new ArrayList<>(map.entrySet());
         if (comparator.isShuffle())
             Collections.shuffle(entries);
         else
-            Collections.sort(entries, (Comparator) comparator);
+            Collections.sort(entries, comparator);
         final LinkedHashMap<K, V> sortedMap = new LinkedHashMap<>();
         entries.forEach(entry -> sortedMap.put(entry.getKey(), entry.getValue()));
         return sortedMap;
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PathStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PathStep.java
index f4cacba..6dca028 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PathStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PathStep.java
@@ -21,6 +21,7 @@
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 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;
 import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.MutablePath;
@@ -35,9 +36,10 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class PathStep<S> extends MapStep<S, Path> implements TraversalParent, PathProcessor {
+public final class PathStep<S> extends MapStep<S, Path> implements TraversalParent, PathProcessor, ByModulating {
 
     private TraversalRing<Object, Object> traversalRing;
+    private Set<String> keepLabels;
 
     public PathStep(final Traversal.Admin traversal) {
         super(traversal);
@@ -61,11 +63,16 @@
     public PathStep<S> clone() {
         final PathStep<S> clone = (PathStep<S>) super.clone();
         clone.traversalRing = this.traversalRing.clone();
-        clone.getLocalChildren().forEach(clone::integrateChild);
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.traversalRing.getTraversals().forEach(this::integrateChild);
+    }
+
+    @Override
     public int hashCode() {
         return super.hashCode() ^ this.traversalRing.hashCode();
     }
@@ -82,7 +89,7 @@
     }
 
     @Override
-    public void addLocalChild(final Traversal.Admin<?, ?> pathTraversal) {
+    public void modulateBy(final Traversal.Admin<?, ?> pathTraversal) {
         this.traversalRing.addTraversal(this.integrateChild(pathTraversal));
     }
 
@@ -95,4 +102,19 @@
     public Set<TraverserRequirement> getRequirements() {
         return this.getSelfAndChildRequirements(TraverserRequirement.PATH);
     }
+
+    @Override
+    public void setKeepLabels(final Set<String> labels) {
+        this.keepLabels = labels;
+    }
+
+    @Override
+    protected Traverser.Admin<Path> processNextStart() {
+        return PathProcessor.processTraverserPathLabels(super.processNextStart(), this.keepLabels);
+    }
+
+    @Override
+    public Set<String> getKeepLabels() {
+        return this.keepLabels;
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProjectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProjectStep.java
new file mode 100644
index 0000000..2e586b7
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProjectStep.java
@@ -0,0 +1,104 @@
+/*
+ * 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.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.ByModulating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalRing;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class ProjectStep<S, E> extends MapStep<S, Map<String, E>> implements TraversalParent, ByModulating {
+
+    private final List<String> projectKeys;
+    private TraversalRing<S, E> traversalRing;
+
+    public ProjectStep(final Traversal.Admin traversal, final String... projectKeys) {
+        super(traversal);
+        this.projectKeys = Arrays.asList(projectKeys);
+        this.traversalRing = new TraversalRing<>();
+    }
+
+    @Override
+    protected Map<String, E> map(final Traverser.Admin<S> traverser) {
+        final Map<String, E> end = new LinkedHashMap<>(this.projectKeys.size(), 1.0f);
+        for (final String projectKey : this.projectKeys) {
+            end.put(projectKey, TraversalUtil.apply(traverser, this.traversalRing.next()));
+        }
+        this.traversalRing.reset();
+        return end;
+    }
+
+    @Override
+    public void reset() {
+        super.reset();
+        this.traversalRing.reset();
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.stepString(this, this.projectKeys, this.traversalRing);
+    }
+
+    @Override
+    public ProjectStep<S, E> clone() {
+        final ProjectStep<S, E> clone = (ProjectStep<S, E>) super.clone();
+        clone.traversalRing = this.traversalRing.clone();
+        return clone;
+    }
+
+    @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.traversalRing.getTraversals().forEach(this::integrateChild);
+    }
+
+    @Override
+    public int hashCode() {
+        return super.hashCode() ^ this.traversalRing.hashCode() ^ this.projectKeys.hashCode();
+    }
+
+    @Override
+    public List<Traversal.Admin<S, E>> getLocalChildren() {
+        return this.traversalRing.getTraversals();
+    }
+
+    @Override
+    public void modulateBy(final Traversal.Admin<?, ?> selectTraversal) {
+        this.traversalRing.addTraversal(this.integrateChild(selectTraversal));
+    }
+
+    @Override
+    public Set<TraverserRequirement> getRequirements() {
+        return this.getSelfAndChildRequirements();
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStep.java
index 4d7ecb7..a51a8d2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStep.java
@@ -21,6 +21,7 @@
 import org.apache.tinkerpop.gremlin.process.traversal.Pop;
 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;
 import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
@@ -36,11 +37,12 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class SelectOneStep<S, E> extends MapStep<S, E> implements TraversalParent, Scoping, PathProcessor {
+public final class SelectOneStep<S, E> extends MapStep<S, E> implements TraversalParent, Scoping, PathProcessor, ByModulating {
 
     private final Pop pop;
     private final String selectKey;
     private Traversal.Admin<S, E> selectTraversal = null;
+    private Set<String> keepLabels;
 
     public SelectOneStep(final Traversal.Admin traversal, Pop pop, final String selectKey) {
         super(traversal);
@@ -63,11 +65,17 @@
     public SelectOneStep<S, E> clone() {
         final SelectOneStep<S, E> clone = (SelectOneStep<S, E>) super.clone();
         if (null != this.selectTraversal)
-            clone.selectTraversal = clone.integrateChild(this.selectTraversal.clone());
+            clone.selectTraversal = this.selectTraversal.clone();
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.integrateChild(this.selectTraversal);
+    }
+
+    @Override
     public int hashCode() {
         int result = super.hashCode() ^ this.selectKey.hashCode();
         if (null != this.selectTraversal)
@@ -83,7 +91,13 @@
     }
 
     @Override
-    public void addLocalChild(final Traversal.Admin<?, ?> selectTraversal) {
+    public void removeLocalChild(final Traversal.Admin<?, ?> traversal) {
+        if (this.selectTraversal == traversal)
+            this.selectTraversal = null;
+    }
+
+    @Override
+    public void modulateBy(final Traversal.Admin<?, ?> selectTraversal) {
         this.selectTraversal = this.integrateChild(selectTraversal);
     }
 
@@ -98,6 +112,27 @@
     public Set<String> getScopeKeys() {
         return Collections.singleton(this.selectKey);
     }
+
+    public Pop getPop() {
+        return this.pop;
+    }
+
+    @Override
+    public void setKeepLabels(final Set<String> labels) {
+        this.keepLabels = labels;
+    }
+
+    @Override
+    public Set<String> getKeepLabels() { return this.keepLabels; }
+
+    @Override
+    protected Traverser.Admin<E> processNextStart() {
+        final Traverser.Admin<E> traverser = super.processNextStart();
+        if(!(this.getTraversal().getParent() instanceof MatchStep)) {
+            PathProcessor.processTraverserPathLabels(traverser, this.keepLabels);
+        }
+        return traverser;
+    }
 }
 
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStep.java
index e7b4fd8..7c54708 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStep.java
@@ -21,6 +21,7 @@
 import org.apache.tinkerpop.gremlin.process.traversal.Pop;
 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;
 import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
@@ -32,6 +33,7 @@
 
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -41,12 +43,13 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class SelectStep<S, E> extends MapStep<S, Map<String, E>> implements Scoping, TraversalParent, PathProcessor {
+public final class SelectStep<S, E> extends MapStep<S, Map<String, E>> implements Scoping, TraversalParent, PathProcessor, ByModulating {
 
     private TraversalRing<Object, E> traversalRing = new TraversalRing<>();
     private final Pop pop;
     private final List<String> selectKeys;
     private final Set<String> selectKeysSet;
+    private Set<String> keepLabels;
 
     public SelectStep(final Traversal.Admin traversal, final Pop pop, final String... selectKeys) {
         super(traversal);
@@ -59,7 +62,7 @@
 
     @Override
     protected Map<String, E> map(final Traverser.Admin<S> traverser) {
-        final Map<String, E> bindings = new LinkedHashMap<>();
+        final Map<String, E> bindings = new LinkedHashMap<>(this.selectKeys.size(), 1.0f);
         for (final String selectKey : this.selectKeys) {
             final E end = this.getNullableScopeValue(this.pop, selectKey, traverser);
             if (null != end)
@@ -88,11 +91,16 @@
     public SelectStep<S, E> clone() {
         final SelectStep<S, E> clone = (SelectStep<S, E>) super.clone();
         clone.traversalRing = this.traversalRing.clone();
-        clone.getLocalChildren().forEach(clone::integrateChild);
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.traversalRing.getTraversals().forEach(this::integrateChild);
+    }
+
+    @Override
     public int hashCode() {
         int result = super.hashCode() ^ this.traversalRing.hashCode() ^ this.selectKeys.hashCode();
         if (null != this.pop)
@@ -106,7 +114,7 @@
     }
 
     @Override
-    public void addLocalChild(final Traversal.Admin<?, ?> selectTraversal) {
+    public void modulateBy(final Traversal.Admin<?, ?> selectTraversal) {
         this.traversalRing.addTraversal(this.integrateChild(selectTraversal));
     }
 
@@ -121,4 +129,32 @@
     public Set<String> getScopeKeys() {
         return this.selectKeysSet;
     }
+
+    public Map<String, Traversal.Admin<Object, E>> getByTraversals() {
+        final Map<String, Traversal.Admin<Object, E>> map = new HashMap<>();
+        this.traversalRing.reset();
+        for (final String as : this.selectKeys) {
+            map.put(as, this.traversalRing.next());
+        }
+        return map;
+    }
+
+    public Pop getPop() {
+        return this.pop;
+    }
+
+    @Override
+    public void setKeepLabels(final Set<String> labels) {
+        this.keepLabels = labels;
+    }
+
+    @Override
+    public Set<String> getKeepLabels() {
+        return this.keepLabels;
+    }
+
+    @Override
+    protected Traverser.Admin<Map<String, E>> processNextStart() {
+        return PathProcessor.processTraverserPathLabels(super.processNextStart(), this.keepLabels);
+    }
 }
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 8c13192..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,33 +18,23 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
+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.MapReducer;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
-import java.io.Serializable;
-import java.util.Collections;
 import java.util.EnumSet;
-import java.util.Iterator;
 import java.util.Set;
-import java.util.function.BiFunction;
+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;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class SumGlobalStep<S extends Number> extends ReducingBarrierStep<S, S> implements MapReducer {
+public final class SumGlobalStep<S extends Number> extends ReducingBarrierStep<S, S> {
 
     private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(
             TraverserRequirement.BULK,
@@ -54,7 +44,12 @@
     public SumGlobalStep(final Traversal.Admin traversal) {
         super(traversal);
         this.setSeedSupplier(new ConstantSupplier<>((S) Integer.valueOf(0)));
-        this.setBiFunction(SumGlobalBiFunction.instance());
+        this.setReducingBiOperator((BinaryOperator) Operator.sum);
+    }
+
+    @Override
+    public S projectTraverser(final Traverser.Admin<S> traverser) {
+        return (S) mul(traverser.get(), traverser.bulk());
     }
 
 
@@ -62,86 +57,4 @@
     public Set<TraverserRequirement> getRequirements() {
         return REQUIREMENTS;
     }
-
-    @Override
-    public MapReduce<MapReduce.NullObject, Number, MapReduce.NullObject, Number, Number> getMapReduce() {
-        return SumGlobalMapReduce.instance();
-    }
-
-    /////
-
-    private static class SumGlobalBiFunction<S extends Number> implements BiFunction<S, Traverser<S>, S>, Serializable {
-
-        private static final SumGlobalBiFunction INSTANCE = new SumGlobalBiFunction<>();
-
-        private SumGlobalBiFunction() {
-
-        }
-
-        @Override
-        public S apply(final S mutatingSeed, final Traverser<S> traverser) {
-            return (S) add(mutatingSeed, mul(traverser.get(), traverser.bulk()));
-        }
-
-        public static <S extends Number> SumGlobalBiFunction<S> instance() {
-            return INSTANCE;
-        }
-    }
-
-    ///////////
-
-    private static class SumGlobalMapReduce extends StaticMapReduce<MapReduce.NullObject, Number, MapReduce.NullObject, Number, Number> {
-
-        private static final SumGlobalMapReduce INSTANCE = new SumGlobalMapReduce();
-
-        private SumGlobalMapReduce() {
-
-        }
-
-        @Override
-        public boolean doStage(final MapReduce.Stage stage) {
-            return true;
-        }
-
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<NullObject, Number> emitter) {
-            final Iterator<Number> values = IteratorUtils.map(vertex.<Set<Traverser.Admin<Number>>>property(TraversalVertexProgram.HALTED_TRAVERSERS).orElse(Collections.emptySet()).iterator(),
-                    traverser -> mul(traverser.get(), traverser.bulk()));
-            if (values.hasNext())
-                emitter.emit(getSum(values));
-        }
-
-        @Override
-        public void combine(final NullObject key, final Iterator<Number> values, final ReduceEmitter<NullObject, Number> emitter) {
-            this.reduce(key, values, emitter);
-        }
-
-        @Override
-        public void reduce(final NullObject key, final Iterator<Number> values, final ReduceEmitter<NullObject, Number> emitter) {
-            if (values.hasNext())
-                emitter.emit(getSum(values));
-        }
-
-        private Number getSum(final Iterator<Number> numbers) {
-            Number sum = numbers.next();
-            while (numbers.hasNext()) {
-                sum = add(sum, numbers.next());
-            }
-            return sum;
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return REDUCING;
-        }
-
-        @Override
-        public Number generateFinalResult(final Iterator<KeyValue<NullObject, Number>> keyValues) {
-            return keyValues.hasNext() ? keyValues.next().getValue() : 0;
-        }
-
-        public static SumGlobalMapReduce instance() {
-            return INSTANCE;
-        }
-    }
 }
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TraversalFlatMapStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TraversalFlatMapStep.java
index 3f621a8..68f3b1c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TraversalFlatMapStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TraversalFlatMapStep.java
@@ -55,11 +55,17 @@
     @Override
     public TraversalFlatMapStep<S, E> clone() {
         final TraversalFlatMapStep<S, E> clone = (TraversalFlatMapStep<S, E>) super.clone();
-        clone.flatMapTraversal = clone.integrateChild(this.flatMapTraversal.clone());
+        clone.flatMapTraversal = this.flatMapTraversal.clone();
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.integrateChild(this.flatMapTraversal);
+    }
+
+    @Override
     public String toString() {
         return StringFactory.stepString(this, this.flatMapTraversal);
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TraversalMapStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TraversalMapStep.java
index 8ec69af..896b833 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TraversalMapStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TraversalMapStep.java
@@ -56,11 +56,17 @@
     @Override
     public TraversalMapStep<S, E> clone() {
         final TraversalMapStep<S, E> clone = (TraversalMapStep<S, E>) super.clone();
-        clone.mapTraversal = clone.integrateChild(this.mapTraversal.clone());
+        clone.mapTraversal = this.mapTraversal.clone();
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.integrateChild(this.mapTraversal);
+    }
+
+    @Override
     public String toString() {
         return StringFactory.stepString(this, this.mapTraversal);
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TreeStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TreeStep.java
index 92ffb76..8bdc692 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TreeStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TreeStep.java
@@ -18,54 +18,47 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalRing;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.function.TreeSupplier;
 
 import java.io.Serializable;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
-import java.util.function.BiFunction;
+import java.util.function.BinaryOperator;
 import java.util.function.Supplier;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class TreeStep<S> extends ReducingBarrierStep<S, Tree> implements MapReducer, TraversalParent, PathProcessor {
+public final class TreeStep<S> extends ReducingBarrierStep<S, Tree> implements TraversalParent, ByModulating, PathProcessor {
 
     private TraversalRing<Object, Object> traversalRing = new TraversalRing<>();
+    private Set<String> keepLabels;
 
     public TreeStep(final Traversal.Admin traversal) {
         super(traversal);
         this.setSeedSupplier((Supplier) TreeSupplier.instance());
-        this.setBiFunction(new TreeBiFunction(this));
+        this.setReducingBiOperator(TreeBiOperator.instance());
     }
 
-
     @Override
     public List<Traversal.Admin<Object, Object>> getLocalChildren() {
         return this.traversalRing.getTraversals();
     }
 
     @Override
-    public void addLocalChild(final Traversal.Admin<?, ?> treeTraversal) {
+    public void modulateBy(final Traversal.Admin<?, ?> treeTraversal) {
         this.traversalRing.addTraversal(this.integrateChild(treeTraversal));
     }
 
@@ -75,20 +68,35 @@
     }
 
     @Override
-    public MapReduce<MapReduce.NullObject, Tree, MapReduce.NullObject, Tree, Tree> getMapReduce() {
-        return TreeMapReduce.instance();
+    public Tree projectTraverser(final Traverser.Admin<S> traverser) {
+        final Tree topTree = new Tree();
+        Tree depth = topTree;
+        final Path path = traverser.path();
+        for (int i = 0; i < path.size(); i++) {
+            final Object object = TraversalUtil.apply(path.<Object>get(i), this.traversalRing.next());
+            if (!depth.containsKey(object))
+                depth.put(object, new Tree<>());
+            depth = (Tree) depth.get(object);
+        }
+        this.traversalRing.reset();
+        return topTree;
     }
 
+
     @Override
     public TreeStep<S> clone() {
         final TreeStep<S> clone = (TreeStep<S>) super.clone();
         clone.traversalRing = this.traversalRing.clone();
-        clone.getLocalChildren().forEach(clone::integrateChild);
-        clone.setBiFunction(new TreeBiFunction<>(clone));
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.traversalRing.getTraversals().forEach(this::integrateChild);
+    }
+
+    @Override
     public int hashCode() {
         return super.hashCode() ^ this.traversalRing.hashCode();
     }
@@ -104,74 +112,27 @@
         this.traversalRing.reset();
     }
 
-    ///////////
-
-    private static class TreeBiFunction<S> implements BiFunction<Tree, Traverser<S>, Tree>, Serializable {
-
-        private final TreeStep<S> treeStep;
-
-        private TreeBiFunction(final TreeStep<S> treeStep) {
-            this.treeStep = treeStep;
-        }
-
-        @Override
-        public Tree apply(final Tree mutatingSeed, final Traverser<S> traverser) {
-            Tree depth = mutatingSeed;
-            final Path path = traverser.path();
-            for (int i = 0; i < path.size(); i++) {
-                final Object object = TraversalUtil.apply(path.<Object>get(i), this.treeStep.traversalRing.next());
-                if (!depth.containsKey(object))
-                    depth.put(object, new Tree<>());
-                depth = (Tree) depth.get(object);
-            }
-            this.treeStep.traversalRing.reset();
-            return mutatingSeed;
-        }
+    @Override
+    public void setKeepLabels(final Set<String> labels) {
+        this.keepLabels = labels;
     }
 
+    @Override
+    public Set<String> getKeepLabels() { return this.keepLabels; }
+
     ///////////
 
-    public static final class TreeMapReduce extends StaticMapReduce<MapReduce.NullObject, Tree, MapReduce.NullObject, Tree, Tree> {
+    public static final class TreeBiOperator implements BinaryOperator<Tree>, Serializable {
 
-        private static final TreeMapReduce INSTANCE = new TreeMapReduce();
-
-        private TreeMapReduce() {
-
-        }
+        private static final TreeBiOperator INSTANCE = new TreeBiOperator();
 
         @Override
-        public boolean doStage(final Stage stage) {
-            return true;
+        public Tree apply(final Tree mutatingSeed, final Tree tree) {
+            mutatingSeed.addTree(tree);
+            return mutatingSeed;
         }
 
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<NullObject, Tree> emitter) {
-            vertex.<TraverserSet<Tree>>property(TraversalVertexProgram.HALTED_TRAVERSERS).ifPresent(traverserSet -> traverserSet.forEach(traverser -> emitter.emit(traverser.get())));
-        }
-
-        @Override
-        public void combine(final NullObject key, final Iterator<Tree> values, final ReduceEmitter<NullObject, Tree> emitter) {
-            this.reduce(key, values, emitter);
-        }
-
-        @Override
-        public void reduce(final NullObject key, final Iterator<Tree> values, final ReduceEmitter<NullObject, Tree> emitter) {
-            final Tree tree = new Tree();
-            values.forEachRemaining(tree::addTree);
-            emitter.emit(tree);
-        }
-
-        @Override
-        public Tree generateFinalResult(final Iterator<KeyValue<NullObject, Tree>> keyValues) {
-            return keyValues.hasNext() ? keyValues.next().getValue() : new Tree();
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return REDUCING;
-        }
-
-        public static final TreeMapReduce instance() {
+        public static final TreeBiOperator instance() {
             return INSTANCE;
         }
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
index ecabf29..7f4c993 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AggregateStep.java
@@ -18,42 +18,42 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.VertexTraversalSideEffects;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.LocalBarrier;
 import org.apache.tinkerpop.gremlin.process.traversal.step.SideEffectCapable;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.CollectingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.function.BulkSetSupplier;
 
-import java.util.*;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.Set;
 import java.util.function.Supplier;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class AggregateStep<S> extends CollectingBarrierStep<S> implements SideEffectCapable, TraversalParent, MapReducer<MapReduce.NullObject, Object, MapReduce.NullObject, Object, Collection> {
+public final class AggregateStep<S> extends AbstractStep<S, S> implements SideEffectCapable<Collection, Collection>, TraversalParent, ByModulating, LocalBarrier<S> {
 
     private Traversal.Admin<S, Object> aggregateTraversal = null;
     private String sideEffectKey;
+    private TraverserSet<S> barrier = new TraverserSet<>();
 
     public AggregateStep(final Traversal.Admin traversal, final String sideEffectKey) {
         super(traversal);
         this.sideEffectKey = sideEffectKey;
-        this.getTraversal().asAdmin().getSideEffects().registerSupplierIfAbsent(this.sideEffectKey, BulkSetSupplier.instance());
+        this.getTraversal().getSideEffects().registerIfAbsent(this.sideEffectKey, (Supplier) BulkSetSupplier.instance(), Operator.addAll);
     }
 
     @Override
@@ -67,12 +67,7 @@
     }
 
     @Override
-    public MapReduce<MapReduce.NullObject, Object, MapReduce.NullObject, Object, Collection> getMapReduce() {
-        return new AggregateMapReduce(this);
-    }
-
-    @Override
-    public void addLocalChild(final Traversal.Admin<?, ?> aggregateTraversal) {
+    public void modulateBy(final Traversal.Admin<?, ?> aggregateTraversal) {
         this.aggregateTraversal = this.integrateChild(aggregateTraversal);
     }
 
@@ -82,15 +77,6 @@
     }
 
     @Override
-    public void barrierConsumer(final TraverserSet<S> traverserSet) {
-        traverserSet.forEach(traverser ->
-                TraversalHelper.addToCollection(
-                        traverser.getSideEffects().<Collection<Object>>get(this.sideEffectKey).get(),
-                        TraversalUtil.applyNullable(traverser, this.aggregateTraversal),
-                        traverser.bulk()));
-    }
-
-    @Override
     public Set<TraverserRequirement> getRequirements() {
         return this.getSelfAndChildRequirements(TraverserRequirement.BULK, TraverserRequirement.SIDE_EFFECTS);
     }
@@ -98,12 +84,19 @@
     @Override
     public AggregateStep<S> clone() {
         final AggregateStep<S> clone = (AggregateStep<S>) super.clone();
+        clone.barrier = new TraverserSet<>();
         if (null != this.aggregateTraversal)
-            clone.aggregateTraversal = clone.integrateChild(this.aggregateTraversal.clone());
+            clone.aggregateTraversal = this.aggregateTraversal.clone();
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.integrateChild(this.aggregateTraversal);
+    }
+
+    @Override
     public int hashCode() {
         int result = super.hashCode() ^ this.sideEffectKey.hashCode();
         if (this.aggregateTraversal != null)
@@ -111,56 +104,52 @@
         return result;
     }
 
-    ////////
+    @Override
+    protected Traverser.Admin<S> processNextStart() {
+        this.processAllStarts();
+        return this.barrier.remove();
+    }
 
-    public static final class AggregateMapReduce extends StaticMapReduce<MapReduce.NullObject, Object, MapReduce.NullObject, Object, Collection> {
-
-        public static final String AGGREGATE_STEP_SIDE_EFFECT_KEY = "gremlin.aggregateStep.sideEffectKey";
-
-        private String sideEffectKey;
-        private Supplier<Collection> collectionSupplier;
-
-        private AggregateMapReduce() {
-
+    @Override
+    public void processAllStarts() {
+        if (this.starts.hasNext()) {
+            final BulkSet<Object> bulkSet = new BulkSet<>();
+            while (this.starts.hasNext()) {
+                final Traverser.Admin<S> traverser = this.starts.next();
+                bulkSet.add(TraversalUtil.applyNullable(traverser, this.aggregateTraversal), traverser.bulk());
+                traverser.setStepId(this.getNextStep().getId()); // when barrier is reloaded, the traversers should be at the next step
+                this.barrier.add(traverser);
+            }
+            this.getTraversal().getSideEffects().add(this.sideEffectKey, bulkSet);
         }
+    }
 
-        public AggregateMapReduce(final AggregateStep step) {
-            this.sideEffectKey = step.getSideEffectKey();
-            this.collectionSupplier = step.getTraversal().asAdmin().getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
-        }
+    @Override
+    public boolean hasNextBarrier() {
+        this.processAllStarts();
+        return !this.barrier.isEmpty();
+    }
 
-        @Override
-        public void storeState(final Configuration configuration) {
-            super.storeState(configuration);
-            configuration.setProperty(AGGREGATE_STEP_SIDE_EFFECT_KEY, this.sideEffectKey);
+    @Override
+    public TraverserSet<S> nextBarrier() throws NoSuchElementException {
+        this.processAllStarts();
+        if (this.barrier.isEmpty())
+            throw FastNoSuchElementException.instance();
+        else {
+            final TraverserSet<S> temp = this.barrier;
+            this.barrier = new TraverserSet<>();
+            return temp;
         }
+    }
 
-        @Override
-        public void loadState(final Graph graph, final Configuration configuration) {
-            this.sideEffectKey = configuration.getString(AGGREGATE_STEP_SIDE_EFFECT_KEY);
-            this.collectionSupplier = TraversalVertexProgram.getTraversal(graph, configuration).getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
-        }
+    @Override
+    public void addBarrier(final TraverserSet<S> barrier) {
+        this.barrier.addAll(barrier);
+    }
 
-        @Override
-        public boolean doStage(final Stage stage) {
-            return stage.equals(Stage.MAP);
-        }
-
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<NullObject, Object> emitter) {
-            VertexTraversalSideEffects.of(vertex).<Collection<?>>get(this.sideEffectKey).ifPresent(list -> list.forEach(emitter::emit));
-        }
-
-        @Override
-        public Collection generateFinalResult(final Iterator<KeyValue<NullObject, Object>> keyValues) {
-            final Collection collection = this.collectionSupplier.get();
-            keyValues.forEachRemaining(keyValue -> collection.add(keyValue.getValue()));
-            return collection;
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return this.sideEffectKey;
-        }
+    @Override
+    public void reset() {
+        super.reset();
+        this.barrier.clear();
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
index f26206a..88a1cb7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountSideEffectStep.java
@@ -18,46 +18,42 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.VertexTraversalSideEffects;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.SideEffectCapable;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.MapHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroupCountStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.function.HashMapSupplier;
 
-import java.util.*;
-import java.util.function.Supplier;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class GroupCountSideEffectStep<S, E> extends SideEffectStep<S> implements SideEffectCapable, TraversalParent, MapReducer<E, Long, E, Long, Map<E, Long>> {
+public final class GroupCountSideEffectStep<S, E> extends SideEffectStep<S> implements SideEffectCapable<Map<E, Long>, Map<E, Long>>, TraversalParent, ByModulating {
 
-    private Traversal.Admin<S, E> groupTraversal = null;
+    private Traversal.Admin<S, E> keyTraversal = null;
     private String sideEffectKey;
 
     public GroupCountSideEffectStep(final Traversal.Admin traversal, final String sideEffectKey) {
         super(traversal);
         this.sideEffectKey = sideEffectKey;
-        this.traversal.asAdmin().getSideEffects().registerSupplierIfAbsent(this.sideEffectKey, HashMapSupplier.instance());
+        this.getTraversal().asAdmin().getSideEffects().registerIfAbsent(this.sideEffectKey, HashMapSupplier.instance(), GroupCountStep.GroupCountBiOperator.instance());
     }
 
     @Override
     protected void sideEffect(final Traverser.Admin<S> traverser) {
-        final Map<Object, Long> groupCountMap = traverser.sideEffects(this.sideEffectKey);
-        MapHelper.incr(groupCountMap, TraversalUtil.applyNullable(traverser.asAdmin(), this.groupTraversal), traverser.bulk());
+        final Map<E, Long> map = new HashMap<>(1);
+        map.put(TraversalUtil.applyNullable(traverser, this.keyTraversal), traverser.bulk());
+        this.getTraversal().getSideEffects().add(this.sideEffectKey, map);
     }
 
     @Override
@@ -66,23 +62,18 @@
     }
 
     @Override
-    public MapReduce<E, Long, E, Long, Map<E, Long>> getMapReduce() {
-        return new GroupCountSideEffectMapReduce<>(this);
-    }
-
-    @Override
     public String toString() {
-        return StringFactory.stepString(this, this.sideEffectKey, this.groupTraversal);
+        return StringFactory.stepString(this, this.sideEffectKey, this.keyTraversal);
     }
 
     @Override
     public void addLocalChild(final Traversal.Admin<?, ?> groupTraversal) {
-        this.groupTraversal = this.integrateChild(groupTraversal);
+        this.keyTraversal = this.integrateChild(groupTraversal);
     }
 
     @Override
     public List<Traversal.Admin<S, E>> getLocalChildren() {
-        return null == this.groupTraversal ? Collections.emptyList() : Collections.singletonList(this.groupTraversal);
+        return null == this.keyTraversal ? Collections.emptyList() : Collections.singletonList(this.keyTraversal);
     }
 
     @Override
@@ -93,82 +84,26 @@
     @Override
     public GroupCountSideEffectStep<S, E> clone() {
         final GroupCountSideEffectStep<S, E> clone = (GroupCountSideEffectStep<S, E>) super.clone();
-        if (null != this.groupTraversal)
-            clone.groupTraversal = clone.integrateChild(this.groupTraversal.clone());
+        if (null != this.keyTraversal)
+            clone.keyTraversal = this.keyTraversal.clone();
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.integrateChild(this.keyTraversal);
+    }
+
+    @Override
     public int hashCode() {
         int result = super.hashCode() ^ this.sideEffectKey.hashCode();
-        if (this.groupTraversal != null) result ^= this.groupTraversal.hashCode();
+        if (this.keyTraversal != null) result ^= this.keyTraversal.hashCode();
         return result;
     }
 
-    ///////
-
-    public static final class GroupCountSideEffectMapReduce<E> extends StaticMapReduce<E, Long, E, Long, Map<E, Long>> {
-
-        public static final String GROUP_COUNT_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY = "gremlin.groupCountSideEffectStep.sideEffectKey";
-
-        private String sideEffectKey;
-        private Supplier<Map<E, Long>> mapSupplier;
-
-        private GroupCountSideEffectMapReduce() {
-
-        }
-
-        public GroupCountSideEffectMapReduce(final GroupCountSideEffectStep step) {
-            this.sideEffectKey = step.getSideEffectKey();
-            this.mapSupplier = step.getTraversal().asAdmin().getSideEffects().<Map<E, Long>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMap::new);
-        }
-
-        @Override
-        public void storeState(final Configuration configuration) {
-            super.storeState(configuration);
-            configuration.setProperty(GROUP_COUNT_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY, this.sideEffectKey);
-        }
-
-        @Override
-        public void loadState(final Graph graph, final Configuration configuration) {
-            this.sideEffectKey = configuration.getString(GROUP_COUNT_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY);
-            this.mapSupplier = TraversalVertexProgram.getTraversal(graph, configuration).getSideEffects().<Map<E, Long>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMap::new);
-        }
-
-        @Override
-        public boolean doStage(final Stage stage) {
-            return true;
-        }
-
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<E, Long> emitter) {
-            VertexTraversalSideEffects.of(vertex).<Map<E, Number>>get(this.sideEffectKey).ifPresent(map -> map.forEach((k, v) -> emitter.emit(k, v.longValue())));
-        }
-
-        @Override
-        public void reduce(final E key, final Iterator<Long> values, final ReduceEmitter<E, Long> emitter) {
-            long counter = 0;
-            while (values.hasNext()) {
-                counter = counter + values.next();
-            }
-            emitter.emit(key, counter);
-        }
-
-        @Override
-        public void combine(final E key, final Iterator<Long> values, final ReduceEmitter<E, Long> emitter) {
-            reduce(key, values, emitter);
-        }
-
-        @Override
-        public Map<E, Long> generateFinalResult(final Iterator<KeyValue<E, Long>> keyValues) {
-            final Map<E, Long> map = this.mapSupplier.get();
-            keyValues.forEachRemaining(keyValue -> map.put(keyValue.getKey(), keyValue.getValue()));
-            return map;
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return this.sideEffectKey;
-        }
+    @Override
+    public void modulateBy(final Traversal.Admin<?, ?> keyTraversal) throws UnsupportedOperationException {
+        this.keyTraversal = this.integrateChild(keyTraversal);
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
index b2885b9..b5deb02 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStep.java
@@ -18,73 +18,54 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.VertexTraversalSideEffects;
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
-import org.apache.tinkerpop.gremlin.process.traversal.step.EngineDependent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.SideEffectCapable;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.GroupStepHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroupStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.function.HashMapSupplier;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.function.Supplier;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class GroupSideEffectStep<S, K, V> extends SideEffectStep<S> implements SideEffectCapable, TraversalParent, EngineDependent, MapReducer<K, Collection<?>, K, V, Map<K, V>> {
+public final class GroupSideEffectStep<S, K, V> extends SideEffectStep<S> implements SideEffectCapable<Map<K, ?>, Map<K, V>>, TraversalParent, ByModulating {
 
     private char state = 'k';
     private Traversal.Admin<S, K> keyTraversal = null;
-    private Traversal.Admin<S, ?> valueTraversal = this.integrateChild(__.identity().asAdmin());   // used in OLAP
-    private Traversal.Admin<?, V> reduceTraversal = this.integrateChild(__.fold().asAdmin());      // used in OLAP
-    private Traversal.Admin<S, V> valueReduceTraversal = this.integrateChild(__.fold().asAdmin()); // used in OLTP
+    private Traversal.Admin<S, ?> preTraversal = null;
+    private Traversal.Admin<S, V> valueTraversal = this.integrateChild(__.fold().asAdmin());
     ///
     private String sideEffectKey;
-    private boolean onGraphComputer = false;
-    private GroupStepHelper.GroupMap<S, K, V> groupMap;
-    private final Map<K, Integer> counters = new HashMap<>();
 
     public GroupSideEffectStep(final Traversal.Admin traversal, final String sideEffectKey) {
         super(traversal);
         this.sideEffectKey = sideEffectKey;
-        this.traversal.asAdmin().getSideEffects().registerSupplierIfAbsent(this.sideEffectKey, HashMapSupplier.instance());
+        this.valueTraversal = this.integrateChild(__.fold().asAdmin());
+        this.preTraversal = this.integrateChild(GroupStep.generatePreTraversal(this.valueTraversal));
+        this.getTraversal().getSideEffects().registerIfAbsent(this.sideEffectKey, HashMapSupplier.instance(), new GroupStep.GroupBiOperator<>(this.valueTraversal));
     }
 
     @Override
-    public void addLocalChild(final Traversal.Admin<?, ?> kvTraversal) {
+    public void modulateBy(final Traversal.Admin<?, ?> kvTraversal) {
         if ('k' == this.state) {
             this.keyTraversal = this.integrateChild(kvTraversal);
             this.state = 'v';
         } else if ('v' == this.state) {
-            this.valueReduceTraversal = this.integrateChild(GroupStepHelper.convertValueTraversal(kvTraversal));
-            final List<Traversal.Admin<?, ?>> splitTraversal = GroupStepHelper.splitOnBarrierStep(this.valueReduceTraversal);
-            this.valueTraversal = this.integrateChild(splitTraversal.get(0));
-            this.reduceTraversal = this.integrateChild(splitTraversal.get(1));
+            this.valueTraversal = this.integrateChild(GroupStep.convertValueTraversal(kvTraversal));
+            this.preTraversal = this.integrateChild(GroupStep.generatePreTraversal(this.valueTraversal));
+            this.getTraversal().getSideEffects().register(this.sideEffectKey, null, new GroupStep.GroupBiOperator<>(this.valueTraversal));
             this.state = 'x';
         } else {
             throw new IllegalStateException("The key and value traversals for group()-step have already been set: " + this);
@@ -93,36 +74,17 @@
 
     @Override
     protected void sideEffect(final Traverser.Admin<S> traverser) {
-        if (this.onGraphComputer) {      // OLAP
-            final Map<K, Collection<?>> map = traverser.sideEffects(this.sideEffectKey);
-            final K key = TraversalUtil.applyNullable(traverser, this.keyTraversal);
-            Collection<?> values = map.get(key);
-            if (null == values) {
-                values = new BulkSet<>();
-                map.put(key, values);
-            }
-            this.valueTraversal.addStart(traverser.clone()); // the full traverser is provided (not a bulk 1 traverser) and clone is needed cause sideEffect steps don't split the traverser
-            this.valueTraversal.fill((Collection) values);
-        } else {                        // OLTP
-            if (null == this.groupMap) {
-                final Object object = traverser.sideEffects(this.sideEffectKey);
-                if (!(object instanceof GroupStepHelper.GroupMap))
-                    traverser.sideEffects(this.sideEffectKey, this.groupMap = new GroupStepHelper.GroupMap<>((Map<K, V>) object));
-            }
-            final K key = TraversalUtil.applyNullable(traverser, this.keyTraversal);
-            Traversal.Admin<S, V> traversal = this.groupMap.get(key);
-            if (null == traversal) {
-                traversal = this.valueReduceTraversal.clone();
-                this.groupMap.put(key, traversal);
-                this.counters.put(key, 0);
-            }
-            traversal.addStart(traverser.clone()); // this is because sideEffect steps don't split the traverser
-            final int count = this.counters.compute(key, (k, i) -> ++i);
-            if (count > 10000) {
-                this.counters.put(key, 0);
-                TraversalHelper.getFirstStepOfAssignableClass(Barrier.class, traversal).ifPresent(Barrier::processAllStarts);
-            }
+        final Map<K, V> map = new HashMap<>(1);
+        if (null == this.preTraversal) {
+            map.put(TraversalUtil.applyNullable(traverser, this.keyTraversal), (V) traverser.split());
+        } else {
+            final TraverserSet traverserSet = new TraverserSet<>();
+            this.preTraversal.reset();
+            this.preTraversal.addStart(traverser.split());
+            this.preTraversal.getEndStep().forEachRemaining(traverserSet::add);
+            map.put(TraversalUtil.applyNullable(traverser, this.keyTraversal), (V) traverserSet);
         }
+        this.getTraversal().getSideEffects().add(this.sideEffectKey, map);
     }
 
     @Override
@@ -131,28 +93,16 @@
     }
 
     @Override
-    public void onEngine(final TraversalEngine traversalEngine) {
-        this.onGraphComputer = traversalEngine.isComputer();
-    }
-
-    @Override
-    public MapReduce<K, Collection<?>, K, V, Map<K, V>> getMapReduce() {
-        return new GroupSideEffectMapReduce<>(this);
-    }
-
-    @Override
     public String toString() {
-        return StringFactory.stepString(this, this.sideEffectKey, this.keyTraversal, this.valueReduceTraversal);
+        return StringFactory.stepString(this, this.sideEffectKey, this.keyTraversal, this.valueTraversal);
     }
 
     @Override
     public List<Traversal.Admin<?, ?>> getLocalChildren() {
-        final List<Traversal.Admin<?, ?>> children = new ArrayList<>(4);
+        final List<Traversal.Admin<?, ?>> children = new ArrayList<>(2);
         if (null != this.keyTraversal)
             children.add((Traversal.Admin) this.keyTraversal);
-        children.add(this.valueReduceTraversal);
         children.add(this.valueTraversal);
-        children.add(this.reduceTraversal);
         return children;
     }
 
@@ -165,108 +115,30 @@
     public GroupSideEffectStep<S, K, V> clone() {
         final GroupSideEffectStep<S, K, V> clone = (GroupSideEffectStep<S, K, V>) super.clone();
         if (null != this.keyTraversal)
-            clone.keyTraversal = clone.integrateChild(this.keyTraversal.clone());
-        clone.valueReduceTraversal = clone.integrateChild(this.valueReduceTraversal.clone());
-        clone.valueTraversal = clone.integrateChild(this.valueTraversal.clone());
-        clone.reduceTraversal = clone.integrateChild(this.reduceTraversal.clone());
+            clone.keyTraversal = this.keyTraversal.clone();
+        clone.valueTraversal = this.valueTraversal.clone();
+        clone.preTraversal = this.integrateChild(GroupStep.generatePreTraversal(clone.valueTraversal));
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.integrateChild(this.keyTraversal);
+        this.integrateChild(this.valueTraversal);
+        this.integrateChild(this.preTraversal);
+    }
+
+    @Override
     public int hashCode() {
         int result = super.hashCode() ^ this.sideEffectKey.hashCode();
         if (this.keyTraversal != null) result ^= this.keyTraversal.hashCode();
-        result ^= this.valueReduceTraversal.hashCode();
+        result ^= this.valueTraversal.hashCode();
         return result;
     }
 
-    ///////////
-
-    public static final class GroupSideEffectMapReduce<S, K, V> implements MapReduce<K, Collection<?>, K, V, Map<K, V>> {
-
-        public static final String GROUP_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY = "gremlin.groupSideEffectStep.sideEffectKey";
-        public static final String GROUP_SIDE_EFFECT_STEP_STEP_ID = "gremlin.groupSideEffectStep.stepId";
-
-        private String sideEffectKey;
-        private String groupStepId;
-        private Traversal.Admin<?, V> reduceTraversal;
-        private Supplier<Map<K, V>> mapSupplier;
-
-        private GroupSideEffectMapReduce() {
-
-        }
-
-        public GroupSideEffectMapReduce(final GroupSideEffectStep<S, K, V> step) {
-            this.groupStepId = step.getId();
-            this.sideEffectKey = step.getSideEffectKey();
-            this.reduceTraversal = step.reduceTraversal.clone();
-            this.mapSupplier = step.getTraversal().asAdmin().getSideEffects().<Map<K, V>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMapSupplier.instance());
-        }
-
-        @Override
-        public void storeState(final Configuration configuration) {
-            MapReduce.super.storeState(configuration);
-            configuration.setProperty(GROUP_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY, this.sideEffectKey);
-            configuration.setProperty(GROUP_SIDE_EFFECT_STEP_STEP_ID, this.groupStepId);
-        }
-
-        @Override
-        public void loadState(final Graph graph, final Configuration configuration) {
-            this.sideEffectKey = configuration.getString(GROUP_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY);
-            this.groupStepId = configuration.getString(GROUP_SIDE_EFFECT_STEP_STEP_ID);
-            final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversal(graph, configuration);
-            final GroupSideEffectStep<S, K, V> groupSideEffectStep = new TraversalMatrix<>(traversal).getStepById(this.groupStepId);
-            this.reduceTraversal = groupSideEffectStep.reduceTraversal.clone();
-            this.mapSupplier = traversal.getSideEffects().<Map<K, V>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMapSupplier.instance());
-        }
-
-        @Override
-        public boolean doStage(final Stage stage) {
-            return !stage.equals(Stage.COMBINE);
-        }
-
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<K, Collection<?>> emitter) {
-            VertexTraversalSideEffects.of(vertex).<Map<K, Collection<?>>>get(this.sideEffectKey).ifPresent(map -> map.forEach(emitter::emit));
-        }
-
-        @Override
-        public void reduce(final K key, final Iterator<Collection<?>> values, final ReduceEmitter<K, V> emitter) {
-            Traversal.Admin<?,V> reduceTraversalClone = this.reduceTraversal.clone();
-            while (values.hasNext()) {
-                final BulkSet<?> value = (BulkSet<?>) values.next();
-                value.forEach((v,bulk) -> reduceTraversalClone.addStart(reduceTraversalClone.getTraverserGenerator().generate(v, (Step) reduceTraversalClone.getStartStep(), bulk)));
-                TraversalHelper.getFirstStepOfAssignableClass(Barrier.class, reduceTraversalClone).ifPresent(Barrier::processAllStarts);
-            }
-            emitter.emit(key, reduceTraversalClone.next());
-        }
-
-        @Override
-        public Map<K, V> generateFinalResult(final Iterator<KeyValue<K, V>> keyValues) {
-            final Map<K, V> map = this.mapSupplier.get();
-            keyValues.forEachRemaining(keyValue -> map.put(keyValue.getKey(), keyValue.getValue()));
-            return map;
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return this.sideEffectKey;
-        }
-
-        @Override
-        public GroupSideEffectMapReduce<S, K, V> clone() {
-            try {
-                final GroupSideEffectMapReduce<S, K, V> clone = (GroupSideEffectMapReduce<S, K, V>) super.clone();
-                clone.reduceTraversal = this.reduceTraversal.clone();
-                return clone;
-            } catch (final CloneNotSupportedException e) {
-                throw new IllegalStateException(e.getMessage(), e);
-            }
-        }
-
-        @Override
-        public String toString() {
-            return StringFactory.mapReduceString(this, this.getMemoryKey());
-        }
+    @Override
+    public Map<K, V> generateFinalResult(final Map<K, ?> object) {
+        return GroupStep.doFinalReduction((Map<K, Object>) object, this.valueTraversal);
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStepV3d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStepV3d0.java
index 643466d..07afe10 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStepV3d0.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStepV3d0.java
@@ -19,75 +19,52 @@
 
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.VertexTraversalSideEffects;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.EngineDependent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.SideEffectCapable;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroupStepV3d0;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.function.HashMapSupplier;
 
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.function.Supplier;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 @Deprecated
-public final class GroupSideEffectStepV3d0<S, K, V, R> extends SideEffectStep<S> implements SideEffectCapable, TraversalParent, EngineDependent, MapReducer<K, Collection<V>, K, R, Map<K, R>> {
+public final class GroupSideEffectStepV3d0<S, K, V, R> extends SideEffectStep<S> implements SideEffectCapable<Map<K, Collection<V>>, Map<K, R>>, TraversalParent, ByModulating {
 
     private char state = 'k';
     private Traversal.Admin<S, K> keyTraversal = null;
     private Traversal.Admin<S, V> valueTraversal = null;
     private Traversal.Admin<Collection<V>, R> reduceTraversal = null;
     private String sideEffectKey;
-    private boolean onGraphComputer = false;
-    private Map<K, Collection<V>> tempGroupByMap;
 
     public GroupSideEffectStepV3d0(final Traversal.Admin traversal, final String sideEffectKey) {
         super(traversal);
         this.sideEffectKey = sideEffectKey;
-        this.traversal.asAdmin().getSideEffects().registerSupplierIfAbsent(this.sideEffectKey, HashMapSupplier.instance());
+        this.getTraversal().getSideEffects().registerIfAbsent(this.sideEffectKey, HashMapSupplier.instance(), GroupStepV3d0.GroupBiOperatorV3d0.instance());
     }
 
     @Override
     protected void sideEffect(final Traverser.Admin<S> traverser) {
-        final Map<K, Collection<V>> groupMap = null == this.tempGroupByMap ? traverser.sideEffects(this.sideEffectKey) : this.tempGroupByMap; // for nested traversals and not !starts.hasNext()
         final K key = TraversalUtil.applyNullable(traverser, keyTraversal);
         final V value = TraversalUtil.applyNullable(traverser, valueTraversal);
-        Collection<V> values = groupMap.get(key);
-        if (null == values) {
-            values = new BulkSet<>();
-            groupMap.put(key, values);
-        }
-        TraversalHelper.addToCollectionUnrollIterator(values, value, traverser.bulk());
-        //////// reducer for OLTP
-        if (!this.onGraphComputer && null != this.reduceTraversal && !this.starts.hasNext()) {
-            this.tempGroupByMap = groupMap;
-            final Map<K, R> reduceMap = new HashMap<>();
-            groupMap.forEach((k, vv) -> reduceMap.put(k, TraversalUtil.applyNullable(vv, this.reduceTraversal)));
-            traverser.sideEffects(this.sideEffectKey, reduceMap);
-        }
+        BulkSet<V> values = new BulkSet<>();
+        values.add(value, traverser.bulk());
+        final Map<K, Object> map = new HashMap<>();
+        map.put(key, values);
+        this.getTraversal().getSideEffects().add(this.sideEffectKey, map);
     }
 
     @Override
@@ -96,21 +73,21 @@
     }
 
     @Override
-    public void onEngine(final TraversalEngine traversalEngine) {
-        this.onGraphComputer = traversalEngine.isComputer();
-    }
-
-    @Override
-    public MapReduce<K, Collection<V>, K, R, Map<K, R>> getMapReduce() {
-        return new GroupSideEffectMapReduceV3d0<>(this);
-    }
-
-    @Override
     public String toString() {
         return StringFactory.stepString(this, this.sideEffectKey, this.keyTraversal, this.valueTraversal, this.reduceTraversal);
     }
 
     @Override
+    public Map<K, R> generateFinalResult(final Map<K, Collection<V>> valueMap) {
+        final Map<K, R> reducedMap = new HashMap<>();
+        for (final K key : valueMap.keySet()) {
+            final R r = TraversalUtil.applyNullable(valueMap.get(key), this.reduceTraversal);
+            reducedMap.put(key, r);
+        }
+        return reducedMap;
+    }
+
+    @Override
     public <A, B> List<Traversal.Admin<A, B>> getLocalChildren() {
         final List<Traversal.Admin<A, B>> children = new ArrayList<>(3);
         if (null != this.keyTraversal)
@@ -122,12 +99,8 @@
         return children;
     }
 
-    public Traversal.Admin<Collection<V>, R> getReduceTraversal() {
-        return this.reduceTraversal;
-    }
-
     @Override
-    public void addLocalChild(final Traversal.Admin<?, ?> kvrTraversal) {
+    public void modulateBy(final Traversal.Admin<?, ?> kvrTraversal) {
         if ('k' == this.state) {
             this.keyTraversal = this.integrateChild(kvrTraversal);
             this.state = 'v';
@@ -151,15 +124,23 @@
     public GroupSideEffectStepV3d0<S, K, V, R> clone() {
         final GroupSideEffectStepV3d0<S, K, V, R> clone = (GroupSideEffectStepV3d0<S, K, V, R>) super.clone();
         if (null != this.keyTraversal)
-            clone.keyTraversal = clone.integrateChild(this.keyTraversal.clone());
+            clone.keyTraversal = this.keyTraversal.clone();
         if (null != this.valueTraversal)
-            clone.valueTraversal = clone.integrateChild(this.valueTraversal.clone());
+            clone.valueTraversal = this.valueTraversal.clone();
         if (null != this.reduceTraversal)
-            clone.reduceTraversal = clone.integrateChild(this.reduceTraversal.clone());
+            clone.reduceTraversal = this.reduceTraversal.clone();
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.integrateChild(this.keyTraversal);
+        this.integrateChild(this.valueTraversal);
+        this.integrateChild(this.reduceTraversal);
+    }
+
+    @Override
     public int hashCode() {
         int result = super.hashCode() ^ this.sideEffectKey.hashCode();
         if (this.keyTraversal != null) result ^= this.keyTraversal.hashCode();
@@ -167,91 +148,4 @@
         if (this.reduceTraversal != null) result ^= this.reduceTraversal.hashCode();
         return result;
     }
-
-    ///////////
-
-    public static final class GroupSideEffectMapReduceV3d0<K, V, R> implements MapReduce<K, Collection<V>, K, R, Map<K, R>> {
-
-        public static final String GROUP_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY = "gremlin.groupSideEffectStep.sideEffectKey";
-        public static final String GROUP_SIDE_EFFECT_STEP_STEP_ID = "gremlin.groupSideEffectStep.stepId";
-
-        private String sideEffectKey;
-        private String groupStepId;
-        private Traversal.Admin<Collection<V>, R> reduceTraversal;
-        private Supplier<Map<K, R>> mapSupplier;
-
-        private GroupSideEffectMapReduceV3d0() {
-
-        }
-
-        public GroupSideEffectMapReduceV3d0(final GroupSideEffectStepV3d0 step) {
-            this.groupStepId = step.getId();
-            this.sideEffectKey = step.getSideEffectKey();
-            this.reduceTraversal = step.getReduceTraversal();
-            this.mapSupplier = step.getTraversal().asAdmin().getSideEffects().<Map<K, R>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMap::new);
-        }
-
-        @Override
-        public void storeState(final Configuration configuration) {
-            MapReduce.super.storeState(configuration);
-            configuration.setProperty(GROUP_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY, this.sideEffectKey);
-            configuration.setProperty(GROUP_SIDE_EFFECT_STEP_STEP_ID, this.groupStepId);
-        }
-
-        @Override
-        public void loadState(final Graph graph, final Configuration configuration) {
-            this.sideEffectKey = configuration.getString(GROUP_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY);
-            this.groupStepId = configuration.getString(GROUP_SIDE_EFFECT_STEP_STEP_ID);
-            final Traversal.Admin<?, ?> traversal = TraversalVertexProgram.getTraversal(graph, configuration);
-            final GroupSideEffectStepV3d0 groupSideEffectStep = new TraversalMatrix<>(traversal).getStepById(this.groupStepId);
-            this.reduceTraversal = groupSideEffectStep.getReduceTraversal();
-            this.mapSupplier = traversal.getSideEffects().<Map<K, R>>getRegisteredSupplier(this.sideEffectKey).orElse(HashMap::new);
-        }
-
-        @Override
-        public boolean doStage(final Stage stage) {
-            return !stage.equals(Stage.COMBINE);
-        }
-
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<K, Collection<V>> emitter) {
-            VertexTraversalSideEffects.of(vertex).<Map<K, Collection<V>>>get(this.sideEffectKey).ifPresent(map -> map.forEach(emitter::emit));
-        }
-
-        @Override
-        public void reduce(final K key, final Iterator<Collection<V>> values, final ReduceEmitter<K, R> emitter) {
-            final Set<V> set = new BulkSet<>();
-            values.forEachRemaining(set::addAll);
-            emitter.emit(key, TraversalUtil.applyNullable(set, this.reduceTraversal));
-        }
-
-        @Override
-        public Map<K, R> generateFinalResult(final Iterator<KeyValue<K, R>> keyValues) {
-            final Map<K, R> map = this.mapSupplier.get();
-            keyValues.forEachRemaining(keyValue -> map.put(keyValue.getKey(), keyValue.getValue()));
-            return map;
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return this.sideEffectKey;
-        }
-
-        @Override
-        public GroupSideEffectMapReduceV3d0<K, V, R> clone() {
-            try {
-                final GroupSideEffectMapReduceV3d0<K, V, R> clone = (GroupSideEffectMapReduceV3d0<K, V, R>) super.clone();
-                if (null != clone.reduceTraversal)
-                    clone.reduceTraversal = this.reduceTraversal.clone();
-                return clone;
-            } catch (final CloneNotSupportedException e) {
-                throw new IllegalStateException(e.getMessage(), e);
-            }
-        }
-
-        @Override
-        public String toString() {
-            return StringFactory.mapReduceString(this, this.getMemoryKey());
-        }
-    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IdentityStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IdentityStep.java
index 269f2c9..f4ae018 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IdentityStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/IdentityStep.java
@@ -34,7 +34,7 @@
     }
 
     @Override
-    protected Traverser<S> processNextStart() throws NoSuchElementException {
+    protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
         return this.starts.next();
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileSideEffectStep.java
new file mode 100644
index 0000000..be60808
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileSideEffectStep.java
@@ -0,0 +1,89 @@
+/*
+ * 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.sideEffect;
+
+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.GraphComputing;
+import org.apache.tinkerpop.gremlin.process.traversal.step.SideEffectCapable;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalMetrics;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.util.function.DefaultTraversalMetricsSupplier;
+
+import java.util.function.Supplier;
+
+/**
+ * @author Bob Briody (http://bobbriody.com)
+ */
+public final class ProfileSideEffectStep<S> extends SideEffectStep<S> implements SideEffectCapable<DefaultTraversalMetrics, DefaultTraversalMetrics>, GraphComputing {
+    public static final String DEFAULT_METRICS_KEY = Graph.Hidden.hide("metrics");
+
+    private String sideEffectKey;
+    private boolean onGraphComputer = false;
+
+    public ProfileSideEffectStep(final Traversal.Admin traversal, final String sideEffectKey) {
+        super(traversal);
+        this.sideEffectKey = sideEffectKey;
+        this.getTraversal().getSideEffects().registerIfAbsent(this.sideEffectKey, (Supplier) DefaultTraversalMetricsSupplier.instance(), Operator.assign);
+    }
+
+    @Override
+    protected void sideEffect(Traverser.Admin<S> traverser) {
+    }
+
+    @Override
+    public String getSideEffectKey() {
+        return this.sideEffectKey;
+    }
+
+    @Override
+    public Traverser.Admin<S> next() {
+        Traverser.Admin<S> start = null;
+        try {
+            start = super.next();
+            return start;
+        } finally {
+            if (!this.onGraphComputer && start == null) {
+                ((DefaultTraversalMetrics) this.getTraversal().getSideEffects().get(this.sideEffectKey)).setMetrics(this.getTraversal(), false);
+            }
+        }
+    }
+
+    @Override
+    public boolean hasNext() {
+        boolean start = super.hasNext();
+        if (!this.onGraphComputer && !start) {
+            ((DefaultTraversalMetrics) this.getTraversal().getSideEffects().get(this.sideEffectKey)).setMetrics(this.getTraversal(), false);
+        }
+        return start;
+    }
+
+    @Override
+    public DefaultTraversalMetrics generateFinalResult(final DefaultTraversalMetrics tm) {
+        if (this.onGraphComputer)
+            tm.setMetrics(this.getTraversal(), true);
+        return tm;
+    }
+
+    @Override
+    public void onGraphComputer() {
+        onGraphComputer = true;
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileStep.java
deleted file mode 100644
index e42e5fa..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileStep.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * 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.sideEffect;
-
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.VertexTraversalSideEffects;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
-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.step.MapReducer;
-import org.apache.tinkerpop.gremlin.process.traversal.step.Profiling;
-import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-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.util.DependantMutableMetrics;
-import org.apache.tinkerpop.gremlin.process.traversal.util.MutableMetrics;
-import org.apache.tinkerpop.gremlin.process.traversal.util.StandardTraversalMetrics;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-
-/**
- * @author Bob Briody (http://bobbriody.com)
- */
-public final class ProfileStep<S> extends AbstractStep<S, S> implements MapReducer<MapReduce.NullObject, StandardTraversalMetrics, MapReduce.NullObject, StandardTraversalMetrics, StandardTraversalMetrics> {
-
-    // Stored in the Traversal sideEffects but kept here as a reference for convenience.
-    private StandardTraversalMetrics traversalMetrics;
-
-    public ProfileStep(final Traversal.Admin traversal) {
-        super(traversal);
-    }
-
-
-    @Override
-    public MapReduce<MapReduce.NullObject, StandardTraversalMetrics, MapReduce.NullObject, StandardTraversalMetrics, StandardTraversalMetrics> getMapReduce() {
-        return ProfileMapReduce.instance();
-    }
-
-    @Override
-    public Traverser<S> next() {
-        Traverser<S> ret = null;
-        initializeIfNeeded();
-        traversalMetrics.start(this.getId());
-        try {
-            ret = super.next();
-            return ret;
-        } finally {
-            if (ret != null) {
-                traversalMetrics.finish(this.getId(), ret.asAdmin().bulk());
-            } else {
-                traversalMetrics.stop(this.getId());
-            }
-        }
-    }
-
-    @Override
-    public boolean hasNext() {
-        initializeIfNeeded();
-        traversalMetrics.start(this.getId());
-        boolean ret = super.hasNext();
-        traversalMetrics.stop(this.getId());
-        return ret;
-    }
-
-    @Override
-    protected Traverser<S> processNextStart() throws NoSuchElementException {
-        return this.starts.next();
-    }
-
-    private void initializeIfNeeded() {
-        if (traversalMetrics != null) {
-            return;
-        }
-
-        createTraversalMetricsSideEffectIfNecessary();
-
-        // How can traversalMetrics still be null? When running on computer it may need to be re-initialized from
-        // sideEffects after serialization.
-        if (traversalMetrics == null) {
-            // look up the TraversalMetrics in the root traversal's sideEffects
-            Traversal t = this.getTraversal();
-            while (!(t.asAdmin().getParent() instanceof EmptyStep)) {
-                t = t.asAdmin().getParent().asStep().getTraversal();
-            }
-            traversalMetrics = t.asAdmin().getSideEffects().<StandardTraversalMetrics>get(TraversalMetrics.METRICS_KEY).get();
-        }
-    }
-
-    private void createTraversalMetricsSideEffectIfNecessary() {
-        if (this.getTraversal().getSideEffects().get(TraversalMetrics.METRICS_KEY).isPresent()) {
-            // Already initialized
-            return;
-        }
-
-        if (!(this.getTraversal().getParent() instanceof EmptyStep)) {
-            // Initialization is handled at the top-level of the traversal only.
-            return;
-        }
-
-        // The following code is executed once per top-level (non-nested) Traversal for all Profile steps. (Technically,
-        // once per thread if using Computer.)
-
-        traversalMetrics = this.getTraversal().getSideEffects().getOrCreate(TraversalMetrics.METRICS_KEY, StandardTraversalMetrics::new);
-        prepTraversalForProfiling(this.getTraversal().asAdmin(), null);
-    }
-
-    // Walk the traversal steps and initialize the Metrics timers.
-    private void prepTraversalForProfiling(Traversal.Admin<?, ?> traversal, MutableMetrics parentMetrics) {
-
-        DependantMutableMetrics prevMetrics = null;
-        final List<Step> steps = traversal.getSteps();
-        for (int ii = 0; ii + 1 < steps.size(); ii = ii + 2) {
-            Step step = steps.get(ii);
-            ProfileStep profileStep = (ProfileStep) steps.get(ii + 1);
-
-            // Create metrics
-            MutableMetrics metrics;
-
-            // Computer metrics are "stand-alone" but Standard metrics handle double-counted upstream time.
-            if (traversal.getEngine().isComputer()) {
-                metrics = new MutableMetrics(step.getId(), step.toString());
-            } else {
-                metrics = new DependantMutableMetrics(step.getId(), step.toString(), prevMetrics);
-                prevMetrics = (DependantMutableMetrics) metrics;
-            }
-
-            if (step instanceof Profiling) {
-                ((Profiling) step).setMetrics(metrics);
-            }
-
-            // Initialize counters (necessary because some steps might end up being 0)
-            metrics.incrementCount(TraversalMetrics.ELEMENT_COUNT_ID, 0);
-            metrics.incrementCount(TraversalMetrics.TRAVERSER_COUNT_ID, 0);
-
-            // Add metrics to parent, if necessary
-            if (parentMetrics != null) {
-                parentMetrics.addNested(metrics);
-            }
-
-            // The TraversalMetrics sideEffect is shared across all the steps.
-            profileStep.traversalMetrics = this.traversalMetrics;
-
-            // Add root metrics to traversalMetrics
-            this.traversalMetrics.addMetrics(metrics, step.getId(), ii / 2, parentMetrics == null, profileStep.getId());
-
-            // Handle nested traversal
-            if (step instanceof TraversalParent) {
-                for (Traversal.Admin<?, ?> t : ((TraversalParent) step).getLocalChildren()) {
-                    prepTraversalForProfiling(t, metrics);
-                }
-                for (Traversal.Admin<?, ?> t : ((TraversalParent) step).getGlobalChildren()) {
-                    prepTraversalForProfiling(t, metrics);
-                }
-            }
-        }
-    }
-
-    //////////////////
-
-    public static final class ProfileMapReduce extends StaticMapReduce<MapReduce.NullObject, StandardTraversalMetrics, MapReduce.NullObject, StandardTraversalMetrics, StandardTraversalMetrics> {
-
-        private static ProfileMapReduce INSTANCE = new ProfileMapReduce();
-
-        private ProfileMapReduce() {
-
-        }
-
-        @Override
-        public boolean doStage(final Stage stage) {
-            return true;
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return TraversalMetrics.METRICS_KEY;
-        }
-
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<NullObject, StandardTraversalMetrics> emitter) {
-            VertexTraversalSideEffects.of(vertex).<StandardTraversalMetrics>get(TraversalMetrics.METRICS_KEY).ifPresent(emitter::emit);
-        }
-
-        @Override
-        public void combine(final NullObject key, final Iterator<StandardTraversalMetrics> values, final ReduceEmitter<NullObject, StandardTraversalMetrics> emitter) {
-            reduce(key, values, emitter);
-        }
-
-        @Override
-        public void reduce(final NullObject key, final Iterator<StandardTraversalMetrics> values, final ReduceEmitter<NullObject, StandardTraversalMetrics> emitter) {
-            emitter.emit(StandardTraversalMetrics.merge(values));
-        }
-
-        @Override
-        public StandardTraversalMetrics generateFinalResult(final Iterator<KeyValue<NullObject, StandardTraversalMetrics>> keyValues) {
-            return StandardTraversalMetrics.merge(IteratorUtils.map(keyValues, KeyValue::getValue));
-        }
-
-        public static ProfileMapReduce instance() {
-            return INSTANCE;
-        }
-    }
-}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackValueStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackValueStep.java
index 0efe0a3..7f030d6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackValueStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackValueStep.java
@@ -20,6 +20,7 @@
 
 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;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
@@ -33,7 +34,7 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class SackValueStep<S, A, B> extends SideEffectStep<S> implements TraversalParent {
+public final class SackValueStep<S, A, B> extends SideEffectStep<S> implements TraversalParent, ByModulating {
 
     private Traversal.Admin<S, B> sackTraversal = null;
 
@@ -45,7 +46,7 @@
     }
 
     @Override
-    public void addLocalChild(final Traversal.Admin<?, ?> sackTraversal) {
+    public void modulateBy(final Traversal.Admin<?, ?> sackTraversal) {
         this.sackTraversal = this.integrateChild(sackTraversal);
     }
 
@@ -57,7 +58,6 @@
     @Override
     protected void sideEffect(final Traverser.Admin<S> traverser) {
         traverser.sack(this.sackFunction.apply(traverser.sack(), null == this.sackTraversal ? (B) traverser.get() : TraversalUtil.apply(traverser, this.sackTraversal)));
-
     }
 
     @Override
@@ -79,7 +79,13 @@
     public SackValueStep<S, A, B> clone() {
         final SackValueStep<S, A, B> clone = (SackValueStep<S, A, B>) super.clone();
         if (null != this.sackTraversal)
-            clone.sackTraversal = clone.integrateChild(this.sackTraversal.clone());
+            clone.sackTraversal = this.sackTraversal.clone();
         return clone;
     }
+
+    @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.integrateChild(this.sackTraversal);
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectCapStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectCapStep.java
index a784bfd..5ac5b27 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectCapStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectCapStep.java
@@ -19,9 +19,12 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
+import org.apache.tinkerpop.gremlin.process.traversal.step.SideEffectCapable;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.SupplyingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.FinalGet;
+import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.util.ArrayList;
@@ -37,6 +40,7 @@
 public final class SideEffectCapStep<S, E> extends SupplyingBarrierStep<S, E> {
 
     private List<String> sideEffectKeys;
+    public transient Map<String, SideEffectCapable<Object, E>> sideEffectCapableSteps;
 
     public SideEffectCapStep(final Traversal.Admin traversal, final String sideEffectKey, final String... sideEffectKeys) {
         super(traversal);
@@ -72,16 +76,50 @@
 
     @Override
     protected E supply() {
-        return this.sideEffectKeys.size() == 1 ?
-                FinalGet.tryFinalGet(this.getTraversal().asAdmin().getSideEffects().<E>get(this.sideEffectKeys.get(0)).get()) :
-                (E) this.getMapOfSideEffects();
+        if (null == this.sideEffectCapableSteps) {
+            this.sideEffectCapableSteps = new HashMap<>();
+            Traversal.Admin<?, ?> parentTraversal = this.getTraversal();
+            while (!(parentTraversal instanceof EmptyTraversal)) {
+                for (final SideEffectCapable<Object, E> capableStep : TraversalHelper.getStepsOfAssignableClassRecursively(SideEffectCapable.class, parentTraversal)) {
+                    if (this.sideEffectKeys.contains(capableStep.getSideEffectKey()) && !this.sideEffectCapableSteps.containsKey(capableStep.getSideEffectKey()))
+                        this.sideEffectCapableSteps.put(capableStep.getSideEffectKey(), capableStep);
+                }
+                if (this.sideEffectKeys.size() == this.sideEffectCapableSteps.size())
+                    break;
+                parentTraversal = parentTraversal.getParent().asStep().getTraversal();
+            }
+        }
+        ////////////
+        if (this.sideEffectKeys.size() == 1) {
+            final String sideEffectKey = this.sideEffectKeys.get(0);
+            final E result = this.getTraversal().getSideEffects().<E>get(sideEffectKey);
+            final SideEffectCapable<Object, E> sideEffectCapable = this.sideEffectCapableSteps.get(sideEffectKey);
+            final E finalResult = null == sideEffectCapable ? result : sideEffectCapable.generateFinalResult(result);
+            this.getTraversal().getSideEffects().set(sideEffectKey, finalResult);
+            return finalResult;
+        } else
+            return (E) this.getMapOfSideEffects();
     }
 
-    public Map<String, Object> getMapOfSideEffects() {
+    private Map<String, Object> getMapOfSideEffects() {
+        final TraversalSideEffects temp = this.getTraversal().getSideEffects();
         final Map<String, Object> sideEffects = new HashMap<>();
         for (final String sideEffectKey : this.sideEffectKeys) {
-            this.getTraversal().asAdmin().getSideEffects().get(sideEffectKey).ifPresent(value -> sideEffects.put(sideEffectKey, FinalGet.tryFinalGet(value)));
+            if (temp.exists(sideEffectKey)) {
+                final E result = temp.get(sideEffectKey);
+                final SideEffectCapable<Object, E> sideEffectCapable = this.sideEffectCapableSteps.get(sideEffectKey);
+                final E finalResult = null == sideEffectCapable ? result : sideEffectCapable.generateFinalResult(result);
+                temp.set(sideEffectKey, finalResult);
+                sideEffects.put(sideEffectKey, finalResult);
+            }
         }
         return sideEffects;
     }
+
+    @Override
+    public SideEffectCapStep<S, E> clone() {
+        final SideEffectCapStep<S, E> clone = (SideEffectCapStep<S, E>) super.clone();
+        clone.sideEffectCapableSteps = null;
+        return clone;
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectStep.java
index 2854e6e..46708d4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectStep.java
@@ -34,7 +34,7 @@
     protected abstract void sideEffect(final Traverser.Admin<S> traverser);
 
     @Override
-    protected Traverser<S> processNextStart() {
+    protected Traverser.Admin<S> processNextStart() {
         final Traverser.Admin<S> traverser = this.starts.next();
         this.sideEffect(traverser);
         return traverser;
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StartStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StartStep.java
index f401be2..cfb7323 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StartStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StartStep.java
@@ -55,7 +55,7 @@
     }
 
     @Override
-    protected Traverser<S> processNextStart() {
+    protected Traverser.Admin<S> processNextStart() {
         if (this.first) {
             if (null != this.start) {
                 if (this.start instanceof Iterator)
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 c53ddab..ac5b0c6 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
@@ -18,33 +18,28 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.VertexTraversalSideEffects;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
+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.MapReducer;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.SideEffectCapable;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.function.BulkSetSupplier;
 
-import java.util.*;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
 import java.util.function.Supplier;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class StoreStep<S> extends SideEffectStep<S> implements SideEffectCapable, TraversalParent, MapReducer<MapReduce.NullObject, Object, MapReduce.NullObject, Object, Collection> {
+public final class StoreStep<S> extends SideEffectStep<S> implements SideEffectCapable<Collection, Collection>, TraversalParent, ByModulating {
 
     private Traversal.Admin<S, Object> storeTraversal = null;
     private String sideEffectKey;
@@ -52,15 +47,14 @@
     public StoreStep(final Traversal.Admin traversal, final String sideEffectKey) {
         super(traversal);
         this.sideEffectKey = sideEffectKey;
-        this.traversal.asAdmin().getSideEffects().registerSupplierIfAbsent(this.sideEffectKey, BulkSetSupplier.instance());
+        this.getTraversal().getSideEffects().registerIfAbsent(this.sideEffectKey, (Supplier) BulkSetSupplier.instance(), Operator.addAll);
     }
 
     @Override
     protected void sideEffect(final Traverser.Admin<S> traverser) {
-        TraversalHelper.addToCollection(
-                traverser.sideEffects(this.sideEffectKey),
-                TraversalUtil.applyNullable(traverser.asAdmin(), this.storeTraversal),
-                traverser.bulk());
+        final BulkSet<Object> bulkSet = new BulkSet<>();
+        bulkSet.add(TraversalUtil.applyNullable(traverser, this.storeTraversal), traverser.bulk());
+        this.getTraversal().getSideEffects().add(this.sideEffectKey, bulkSet);
     }
 
     @Override
@@ -74,17 +68,12 @@
     }
 
     @Override
-    public MapReduce<MapReduce.NullObject, Object, MapReduce.NullObject, Object, Collection> getMapReduce() {
-        return new StoreMapReduce(this);
-    }
-
-    @Override
     public List<Traversal.Admin<S, Object>> getLocalChildren() {
         return null == this.storeTraversal ? Collections.emptyList() : Collections.singletonList(this.storeTraversal);
     }
 
     @Override
-    public void addLocalChild(final Traversal.Admin<?, ?> storeTraversal) {
+    public void modulateBy(final Traversal.Admin<?, ?> storeTraversal) {
         this.storeTraversal = this.integrateChild(storeTraversal);
     }
 
@@ -97,69 +86,21 @@
     public StoreStep<S> clone() {
         final StoreStep<S> clone = (StoreStep<S>) super.clone();
         if (null != this.storeTraversal)
-            clone.storeTraversal = clone.integrateChild(this.storeTraversal.clone());
+            clone.storeTraversal = this.storeTraversal.clone();
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.integrateChild(this.storeTraversal);
+    }
+
+    @Override
     public int hashCode() {
         int result = super.hashCode() ^ this.sideEffectKey.hashCode();
         if (this.storeTraversal != null)
             result ^= this.storeTraversal.hashCode();
         return result;
     }
-
-    ///////////////
-
-    public static final class StoreMapReduce extends StaticMapReduce<MapReduce.NullObject, Object, MapReduce.NullObject, Object, Collection> {
-
-        public static final String STORE_STEP_SIDE_EFFECT_KEY = "gremlin.storeStep.sideEffectKey";
-
-        private String sideEffectKey;
-        private Supplier<Collection> collectionSupplier;
-
-        private StoreMapReduce() {
-
-        }
-
-        public StoreMapReduce(final StoreStep step) {
-            this.sideEffectKey = step.getSideEffectKey();
-            this.collectionSupplier = step.getTraversal().asAdmin().getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
-        }
-
-        @Override
-        public void storeState(final Configuration configuration) {
-            super.storeState(configuration);
-            configuration.setProperty(STORE_STEP_SIDE_EFFECT_KEY, this.sideEffectKey);
-        }
-
-        @Override
-        public void loadState(final Graph graph, final Configuration configuration) {
-            this.sideEffectKey = configuration.getString(STORE_STEP_SIDE_EFFECT_KEY);
-            this.collectionSupplier = TraversalVertexProgram.getTraversal(graph, configuration).getSideEffects().<Collection>getRegisteredSupplier(this.sideEffectKey).orElse(BulkSet::new);
-        }
-
-        @Override
-        public boolean doStage(final Stage stage) {
-            return stage.equals(Stage.MAP);
-        }
-
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<NullObject, Object> emitter) {
-            VertexTraversalSideEffects.of(vertex).<Collection<?>>get(this.sideEffectKey).ifPresent(list -> list.forEach(emitter::emit));
-        }
-
-        @Override
-        public Collection generateFinalResult(final Iterator<KeyValue<NullObject, Object>> keyValues) {
-            final Collection collection = this.collectionSupplier.get();
-            keyValues.forEachRemaining(pair -> collection.add(pair.getValue()));
-            return collection;
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return this.sideEffectKey;
-        }
-    }
-
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TraversalSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TraversalSideEffectStep.java
index 679a97e..3034dc6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TraversalSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TraversalSideEffectStep.java
@@ -56,11 +56,17 @@
     @Override
     public TraversalSideEffectStep<S> clone() {
         final TraversalSideEffectStep<S> clone = (TraversalSideEffectStep<S>) super.clone();
-        clone.sideEffectTraversal = clone.integrateChild(this.sideEffectTraversal.clone());
+        clone.sideEffectTraversal = this.sideEffectTraversal.clone();
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.integrateChild(this.sideEffectTraversal);
+    }
+
+    @Override
     public String toString() {
         return StringFactory.stepString(this, this.sideEffectTraversal);
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TreeSideEffectStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TreeSideEffectStep.java
index f45e355..9996c83 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TreeSideEffectStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/TreeSideEffectStep.java
@@ -18,49 +18,45 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.VertexTraversalSideEffects;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor;
 import org.apache.tinkerpop.gremlin.process.traversal.step.SideEffectCapable;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.TreeStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalRing;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.function.TreeSupplier;
 
-import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
+import java.util.function.Supplier;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class TreeSideEffectStep<S> extends SideEffectStep<S> implements SideEffectCapable, TraversalParent, PathProcessor, MapReducer<MapReduce.NullObject, Tree, MapReduce.NullObject, Tree, Tree> {
+public final class TreeSideEffectStep<S> extends SideEffectStep<S> implements SideEffectCapable<Tree, Tree>, TraversalParent, ByModulating, PathProcessor {
 
     private TraversalRing<Object, Object> traversalRing;
     private String sideEffectKey;
+    private Set<String> keepLabels;
 
     public TreeSideEffectStep(final Traversal.Admin traversal, final String sideEffectKey) {
         super(traversal);
         this.sideEffectKey = sideEffectKey;
         this.traversalRing = new TraversalRing<>();
-        this.traversal.asAdmin().getSideEffects().registerSupplierIfAbsent(this.sideEffectKey, TreeSupplier.instance());
+        this.getTraversal().getSideEffects().registerIfAbsent(this.sideEffectKey, (Supplier) TreeSupplier.instance(), TreeStep.TreeBiOperator.instance());
     }
 
     @Override
     protected void sideEffect(final Traverser.Admin<S> traverser) {
-        Tree depth = traverser.sideEffects(this.sideEffectKey);
+        final Tree root = new Tree();
+        Tree depth = root;
         final Path path = traverser.path();
         for (int i = 0; i < path.size(); i++) {
             final Object object = TraversalUtil.apply(path.<Object>get(i), this.traversalRing.next());
@@ -69,6 +65,12 @@
             depth = (Tree) depth.get(object);
         }
         this.traversalRing.reset();
+        this.getTraversal().getSideEffects().add(this.sideEffectKey, root);
+    }
+
+    @Override
+    protected Traverser.Admin<S> processNextStart() {
+        return PathProcessor.processTraverserPathLabels(super.processNextStart(), this.keepLabels);
     }
 
     @Override
@@ -77,11 +79,6 @@
     }
 
     @Override
-    public MapReduce<MapReduce.NullObject, Tree, MapReduce.NullObject, Tree, Tree> getMapReduce() {
-        return new TreeSideEffectMapReduce(this);
-    }
-
-    @Override
     public void reset() {
         super.reset();
         this.traversalRing.reset();
@@ -96,11 +93,16 @@
     public TreeSideEffectStep<S> clone() {
         final TreeSideEffectStep<S> clone = (TreeSideEffectStep<S>) super.clone();
         clone.traversalRing = this.traversalRing.clone();
-        clone.getLocalChildren().forEach(clone::integrateChild);
         return clone;
     }
 
     @Override
+    public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
+        super.setTraversal(parentTraversal);
+        this.traversalRing.getTraversals().forEach(this::integrateChild);
+    }
+
+    @Override
     public int hashCode() {
         return super.hashCode() ^ this.sideEffectKey.hashCode() ^ this.traversalRing.hashCode();
     }
@@ -111,7 +113,7 @@
     }
 
     @Override
-    public void addLocalChild(final Traversal.Admin<?, ?> treeTraversal) {
+    public void modulateBy(final Traversal.Admin<?, ?> treeTraversal) {
         this.traversalRing.addTraversal(this.integrateChild(treeTraversal));
     }
 
@@ -120,64 +122,13 @@
         return this.getSelfAndChildRequirements(TraverserRequirement.PATH, TraverserRequirement.SIDE_EFFECTS);
     }
 
-    ////////////////
-
-    public static final class TreeSideEffectMapReduce extends StaticMapReduce<MapReduce.NullObject, Tree, MapReduce.NullObject, Tree, Tree> {
-
-        public static final String TREE_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY = "gremlin.treeSideEffectStep.sideEffectKey";
-
-        private String sideEffectKey;
-
-        private TreeSideEffectMapReduce() {
-
-        }
-
-        public TreeSideEffectMapReduce(final TreeSideEffectStep step) {
-            this.sideEffectKey = step.getSideEffectKey();
-        }
-
-        @Override
-        public void storeState(final Configuration configuration) {
-            super.storeState(configuration);
-            configuration.setProperty(TREE_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY, this.sideEffectKey);
-        }
-
-        @Override
-        public void loadState(final Graph graph, final Configuration configuration) {
-            this.sideEffectKey = configuration.getString(TREE_SIDE_EFFECT_STEP_SIDE_EFFECT_KEY);
-        }
-
-        @Override
-        public boolean doStage(final Stage stage) {
-            return true;
-        }
-
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<NullObject, Tree> emitter) {
-            VertexTraversalSideEffects.of(vertex).<Tree<?>>get(this.sideEffectKey).ifPresent(emitter::emit);
-        }
-
-        @Override
-        public void combine(final NullObject key, final Iterator<Tree> values, final ReduceEmitter<NullObject, Tree> emitter) {
-            this.reduce(key, values, emitter);
-        }
-
-        @Override
-        public void reduce(final NullObject key, final Iterator<Tree> values, final ReduceEmitter<NullObject, Tree> emitter) {
-            final Tree tree = new Tree();
-            values.forEachRemaining(tree::addTree);
-            emitter.emit(tree);
-        }
-
-        @Override
-        public Tree generateFinalResult(final Iterator<KeyValue<NullObject, Tree>> keyValues) {
-            return keyValues.hasNext() ? keyValues.next().getValue() : new Tree();
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return this.sideEffectKey;
-        }
+    @Override
+    public void setKeepLabels(final Set<String> labels) {
+        this.keepLabels = labels;
     }
 
+    @Override
+    public Set<String> getKeepLabels() {
+        return this.keepLabels;
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/AbstractStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/AbstractStep.java
index 4d9b7d2..9eb1b3c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/AbstractStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/AbstractStep.java
@@ -22,6 +22,7 @@
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalInterruptedException;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.util.Collections;
@@ -84,13 +85,13 @@
     }
 
     @Override
-    public void addStarts(final Iterator<Traverser<S>> starts) {
-        this.starts.add((Iterator) starts);
+    public void addStarts(final Iterator<Traverser.Admin<S>> starts) {
+        this.starts.add(starts);
     }
 
     @Override
-    public void addStart(final Traverser<S> start) {
-        this.starts.add((Traverser.Admin<S>) start);
+    public void addStart(final Traverser.Admin<S> start) {
+        this.starts.add(start);
     }
 
     @Override
@@ -114,7 +115,7 @@
     }
 
     @Override
-    public Traverser<E> next() {
+    public Traverser.Admin<E> next() {
         if (null != this.nextEnd) {
             try {
                 return this.prepareTraversalForNextStep(this.nextEnd);
@@ -123,7 +124,8 @@
             }
         } else {
             while (true) {
-                final Traverser.Admin<E> traverser = (Traverser.Admin<E>) this.processNextStart();
+                if (Thread.interrupted()) throw new TraversalInterruptedException();
+                final Traverser.Admin<E> traverser = this.processNextStart();
                 if (null != traverser.get() && 0 != traverser.bulk())
                     return this.prepareTraversalForNextStep(traverser);
             }
@@ -137,7 +139,8 @@
         else {
             try {
                 while (true) {
-                    this.nextEnd = (Traverser.Admin<E>) this.processNextStart();
+                    if (Thread.interrupted()) throw new TraversalInterruptedException();
+                    this.nextEnd = this.processNextStart();
                     if (null != this.nextEnd.get() && 0 != this.nextEnd.bulk())
                         return true;
                     else
@@ -159,7 +162,7 @@
         this.traversal = traversal;
     }
 
-    protected abstract Traverser<E> processNextStart() throws NoSuchElementException;
+    protected abstract Traverser.Admin<E> processNextStart() throws NoSuchElementException;
 
     @Override
     public String toString() {
@@ -176,6 +179,7 @@
             clone.nextStep = EmptyStep.instance();
             clone.nextEnd = null;
             clone.traversal = EmptyTraversal.instance();
+            clone.labels = new LinkedHashSet<>(this.labels);
             clone.reset();
             return clone;
         } catch (final CloneNotSupportedException e) {
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/CollectingBarrierStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/CollectingBarrierStep.java
index 0c8283f..f9c85a2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/CollectingBarrierStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/CollectingBarrierStep.java
@@ -18,22 +18,28 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.util;
 
+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.Barrier;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
+import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
 
 import java.util.Collections;
+import java.util.NoSuchElementException;
 import java.util.Set;
+import java.util.function.BinaryOperator;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public abstract class CollectingBarrierStep<S> extends AbstractStep<S, S> implements Barrier {
-    private TraverserSet<S> traverserSet = new TraverserSet<>();
+public abstract class CollectingBarrierStep<S> extends AbstractStep<S, S> implements Barrier<TraverserSet<S>> {
 
+    private TraverserSet<S> traverserSet = new TraverserSet<>();
     private int maxBarrierSize;
 
     public CollectingBarrierStep(final Traversal.Admin traversal) {
@@ -57,18 +63,46 @@
         if (this.starts.hasNext()) {
             if (Integer.MAX_VALUE == this.maxBarrierSize) {
                 this.starts.forEachRemaining(this.traverserSet::add);
-                this.barrierConsumer(this.traverserSet);
             } else {
                 while (this.starts.hasNext() && this.traverserSet.size() < this.maxBarrierSize) {
                     this.traverserSet.add(this.starts.next());
                 }
-                this.barrierConsumer(this.traverserSet);
             }
+            this.barrierConsumer(this.traverserSet);
         }
     }
 
     @Override
-    public Traverser<S> processNextStart() {
+    public boolean hasNextBarrier() {
+        this.processAllStarts();
+        return !this.traverserSet.isEmpty();
+    }
+
+    @Override
+    public TraverserSet<S> nextBarrier() throws NoSuchElementException {
+        this.processAllStarts();
+        if (this.traverserSet.isEmpty())
+            throw FastNoSuchElementException.instance();
+        else {
+            final TraverserSet<S> temp = new TraverserSet<>();
+            this.traverserSet.iterator().forEachRemaining(t -> {
+                DetachedFactory.detach(t, true); // this should be dynamic
+                temp.add(t);
+            });
+            this.traverserSet.clear();
+            return temp;
+        }
+    }
+
+    @Override
+    public void addBarrier(final TraverserSet<S> barrier) {
+        this.traverserSet = barrier;
+        this.traverserSet.forEach(traverser -> traverser.setSideEffects(this.getTraversal().getSideEffects()));
+        this.barrierConsumer(this.traverserSet);
+    }
+
+    @Override
+    public Traverser.Admin<S> processNextStart() {
         if (!this.traverserSet.isEmpty()) {
             return this.traverserSet.remove();
         } else if (this.starts.hasNext()) {
@@ -99,4 +133,9 @@
         super.reset();
         this.traverserSet.clear();
     }
+
+    @Override
+    public MemoryComputeKey<TraverserSet<S>> getMemoryComputeKey() {
+        return MemoryComputeKey.of(this.getId(), (BinaryOperator) Operator.addAll, false, true);
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComparatorTraverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComparatorTraverser.java
deleted file mode 100644
index 437a01a..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComparatorTraverser.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.Traverser;
-
-import java.io.Serializable;
-import java.util.Comparator;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class ComparatorTraverser<S> implements Comparator<Traverser<S>>, Serializable {
-
-    private final Comparator<S> comparator;
-
-    public ComparatorTraverser(final Comparator<S> comparator) {
-        this.comparator = comparator;
-    }
-
-    public Comparator<S> getComparator() {
-        return this.comparator;
-    }
-
-    @Override
-    public int compare(final Traverser<S> traverserA, final Traverser<S> traverserB) {
-        return this.comparator.compare(traverserA.get(), traverserB.get());
-    }
-
-    public static <S> List<ComparatorTraverser<S>> convertComparator(final List<Comparator<S>> comparators) {
-        return comparators.stream().map(comparator -> new ComparatorTraverser<>(comparator)).collect(Collectors.toList());
-    }
-}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java
index 419205c..5acff58 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java
@@ -19,9 +19,8 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.util;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.EngineDependent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.GraphComputing;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.iterator.EmptyIterator;
 
@@ -31,16 +30,16 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public abstract class ComputerAwareStep<S, E> extends AbstractStep<S, E> implements EngineDependent {
+public abstract class ComputerAwareStep<S, E> extends AbstractStep<S, E> implements GraphComputing {
 
-    private Iterator<Traverser<E>> previousIterator = EmptyIterator.instance();
+    private Iterator<Traverser.Admin<E>> previousIterator = EmptyIterator.instance();
 
     public ComputerAwareStep(final Traversal.Admin traversal) {
         super(traversal);
     }
 
     @Override
-    protected Traverser<E> processNextStart() throws NoSuchElementException {
+    protected Traverser.Admin<E> processNextStart() throws NoSuchElementException {
         while (true) {
             if (this.previousIterator.hasNext())
                 return this.previousIterator.next();
@@ -49,8 +48,8 @@
     }
 
     @Override
-    public void onEngine(final TraversalEngine engine) {
-        this.traverserStepIdAndLabelsSetByChild = engine.isComputer();
+    public void onGraphComputer() {
+        this.traverserStepIdAndLabelsSetByChild = true;
     }
 
     @Override
@@ -60,20 +59,20 @@
         return clone;
     }
 
-    protected abstract Iterator<Traverser<E>> standardAlgorithm() throws NoSuchElementException;
+    protected abstract Iterator<Traverser.Admin<E>> standardAlgorithm() throws NoSuchElementException;
 
-    protected abstract Iterator<Traverser<E>> computerAlgorithm() throws NoSuchElementException;
+    protected abstract Iterator<Traverser.Admin<E>> computerAlgorithm() throws NoSuchElementException;
 
     //////
 
-    public static class EndStep<S> extends AbstractStep<S, S> implements EngineDependent {
+    public static class EndStep<S> extends AbstractStep<S, S> implements GraphComputing {
 
         public EndStep(final Traversal.Admin traversal) {
             super(traversal);
         }
 
         @Override
-        protected Traverser<S> processNextStart() throws NoSuchElementException {
+        protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
             final Traverser.Admin<S> start = this.starts.next();
             if (this.traverserStepIdAndLabelsSetByChild) {
                 start.setStepId(((ComputerAwareStep<?, ?>) this.getTraversal().getParent()).getNextStep().getId());
@@ -88,8 +87,8 @@
         }
 
         @Override
-        public void onEngine(final TraversalEngine engine) {
-            this.traverserStepIdAndLabelsSetByChild = engine.isComputer();
+        public void onGraphComputer() {
+            this.traverserStepIdAndLabelsSetByChild = true;
         }
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyPath.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyPath.java
index c40f228..0c6827e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyPath.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyPath.java
@@ -52,6 +52,9 @@
     }
 
     @Override
+    public Path retract(final Set<String> labels) { return this; }
+
+    @Override
     public <A> A get(final String label) {
         throw Path.Exceptions.stepWithProvidedLabelDoesNotExist(label);
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyStep.java
index 9c6c5f0..b377c81 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyStep.java
@@ -45,12 +45,12 @@
     }
 
     @Override
-    public void addStarts(final Iterator<Traverser<S>> starts) {
+    public void addStarts(final Iterator<Traverser.Admin<S>> starts) {
 
     }
 
     @Override
-    public void addStart(final Traverser<S> start) {
+    public void addStart(final Traverser.Admin<S> start) {
 
     }
 
@@ -126,7 +126,7 @@
     }
 
     @Override
-    public Traverser<E> next() {
+    public Traverser.Admin<E> next() {
         throw FastNoSuchElementException.instance();
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ExpandableStepIterator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ExpandableStepIterator.java
index 09e82d0..30558e8 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ExpandableStepIterator.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ExpandableStepIterator.java
@@ -20,7 +20,6 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.util.iterator.MultiIterator;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 
 import java.io.Serializable;
@@ -32,33 +31,30 @@
 public final class ExpandableStepIterator<S> implements Iterator<Traverser.Admin<S>>, Serializable {
 
     private final TraverserSet<S> traverserSet = new TraverserSet<>();
-    private final MultiIterator<Traverser.Admin<S>> traverserIterators = new MultiIterator<>();
-    private final Step<S,?> hostStep;
+    private final Step<S, ?> hostStep;
 
-    public ExpandableStepIterator(final Step<S,?> hostStep) {
+    public ExpandableStepIterator(final Step<S, ?> hostStep) {
         this.hostStep = hostStep;
     }
 
     @Override
     public boolean hasNext() {
-        return !this.traverserSet.isEmpty() || this.hostStep.getPreviousStep().hasNext() || this.traverserIterators.hasNext();
+        return !this.traverserSet.isEmpty() || this.hostStep.getPreviousStep().hasNext();
     }
 
     @Override
     public Traverser.Admin<S> next() {
         if (!this.traverserSet.isEmpty())
             return this.traverserSet.remove();
-        if (this.traverserIterators.hasNext())
-            return this.traverserIterators.next();
         /////////////
         if (this.hostStep.getPreviousStep().hasNext())
-            return (Traverser.Admin<S>) this.hostStep.getPreviousStep().next();
+            return this.hostStep.getPreviousStep().next();
         /////////////
         return this.traverserSet.remove();
     }
 
     public void add(final Iterator<Traverser.Admin<S>> iterator) {
-        this.traverserIterators.addIterator(iterator);
+        iterator.forEachRemaining(this.traverserSet::add);
     }
 
     public void add(final Traverser.Admin<S> traverser) {
@@ -71,7 +67,6 @@
     }
 
     public void clear() {
-        this.traverserIterators.clear();
         this.traverserSet.clear();
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/FinalGet.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/FinalGet.java
deleted file mode 100644
index 2d0efbe..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/FinalGet.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public interface FinalGet<A> {
-
-    public A getFinal();
-
-    public static <A> A tryFinalGet(final Object object) {
-        return object instanceof FinalGet ? ((FinalGet<A>) object).getFinal() : (A) object;
-    }
-}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/GroupStepHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/GroupStepHelper.java
deleted file mode 100644
index 4ed4dc4..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/GroupStepHelper.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * 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.Step;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-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.TokenTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.LambdaMapStep;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Supplier;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class GroupStepHelper {
-
-    private GroupStepHelper() {
-
-    }
-
-    public static <S, E> Traversal.Admin<S, E> convertValueTraversal(final Traversal.Admin<S, E> valueReduceTraversal) {
-        if (valueReduceTraversal instanceof ElementValueTraversal ||
-                valueReduceTraversal instanceof TokenTraversal ||
-                valueReduceTraversal instanceof IdentityTraversal ||
-                valueReduceTraversal.getStartStep() instanceof LambdaMapStep && ((LambdaMapStep) valueReduceTraversal.getStartStep()).getMapFunction() instanceof FunctionTraverser) {
-            return (Traversal.Admin<S, E>) __.map(valueReduceTraversal).fold();
-        } else {
-            return valueReduceTraversal;
-        }
-    }
-
-    public static List<Traversal.Admin<?, ?>> splitOnBarrierStep(final Traversal.Admin<?, ?> valueReduceTraversal) {
-        if (TraversalHelper.getFirstStepOfAssignableClass(Barrier.class, valueReduceTraversal).isPresent()) {
-            final Traversal.Admin<?, ?> first = __.identity().asAdmin();
-            final Traversal.Admin<?, ?> second = __.identity().asAdmin();
-            boolean onSecond = false;
-            for (final Step step : valueReduceTraversal.getSteps()) {
-                if (step instanceof Barrier)
-                    onSecond = true;
-                if (onSecond)
-                    second.addStep(step.clone());
-                else
-                    first.addStep(step.clone());
-            }
-            return Arrays.asList(first, second);
-        } else {
-            return Arrays.asList(valueReduceTraversal.clone(), __.identity().asAdmin());
-        }
-    }
-
-
-    /////////
-
-    public static class GroupMap<S, K, V> extends HashMap<K, Traversal.Admin<S, V>> implements FinalGet<Map<K, V>> {
-
-        private final Map<K, V> map;
-
-        public GroupMap(final Map<K, V> map) {
-            this.map = map;
-        }
-
-        @Override
-        public Map<K, V> getFinal() {
-            this.forEach((key, traversal) -> this.map.put(key, traversal.next()));
-            return this.map;
-        }
-    }
-
-    public static class GroupMapSupplier implements Supplier<GroupMap>, Serializable {
-
-        @Override
-        public GroupMap get() {
-            return new GroupMap<>(new HashMap<>());
-        }
-    }
-}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
index b634e37..d08f408 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
@@ -33,12 +33,12 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class HasContainer implements Serializable, Cloneable, Predicate<Element> {
+public class HasContainer implements Serializable, Cloneable, Predicate<Element> {
 
     private String key;
     private P predicate;
 
-    private boolean testingIdString;
+    private final boolean testingIdString;
 
     public HasContainer(final String key, final P<?> predicate) {
         this.key = key;
@@ -66,34 +66,60 @@
         }
     }
 
-    public boolean test(final Element element) {
+    public final boolean test(final Element element) {
         // it is OK to evaluate equality of ids via toString(), given that the test suite enforces the value of
         // id().toString() to be a first class representation of the identifier. a string test is only executed
         // if the predicate value is a String.  this allows stuff like: g.V().has(id,lt(10)) to work properly
         if (this.key.equals(T.id.getAccessor()))
-            return testingIdString ?  this.predicate.test(element.id().toString()) : this.predicate.test(element.id());
+            return testingIdString ? testIdAsString(element) : testId(element);
         else if (this.key.equals(T.label.getAccessor()))
-            return this.predicate.test(element.label());
+            return testLabel(element);
         else if (element instanceof VertexProperty && this.key.equals(T.value.getAccessor()))
-            return this.predicate.test(((VertexProperty) element).value());
+            return testValue((VertexProperty) element);
         else if (element instanceof VertexProperty && this.key.equals(T.key.getAccessor()))
-            return this.predicate.test(((VertexProperty) element).key());
+            return testKey((VertexProperty) element);
         else {
             if (element instanceof Vertex) {
                 final Iterator<? extends Property> itty = element.properties(this.key);
                 while (itty.hasNext()) {
-                    if (this.predicate.test(itty.next().value()))
+                    if (testValue(itty.next()))
                         return true;
                 }
                 return false;
             } else {
                 final Property property = element.property(this.key);
-                return property.isPresent() && this.predicate.test(property.value());
+                return property.isPresent() && testValue(property);
             }
         }
     }
 
-    public String toString() {
+    protected boolean testId(Element element)
+    {
+        return this.predicate.test(element.id());
+    }
+
+    protected boolean testIdAsString(Element element)
+    {
+        return this.predicate.test(element.id().toString());
+    }
+
+    protected boolean testLabel(Element element)
+    {
+        return this.predicate.test(element.label());
+    }
+
+    protected boolean testValue(Property property)
+    {
+        return this.predicate.test(property.value());
+    }
+
+    protected boolean testKey(Property property)
+    {
+        return this.predicate.test(property.key());
+    }
+
+
+    public final String toString() {
         return this.key + '.' + this.predicate;
     }
 
@@ -112,23 +138,23 @@
         return (this.key != null ? this.key.hashCode() : 0) ^ (this.predicate != null ? this.predicate.hashCode() : 0);
     }
 
-    public String getKey() {
+    public final String getKey() {
         return this.key;
     }
 
-    public void setKey(final String key) {
+    public final void setKey(final String key) {
         this.key = key;
     }
 
-    public P<?> getPredicate() {
+    public final P<?> getPredicate() {
         return this.predicate;
     }
 
-    public BiPredicate<?, ?> getBiPredicate() {
+    public final BiPredicate<?, ?> getBiPredicate() {
         return this.predicate.getBiPredicate();
     }
 
-    public Object getValue() {
+    public final Object getValue() {
         return this.predicate.getValue();
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java
index 1a916ca..729b4f3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java
@@ -20,7 +20,6 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.Pop;
-import org.apache.tinkerpop.gremlin.structure.Element;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -77,6 +76,32 @@
     }
 
     @Override
+    public Path retract(final Set<String> labels) {
+        if (labels.isEmpty())
+            return this;
+
+        // get all the immutable path sections
+        final List<ImmutablePath> immutablePaths = new ArrayList<>();
+        ImmutablePath currentPathSection = this;
+        while (true) {
+            immutablePaths.add(0, currentPathSection);
+            if (currentPathSection.previousPath instanceof TailPath)
+                break;
+            else
+                currentPathSection = (ImmutablePath) currentPathSection.previousPath;
+        }
+        // build a new immutable path using the respective path sections that are not to be retracted
+        Path newPath = TailPath.instance();
+        for (final ImmutablePath immutablePath : immutablePaths) {
+            final Set<String> temp = new LinkedHashSet<>(immutablePath.currentLabels);
+            temp.removeAll(labels);
+            if (!temp.isEmpty())
+                newPath = newPath.extend(immutablePath.currentObject, temp);
+        }
+        return newPath;
+    }
+
+    @Override
     public <A> A get(final int index) {
         return (this.size() - 1) == index ? (A) this.currentObject : this.previousPath.get(index);
     }
@@ -131,23 +156,43 @@
 
     @Override
     public boolean hasLabel(final String label) {
-        return this.currentLabels.contains(label) || this.previousPath.hasLabel(label);
+        ImmutablePath currentPathSection = this;
+        while (true) {
+            if (currentPathSection.currentLabels.contains(label))
+                return true;
+            if (currentPathSection.previousPath instanceof TailPath)
+                return false;
+            else
+                currentPathSection = (ImmutablePath) currentPathSection.previousPath;
+        }
     }
 
     @Override
     public List<Object> objects() {
-        final List<Object> objectPath = new ArrayList<>();    // TODO: optimize
-        objectPath.addAll(this.previousPath.objects());
-        objectPath.add(this.currentObject);
-        return Collections.unmodifiableList(objectPath);
+        final List<Object> objects = new ArrayList<>();
+        ImmutablePath currentPathSection = this;
+        while (true) {
+            objects.add(0, currentPathSection.currentObject);
+            if (currentPathSection.previousPath instanceof TailPath)
+                break;
+            else
+                currentPathSection = (ImmutablePath) currentPathSection.previousPath;
+        }
+        return Collections.unmodifiableList(objects);
     }
 
     @Override
     public List<Set<String>> labels() {
-        final List<Set<String>> labelPath = new ArrayList<>();   // TODO: optimize
-        labelPath.addAll(this.previousPath.labels());
-        labelPath.add(this.currentLabels);
-        return Collections.unmodifiableList(labelPath);
+        final List<Set<String>> labels = new ArrayList<>();
+        ImmutablePath currentPathSection = this;
+        while (true) {
+            labels.add(0, currentPathSection.currentLabels);
+            if (currentPathSection.previousPath instanceof TailPath)
+                break;
+            else
+                currentPathSection = (ImmutablePath) currentPathSection.previousPath;
+        }
+        return Collections.unmodifiableList(labels);
     }
 
     @Override
@@ -165,19 +210,29 @@
         if (!(other instanceof Path))
             return false;
         final Path otherPath = (Path) other;
-        if (otherPath.size() != this.size())
+        int size = this.size();
+        if (otherPath.size() != size)
             return false;
-        for (int i = this.size() - 1; i >= 0; i--) {
-            if (!this.get(i).equals(otherPath.get(i)))
-                return false;
-            if (!this.labels().get(i).equals(otherPath.labels().get(i)))
-                return false;
+        if (size > 0) {
+            ImmutablePath currentPathSection = this;
+            final List<Object> otherObjects = otherPath.objects();
+            final List<Set<String>> otherLabels = otherPath.labels();
+            for (int i = otherLabels.size() - 1; i >= 0; i--) {
+                if (!currentPathSection.currentObject.equals(otherObjects.get(i)))
+                    return false;
+                if (!currentPathSection.currentLabels.equals(otherLabels.get(i)))
+                    return false;
+                if (currentPathSection.previousPath instanceof TailPath)
+                    break;
+                else
+                    currentPathSection = (ImmutablePath) currentPathSection.previousPath;
+            }
         }
         return true;
     }
 
 
-    private static class TailPath implements Path, ImmutablePathImpl {
+    private static class TailPath implements Path, ImmutablePathImpl, Serializable {
         private static final TailPath INSTANCE = new TailPath();
 
         private TailPath() {
@@ -196,10 +251,17 @@
 
         @Override
         public Path extend(final Set<String> labels) {
+            if (labels.isEmpty())
+                return this;
             throw new UnsupportedOperationException("A head path can not have labels added to it");
         }
 
         @Override
+        public Path retract(final Set<String> labels) {
+            return this;
+        }
+
+        @Override
         public <A> A get(final String label) {
             throw Path.Exceptions.stepWithProvidedLabelDoesNotExist(label);
         }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
index 0a35f90..e9fc093 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
@@ -80,7 +80,20 @@
 
     @Override
     public Path extend(final Set<String> labels) {
-        this.labels.get(this.labels.size() - 1).addAll(labels);
+        if (!labels.isEmpty())
+            this.labels.get(this.labels.size() - 1).addAll(labels);
+        return this;
+    }
+
+    @Override
+    public Path retract(final Set<String> removeLabels) {
+        for (int i = this.labels.size() - 1; i >= 0; i--) {
+            this.labels.get(i).removeAll(removeLabels);
+            if (this.labels.get(i).isEmpty()) {
+                this.labels.remove(i);
+                this.objects.remove(i);
+            }
+        }
         return this;
     }
 
@@ -153,12 +166,15 @@
         if (!(other instanceof Path))
             return false;
         final Path otherPath = (Path) other;
-        if (otherPath.size() != this.size())
+        if (otherPath.size() != this.objects.size())
             return false;
-        for (int i = this.size() - 1; i >= 0; i--) {
-            if (!this.objects.get(i).equals(otherPath.get(i)))
+
+        final List<Object> otherPathObjects = otherPath.objects();
+        final List<Set<String>> otherPathLabels = otherPath.labels();
+        for (int i = this.objects.size() - 1; i >= 0; i--) {
+            if (!this.objects.get(i).equals(otherPathObjects.get(i)))
                 return false;
-            if (!this.labels.get(i).equals(otherPath.labels().get(i)))
+            if (!this.labels.get(i).equals(otherPathLabels.get(i)))
                 return false;
         }
         return true;
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
index 5d19d1f..3584c87 100644
--- 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
@@ -26,7 +26,6 @@
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.T;
-import org.apache.tinkerpop.gremlin.structure.util.ElementHelper;
 
 import java.io.Serializable;
 import java.util.ArrayList;
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ProfileStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ProfileStep.java
new file mode 100644
index 0000000..9b2276b
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ProfileStep.java
@@ -0,0 +1,126 @@
+/*
+ * 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.computer.MemoryComputeKey;
+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.step.MemoryComputing;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Profiling;
+import org.apache.tinkerpop.gremlin.process.traversal.util.MutableMetrics;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+
+import java.io.Serializable;
+import java.util.NoSuchElementException;
+import java.util.function.BinaryOperator;
+
+/**
+ * @author Bob Briody (http://bobbriody.com)
+ */
+public final class ProfileStep<S> extends AbstractStep<S, S> implements MemoryComputing<MutableMetrics> {  // pseudo GraphComputing but local traversals are "GraphComputing"
+    private MutableMetrics metrics;
+    private boolean onGraphComputer = false;
+
+    public ProfileStep(final Traversal.Admin traversal) {
+        super(traversal);
+    }
+
+    public MutableMetrics getMetrics() {
+        return metrics;
+    }
+
+    @Override
+    public Traverser.Admin<S> next() {
+        Traverser.Admin<S> start = null;
+        this.initializeIfNeeded();
+        this.metrics.start();
+        try {
+            start = super.next();
+            return start;
+        } finally {
+            if (start != null) {
+                this.metrics.finish(start.bulk());
+                if (this.onGraphComputer) {
+                    this.getTraversal().getSideEffects().add(this.getId(), this.metrics);
+                    this.metrics = null;
+                }
+            } else {
+                this.metrics.stop();
+                if (this.onGraphComputer) {
+                    this.getTraversal().getSideEffects().add(this.getId(), this.metrics);
+                    this.metrics = null;
+                }
+            }
+        }
+    }
+
+    @Override
+    public boolean hasNext() {
+        initializeIfNeeded();
+        this.metrics.start();
+        boolean ret = super.hasNext();
+        this.metrics.stop();
+        return ret;
+    }
+
+    @Override
+    protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
+        return this.starts.next();
+    }
+
+    private void initializeIfNeeded() {
+        if (null == this.metrics) {
+            this.onGraphComputer = TraversalHelper.onGraphComputer(this.getTraversal());
+            this.metrics = new MutableMetrics(this.getPreviousStep().getId(), this.getPreviousStep().toString());
+            final Step<?, S> previousStep = this.getPreviousStep();
+            if (previousStep instanceof Profiling)
+                ((Profiling) previousStep).setMetrics(this.metrics);
+        }
+    }
+
+    @Override
+    public MemoryComputeKey<MutableMetrics> getMemoryComputeKey() {
+        return MemoryComputeKey.of(this.getId(), ProfileBiOperator.instance(), false, true);
+    }
+
+    @Override
+    public ProfileStep<S> clone() {
+        final ProfileStep<S> clone = (ProfileStep<S>) super.clone();
+        clone.metrics = null;
+        return clone;
+    }
+
+    /////
+
+    public static class ProfileBiOperator implements BinaryOperator<MutableMetrics>, Serializable {
+
+        private static final ProfileBiOperator INSTANCE = new ProfileBiOperator();
+
+        @Override
+        public MutableMetrics apply(final MutableMetrics metricsA, final MutableMetrics metricsB) {
+            metricsA.aggregate(metricsB);
+            return metricsA;
+        }
+
+        public static final ProfileBiOperator instance() {
+            return INSTANCE;
+        }
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java
index fb7ecb7..3b2823c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ReducingBarrierStep.java
@@ -18,38 +18,26 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.util;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
-import org.apache.tinkerpop.gremlin.process.computer.util.VertexProgramHelper;
+import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
 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.step.Barrier;
-import org.apache.tinkerpop.gremlin.process.traversal.step.MapReducer;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Generating;
 import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
 
-import java.util.Iterator;
-import java.util.function.BiFunction;
+import java.util.function.BinaryOperator;
 import java.util.function.Supplier;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public abstract class ReducingBarrierStep<S, E> extends AbstractStep<S, E> implements MapReducer, Barrier {
 
-    public static final String REDUCING = Graph.Hidden.hide("reducing");
+public abstract class ReducingBarrierStep<S, E> extends AbstractStep<S, E> implements Barrier<E>, Generating<E, E> {
 
     protected Supplier<E> seedSupplier;
-    protected BiFunction<E, Traverser<S>, E> reducingBiFunction;
-    private boolean done = false;
-
+    protected BinaryOperator<E> reducingBiOperator;
+    private boolean hasProcessedOnce = false;
     private E seed = null;
 
     public ReducingBarrierStep(final Traversal.Admin traversal) {
@@ -60,45 +48,72 @@
         this.seedSupplier = seedSupplier;
     }
 
-    public void setBiFunction(final BiFunction<E, Traverser<S>, E> reducingBiFunction) {
-        this.reducingBiFunction = reducingBiFunction;
+    public Supplier<E> getSeedSupplier() {
+        return this.seedSupplier;
     }
 
-    @Override
+    public abstract E projectTraverser(final Traverser.Admin<S> traverser);
+
+    public void setReducingBiOperator(final BinaryOperator<E> reducingBiOperator) {
+        this.reducingBiOperator = reducingBiOperator;
+    }
+
+    public BinaryOperator<E> getBiOperator() {
+        return this.reducingBiOperator;
+    }
+
     public void reset() {
         super.reset();
-        this.done = false;
+        this.hasProcessedOnce = false;
         this.seed = null;
     }
 
     @Override
-    public void addStarts(final Iterator<Traverser<S>> starts) {
-        if (starts.hasNext()) {
-            this.done = false;
-            super.addStarts(starts);
-        }
-    }
-
-    @Override
-    public void addStart(final Traverser<S> start) {
-        this.done = false;
-        super.addStart(start);
+    public void done() {
+        this.hasProcessedOnce = true;
+        this.seed = null;
     }
 
     @Override
     public void processAllStarts() {
+        if (this.hasProcessedOnce && !this.starts.hasNext())
+            return;
+        this.hasProcessedOnce = true;
         if (this.seed == null) this.seed = this.seedSupplier.get();
         while (this.starts.hasNext())
-            this.seed = this.reducingBiFunction.apply(this.seed, this.starts.next());
+            this.seed = this.reducingBiOperator.apply(this.seed, this.projectTraverser(this.starts.next()));
     }
 
     @Override
-    public Traverser<E> processNextStart() {
-        if (this.done)
-            throw FastNoSuchElementException.instance();
+    public boolean hasNextBarrier() {
         this.processAllStarts();
-        this.done = true;
-        final Traverser<E> traverser = TraversalHelper.getRootTraversal(this.getTraversal()).getTraverserGenerator().generate(FinalGet.tryFinalGet(this.seed), (Step) this, 1l);
+        return null != this.seed;
+    }
+
+    @Override
+    public E nextBarrier() {
+        if (!this.hasNextBarrier())
+            throw FastNoSuchElementException.instance();
+        else {
+            final E temp = this.seed;
+            this.seed = null;
+            return temp;
+        }
+    }
+
+    @Override
+    public void addBarrier(final E barrier) {
+        this.seed = null == this.seed ?
+                barrier :
+                this.reducingBiOperator.apply(this.seed, barrier);
+    }
+
+    @Override
+    public Traverser.Admin<E> processNextStart() {
+        this.processAllStarts();
+        if (this.seed == null)
+            throw FastNoSuchElementException.instance();
+        final Traverser.Admin<E> traverser = this.getTraversal().getTraverserGenerator().generate(this.generateFinalResult(this.seed), (Step<E, E>) this, 1l);
         this.seed = null;
         return traverser;
     }
@@ -106,77 +121,14 @@
     @Override
     public ReducingBarrierStep<S, E> clone() {
         final ReducingBarrierStep<S, E> clone = (ReducingBarrierStep<S, E>) super.clone();
-        clone.done = false;
+        clone.hasProcessedOnce = false;
         clone.seed = null;
         return clone;
     }
 
     @Override
-    public MapReduce getMapReduce() {
-        return new DefaultMapReduce(this.seedSupplier, this.reducingBiFunction);
+    public MemoryComputeKey<E> getMemoryComputeKey() {
+        return MemoryComputeKey.of(this.getId(), this.getBiOperator(), false, true);
     }
 
-    ///////
-
-    public static class DefaultMapReduce extends StaticMapReduce<MapReduce.NullObject, Object, MapReduce.NullObject, Object, Object> {
-
-        private static final String REDUCING_BARRIER_STEP_SEED_SUPPLIER = "gremlin.reducingBarrierStep.seedSupplier";
-        private static final String REDUCING_BARRIER_STEP_BI_FUNCTION = "gremlin.reducingBarrierStep.biFunction";
-
-        private BiFunction biFunction;
-        private Supplier seedSupplier;
-
-        private DefaultMapReduce() {
-        }
-
-        public DefaultMapReduce(final Supplier seedSupplier, final BiFunction biFunction) {
-            this.seedSupplier = seedSupplier;
-            this.biFunction = biFunction;
-
-        }
-
-        @Override
-        public void storeState(final Configuration configuration) {
-            super.storeState(configuration);
-            VertexProgramHelper.serialize(this.seedSupplier, configuration, REDUCING_BARRIER_STEP_SEED_SUPPLIER);
-            VertexProgramHelper.serialize(this.biFunction, configuration, REDUCING_BARRIER_STEP_BI_FUNCTION);
-
-        }
-
-        @Override
-        public void loadState(final Graph graph, final Configuration configuration) {
-            this.seedSupplier = VertexProgramHelper.deserialize(configuration, REDUCING_BARRIER_STEP_SEED_SUPPLIER);
-            this.biFunction = VertexProgramHelper.deserialize(configuration, REDUCING_BARRIER_STEP_BI_FUNCTION);
-        }
-
-        @Override
-        public boolean doStage(final Stage stage) {
-            return !stage.equals(Stage.COMBINE);
-        }
-
-        @Override
-        public String getMemoryKey() {
-            return REDUCING;
-        }
-
-        @Override
-        public Object generateFinalResult(final Iterator keyValues) {
-            return ((KeyValue) keyValues.next()).getValue();
-
-        }
-
-        @Override
-        public void map(final Vertex vertex, final MapEmitter<NullObject, Object> emitter) {
-            vertex.<TraverserSet<?>>property(TraversalVertexProgram.HALTED_TRAVERSERS).ifPresent(traverserSet -> traverserSet.forEach(emitter::emit));
-        }
-
-        @Override
-        public void reduce(final NullObject key, final Iterator<Object> values, final ReduceEmitter<NullObject, Object> emitter) {
-            Object mutatingSeed = this.seedSupplier.get();
-            while (values.hasNext()) {
-                mutatingSeed = this.biFunction.apply(mutatingSeed, values.next());
-            }
-            emitter.emit(FinalGet.tryFinalGet(mutatingSeed));
-        }
-    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/RequirementsStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/RequirementsStep.java
new file mode 100644
index 0000000..2aa9f77
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/RequirementsStep.java
@@ -0,0 +1,55 @@
+/*
+ * 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.traverser.TraverserRequirement;
+
+import java.util.HashSet;
+import java.util.NoSuchElementException;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class RequirementsStep<S> extends AbstractStep<S, S> {
+
+    private final Set<TraverserRequirement> requirements;
+
+    public RequirementsStep(final Traversal.Admin traversal, final Set<TraverserRequirement> requirements) {
+        super(traversal);
+        this.requirements = new HashSet<>(requirements);
+    }
+
+    public void addRequirement(final TraverserRequirement requirement) {
+        this.requirements.add(requirement);
+    }
+
+    @Override
+    public Set<TraverserRequirement> getRequirements() {
+        return this.requirements;
+    }
+
+    @Override
+    protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
+        return this.starts.next();
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/SupplyingBarrierStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/SupplyingBarrierStep.java
index f898c34..8a8b7c4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/SupplyingBarrierStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/SupplyingBarrierStep.java
@@ -18,16 +18,22 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.util;
 
+import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 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.step.Barrier;
 import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
 
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+import java.util.function.BinaryOperator;
+
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public abstract class SupplyingBarrierStep<S, E> extends AbstractStep<S, E> implements Barrier {
+public abstract class SupplyingBarrierStep<S, E> extends AbstractStep<S, E> implements Barrier<Boolean> {
 
     private boolean done = false;
 
@@ -38,18 +44,32 @@
     protected abstract E supply();
 
     @Override
+    public void addStarts(final Iterator<Traverser.Admin<S>> starts) {
+        if (starts.hasNext()) {
+            this.done = false;
+            super.addStarts(starts);
+        }
+    }
+
+    @Override
+    public void addStart(final Traverser.Admin<S> start) {
+        this.done = false;
+        super.addStart(start);
+    }
+
+    @Override
     public void reset() {
         super.reset();
         this.done = false;
     }
 
     @Override
-    public Traverser<E> processNextStart() {
+    public Traverser.Admin<E> processNextStart() {
         if (this.done)
             throw FastNoSuchElementException.instance();
         this.processAllStarts();
         this.done = true;
-        return this.getTraversal().asAdmin().getTraverserGenerator().generate(this.supply(), (Step) this, 1l);
+        return this.getTraversal().asAdmin().getTraverserGenerator().generate(this.supply(), (Step<E, E>) this, 1l);
     }
 
     @Override
@@ -63,4 +83,31 @@
         while (this.starts.hasNext())
             this.starts.next();
     }
+
+    @Override
+    public boolean hasNextBarrier() {
+        return !this.done;
+    }
+
+    @Override
+    public Boolean nextBarrier() throws NoSuchElementException {
+        this.processAllStarts();
+        this.done = true;
+        return true;
+    }
+
+    @Override
+    public void addBarrier(final Boolean barrier) {
+        this.done = false;
+    }
+
+    @Override
+    public void done() {
+        this.done = true;
+    }
+
+    @Override
+    public MemoryComputeKey<Boolean> getMemoryComputeKey() {
+        return MemoryComputeKey.of(this.getId(), (BinaryOperator) Operator.and, false, true);
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/TraversalComparator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/TraversalComparator.java
deleted file mode 100644
index fe65d58..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/TraversalComparator.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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.util.TraversalUtil;
-
-import java.io.Serializable;
-import java.util.Comparator;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class TraversalComparator<S, E> implements Comparator<S>, Serializable, Cloneable {
-
-    private Traversal.Admin<S, E> traversal;
-    private final Comparator<E> comparator;
-
-    public TraversalComparator(final Traversal.Admin<S, E> traversal, final Comparator<E> comparator) {
-        this.traversal = traversal;
-        this.comparator = comparator;
-    }
-
-    @Override
-    public String toString() {
-        return this.comparator.toString() + "(" + this.traversal + ")";
-    }
-
-    @Override
-    public int compare(final S start1, final S start2) {
-        return start1 instanceof Traverser ?
-                this.comparator.compare(TraversalUtil.apply((Traverser.Admin<S>) start1, this.traversal), TraversalUtil.apply((Traverser.Admin<S>) start2, this.traversal)) :
-                this.comparator.compare(TraversalUtil.apply(start1, this.traversal), TraversalUtil.apply(start2, this.traversal));
-    }
-
-    @Override
-    public TraversalComparator clone() {
-        try {
-            final TraversalComparator clone = (TraversalComparator) super.clone();
-            clone.traversal = this.traversal.clone();
-            return clone;
-        } catch (final CloneNotSupportedException e) {
-            throw new IllegalStateException(e.getMessage(), e);
-        }
-    }
-
-    public Traversal.Admin<S, E> getTraversal() {
-        return this.traversal;
-    }
-
-    public Comparator<E> getComparator() {
-        return this.comparator;
-    }
-}
-
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategy.java
index a3e6b77..7ec1742 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategy.java
@@ -26,7 +26,7 @@
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.ConnectiveStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.OrStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileSideEffectStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StartStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ComputerAwareStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
@@ -58,15 +58,15 @@
     @Override
     public void apply(final Traversal.Admin<?, ?> traversal) {
         if (TraversalHelper.hasStepOfAssignableClass(ConnectiveStep.class, traversal)) {
-            processConjunctionMarkers(traversal);
+            processConnectiveMarker(traversal);
         }
     }
 
     private static boolean legalCurrentStep(final Step<?, ?> step) {
-        return !(step instanceof EmptyStep || step instanceof ProfileStep || step instanceof ComputerAwareStep.EndStep || (step instanceof StartStep && !StartStep.isVariableStartStep(step)) || GraphStep.isStartStep(step));
+        return !(step instanceof EmptyStep || step instanceof ProfileSideEffectStep || step instanceof ComputerAwareStep.EndStep || (step instanceof StartStep && !StartStep.isVariableStartStep(step)) || GraphStep.isStartStep(step));
     }
 
-    private static void processConjunctionMarkers(final Traversal.Admin<?, ?> traversal) {
+    private static void processConnectiveMarker(final Traversal.Admin<?, ?> traversal) {
         processConjunctionMarker(OrStep.class, traversal);
         processConjunctionMarker(AndStep.class, traversal);
     }
@@ -75,15 +75,15 @@
 
         TraversalHelper.getStepsOfClass(markerClass, traversal).stream()
                 .filter(conjunctionStep -> conjunctionStep.getLocalChildren().isEmpty())
-                .findFirst().ifPresent(conjunctionStep -> {
+                .findFirst().ifPresent(connectiveStep -> {
 
-            Step<?, ?> currentStep = conjunctionStep.getNextStep();
+            Step<?, ?> currentStep = connectiveStep.getNextStep();
             final Traversal.Admin<?, ?> rightTraversal = __.start().asAdmin();
-            if (!conjunctionStep.getLabels().isEmpty()) {
+            if (!connectiveStep.getLabels().isEmpty()) {
                 final StartStep<?> startStep = new StartStep<>(rightTraversal);
-                final Set<String> conjunctionLabels = ((Step<?, ?>) conjunctionStep).getLabels();
+                final Set<String> conjunctionLabels = ((Step<?, ?>) connectiveStep).getLabels();
                 conjunctionLabels.forEach(startStep::addLabel);
-                conjunctionLabels.forEach(label -> conjunctionStep.removeLabel(label));
+                conjunctionLabels.forEach(label -> connectiveStep.removeLabel(label));
                 rightTraversal.addStep(startStep);
             }
             while (legalCurrentStep(currentStep)) {
@@ -92,9 +92,9 @@
                 traversal.removeStep(currentStep);
                 currentStep = nextStep;
             }
-            processConjunctionMarkers(rightTraversal);
+            processConnectiveMarker(rightTraversal);
 
-            currentStep = conjunctionStep.getPreviousStep();
+            currentStep = connectiveStep.getPreviousStep();
             final Traversal.Admin<?, ?> leftTraversal = __.start().asAdmin();
             while (legalCurrentStep(currentStep)) {
                 final Step<?, ?> previousStep = currentStep.getPreviousStep();
@@ -102,10 +102,12 @@
                 traversal.removeStep(currentStep);
                 currentStep = previousStep;
             }
-            processConjunctionMarkers(leftTraversal);
+            processConnectiveMarker(leftTraversal);
 
-            conjunctionStep.addLocalChild(leftTraversal);
-            conjunctionStep.addLocalChild(rightTraversal);
+            TraversalHelper.replaceStep(connectiveStep,
+                    connectiveStep instanceof AndStep ?
+                            new AndStep(traversal, leftTraversal, rightTraversal) :
+                            new OrStep(traversal, leftTraversal, rightTraversal), traversal);
         });
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/HaltedTraverserStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/HaltedTraverserStrategy.java
new file mode 100644
index 0000000..1a2c207
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/HaltedTraverserStrategy.java
@@ -0,0 +1,71 @@
+/*
+ * 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.strategy.decoration;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceFactory;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class HaltedTraverserStrategy extends AbstractTraversalStrategy<TraversalStrategy.DecorationStrategy> implements TraversalStrategy.DecorationStrategy {
+
+    private final Class haltedTraverserFactory;
+    private final boolean useReference;
+
+    private HaltedTraverserStrategy(final Class haltedTraverserFactory) {
+        if (haltedTraverserFactory.equals(DetachedFactory.class) || haltedTraverserFactory.equals(ReferenceFactory.class)) {
+            this.haltedTraverserFactory = haltedTraverserFactory;
+            this.useReference = ReferenceFactory.class.equals(this.haltedTraverserFactory);
+        } else
+            throw new IllegalArgumentException("The provided traverser detachment factory is unknown: " + haltedTraverserFactory);
+    }
+
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        // do nothing as this is simply a metadata strategy
+    }
+
+    public Class getHaltedTraverserFactory() {
+        return this.haltedTraverserFactory;
+    }
+
+    public <R> Traverser.Admin<R> halt(final Traverser.Admin<R> traverser) {
+        if (this.useReference)
+            traverser.set(ReferenceFactory.detach(traverser.get()));
+        else
+            traverser.set(DetachedFactory.detach(traverser.get(), true));
+        return traverser;
+    }
+
+    ////////////
+
+    public static HaltedTraverserStrategy detached() {
+        return new HaltedTraverserStrategy(DetachedFactory.class);
+    }
+
+    public static HaltedTraverserStrategy reference() {
+        return new HaltedTraverserStrategy(ReferenceFactory.class);
+    }
+
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/RequirementsStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/RequirementsStrategy.java
new file mode 100644
index 0000000..fc3f181
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/RequirementsStrategy.java
@@ -0,0 +1,69 @@
+/*
+ * 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.strategy.decoration;
+
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.RequirementsStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class RequirementsStrategy extends AbstractTraversalStrategy<TraversalStrategy.DecorationStrategy> implements TraversalStrategy.DecorationStrategy {
+
+    private final Set<TraverserRequirement> requirements = new HashSet<>();
+
+    private RequirementsStrategy() {
+    }
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        if (traversal.getParent() instanceof EmptyStep && !this.requirements.isEmpty())
+            traversal.addStep(new RequirementsStep<>(traversal, this.requirements));
+    }
+
+    public static void addRequirements(final TraversalStrategies traversalStrategies, final TraverserRequirement... requirements) {
+        RequirementsStrategy strategy = (RequirementsStrategy) traversalStrategies.toList().stream().filter(s -> s instanceof RequirementsStrategy).findAny().orElse(null);
+        if (null == strategy) {
+            strategy = new RequirementsStrategy();
+            traversalStrategies.addStrategies(strategy);
+        } else {
+            final RequirementsStrategy cloneStrategy = new RequirementsStrategy();
+            cloneStrategy.requirements.addAll(strategy.requirements);
+            strategy = cloneStrategy;
+            traversalStrategies.addStrategies(strategy);
+        }
+        Collections.addAll(strategy.requirements, requirements);
+    }
+
+    @Override
+    public Set<Class<? extends DecorationStrategy>> applyPost() {
+        return Collections.singleton(VertexProgramStrategy.class);
+    }
+}
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SackStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SackStrategy.java
new file mode 100644
index 0000000..0598d17
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SackStrategy.java
@@ -0,0 +1,86 @@
+/*
+ * 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.strategy.decoration;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+
+import java.util.function.BinaryOperator;
+import java.util.function.Supplier;
+import java.util.function.UnaryOperator;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class SackStrategy extends AbstractTraversalStrategy<TraversalStrategy.DecorationStrategy> implements TraversalStrategy.DecorationStrategy {
+
+    private final Supplier initialValue;
+    private final UnaryOperator splitOperator;
+    private final BinaryOperator mergeOperator;
+
+    private SackStrategy(final Supplier initialValue, final UnaryOperator splitOperator, final BinaryOperator mergeOperator) {
+        if (null == initialValue)
+            throw new IllegalArgumentException("The initial value of a sack can not be null");
+        this.initialValue = initialValue;
+        this.splitOperator = splitOperator;
+        this.mergeOperator = mergeOperator;
+    }
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        if (traversal.getParent() instanceof EmptyStep)
+            traversal.getSideEffects().setSack(this.initialValue, this.splitOperator, this.mergeOperator);
+    }
+
+    public static <A> Builder<A> build() {
+        return new Builder<>();
+    }
+
+    public final static class Builder<A> {
+
+        private Supplier<A> initialValue;
+        private UnaryOperator<A> splitOperator = null;
+        private BinaryOperator<A> mergeOperator = null;
+
+        private Builder() {
+        }
+
+        public Builder initialValue(final Supplier<A> initialValue) {
+            this.initialValue = initialValue;
+            return this;
+        }
+
+        public Builder splitOperator(final UnaryOperator<A> splitOperator) {
+            this.splitOperator = splitOperator;
+            return this;
+        }
+
+        public Builder mergeOperator(final BinaryOperator<A> mergeOperator) {
+            this.mergeOperator = mergeOperator;
+            return this;
+        }
+
+        public SackStrategy create() {
+            return new SackStrategy(this.initialValue, this.splitOperator, this.mergeOperator);
+        }
+    }
+}
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SideEffectStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SideEffectStrategy.java
new file mode 100644
index 0000000..5c99b5f
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/SideEffectStrategy.java
@@ -0,0 +1,65 @@
+/*
+ * 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.strategy.decoration;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
+import org.javatuples.Triplet;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.BinaryOperator;
+import java.util.function.Supplier;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class SideEffectStrategy extends AbstractTraversalStrategy<TraversalStrategy.DecorationStrategy> implements TraversalStrategy.DecorationStrategy {
+
+    private final List<Triplet<String, Supplier, BinaryOperator>> sideEffects = new ArrayList<>();
+
+    private SideEffectStrategy() {
+    }
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        if (traversal.getParent() instanceof EmptyStep) {
+            this.sideEffects.forEach(triplet -> traversal.getSideEffects().register(triplet.getValue0(), triplet.getValue1(), triplet.getValue2()));
+        }
+    }
+
+    public static <A> void addSideEffect(final TraversalStrategies traversalStrategies, final String key, final A value, final BinaryOperator<A> reducer) {
+        SideEffectStrategy strategy = (SideEffectStrategy) traversalStrategies.toList().stream().filter(s -> s instanceof SideEffectStrategy).findAny().orElse(null);
+        if (null == strategy) {
+            strategy = new SideEffectStrategy();
+            traversalStrategies.addStrategies(strategy);
+        } else {
+            final SideEffectStrategy cloneStrategy = new SideEffectStrategy();
+            cloneStrategy.sideEffects.addAll(strategy.sideEffects);
+            strategy = cloneStrategy;
+            traversalStrategies.addStrategies(strategy);
+        }
+        strategy.sideEffects.add(new Triplet<>(key, null == value ? null : value instanceof Supplier ? (Supplier) value : new ConstantSupplier<>(value), reducer));
+    }
+}
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/EngineDependentStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/EngineDependentStrategy.java
deleted file mode 100644
index 3da8566..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/EngineDependentStrategy.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.strategy.finalization;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine.Type;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.step.EngineDependent;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
-
-/**
- * A {@link Step} can extend {@link EngineDependent}. If it does, that means that the steps internal logic is
- * modulated by whether the execution is via {@link Type#STANDARD} or {@link Type#COMPUTER}.
- * {@code EngineDependentStrategy} simply locates all engine dependent steps and provides the respective
- * {@link TraversalEngine}.
- *
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class EngineDependentStrategy extends AbstractTraversalStrategy<TraversalStrategy.FinalizationStrategy>
-        implements TraversalStrategy.FinalizationStrategy {
-
-    private static final EngineDependentStrategy INSTANCE = new EngineDependentStrategy();
-
-    private EngineDependentStrategy() {
-    }
-
-    @Override
-    public void apply(final Traversal.Admin<?, ?> traversal) {
-        for (Step step : traversal.getSteps()) {
-            if (step instanceof EngineDependent) {
-                ((EngineDependent) step).onEngine(traversal.getEngine());
-            }
-        }
-    }
-
-    public static EngineDependentStrategy instance() {
-        return INSTANCE;
-    }
-}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategy.java
index cb58762..9bc3cdf 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategy.java
@@ -21,22 +21,19 @@
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
 import org.apache.tinkerpop.gremlin.process.traversal.step.HasContainerHolder;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeVertexStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.CollectingBarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.LambdaCollectingBarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.SupplyingBarrierStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.NoOpBarrierStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 
 import java.util.HashSet;
 import java.util.Set;
-import java.util.function.Consumer;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -61,7 +58,7 @@
 
     @Override
     public void apply(final Traversal.Admin<?, ?> traversal) {
-        if (traversal.getEngine().isComputer())
+        if (TraversalHelper.onGraphComputer(traversal))
             return;
 
         if (traversal.getTraverserRequirements().contains(TraverserRequirement.PATH))
@@ -81,12 +78,8 @@
                 if (i == 0)
                     bigStart = step instanceof GraphStep && (((GraphStep) step).getIds().length >= BIG_START_SIZE || (((GraphStep) step).getIds().length == 0 && step instanceof HasContainerHolder && ((HasContainerHolder) step).getHasContainers().isEmpty()));
                 else if ('v' == foundVertexStep || bigStart) {
-                    if (!(step instanceof FilterStep) &&
-                            !(step instanceof CollectingBarrierStep) &&
-                            !(step instanceof SupplyingBarrierStep) &&
-                            !(step instanceof ReducingBarrierStep) &&
-                            !(step instanceof VertexStep && ((VertexStep) step).returnsEdge())) {
-                        TraversalHelper.insertAfterStep(new LambdaCollectingBarrierStep<>(traversal, (Consumer) LambdaCollectingBarrierStep.Consumers.noOp, MAX_BARRIER_SIZE), step, traversal);
+                    if (!(step instanceof FilterStep) && !(step instanceof Barrier) && !(step instanceof VertexStep && ((VertexStep) step).returnsEdge())) {
+                        TraversalHelper.insertAfterStep(new NoOpBarrierStep<>(traversal, MAX_BARRIER_SIZE), step, traversal);
                     }
                 }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/MatchAlgorithmStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/MatchAlgorithmStrategy.java
index ffafbc0..be31575 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/MatchAlgorithmStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/MatchAlgorithmStrategy.java
@@ -18,11 +18,11 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization;
 
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchStep;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 /**
@@ -38,9 +38,11 @@
 
     @Override
     public void apply(final Traversal.Admin<?, ?> traversal) {
-        if (!TraversalHelper.hasStepOfClass(MatchStep.class, traversal))
-            return;
-        TraversalHelper.getStepsOfClass(MatchStep.class, traversal).forEach(matchStep -> matchStep.setMatchAlgorithm(this.matchAlgorithmClass));
+        for (final Step<?, ?> step : traversal.getSteps()) {
+            if (step instanceof MatchStep) {
+                ((MatchStep) step).setMatchAlgorithm(this.matchAlgorithmClass);
+            }
+        }
     }
 
     public static Builder build() {
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ProfileStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ProfileStrategy.java
index 656fd92..6d08652 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ProfileStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ProfileStrategy.java
@@ -21,8 +21,8 @@
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ProfileStep;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 
@@ -40,42 +40,28 @@
 
     @Override
     public void apply(final Traversal.Admin<?, ?> traversal) {
-        if (!TraversalHelper.hasStepOfClass(ProfileStep.class, traversal)) {
-            // No ProfileStep present
-            return;
+        if (TraversalHelper.hasStepOfAssignableClassRecursively(ProfileSideEffectStep.class, TraversalHelper.getRootTraversal(traversal).asAdmin())) {
+            prepTraversalForProfiling(traversal);
         }
-
-        prepTraversalForProfiling(traversal);
     }
 
-    // Walk the traversal steps and inject the .profile()-steps.
+    // Iterate the traversal steps and inject the .profile()-steps.
     private void prepTraversalForProfiling(Traversal.Admin<?, ?> traversal) {
-        // Remove user-specified .profile() steps
-        final List<ProfileStep> profileSteps = TraversalHelper.getStepsOfClass(ProfileStep.class, traversal);
-        for (ProfileStep step : profileSteps) {
-            traversal.removeStep(step);
-        }
-
         // Add .profile() step after every pre-existing step.
         final List<Step> steps = traversal.getSteps();
         final int numSteps = steps.size();
         for (int ii = 0; ii < numSteps; ii++) {
             // Get the original step
-            Step step = steps.get(ii * 2);
+            final Step step = steps.get(ii * 2);
+
+            // Do not inject profiling after ProfileSideEffectStep as this will be the last step on the root traversal.
+            if (step instanceof ProfileSideEffectStep) {
+                break;
+            }
 
             // Create and inject ProfileStep
             ProfileStep profileStep = new ProfileStep(traversal);
             traversal.addStep((ii * 2) + 1, profileStep);
-
-            // Handle nested traversal
-            if (step instanceof TraversalParent) {
-                for (Traversal.Admin<?, ?> t : ((TraversalParent) step).getLocalChildren()) {
-                    t.addStep(new ProfileStep(t));
-                }
-                for (Traversal.Admin<?, ?> t : ((TraversalParent) step).getGlobalChildren()) {
-                    t.addStep(new ProfileStep(t));
-                }
-            }
         }
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategy.java
index aace11a..2d19479 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategy.java
@@ -67,7 +67,7 @@
     }
 
     @Override
-    public void apply(Traversal.Admin<?, ?> traversal) {
+    public void apply(final Traversal.Admin<?, ?> traversal) {
         final List<Step> steps = traversal.getSteps();
         final int size = steps.size() - 1;
         Step prev = null;
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java
index 712110d4..18e1c50 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategy.java
@@ -69,9 +69,8 @@
     }
 
     @Override
-    public void apply(Traversal.Admin<?, ?> traversal) {
-        final Traversal.Admin root = TraversalHelper.getRootTraversal(traversal);
-        if (TraversalHelper.hasStepOfAssignableClassRecursively(INVALIDATING_STEP_CLASSES, root))
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        if (TraversalHelper.hasStepOfAssignableClassRecursively(INVALIDATING_STEP_CLASSES, TraversalHelper.getRootTraversal(traversal)))
             return;
         final Collection<Pair<VertexStep, Step>> stepsToReplace = new ArrayList<>();
         Step prev = null;
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java
index 5a8a03a..f025749 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java
@@ -80,7 +80,7 @@
                     traversal.removeStep(nextStep);
                     matchStep.addGlobalChild(new DefaultTraversal<>().addStep(nextStep));
                     nextStep = matchStep.getNextStep();
-                } else if (nextStep instanceof DedupGlobalStep && !((DedupGlobalStep) nextStep).getScopeKeys().isEmpty() && ((DedupGlobalStep) nextStep).getLocalChildren().isEmpty() && !traversal.getEngine().isComputer()) {
+                } else if (nextStep instanceof DedupGlobalStep && !((DedupGlobalStep) nextStep).getScopeKeys().isEmpty() && ((DedupGlobalStep) nextStep).getLocalChildren().isEmpty() && !TraversalHelper.onGraphComputer(traversal)) {
                     traversal.removeStep(nextStep);
                     matchStep.setDedupLabels(((DedupGlobalStep<?>) nextStep).getScopeKeys());
                     nextStep = matchStep.getNextStep();
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/OrderLimitStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/OrderLimitStrategy.java
new file mode 100644
index 0000000..98d7ebd
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/OrderLimitStrategy.java
@@ -0,0 +1,87 @@
+/*
+ * 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.strategy.optimization;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeGlobalStep;
+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.OrderGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PathStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SackStep;
+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.TreeStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class OrderLimitStrategy extends AbstractTraversalStrategy<TraversalStrategy.OptimizationStrategy> implements TraversalStrategy.OptimizationStrategy {
+
+    private static final OrderLimitStrategy INSTANCE = new OrderLimitStrategy();
+
+    private static Set<Class<? extends Step>> LEGAL_STEPS = new HashSet<>(
+            Arrays.asList(LabelStep.class,
+                    IdStep.class,
+                    PathStep.class,
+                    SelectStep.class,
+                    SelectOneStep.class,
+                    SackStep.class,
+                    TreeStep.class));
+
+    private OrderLimitStrategy() {
+    }
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        if (!TraversalHelper.onGraphComputer(traversal))
+            return;
+
+        final List<OrderGlobalStep> orders = TraversalHelper.getStepsOfClass(OrderGlobalStep.class, traversal);
+        for (final OrderGlobalStep order : orders) {
+            RangeGlobalStep range = null;
+            Step<?, ?> currentStep = order.getNextStep();
+            while (true) {
+                if (currentStep instanceof RangeGlobalStep) {
+                    range = (RangeGlobalStep) currentStep;
+                    break;
+                } else if (!LEGAL_STEPS.contains(currentStep.getClass()))
+                    break;
+                else
+                    currentStep = currentStep.getNextStep();
+            }
+            if (null != range)
+                order.setLimit(range.getHighRange());
+        }
+    }
+
+    public static OrderLimitStrategy instance() {
+        return INSTANCE;
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathProcessorStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathProcessorStrategy.java
new file mode 100644
index 0000000..0b40743
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathProcessorStrategy.java
@@ -0,0 +1,156 @@
+/*
+ * 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.strategy.optimization;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Pop;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+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.TraversalMapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class PathProcessorStrategy extends AbstractTraversalStrategy<TraversalStrategy.OptimizationStrategy> implements TraversalStrategy.OptimizationStrategy {
+
+    private static final PathProcessorStrategy INSTANCE = new PathProcessorStrategy();
+
+    private static final Set<Class<? extends OptimizationStrategy>> PRIORS = Collections.singleton(MatchPredicateStrategy.class);
+
+    private PathProcessorStrategy() {
+    }
+
+    @Override
+    public Set<Class<? extends OptimizationStrategy>> applyPrior() {
+        return PRIORS;
+    }
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        if (!TraversalHelper.onGraphComputer(traversal) || !TraversalHelper.isGlobalChild(traversal))
+            return;
+
+        // process where(as("a").out()...)
+        // todo: need to be able to drop path labels for this to work
+        /*final List<WhereTraversalStep> whereTraversalSteps = TraversalHelper.getStepsOfClass(WhereTraversalStep.class, traversal);
+        for (final WhereTraversalStep<?> whereTraversalStep : whereTraversalSteps) {
+            final Traversal.Admin<?, ?> localChild = whereTraversalStep.getLocalChildren().get(0);
+            if ((localChild.getStartStep() instanceof WhereTraversalStep.WhereStartStep) &&
+                    !((WhereTraversalStep.WhereStartStep) localChild.getStartStep()).getScopeKeys().isEmpty()) {
+                boolean done = false;
+                while (!done) {
+                    done = true;
+                    final int index = TraversalHelper.stepIndex(whereTraversalStep, traversal);
+                    if (whereTraversalStep.getPreviousStep() instanceof SelectStep) {
+                        done = false;
+                        traversal.removeStep(index);
+                        traversal.addStep(index - 1, whereTraversalStep);
+                    }
+                }
+                final WhereTraversalStep.WhereStartStep<?> whereStartStep = (WhereTraversalStep.WhereStartStep<?>) localChild.getStartStep();
+                final int index = TraversalHelper.stepIndex(whereTraversalStep, traversal);
+                final SelectOneStep<?, ?> selectOneStep = new SelectOneStep<>(traversal, Pop.last, whereStartStep.getScopeKeys().iterator().next());
+                traversal.addStep(index, selectOneStep);
+                whereStartStep.removeScopeKey();
+                if (!(localChild.getEndStep() instanceof WhereTraversalStep.WhereEndStep)) {
+                    localChild.removeStep(localChild.getStartStep());
+                    traversal.addStep(index + 1, new TraversalFilterStep<>(traversal, localChild));
+                    traversal.removeStep(whereTraversalStep);
+                }
+            }
+        }*/
+
+        // process select("a","b").by(...).by(...)
+        final List<SelectStep> selectSteps = TraversalHelper.getStepsOfClass(SelectStep.class, traversal);
+        for (final SelectStep<?, Object> selectStep : selectSteps) {
+            if (selectStep.getPop() != Pop.all && selectStep.getMaxRequirement().compareTo(PathProcessor.ElementRequirement.ID) > 0) {
+                if (null == selectStep.getPop()) {
+                    boolean oneLabel = true;
+                    for (final String key : selectStep.getScopeKeys()) {
+                        if (labelCount(key, TraversalHelper.getRootTraversal(traversal)) > 1) {
+                            oneLabel = false;
+                            break;
+                        }
+                    }
+                    if (!oneLabel)
+                        continue;
+                }
+                final int index = TraversalHelper.stepIndex(selectStep, traversal);
+                final Map<String, Traversal.Admin<Object, Object>> byTraversals = selectStep.getByTraversals();
+                final String[] keys = new String[byTraversals.size()];
+                int counter = 0;
+                for (final Map.Entry<String, Traversal.Admin<Object, Object>> entry : byTraversals.entrySet()) {
+                    final SelectOneStep selectOneStep = new SelectOneStep(traversal, selectStep.getPop(), entry.getKey());
+                    final TraversalMapStep<?, ?> mapStep = new TraversalMapStep<>(traversal, entry.getValue().clone());
+                    mapStep.addLabel(entry.getKey());
+                    traversal.addStep(index + 1, mapStep);
+                    traversal.addStep(index + 1, selectOneStep);
+                    keys[counter++] = entry.getKey();
+                }
+                traversal.addStep(index + 1 + (byTraversals.size() * 2), new SelectStep(traversal, Pop.last, keys));
+                traversal.removeStep(index);
+            }
+        }
+
+        // process select("a").by(...)
+        final List<SelectOneStep> selectOneSteps = TraversalHelper.getStepsOfClass(SelectOneStep.class, traversal);
+        for (final SelectOneStep<?, ?> selectOneStep : selectOneSteps) {
+            if (selectOneStep.getPop() != Pop.all &&
+                    selectOneStep.getMaxRequirement().compareTo(PathProcessor.ElementRequirement.ID) > 0 &&
+                    (null != selectOneStep.getPop() || labelCount(selectOneStep.getScopeKeys().iterator().next(), TraversalHelper.getRootTraversal(traversal)) <= 1)) {
+                final int index = TraversalHelper.stepIndex(selectOneStep, traversal);
+                final Traversal.Admin<?, ?> localChild = selectOneStep.getLocalChildren().get(0);
+                selectOneStep.removeLocalChild(localChild);
+                final TraversalMapStep<?, ?> mapStep = new TraversalMapStep<>(traversal, localChild.clone());
+                traversal.addStep(index + 1, mapStep);
+            }
+        }
+    }
+
+    public static PathProcessorStrategy instance() {
+        return INSTANCE;
+    }
+
+    private static int labelCount(final String label, final Traversal.Admin<?, ?> traversal) {
+        int count = 0;
+        for (final Step step : traversal.getSteps()) {
+            if (step.getLabels().contains(label))
+                count++;
+            if (step instanceof TraversalParent) {
+                count = count + ((TraversalParent) step).getLocalChildren().stream().map(t -> labelCount(label, t)).reduce(0, (a, b) -> a + b);
+                count = count + ((TraversalParent) step).getGlobalChildren().stream().map(t -> labelCount(label, t)).reduce(0, (a, b) -> a + b);
+            }
+        }
+        return count;
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java
new file mode 100644
index 0000000..a85b752
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java
@@ -0,0 +1,196 @@
+/*
+ * 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.strategy.optimization;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
+import org.apache.tinkerpop.gremlin.process.traversal.step.LambdaHolder;
+import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DedupGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.NoOpBarrierStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.PathUtil;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.javatuples.Pair;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author Ted Wilmes (http://twilmes.org)
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class PathRetractionStrategy extends AbstractTraversalStrategy<TraversalStrategy.OptimizationStrategy> implements TraversalStrategy.OptimizationStrategy {
+
+    public static Integer DEFAULT_STANDARD_BARRIER_SIZE = 2500;
+
+    private static final PathRetractionStrategy INSTANCE = new PathRetractionStrategy(DEFAULT_STANDARD_BARRIER_SIZE);
+    // these strategies do strong rewrites involving path labeling and thus, should run prior to PathRetractionStrategy
+    private static final Set<Class<? extends OptimizationStrategy>> PRIORS = new HashSet<>(Arrays.asList(
+            RepeatUnrollStrategy.class, MatchPredicateStrategy.class, PathProcessorStrategy.class));
+
+    private final int standardBarrierSize;
+
+    private PathRetractionStrategy(final int standardBarrierSize) {
+        this.standardBarrierSize = standardBarrierSize;
+    }
+
+    public static PathRetractionStrategy instance() {
+        return INSTANCE;
+    }
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        // do not apply this strategy if there are lambdas as you can't introspect to know what path information the lambdas are using
+        // do not apply this strategy if a PATH requirement step is being used (in the future, we can do PATH requirement lookhead to be more intelligent about its usage)
+        if (TraversalHelper.anyStepRecursively(step -> step instanceof LambdaHolder || step.getRequirements().contains(TraverserRequirement.PATH), TraversalHelper.getRootTraversal(traversal)))
+            return;
+
+        final boolean onGraphComputer = TraversalHelper.onGraphComputer(traversal);
+        final Set<String> foundLabels = new HashSet<>();
+        final Set<String> keepLabels = new HashSet<>();
+
+        final List<Step> steps = traversal.getSteps();
+        for (int i = steps.size() - 1; i >= 0; i--) {
+            final Step currentStep = steps.get(i);
+            // maintain our list of labels to keep, repeatedly adding labels that were found during
+            // the last iteration
+            keepLabels.addAll(foundLabels);
+
+            final Set<String> labels = PathUtil.getReferencedLabels(currentStep);
+            for (final String label : labels) {
+                if (foundLabels.contains(label))
+                    keepLabels.add(label);
+                else
+                    foundLabels.add(label);
+            }
+            // add the keep labels to the path processor
+            if (currentStep instanceof PathProcessor) {
+                final PathProcessor pathProcessor = (PathProcessor) currentStep;
+                if (currentStep instanceof MatchStep && (currentStep.getNextStep().equals(EmptyStep.instance()) || currentStep.getNextStep() instanceof DedupGlobalStep)) {
+                    pathProcessor.setKeepLabels(((MatchStep) currentStep).getMatchStartLabels());
+                    pathProcessor.getKeepLabels().addAll(((MatchStep) currentStep).getMatchEndLabels());
+                } else
+                    pathProcessor.setKeepLabels(new HashSet<>(keepLabels));
+
+                if (currentStep.getTraversal().getParent() instanceof MatchStep) {
+                    pathProcessor.setKeepLabels(((MatchStep) currentStep.getTraversal().getParent().asStep()).getMatchStartLabels());
+                    pathProcessor.getKeepLabels().addAll(((MatchStep) currentStep.getTraversal().getParent().asStep()).getMatchEndLabels());
+                }
+
+                // OLTP barrier optimization that will try and bulk traversers after a path processor step to thin the stream
+                if (!onGraphComputer &&
+                        !(currentStep instanceof MatchStep) &&
+                        !(currentStep instanceof Barrier) &&
+                        !(currentStep.getNextStep() instanceof Barrier) &&
+                        !(currentStep.getTraversal().getParent() instanceof MatchStep))
+                    TraversalHelper.insertAfterStep(new NoOpBarrierStep<>(traversal, this.standardBarrierSize), currentStep, traversal);
+            }
+        }
+
+        keepLabels.addAll(foundLabels);
+
+        // build a list of parent traversals and their required labels
+        Step<?, ?> parent = traversal.getParent().asStep();
+        final List<Pair<Step, Set<String>>> parentKeeperPairs = new ArrayList<>();
+        while (!parent.equals(EmptyStep.instance())) {
+            Set<String> parentKeepLabels = new HashSet<>(PathUtil.getReferencedLabels(parent));
+            parentKeepLabels.addAll(PathUtil.getReferencedLabelsAfterStep(parent));
+            parentKeeperPairs.add(new Pair<>(parent, parentKeepLabels));
+            parent = parent.getTraversal().getParent().asStep();
+        }
+
+        // reverse the parent traversal list so that labels are kept from the top down
+        Collections.reverse(parentKeeperPairs);
+
+        boolean hasRepeat = false;
+
+        final Set<String> keeperTrail = new HashSet<>();
+        for (final Pair<Step, Set<String>> pair : parentKeeperPairs) {
+            Step step = pair.getValue0();
+            final Set<String> levelLabels = pair.getValue1();
+
+            if (step instanceof RepeatStep) {
+                hasRepeat = true;
+            }
+
+            // propagate requirements of keep labels back through the traversal's previous steps
+            // to ensure that the label is not dropped before it reaches the step(s) that require it
+            step = step.getPreviousStep();
+            while (!(step.equals(EmptyStep.instance()))) {
+                if (step instanceof PathProcessor) {
+                    if (((PathProcessor) step).getKeepLabels() == null) {
+                        ((PathProcessor) step).setKeepLabels(new HashSet<>(keepLabels));
+                    } else {
+                        ((PathProcessor) step).getKeepLabels().addAll(new HashSet<>(keepLabels));
+                    }
+                }
+                step = step.getPreviousStep();
+            }
+
+            // propagate keep labels forwards if future steps require a particular nested label
+            while (!(step.equals(EmptyStep.instance()))) {
+                if (step instanceof PathProcessor) {
+                    final Set<String> referencedLabels = PathUtil.getReferencedLabelsAfterStep(step);
+                    for (final String ref : referencedLabels) {
+                        if (levelLabels.contains(ref)) {
+                            if (((PathProcessor) step).getKeepLabels() == null) {
+                                final HashSet<String> newKeepLabels = new HashSet<>();
+                                newKeepLabels.add(ref);
+                                ((PathProcessor) step).setKeepLabels(newKeepLabels);
+                            } else {
+                                ((PathProcessor) step).getKeepLabels().addAll(Collections.singleton(ref));
+                            }
+                        }
+                    }
+                }
+
+                step = step.getNextStep();
+            }
+
+            keeperTrail.addAll(levelLabels);
+        }
+
+        for (final Step currentStep : traversal.getSteps()) {
+            // go back through current level and add all keepers
+            // if there is one more RepeatSteps in this traversal's lineage, preserve keep labels
+            if (currentStep instanceof PathProcessor) {
+                ((PathProcessor) currentStep).getKeepLabels().addAll(keeperTrail);
+                if (hasRepeat) {
+                    ((PathProcessor) currentStep).getKeepLabels().addAll(keepLabels);
+                }
+            }
+        }
+    }
+
+    @Override
+    public Set<Class<? extends OptimizationStrategy>> applyPrior() {
+        return PRIORS;
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
new file mode 100644
index 0000000..fdc7e85
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
@@ -0,0 +1,78 @@
+/*
+ *  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.strategy.optimization;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.LoopTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.NoOpBarrierStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class RepeatUnrollStrategy extends AbstractTraversalStrategy<TraversalStrategy.OptimizationStrategy> implements TraversalStrategy.OptimizationStrategy {
+
+    private static final RepeatUnrollStrategy INSTANCE = new RepeatUnrollStrategy();
+
+    private RepeatUnrollStrategy() {
+    }
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        if (TraversalHelper.onGraphComputer(traversal))
+            return;
+
+        for (int i = 0; i < traversal.getSteps().size(); i++) {
+            if (traversal.getSteps().get(i) instanceof RepeatStep) {
+                final RepeatStep<?> repeatStep = (RepeatStep) traversal.getSteps().get(i);
+                if (null == repeatStep.getEmitTraversal() && repeatStep.getUntilTraversal() instanceof LoopTraversal && ((LoopTraversal) repeatStep.getUntilTraversal()).getMaxLoops() > 0) {
+                    final Traversal.Admin<?, ?> repeatTraversal = repeatStep.getGlobalChildren().get(0);
+                    final int repeatLength = repeatTraversal.getSteps().size() - 1;
+                    repeatTraversal.removeStep(repeatLength); // removes the RepeatEndStep
+                    int insertIndex = i;
+                    final int loops = (int) ((LoopTraversal) repeatStep.getUntilTraversal()).getMaxLoops();
+                    for (int j = 0; j < loops; j++) {
+                        TraversalHelper.insertTraversal(insertIndex, repeatTraversal.clone(), traversal);
+                        insertIndex = insertIndex + repeatLength;
+                        if (j != (loops - 1) || !(traversal.getSteps().get(insertIndex).getNextStep() instanceof Barrier)) // only add a final NoOpBarrier is subsequent step is not a barrier
+                            traversal.addStep(++insertIndex, new NoOpBarrierStep<>(traversal, 5000));
+                    }
+                    // label last step if repeat() was labeled
+                    if (!repeatStep.getLabels().isEmpty()) {
+                        final Step<?, ?> lastStep = traversal.getSteps().get(insertIndex);
+                        repeatStep.getLabels().forEach(lastStep::addLabel);
+                    }
+
+                    traversal.removeStep(i); // remove the RepeatStep
+                }
+            }
+        }
+    }
+
+
+    public static RepeatUnrollStrategy instance() {
+        return INSTANCE;
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java
index bc8528c..fc73fc3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategy.java
@@ -19,37 +19,24 @@
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.verification;
 
 import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ComputerResultStep;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.VertexProgramStep;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.lambda.ElementValueTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.lambda.TokenTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.step.Bypassing;
+import org.apache.tinkerpop.gremlin.process.traversal.step.GraphComputing;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor;
-import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DedupGlobalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeGlobalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TailGlobalStep;
-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.EdgeVertexStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertyMapStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SubgraphStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.CollectingBarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.ComputerAwareStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.SupplyingBarrierStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ProfileStep;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.structure.T;
 
 import java.util.Arrays;
 import java.util.HashSet;
@@ -63,7 +50,7 @@
 
     private static final ComputerVerificationStrategy INSTANCE = new ComputerVerificationStrategy();
     private static final Set<Class<?>> UNSUPPORTED_STEPS = new HashSet<>(Arrays.asList(
-            InjectStep.class, Mutating.class, SubgraphStep.class
+            InjectStep.class, Mutating.class, SubgraphStep.class, ComputerResultStep.class
     ));
 
     private ComputerVerificationStrategy() {
@@ -71,80 +58,61 @@
 
     @Override
     public void apply(final Traversal.Admin<?, ?> traversal) {
-        if (traversal.getEngine().isStandard())
+
+        if (!TraversalHelper.onGraphComputer(traversal))
             return;
 
-        Step<?, ?> endStep = traversal.getEndStep();
-        while (endStep instanceof ComputerAwareStep.EndStep || endStep instanceof ComputerResultStep) {
-            endStep = endStep.getPreviousStep();
-        }
+        final boolean globalChild = TraversalHelper.isGlobalChild(traversal);
 
-        if (traversal.getParent() instanceof EmptyStep) {
-            if (!(traversal.getStartStep() instanceof GraphStep))
-                throw new VerificationException("GraphComputer does not support traversals starting from a non-GraphStep: " + traversal.getStartStep(), traversal);
-            ///
-            if (traversal.getSteps().stream().filter(step -> step instanceof GraphStep).count() > 1)
-                throw new VerificationException("GraphComputer does not support mid-traversal V()/E()", traversal);
-            ///
-            if (endStep instanceof CollectingBarrierStep && endStep instanceof TraversalParent) {
-                if (((TraversalParent) endStep).getLocalChildren().stream().filter(t -> !ComputerVerificationStrategy.isNotBeyondElementId(t)).findAny().isPresent())
-                    throw new VerificationException("A final CollectingBarrierStep can not process an element beyond its id: " + endStep, traversal);
-            }
-            ///
-            if (endStep instanceof RangeGlobalStep || endStep instanceof TailGlobalStep || endStep instanceof DedupGlobalStep)
-                ((Bypassing) endStep).setBypass(true);
-            if (endStep instanceof DedupGlobalStep && !((DedupGlobalStep) endStep).getScopeKeys().isEmpty())
-                throw new VerificationException("Path history de-duplication is not possible in GraphComputer:" + endStep, traversal);
+        if (traversal.getParent() instanceof TraversalVertexProgramStep) {
+            if (TraversalHelper.getStepsOfAssignableClassRecursively(GraphStep.class, traversal).size() > 1)
+                throw new VerificationException("Mid-traversal V()/E() is currently not supported on GraphComputer", traversal);
+            if (TraversalHelper.hasStepOfAssignableClassRecursively(ProfileStep.class, traversal) && TraversalHelper.getStepsOfAssignableClass(VertexProgramStep.class, TraversalHelper.getRootTraversal(traversal)).size() > 1)
+                throw new VerificationException("Profiling a multi-VertexProgramStep traversal is currently not supported on GraphComputer", traversal);
         }
 
         for (final Step<?, ?> step : traversal.getSteps()) {
-            if ((step instanceof ReducingBarrierStep || step instanceof SupplyingBarrierStep || step instanceof OrderGlobalStep || step instanceof RangeGlobalStep || step instanceof TailGlobalStep || step instanceof DedupGlobalStep) && (step != endStep || !(traversal.getParent() instanceof EmptyStep)))
-                throw new VerificationException("Global traversals on GraphComputer may not contain mid-traversal barriers: " + step, traversal);
 
-            if (step instanceof DedupGlobalStep && !((DedupGlobalStep) step).getLocalChildren().isEmpty())
-                throw new VerificationException("Global traversals on GraphComputer may not contain by()-projecting de-duplication steps: " + step, traversal);
+            // only global children are graph computing
+            if (globalChild && step instanceof GraphComputing)
+                ((GraphComputing) step).onGraphComputer();
 
+            // you can not traverse past the local star graph with localChildren (e.g. by()-modulators).
             if (step instanceof TraversalParent) {
                 final Optional<Traversal.Admin<Object, Object>> traversalOptional = ((TraversalParent) step).getLocalChildren().stream()
                         .filter(t -> !TraversalHelper.isLocalStarGraph(t.asAdmin()))
                         .findAny();
                 if (traversalOptional.isPresent())
-                    throw new VerificationException("Local traversals on GraphComputer may not traverse past the local star-graph: " + traversalOptional.get(), traversal);
+                    throw new VerificationException("Local traversals may not traverse past the local star-graph on GraphComputer: " + traversalOptional.get(), traversal);
             }
 
-            if ((step instanceof WherePredicateStep && ((WherePredicateStep) step).getStartKey().isPresent()) ||
-                    (step instanceof WhereTraversalStep && TraversalHelper.getVariableLocations(((WhereTraversalStep<?>) step).getLocalChildren().get(0)).contains(Scoping.Variable.START)))
-                throw new VerificationException("A where()-step that has a start variable is not allowed because the variable value is retrieved from the path: " + step, traversal);
+            // collecting barriers and dedup global use can only operate on the element and its properties (no incidences)
+            if (step instanceof CollectingBarrierStep && step instanceof TraversalParent) {
+                if (((TraversalParent) step).getLocalChildren().stream().filter(t -> !TraversalHelper.isLocalProperties(t)).findAny().isPresent())
+                    throw new VerificationException("The following barrier step can not process the incident edges of a vertex on GraphComputer: " + step, traversal);
+            }
 
-            if (UNSUPPORTED_STEPS.stream().filter(c -> c.isAssignableFrom(step.getClass())).findFirst().isPresent())
-                throw new VerificationException("The following step is currently not supported by GraphComputer traversals: " + step, traversal);
+            // this is a problem because sideEffect.merge() is transient on the OLAP reduction
+            if (TraversalHelper.getRootTraversal(traversal).getTraverserRequirements().contains(TraverserRequirement.ONE_BULK))
+                throw new VerificationException("One bulk is currently not supported on GraphComputer: " + step, traversal);
 
             if (step instanceof PathProcessor && ((PathProcessor) step).getMaxRequirement() != PathProcessor.ElementRequirement.ID)
-                throw new VerificationException("The following path processor step requires more than the element id: " + step + " requires " + ((PathProcessor) step).getMaxRequirement(), traversal);
+                throw new VerificationException("It is not possible to access more than a path element's id on GraphComputer: " + step + " requires " + ((PathProcessor) step).getMaxRequirement(), traversal);
+
+            if (UNSUPPORTED_STEPS.stream().filter(c -> c.isAssignableFrom(step.getClass())).findFirst().isPresent())
+                throw new VerificationException("The following step is currently not supported on GraphComputer: " + step, traversal);
+
+        }
+
+        Step<?, ?> nextParentStep = traversal.getParent().asStep();
+        while (!(nextParentStep instanceof EmptyStep)) {
+            if (nextParentStep instanceof PathProcessor && ((PathProcessor) nextParentStep).getMaxRequirement() != PathProcessor.ElementRequirement.ID)
+                throw new VerificationException("The following path processor step requires more than the element id on GraphComputer: " + nextParentStep + " requires " + ((PathProcessor) nextParentStep).getMaxRequirement(), traversal);
+            nextParentStep = nextParentStep.getNextStep();
         }
     }
 
     public static ComputerVerificationStrategy instance() {
         return INSTANCE;
     }
-
-    /*
-     * THIS NEEDS TO GO INTO TRAVERSAL HELPER ONCE WE GET THIS ALL STRAIGHTENED OUT WITH THE INSTRUCTION SET OF GREMLIN (TODO:)
-     */
-    private static boolean isNotBeyondElementId(final Traversal.Admin<?, ?> traversal) {
-        if (traversal instanceof TokenTraversal && !((TokenTraversal) traversal).getToken().equals(T.id))
-            return false;
-        else if (traversal instanceof ElementValueTraversal)
-            return false;
-        else
-            return !traversal.getSteps().stream()
-                    .filter(step -> step instanceof VertexStep ||
-                            step instanceof EdgeVertexStep ||
-                            step instanceof PropertiesStep ||
-                            step instanceof PropertyMapStep ||
-                            (step instanceof TraversalParent &&
-                                    (((TraversalParent) step).getLocalChildren().stream().filter(t -> !ComputerVerificationStrategy.isNotBeyondElementId(t)).findAny().isPresent() ||
-                                            ((TraversalParent) step).getGlobalChildren().stream().filter(t -> !ComputerVerificationStrategy.isNotBeyondElementId(t)).findAny().isPresent())))
-                    .findAny().isPresent();
-    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategy.java
index 49d670c..9828d61 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategy.java
@@ -24,6 +24,7 @@
 import org.apache.tinkerpop.gremlin.process.traversal.step.ComparatorHolder;
 import org.apache.tinkerpop.gremlin.process.traversal.step.LambdaHolder;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.javatuples.Pair;
 
 import java.util.Comparator;
 
@@ -58,8 +59,8 @@
             if (step instanceof LambdaHolder)
                 throw new VerificationException("The provided traversal contains a lambda step: " + step, traversal);
             if (step instanceof ComparatorHolder) {
-                for (final Comparator<?> comparator : ((ComparatorHolder<?>) step).getComparators()) {
-                    if (comparator instanceof LambdaHolder || comparator.toString().contains("$$Lambda$"))
+                for (final Pair<Traversal.Admin<Object, Comparable>, Comparator<Comparable>> comparator : ((ComparatorHolder<Object, Comparable>) step).getComparators()) {
+                    if (comparator.toString().contains("$$Lambda$"))
                         throw new VerificationException("The provided step contains a lambda comparator: " + step, traversal);
                 }
             }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategy.java
index bf7fd09..cdc9d1e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategy.java
@@ -24,6 +24,9 @@
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
 
+import java.util.Collections;
+import java.util.Set;
+
 /**
  * Detects steps marked with {@link Mutating} and throws an {@link IllegalStateException} if one is found.
  *
@@ -50,6 +53,11 @@
         }
     }
 
+    @Override
+    public Set<Class<? extends VerificationStrategy>> applyPost() {
+        return Collections.singleton(ComputerVerificationStrategy.class);
+    }
+
     public static ReadOnlyStrategy instance() {
         return INSTANCE;
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java
index 48cd7fd..4fc7da2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategy.java
@@ -18,11 +18,18 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.verification;
 
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.VertexComputing;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectCapStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+
+import java.util.Collections;
+import java.util.Set;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -36,13 +43,34 @@
 
     @Override
     public void apply(final Traversal.Admin<?, ?> traversal) {
+        if (!traversal.getStrategies().toList().contains(ComputerVerificationStrategy.instance())) {
+            if (!TraversalHelper.getStepsOfAssignableClass(VertexComputing.class, traversal).isEmpty())
+                throw new VerificationException("VertexComputing steps must be executed with a GraphComputer: " + TraversalHelper.getStepsOfAssignableClass(VertexComputing.class, traversal), traversal);
+        }
+
         traversal.getSteps().forEach(step -> {
             if (step instanceof ReducingBarrierStep && step.getTraversal().getParent() instanceof RepeatStep && step.getTraversal().getParent().getGlobalChildren().get(0).getSteps().contains(step))
-                throw new VerificationException("The direct parent of a ReducingBarrierStep can not be a RepeatStep: " + step, traversal);
+                throw new VerificationException("The parent of a reducing barrier can not be repeat()-step: " + step, traversal);
         });
+
+        // The ProfileSideEffectStep must be the last step or the 2nd last step when accompanied by the cap step.
+        if (TraversalHelper.hasStepOfClass(ProfileSideEffectStep.class, traversal) &&
+                !(traversal.asAdmin().getEndStep() instanceof ProfileSideEffectStep) &&
+                !(traversal.asAdmin().getEndStep() instanceof SideEffectCapStep && traversal.asAdmin().getEndStep().getPreviousStep() instanceof ProfileSideEffectStep)) {
+            throw new VerificationException("When specified, the profile()-Step must be the last step or followed only by the cap()-step.", traversal);
+        }
+
+        if (TraversalHelper.getStepsOfClass(ProfileSideEffectStep.class, traversal).size() > 1) {
+            throw new VerificationException("The profile()-Step cannot be specified multiple times.", traversal);
+        }
     }
 
     public static StandardVerificationStrategy instance() {
         return INSTANCE;
     }
+
+    @Override
+    public Set<Class<? extends VerificationStrategy>> applyPrior() {
+        return Collections.singleton(ComputerVerificationStrategy.class);
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_Traverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_Traverser.java
index 30641bb..7064cd0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_Traverser.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_Traverser.java
@@ -87,11 +87,11 @@
     @Override
     public boolean equals(final Object object) {
         return (object instanceof B_LP_O_P_S_SE_SL_Traverser)
-                && ((B_LP_O_P_S_SE_SL_Traverser) object).get().equals(this.t)
-                && ((B_LP_O_P_S_SE_SL_Traverser) object).getStepId().equals(this.getStepId())
-                && ((B_LP_O_P_S_SE_SL_Traverser) object).loops() == this.loops()
+                && ((B_LP_O_P_S_SE_SL_Traverser) object).t.equals(this.t)
+                && ((B_LP_O_P_S_SE_SL_Traverser) object).future.equals(this.future)
+                && ((B_LP_O_P_S_SE_SL_Traverser) object).loops == this.loops
                 && (null == this.sack || null != this.sideEffects.getSackMerger())
-                && ((B_LP_O_P_S_SE_SL_Traverser) object).path().equals(this.path);
+                && ((B_LP_O_P_S_SE_SL_Traverser) object).path.equals(this.path);
     }
 
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_S_SE_SL_Traverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_S_SE_SL_Traverser.java
index b32126b..8c66992 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_S_SE_SL_Traverser.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_S_SE_SL_Traverser.java
@@ -25,6 +25,7 @@
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ImmutablePath;
 import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceFactory;
 
+import java.util.HashSet;
 import java.util.Set;
 
 /**
@@ -85,6 +86,29 @@
     }
 
     @Override
+    public void keepLabels(final Set<String> labels) {
+        final Set<String> retractLabels = new HashSet<>();
+        for (final Set<String> stepLabels : this.path.labels()) {
+            for (final String l : stepLabels) {
+                if (!labels.contains(l))
+                    retractLabels.add(l);
+            }
+        }
+        this.path = this.path.retract(retractLabels);
+    }
+
+    @Override
+    public void dropLabels(final Set<String> labels) {
+        if (!labels.isEmpty())
+            this.path = path.retract(labels);
+    }
+
+    @Override
+    public void dropPath() {
+        this.path = ImmutablePath.make();
+    }
+
+    @Override
     public int hashCode() {
         return super.hashCode() + this.path.hashCode();
     }
@@ -92,11 +116,11 @@
     @Override
     public boolean equals(final Object object) {
         return (object instanceof B_LP_O_S_SE_SL_Traverser)
-                && ((B_LP_O_S_SE_SL_Traverser) object).get().equals(this.t)
-                && ((B_LP_O_S_SE_SL_Traverser) object).getStepId().equals(this.getStepId())
-                && ((B_LP_O_S_SE_SL_Traverser) object).loops() == this.loops()
+                && ((B_LP_O_S_SE_SL_Traverser) object).t.equals(this.t)
+                && ((B_LP_O_S_SE_SL_Traverser) object).future.equals(this.future)
+                && ((B_LP_O_S_SE_SL_Traverser) object).loops == this.loops
                 && (null == this.sack || null != this.sideEffects.getSackMerger())
-                && ((B_LP_O_S_SE_SL_Traverser) object).path().popEquals(Pop.last, this.path); // this should be Pop.all?
+                && ((B_LP_O_S_SE_SL_Traverser) object).path.popEquals(Pop.last, this.path); // this should be Pop.all?
     }
 
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_O_S_SE_SL_Traverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_O_S_SE_SL_Traverser.java
index 5dc1313..ab1a783 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_O_S_SE_SL_Traverser.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_O_S_SE_SL_Traverser.java
@@ -118,9 +118,9 @@
     @Override
     public boolean equals(final Object object) {
         return object instanceof B_O_S_SE_SL_Traverser
-                && ((B_O_S_SE_SL_Traverser) object).get().equals(this.t)
-                && ((B_O_S_SE_SL_Traverser) object).getStepId().equals(this.getStepId())
-                && ((B_O_S_SE_SL_Traverser) object).loops() == this.loops()
+                && ((B_O_S_SE_SL_Traverser) object).t.equals(this.t)
+                && ((B_O_S_SE_SL_Traverser) object).future.equals(this.future)
+                && ((B_O_S_SE_SL_Traverser) object).loops == this.loops
                 && (null == this.sack || (null != this.sideEffects && null != this.sideEffects.getSackMerger())); // hmmm... serialization in OLAP destroys the transient sideEffects
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_O_Traverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_O_Traverser.java
index 4c64fb0..4a66ab1 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_O_Traverser.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_O_Traverser.java
@@ -48,6 +48,7 @@
 
     @Override
     public void merge(final Traverser.Admin<?> other) {
+        super.merge(other);
         this.bulk = this.bulk + other.bulk();
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/LP_O_OB_P_S_SE_SL_Traverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/LP_O_OB_P_S_SE_SL_Traverser.java
index 353d1ef..5f24e8c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/LP_O_OB_P_S_SE_SL_Traverser.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/LP_O_OB_P_S_SE_SL_Traverser.java
@@ -25,6 +25,7 @@
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ImmutablePath;
 import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceFactory;
 
+import java.util.HashSet;
 import java.util.Set;
 
 /**
@@ -81,6 +82,29 @@
     }
 
     @Override
+    public void keepLabels(final Set<String> labels) {
+        final Set<String> retractLabels = new HashSet<>();
+        for (final Set<String> stepLabels : this.path.labels()) {
+            for (final String l : stepLabels) {
+                if (!labels.contains(l))
+                    retractLabels.add(l);
+            }
+        }
+        this.path = this.path.retract(retractLabels);
+    }
+
+    @Override
+    public void dropLabels(final Set<String> labels) {
+        if (!labels.isEmpty())
+            this.path = path.retract(labels);
+    }
+
+    @Override
+    public void dropPath() {
+        this.path = ImmutablePath.make();
+    }
+
+    @Override
     public int hashCode() {
         return super.hashCode() + this.path.hashCode();
     }
@@ -88,11 +112,11 @@
     @Override
     public boolean equals(final Object object) {
         return (object instanceof LP_O_OB_P_S_SE_SL_Traverser)
-                && ((LP_O_OB_P_S_SE_SL_Traverser) object).get().equals(this.t)
-                && ((LP_O_OB_P_S_SE_SL_Traverser) object).getStepId().equals(this.getStepId())
-                && ((LP_O_OB_P_S_SE_SL_Traverser) object).loops() == this.loops()
+                && ((LP_O_OB_P_S_SE_SL_Traverser) object).t.equals(this.t)
+                && ((LP_O_OB_P_S_SE_SL_Traverser) object).future.equals(this.future)
+                && ((LP_O_OB_P_S_SE_SL_Traverser) object).loops == this.loops
                 && (null == this.sack || null != this.sideEffects.getSackMerger())
-                && ((LP_O_OB_P_S_SE_SL_Traverser) object).path().equals(this.path);
+                && ((LP_O_OB_P_S_SE_SL_Traverser) object).path.equals(this.path);
     }
 
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/LP_O_OB_S_SE_SL_Traverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/LP_O_OB_S_SE_SL_Traverser.java
index 8ec5de5..c9cc67c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/LP_O_OB_S_SE_SL_Traverser.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/LP_O_OB_S_SE_SL_Traverser.java
@@ -93,10 +93,10 @@
     @Override
     public boolean equals(final Object object) {
         return (object instanceof LP_O_OB_S_SE_SL_Traverser)
-                && ((LP_O_OB_S_SE_SL_Traverser) object).get().equals(this.t)
-                && ((LP_O_OB_S_SE_SL_Traverser) object).getStepId().equals(this.getStepId())
-                && ((LP_O_OB_S_SE_SL_Traverser) object).loops() == this.loops()
+                && ((LP_O_OB_S_SE_SL_Traverser) object).t.equals(this.t)
+                && ((LP_O_OB_S_SE_SL_Traverser) object).future.equals(this.future)
+                && ((LP_O_OB_S_SE_SL_Traverser) object).loops == this.loops
                 && (null == this.sack || null != this.sideEffects.getSackMerger())
-                && ((LP_O_OB_S_SE_SL_Traverser) object).path().popEquals(Pop.last, this.path); // this should be Pop.all?
+                && ((LP_O_OB_S_SE_SL_Traverser) object).path.popEquals(Pop.last, this.path); // this should be Pop.all?
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_OB_S_SE_SL_Traverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_OB_S_SE_SL_Traverser.java
index 7196e72..44a7cbb 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_OB_S_SE_SL_Traverser.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_OB_S_SE_SL_Traverser.java
@@ -115,6 +115,7 @@
 
     @Override
     public void merge(final Traverser.Admin<?> other) {
+        super.merge(other);
         if (null != this.sack && null != this.sideEffects.getSackMerger())
             this.sack = this.sideEffects.getSackMerger().apply(this.sack, other.sack());
     }
@@ -129,9 +130,9 @@
     @Override
     public boolean equals(final Object object) {
         return object instanceof O_OB_S_SE_SL_Traverser
-                && ((O_OB_S_SE_SL_Traverser) object).get().equals(this.t)
-                && ((O_OB_S_SE_SL_Traverser) object).getStepId().equals(this.getStepId())
-                && ((O_OB_S_SE_SL_Traverser) object).loops() == this.loops()
+                && ((O_OB_S_SE_SL_Traverser) object).t.equals(this.t)
+                && ((O_OB_S_SE_SL_Traverser) object).future.equals(this.future)
+                && ((O_OB_S_SE_SL_Traverser) object).loops == this.loops
                 && (null == this.sack || (null != this.sideEffects && null != this.sideEffects.getSackMerger())); // hmmm... serialization in OLAP destroys the transient sideEffects
     }
 }
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_Traverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_Traverser.java
index 44e0f6e..e9735b0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_Traverser.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_Traverser.java
@@ -28,7 +28,7 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class O_Traverser<T> extends AbstractTraverser<T> {
+public abstract class O_Traverser<T> extends AbstractTraverser<T> {
 
     protected Set<String> tags = null;
 
@@ -63,7 +63,6 @@
 
     @Override
     public void merge(final Traverser.Admin<?> other) {
-        super.merge(other);
         if (!other.getTags().isEmpty()) {
             if (this.tags == null) this.tags = new HashSet<>();
             this.tags.addAll(other.getTags());
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_TraverserGenerator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_TraverserGenerator.java
deleted file mode 100644
index 8a67b18..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/O_TraverserGenerator.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.traverser;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
-import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
-
-import java.util.Collections;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class O_TraverserGenerator implements TraverserGenerator {
-
-    private static final Set<TraverserRequirement> REQUIREMENTS = Collections.singleton(TraverserRequirement.OBJECT);
-    private static final O_TraverserGenerator INSTANCE = new O_TraverserGenerator();
-
-    private O_TraverserGenerator() {
-    }
-
-    @Override
-    public <S> Traverser.Admin<S> generate(final S start, final Step<S, ?> startStep, final long initialBulk) {
-        return new O_Traverser<>(start);
-    }
-
-    @Override
-    public Set<TraverserRequirement> getProvidedRequirements() {
-        return REQUIREMENTS;
-    }
-
-    public static O_TraverserGenerator instance() {
-        return INSTANCE;
-    }
-}
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserGeneratorFactory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserGeneratorFactory.java
index 4ca721a..9c23df9 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserGeneratorFactory.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserGeneratorFactory.java
@@ -18,16 +18,15 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.traverser;
 
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
 
-import java.io.Serializable;
+import java.util.Set;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface TraverserGeneratorFactory extends Serializable {
+public interface TraverserGeneratorFactory {
 
-    public TraverserGenerator getTraverserGenerator(final Traversal.Admin<?, ?> traversal);
+    public TraverserGenerator getTraverserGenerator(final Set<TraverserRequirement> requirements);
 
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserRequirement.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserRequirement.java
index 88d1d21..ce7de2d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserRequirement.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserRequirement.java
@@ -26,8 +26,6 @@
  * A {@link TraverserRequirement} is a list of requirements that a {@link Traversal} requires of a {@link Traverser}.
  * The less requirements, the simpler the traverser can be (both in terms of space and time constraints).
  * Every {@link Step} provides its specific requirements via {@link Step#getRequirements()}.
- * Moreover, every {@link org.apache.tinkerpop.gremlin.process.traversal.Traversal.Admin} can be provided requirements via
- * {@link org.apache.tinkerpop.gremlin.process.traversal.Traversal.Admin#addTraverserRequirement(TraverserRequirement)}.
  *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/AbstractTraverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/AbstractTraverser.java
index 1ced9ef..f23ac6e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/AbstractTraverser.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/AbstractTraverser.java
@@ -78,6 +78,22 @@
     }
 
     @Override
+    public void keepLabels(final Set<String> labels) {
+
+    }
+
+    @Override
+    public void dropLabels(final Set<String> labesl) {
+
+    }
+
+    @Override
+    public void dropPath() {
+
+    }
+
+
+    @Override
     public void set(final T t) {
         this.t = t;
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/DefaultTraverserGeneratorFactory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/DefaultTraverserGeneratorFactory.java
index 60a22ca..932791e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/DefaultTraverserGeneratorFactory.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/DefaultTraverserGeneratorFactory.java
@@ -27,9 +27,9 @@
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.LP_O_OB_P_S_SE_SL_TraverserGenerator;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.LP_O_OB_S_SE_SL_TraverserGenerator;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.O_OB_S_SE_SL_TraverserGenerator;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.O_TraverserGenerator;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserGeneratorFactory;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 
 import java.util.Set;
 
@@ -48,9 +48,7 @@
     }
 
     @Override
-    public TraverserGenerator getTraverserGenerator(final Traversal.Admin<?, ?> traversal) {
-        final Set<TraverserRequirement> requirements = traversal.getTraverserRequirements();
-
+    public TraverserGenerator getTraverserGenerator(final Set<TraverserRequirement> requirements) {
         if (requirements.contains(TraverserRequirement.ONE_BULK)) {
             if (O_OB_S_SE_SL_TraverserGenerator.instance().getProvidedRequirements().containsAll(requirements))
                 return O_OB_S_SE_SL_TraverserGenerator.instance();
@@ -61,9 +59,6 @@
             if (LP_O_OB_P_S_SE_SL_TraverserGenerator.instance().getProvidedRequirements().containsAll(requirements))
                 return LP_O_OB_P_S_SE_SL_TraverserGenerator.instance();
         } else {
-            if (O_TraverserGenerator.instance().getProvidedRequirements().containsAll(requirements))
-                return O_TraverserGenerator.instance();
-
             if (B_O_TraverserGenerator.instance().getProvidedRequirements().containsAll(requirements))
                 return B_O_TraverserGenerator.instance();
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/EmptyTraverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/EmptyTraverser.java
index da391f5..7c99cb5 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/EmptyTraverser.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/EmptyTraverser.java
@@ -50,6 +50,21 @@
     }
 
     @Override
+    public void keepLabels(final Set<String> labels) {
+
+    }
+
+    @Override
+    public void dropLabels(final Set<String> labels) {
+
+    }
+
+    @Override
+    public void dropPath() {
+
+    }
+
+    @Override
     public void set(final T t) {
 
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/TraverserSet.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/TraverserSet.java
index 757bc32..d6461ce 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/TraverserSet.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/TraverserSet.java
@@ -20,6 +20,7 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import java.io.Serializable;
 import java.util.AbstractSet;
@@ -136,18 +137,20 @@
 
     @Override
     public String toString() {
-        return this.map.keySet().toString();
+        return this.map.values().toString();
     }
 
     public void sort(final Comparator<Traverser<S>> comparator) {
-        final List<Traverser.Admin<S>> list = new ArrayList<>(this.map.values());
+        final List<Traverser.Admin<S>> list = new ArrayList<>(this.map.size());
+        IteratorUtils.removeOnNext(this.map.values().iterator()).forEachRemaining(list::add);
         Collections.sort(list, comparator);
         this.map.clear();
         list.forEach(traverser -> this.map.put(traverser, traverser));
     }
 
     public void shuffle() {
-        final List<Traverser.Admin<S>> list = new ArrayList<>(this.map.values());
+        final List<Traverser.Admin<S>> list = new ArrayList<>(this.map.size());
+        IteratorUtils.removeOnNext(this.map.values().iterator()).forEachRemaining(list::add);
         Collections.shuffle(list);
         this.map.clear();
         list.forEach(traverser -> this.map.put(traverser, traverser));
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/AndP.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/AndP.java
index 890a967..db75641 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/AndP.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/AndP.java
@@ -21,6 +21,9 @@
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 
 import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 import java.util.function.BiPredicate;
 import java.util.function.Predicate;
 
@@ -29,11 +32,19 @@
  */
 public final class AndP<V> extends ConnectiveP<V> {
 
-    public AndP(final P<V>... predicates) {
+    public AndP(final List<P<V>> predicates) {
         super(predicates);
         this.biPredicate = new AndBiPredicate(this);
     }
 
+    @Deprecated
+    /**
+     * @deprecated As of release 3.2.0-incubating, replaced by {@link AndP(List)}
+     */
+    public AndP(final P<V>... predicates) {
+        this(Arrays.asList(predicates));
+    }
+
     @Override
     public P<V> and(final Predicate<? super V> predicate) {
         if (!(predicate instanceof P))
@@ -45,7 +56,7 @@
     @Override
     public P<V> negate() {
         super.negate();
-        return new OrP(this.predicates.toArray(new P[this.predicates.size()]));
+        return new OrP<>(this.predicates);
     }
 
     @Override
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ConnectiveP.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ConnectiveP.java
index d5b6b32..70f008a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ConnectiveP.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ConnectiveP.java
@@ -21,10 +21,10 @@
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.function.Predicate;
-import java.util.stream.Stream;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -33,12 +33,19 @@
 
     protected List<P<V>> predicates;
 
-    public ConnectiveP(final P<V>... predicates) {
+    public ConnectiveP(final List<P<V>> predicates) {
         super(null, null);
-        if (predicates.length < 2)
-            throw new IllegalArgumentException("The provided " + this.getClass().getSimpleName() + " array must have at least two arguments: " + predicates.length);
-        this.predicates = new ArrayList<>();
-        Stream.of(predicates).forEach(this.predicates::add);
+        if (predicates.size() < 2)
+            throw new IllegalArgumentException("The provided " + this.getClass().getSimpleName() + " array must have at least two arguments: " + predicates.size());
+        this.predicates = new ArrayList<>(predicates); // to avoid Arrays.asList() and unmodifiable exceptions
+    }
+
+    @Deprecated
+    /**
+     * @deprecated As of release 3.2.0-incubating, replaced by {@link ConnectiveP(List)}
+     */
+    public ConnectiveP(final P<V>... predicates) {
+        this(Arrays.asList(predicates));
     }
 
     public List<P<V>> getPredicates() {
@@ -103,13 +110,13 @@
     public P<V> and(final Predicate<? super V> predicate) {
         if (!(predicate instanceof P))
             throw new IllegalArgumentException("Only P predicates can be and'd together");
-        return new AndP<>(this, (P) predicate);
+        return new AndP<>(Arrays.asList(this, (P<V>) predicate));
     }
 
     @Override
     public P<V> or(final Predicate<? super V> predicate) {
         if (!(predicate instanceof P))
             throw new IllegalArgumentException("Only P predicates can be or'd together");
-        return new OrP<>(this, (P) predicate);
+        return new OrP<>(Arrays.asList(this, (P<V>) predicate));
     }
 }
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
index 977e4ac..fe24dee 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
@@ -20,14 +20,14 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 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.DefaultTraverserGeneratorFactory;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
@@ -53,12 +53,12 @@
     protected List<Step> steps = new ArrayList<>();
     // steps will be repeatedly retrieved from this traversal so wrap them once in an immutable list that can be reused
     protected List<Step> unmodifiableSteps = Collections.unmodifiableList(steps);
-    protected TraversalParent traversalParent = EmptyStep.instance();
+    protected TraversalParent parent = EmptyStep.instance();
     protected TraversalSideEffects sideEffects = new DefaultTraversalSideEffects();
     protected TraversalStrategies strategies;
-    protected TraversalEngine traversalEngine = StandardTraversalEngine.instance(); // necessary for strategies that need the engine in OLAP message passing (not so bueno)
+    protected transient TraverserGenerator generator;
+    protected Set<TraverserRequirement> requirements;
     protected boolean locked = false;
-    protected Set<TraverserRequirement> traverserRequirements = new HashSet<>();
 
     public DefaultTraversal() {
         this.graph = null;
@@ -77,6 +77,15 @@
     }
 
     @Override
+    public TraverserGenerator getTraverserGenerator() {
+        if (null == this.generator)
+            this.generator = (this.parent instanceof EmptyStep) ?
+                    DefaultTraverserGeneratorFactory.instance().getTraverserGenerator(this.getTraverserRequirements()) :
+                    TraversalHelper.getRootTraversal(this).getTraverserGenerator();
+        return this.generator;
+    }
+
+    @Override
     public void applyStrategies() throws IllegalStateException {
         if (this.locked) throw Traversal.Exceptions.traversalIsLocked();
         TraversalHelper.reIdSteps(this.stepPosition, this);
@@ -86,54 +95,44 @@
             if (step instanceof TraversalParent) {
                 for (final Traversal.Admin<?, ?> globalChild : ((TraversalParent) step).getGlobalChildren()) {
                     globalChild.setStrategies(this.strategies);
-                    globalChild.setEngine(this.traversalEngine);
+                    globalChild.setSideEffects(this.sideEffects);
                     if (hasGraph) globalChild.setGraph(this.graph);
                     globalChild.applyStrategies();
                 }
                 for (final Traversal.Admin<?, ?> localChild : ((TraversalParent) step).getLocalChildren()) {
                     localChild.setStrategies(this.strategies);
-                    localChild.setEngine(StandardTraversalEngine.instance());
+                    localChild.setSideEffects(this.sideEffects);
                     if (hasGraph) localChild.setGraph(this.graph);
                     localChild.applyStrategies();
                 }
             }
         }
         this.finalEndStep = this.getEndStep();
+        // finalize requirements
+        if (this.getParent() instanceof EmptyStep) {
+            this.requirements = null;
+            this.getTraverserRequirements();
+        }
         this.locked = true;
     }
 
     @Override
-    public TraversalEngine getEngine() {
-        return this.traversalEngine;
-    }
-
-    @Override
-    public void setEngine(final TraversalEngine engine) {
-        this.traversalEngine = engine;
-    }
-
-    @Override
     public Set<TraverserRequirement> getTraverserRequirements() {
-        Set<TraverserRequirement> requirements = new HashSet<>();
-        for (Step step : this.getSteps()) {
-            requirements.addAll(step.getRequirements());
+        if (null == this.requirements) {
+            // if (!this.locked) this.applyStrategies();
+            this.requirements = new HashSet<>();
+            for (final Step<?, ?> step : this.getSteps()) {
+                this.requirements.addAll(step.getRequirements());
+            }
+            if (!this.getSideEffects().keys().isEmpty())
+                this.requirements.add(TraverserRequirement.SIDE_EFFECTS);
+            if (null != this.getSideEffects().getSackInitialValue())
+                this.requirements.add(TraverserRequirement.SACK);
+            if (this.requirements.contains(TraverserRequirement.ONE_BULK))
+                this.requirements.remove(TraverserRequirement.BULK);
+            this.requirements = Collections.unmodifiableSet(this.requirements);
         }
-
-        requirements.addAll(this.traverserRequirements);
-        if (this.getSideEffects().keys().size() > 0)
-            requirements.add(TraverserRequirement.SIDE_EFFECTS);
-        if (null != this.getSideEffects().getSackInitialValue())
-            requirements.add(TraverserRequirement.SACK);
-        if (this.getEngine().isComputer())
-            requirements.add(TraverserRequirement.BULK);
-        if (requirements.contains(TraverserRequirement.ONE_BULK))
-            requirements.remove(TraverserRequirement.BULK);
-        return requirements;
-    }
-
-    @Override
-    public void addTraverserRequirement(final TraverserRequirement traverserRequirement) {
-        this.traverserRequirements.add(traverserRequirement);
+        return this.requirements;
     }
 
     @Override
@@ -173,13 +172,13 @@
     }
 
     @Override
-    public void addStart(final Traverser<S> start) {
+    public void addStart(final Traverser.Admin<S> start) {
         if (!this.locked) this.applyStrategies();
         if (!this.steps.isEmpty()) this.steps.get(0).addStart(start);
     }
 
     @Override
-    public void addStarts(final Iterator<Traverser<S>> starts) {
+    public void addStarts(final Iterator<Traverser.Admin<S>> starts) {
         if (!this.locked) this.applyStrategies();
         if (!this.steps.isEmpty()) this.steps.get(0).addStarts(starts);
     }
@@ -206,7 +205,7 @@
             clone.steps = new ArrayList<>();
             clone.unmodifiableSteps = Collections.unmodifiableList(clone.steps);
             clone.sideEffects = this.sideEffects.clone();
-            clone.strategies = this.strategies.clone();
+            clone.strategies = this.strategies;
             clone.lastEnd = null;
             clone.lastEndCount = 0l;
             for (final Step<?, ?> step : this.steps) {
@@ -241,7 +240,7 @@
 
     @Override
     public void setStrategies(final TraversalStrategies strategies) {
-        this.strategies = strategies.clone();
+        this.strategies = strategies;
     }
 
     @Override
@@ -278,12 +277,12 @@
 
     @Override
     public void setParent(final TraversalParent step) {
-        this.traversalParent = step;
+        this.parent = step;
     }
 
     @Override
     public TraversalParent getParent() {
-        return this.traversalParent;
+        return this.parent;
     }
 
     @Override
@@ -298,7 +297,7 @@
 
     @Override
     public boolean equals(final Object other) {
-        return other != null && other.getClass().equals(this.getClass()) && this.asAdmin().equals(((Traversal.Admin) other));
+        return other != null && other.getClass().equals(this.getClass()) && this.equals(((Traversal.Admin) other));
     }
 
     @Override
@@ -310,5 +309,4 @@
         }
         return result;
     }
-
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/StandardTraversalMetrics.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
similarity index 65%
rename from gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/StandardTraversalMetrics.java
rename to gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
index 6aabea4..1714a9e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/StandardTraversalMetrics.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
@@ -19,21 +19,30 @@
 package org.apache.tinkerpop.gremlin.process.traversal.util;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ProfileStep;
 
 import java.io.Serializable;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
 import java.util.concurrent.TimeUnit;
 
 /**
  * @author Bob Briody (http://bobbriody.com)
  */
-public final class StandardTraversalMetrics implements TraversalMetrics, Serializable {
+public final class DefaultTraversalMetrics implements TraversalMetrics, Serializable {
     // toString() specific headers
     private static final String[] HEADERS = {"Step", "Count", "Traversers", "Time (ms)", "% Dur"};
 
-    private boolean dirty = true;
     private final Map<String, MutableMetrics> metrics = new HashMap<>();
-    private final Map<String, MutableMetrics> allMetrics = new HashMap<>();
     private final TreeMap<Integer, String> indexToLabelMap = new TreeMap<>();
 
     /*
@@ -42,56 +51,32 @@
     private long totalStepDuration;
     private Map<String, ImmutableMetrics> computedMetrics;
 
-    public StandardTraversalMetrics() {
-    }
-
-    public void start(final String metricsId) {
-        dirty = true;
-        allMetrics.get(metricsId).start();
-    }
-
-    public void stop(final String metricsId) {
-        dirty = true;
-        allMetrics.get(metricsId).stop();
-    }
-
-    public void finish(final String metricsId, final long bulk) {
-        dirty = true;
-        final MutableMetrics metrics = allMetrics.get(metricsId);
-        metrics.stop();
-        metrics.incrementCount(TRAVERSER_COUNT_ID, 1);
-        metrics.incrementCount(ELEMENT_COUNT_ID, bulk);
+    public DefaultTraversalMetrics() {
     }
 
     @Override
     public long getDuration(final TimeUnit unit) {
-        computeTotals();
         return unit.convert(totalStepDuration, MutableMetrics.SOURCE_UNIT);
     }
 
     @Override
     public Metrics getMetrics(final int index) {
-        computeTotals();
         // adjust index to account for the injected profile steps
         return (Metrics) computedMetrics.get(indexToLabelMap.get(index));
     }
 
     @Override
     public Metrics getMetrics(final String id) {
-        computeTotals();
         return computedMetrics.get(id);
     }
 
     @Override
     public Collection<ImmutableMetrics> getMetrics() {
-        computeTotals();
         return computedMetrics.values();
     }
 
     @Override
     public String toString() {
-        computeTotals();
-
         // Build a pretty table of metrics data.
 
         // Append headers
@@ -144,8 +129,8 @@
 
             sb.append(String.format(" %15.3f", m.getDuration(TimeUnit.MICROSECONDS) / 1000.0));
 
-            if (percentDur!=null){
-                sb.append(String.format(" %8.2f", percentDur ));
+            if (percentDur != null) {
+                sb.append(String.format(" %8.2f", percentDur));
             }
 
             appendMetrics(m.getNested(), sb, indent + 1);
@@ -153,11 +138,6 @@
     }
 
     private void computeTotals() {
-        if (!dirty) {
-            // already good to go
-            return;
-        }
-
         // Create temp list of ordered metrics
         List<MutableMetrics> tempMetrics = new ArrayList<>(metrics.size());
         for (String label : indexToLabelMap.values()) {
@@ -178,12 +158,10 @@
         // Store immutable instances of the calculated metrics
         computedMetrics = new LinkedHashMap<>(metrics.size());
         tempMetrics.forEach(it -> computedMetrics.put(it.getId(), it.getImmutableClone()));
-
-        dirty = false;
     }
 
-    public static StandardTraversalMetrics merge(final Iterator<StandardTraversalMetrics> toMerge) {
-        final StandardTraversalMetrics newTraversalMetrics = new StandardTraversalMetrics();
+    public static DefaultTraversalMetrics merge(final Iterator<DefaultTraversalMetrics> toMerge) {
+        final DefaultTraversalMetrics newTraversalMetrics = new DefaultTraversalMetrics();
 
         // iterate the incoming TraversalMetrics
         toMerge.forEachRemaining(inTraversalMetrics -> {
@@ -210,12 +188,61 @@
         return newTraversalMetrics;
     }
 
-    public void addMetrics(final MutableMetrics newMetrics, final String id, final int index, final boolean isTopLevel, final String profileStepId) {
-        if (isTopLevel) {
+    public void setMetrics(Traversal.Admin traversal, boolean onGraphComputer) {
+        addTopLevelMetrics(traversal, onGraphComputer);
+        handleNestedTraversals(traversal, null, onGraphComputer);
+        computeTotals();
+    }
+
+    private void addTopLevelMetrics(Traversal.Admin traversal, final boolean onGraphComputer) {
+        final List<ProfileStep> profileSteps = TraversalHelper.getStepsOfClass(ProfileStep.class, traversal);
+        for (int ii = 0; ii < profileSteps.size(); ii++) {
             // The index is necessary to ensure that step order is preserved after a merge.
-            indexToLabelMap.put(index, id);
-            metrics.put(id, newMetrics);
+            final ProfileStep step = profileSteps.get(ii);
+            if (onGraphComputer) {
+                final MutableMetrics stepMetrics = traversal.getSideEffects().get(step.getId());
+                this.indexToLabelMap.put(ii, stepMetrics.getId());
+                this.metrics.put(stepMetrics.getId(), stepMetrics);
+            } else {
+                final MutableMetrics stepMetrics = step.getMetrics();
+                this.indexToLabelMap.put(ii, stepMetrics.getId());
+                this.metrics.put(stepMetrics.getId(), stepMetrics);
+            }
         }
-        allMetrics.put(profileStepId, newMetrics);
+    }
+
+    private void handleNestedTraversals(Traversal.Admin traversal, MutableMetrics parentMetrics, boolean onGraphComputer) {
+        long prevDur = 0;
+        for (int ii = 0; ii < traversal.getSteps().size(); ii++) {
+            Step step = (Step) traversal.getSteps().get(ii);
+            if (!(step instanceof ProfileStep)) {
+                continue;
+            }
+
+            final MutableMetrics metrics = onGraphComputer ?
+                    traversal.getSideEffects().get(step.getId()) :
+                    ((ProfileStep) step).getMetrics();
+
+            if (!onGraphComputer) {
+                // subtract upstream duration.
+                long durBeforeAdjustment = metrics.getDuration(TimeUnit.NANOSECONDS);
+                // adjust duration
+                metrics.setDuration(metrics.getDuration(TimeUnit.NANOSECONDS) - prevDur, TimeUnit.NANOSECONDS);
+                prevDur = durBeforeAdjustment;
+            }
+
+            if (parentMetrics != null) {
+                parentMetrics.addNested(metrics);
+            }
+
+            if (step.getPreviousStep() instanceof TraversalParent) {
+                for (Traversal.Admin<?, ?> t : ((TraversalParent) step.getPreviousStep()).getLocalChildren()) {
+                    handleNestedTraversals(t, metrics, onGraphComputer);
+                }
+                for (Traversal.Admin<?, ?> t : ((TraversalParent) step.getPreviousStep()).getGlobalChildren()) {
+                    handleNestedTraversals(t, metrics, onGraphComputer);
+                }
+            }
+        }
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalSideEffects.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalSideEffects.java
index f1cccbd..8a8c5e2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalSideEffects.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalSideEffects.java
@@ -18,10 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.util;
 
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.util.Collections;
@@ -39,8 +37,10 @@
  */
 public class DefaultTraversalSideEffects implements TraversalSideEffects {
 
+    protected Set<String> keys = new HashSet<>();
     protected Map<String, Object> objectMap = new HashMap<>();
     protected Map<String, Supplier> supplierMap = new HashMap<>();
+    protected Map<String, BinaryOperator> reducerMap = new HashMap<>();
     protected UnaryOperator sackSplitOperator = null;
     protected BinaryOperator sackMergeOperator = null;
     protected Supplier sackInitialValue = null;
@@ -53,29 +53,99 @@
      * {@inheritDoc}
      */
     @Override
-    public void registerSupplier(final String key, final Supplier supplier) {
-        this.supplierMap.put(key, supplier);
+    public boolean exists(final String key) {
+        return this.keys.contains(key);
     }
 
     /**
      * {@inheritDoc}
      */
     @Override
-    public <V> Optional<Supplier<V>> getRegisteredSupplier(final String key) {
-        return Optional.ofNullable(this.supplierMap.get(key));
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void registerSupplierIfAbsent(final String key, final Supplier supplier) {
-        if (!this.supplierMap.containsKey(key)) {
-            SideEffectHelper.validateSideEffect(key, supplier);
-            this.supplierMap.put(key, supplier);
+    public <V> V get(final String key) throws IllegalArgumentException {
+        final V value = (V) this.objectMap.get(key);
+        if (null != value)
+            return value;
+        else {
+            final V v = this.<V>getSupplier(key).get();
+            this.objectMap.put(key, v);
+            return v;
         }
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void set(final String key, final Object value) throws IllegalArgumentException {
+        SideEffectHelper.validateSideEffectValue(value);
+        if (!this.keys.contains(key))
+            throw TraversalSideEffects.Exceptions.sideEffectKeyDoesNotExist(key);
+        this.objectMap.put(key, value);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void add(final String key, final Object value) throws IllegalArgumentException {
+        SideEffectHelper.validateSideEffectValue(value);
+        this.set(key, this.getReducer(key).apply(this.get(key), value));
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public <V> void register(final String key, final Supplier<V> initialValue, final BinaryOperator<V> reducer) {
+        SideEffectHelper.validateSideEffectKey(key);
+        this.keys.add(key);
+        //this.objectMap.remove(key);
+        if (null != initialValue)
+            this.supplierMap.put(key, initialValue);
+        if (null != reducer)
+            this.reducerMap.put(key, reducer);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public <V> void registerIfAbsent(final String key, final Supplier<V> initialValue, final BinaryOperator<V> reducer) {
+        SideEffectHelper.validateSideEffectKey(key);
+        this.keys.add(key);
+        //this.objectMap.remove(key);
+        if (null == this.supplierMap.get(key) && null != initialValue) {
+            this.supplierMap.put(key, initialValue);
+        }
+        if (null == this.reducerMap.get(key) && null != reducer) {
+            this.reducerMap.put(key, reducer);
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public <V> BinaryOperator<V> getReducer(final String key) throws IllegalArgumentException {
+        if (!this.keys.contains(key))
+            throw TraversalSideEffects.Exceptions.sideEffectKeyDoesNotExist(key);
+        return this.reducerMap.getOrDefault(key, Operator.assign);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public <V> Supplier<V> getSupplier(final String key) throws IllegalArgumentException {
+        final Supplier<V> supplier = this.supplierMap.get(key);
+        if (null == supplier)
+            throw TraversalSideEffects.Exceptions.sideEffectKeyDoesNotExist(key);
+        return supplier;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public <S> void setSack(final Supplier<S> initialValue, final UnaryOperator<S> splitOperator, final BinaryOperator<S> mergeOperator) {
         this.sackInitialValue = initialValue;
@@ -83,16 +153,25 @@
         this.sackMergeOperator = mergeOperator;
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public <S> Supplier<S> getSackInitialValue() {
         return this.sackInitialValue;
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public <S> UnaryOperator<S> getSackSplitter() {
         return this.sackSplitOperator;
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public <S> BinaryOperator<S> getSackMerger() {
         return this.sackMergeOperator;
@@ -102,52 +181,11 @@
      * {@inheritDoc}
      */
     @Override
-    public void set(final String key, final Object value) {
-        SideEffectHelper.validateSideEffect(key, value);
-        this.objectMap.put(key, value);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public <V> Optional<V> get(final String key) throws IllegalArgumentException {
-        final V value = (V) this.objectMap.get(key);
-        if (null != value)
-            return Optional.of(value);
-        else {
-            if (this.supplierMap.containsKey(key)) {
-                final V v = (V) this.supplierMap.get(key).get();
-                this.objectMap.put(key, v);
-                return Optional.of(v);
-            } else {
-                return Optional.empty();
-            }
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public <V> V getOrCreate(final String key, final Supplier<V> orCreate) {
-        final Optional<V> optional = this.get(key);
-        if (optional.isPresent())
-            return optional.get();
-        else {
-            final V value = orCreate.get();
-            this.objectMap.put(key, value);
-            return value;
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
     public void remove(final String key) {
         this.objectMap.remove(key);
         this.supplierMap.remove(key);
+        this.reducerMap.remove(key);
+        this.keys.remove(key);
     }
 
     /**
@@ -155,48 +193,90 @@
      */
     @Override
     public Set<String> keys() {
-        final Set<String> keys = new HashSet<>();
-        keys.addAll(this.objectMap.keySet());
-        keys.addAll(this.supplierMap.keySet());
-        return Collections.unmodifiableSet(keys);
+        return Collections.unmodifiableSet(this.keys);
     }
 
     /**
      * {@inheritDoc}
      */
     @Override
-    public void setLocalVertex(final Vertex vertex) {
-        final Property<Map<String, Object>> property = vertex.property(SIDE_EFFECTS);
-        if (property.isPresent()) {
-            this.objectMap = property.value();
-        } else {
-            this.objectMap = new HashMap<>();
-            vertex.property(VertexProperty.Cardinality.single, SIDE_EFFECTS, this.objectMap);
+    public void mergeInto(final TraversalSideEffects sideEffects) {
+        for (final String key : this.keys) {
+            sideEffects.registerIfAbsent(key, this.supplierMap.get(key), this.reducerMap.get(key));
+            if (this.objectMap.containsKey(key))
+                sideEffects.set(key, this.objectMap.get(key));
         }
     }
 
-    @Override
-    public void mergeInto(final TraversalSideEffects sideEffects) {
-        this.objectMap.forEach(sideEffects::set);
-        this.supplierMap.forEach(sideEffects::registerSupplierIfAbsent);
-        // TODO: add sack information?
-    }
-
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public String toString() {
         return StringFactory.traversalSideEffectsString(this);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     @SuppressWarnings("CloneDoesntDeclareCloneNotSupportedException")
     public DefaultTraversalSideEffects clone() {
         try {
             final DefaultTraversalSideEffects sideEffects = (DefaultTraversalSideEffects) super.clone();
+            sideEffects.keys = new HashSet<>(this.keys);
             sideEffects.objectMap = new HashMap<>(this.objectMap);
             sideEffects.supplierMap = new HashMap<>(this.supplierMap);
+            sideEffects.reducerMap = new HashMap<>(this.reducerMap);
             return sideEffects;
         } catch (final CloneNotSupportedException e) {
             throw new IllegalStateException(e.getMessage(), e);
         }
     }
+
+    //////////
+
+    /**
+     * {@inheritDoc}
+     */
+    @Deprecated
+    @Override
+    public void registerSupplier(final String key, final Supplier supplier) {
+        this.register(key, supplier, null);
+
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Deprecated
+    @Override
+    public void registerSupplierIfAbsent(final String key, final Supplier supplier) {
+        this.registerIfAbsent(key, supplier, null);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    @Deprecated
+    public <V> Optional<Supplier<V>> getRegisteredSupplier(final String key) {
+        return Optional.ofNullable(this.supplierMap.get(key));
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    @Deprecated
+    public <V> V getOrCreate(final String key, final Supplier<V> orCreate) {
+        final V value = this.exists(key) ? this.get(key) : null;
+        if (null != value)
+            return value;
+        else {
+            final V newValue = orCreate.get();
+            this.objectMap.put(key, newValue);
+            return newValue;
+        }
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategies.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategies.java
index 7eae1ea..f12ef74 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategies.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategies.java
@@ -21,8 +21,6 @@
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserGeneratorFactory;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.DefaultTraverserGeneratorFactory;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.util.ArrayList;
@@ -36,23 +34,27 @@
 public class DefaultTraversalStrategies implements TraversalStrategies {
 
     protected List<TraversalStrategy<?>> traversalStrategies = new ArrayList<>();
-    protected TraverserGeneratorFactory traverserGeneratorFactory = DefaultTraverserGeneratorFactory.instance();
 
     @Override
+    @SuppressWarnings({"unchecked", "varargs"})
     public TraversalStrategies addStrategies(final TraversalStrategy<?>... strategies) {
-        boolean added = false;
-        for (final TraversalStrategy strategy : strategies) {
-            if (!this.traversalStrategies.contains(strategy)) {
-                this.traversalStrategies.add(strategy);
-                added = true;
+        final List<TraversalStrategy<?>> toRemove = new ArrayList<>(strategies.length);
+        for (final TraversalStrategy<?> addStrategy : strategies) {
+            for (final TraversalStrategy<?> currentStrategy : this.traversalStrategies) {
+                if (addStrategy.getClass().equals(currentStrategy.getClass())) {
+                    toRemove.add(currentStrategy);
+                    break;
+                }
             }
         }
-        if (added) this.traversalStrategies = TraversalStrategies.sortStrategies(this.traversalStrategies);
+        this.traversalStrategies.removeAll(toRemove);
+        Collections.addAll(this.traversalStrategies, strategies);
+        this.traversalStrategies = TraversalStrategies.sortStrategies(this.traversalStrategies);
         return this;
     }
 
-    @SuppressWarnings("unchecked")
     @Override
+    @SuppressWarnings({"unchecked", "varargs"})
     public TraversalStrategies removeStrategies(final Class<? extends TraversalStrategy>... strategyClasses) {
         boolean removed = false;
         for (final Class<? extends TraversalStrategy> strategyClass : strategyClasses) {
@@ -79,16 +81,6 @@
     }
 
     @Override
-    public TraverserGeneratorFactory getTraverserGeneratorFactory() {
-        return this.traverserGeneratorFactory;
-    }
-
-    @Override
-    public void setTraverserGeneratorFactory(final TraverserGeneratorFactory traverserGeneratorFactory) {
-        this.traverserGeneratorFactory = traverserGeneratorFactory;
-    }
-
-    @Override
     public DefaultTraversalStrategies clone() {
         try {
             final DefaultTraversalStrategies clone = (DefaultTraversalStrategies) super.clone();
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DependantMutableMetrics.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DependantMutableMetrics.java
deleted file mode 100644
index bb7d50c..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DependantMutableMetrics.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.util;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * This Metrics class handles a metrics chain in which durations are "double counted" by upstream metrics. Durations are
- * corrected upon retrieval by subtracting upstream durations.
- *
- * @author Bob Briody (http://bobbriody.com)
- */
-public class DependantMutableMetrics extends MutableMetrics {
-    private long prevDur = 0L;
-    private DependantMutableMetrics upStreamMetrics;
-
-    private DependantMutableMetrics() {
-        // necessary for gryo serialization
-        super();
-    }
-
-    public DependantMutableMetrics(final String id, final String name, final DependantMutableMetrics upStreamMetrics) {
-        super(id, name);
-        this.upStreamMetrics = upStreamMetrics;
-    }
-
-    /**
-     * Returns the actual duration taken by this Metrics by subtracting the duration taken by the upstream Step, if
-     * one exists.
-     */
-    @Override
-    public long getDuration(final TimeUnit unit) {
-        if (upStreamMetrics == null){
-           return unit.convert(super.durationNs, unit);
-        } else {
-           // upStreamMetrics exists. Subtract that duration since it is time not spent in this step.
-           return unit.convert(super.durationNs - upStreamMetrics.durationNs, unit);
-        }
-    }
-
-    @Override
-    protected void copyMembers(final ImmutableMetrics clone) {
-        super.copyMembers(clone);
-        clone.durationNs = this.getDuration(TimeUnit.NANOSECONDS);
-    }
-}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java
index f6fc97c..35d551b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversal.java
@@ -20,12 +20,10 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
@@ -75,32 +73,17 @@
     }
 
     @Override
-    public void addTraverserRequirement(final TraverserRequirement traverserRequirement) {
-
-    }
-
-    @Override
     public void applyStrategies() {
 
     }
 
     @Override
-    public TraversalEngine getEngine() {
-        return StandardTraversalEngine.instance();
-    }
-
-    @Override
-    public void setEngine(final TraversalEngine engine) {
+    public void addStarts(final Iterator<Traverser.Admin<S>> starts) {
 
     }
 
     @Override
-    public void addStarts(final Iterator<Traverser<S>> starts) {
-
-    }
-
-    @Override
-    public void addStart(final Traverser<S> start) {
+    public void addStart(final Traverser.Admin<S> start) {
 
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversalSideEffects.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversalSideEffects.java
index 584ccbf..a4c5adf 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversalSideEffects.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversalSideEffects.java
@@ -19,7 +19,6 @@
 package org.apache.tinkerpop.gremlin.process.traversal.util;
 
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
 
 import java.util.Collections;
 import java.util.Optional;
@@ -40,18 +39,18 @@
     }
 
     @Override
-    public void set(final String key, final Object value) {
-
+    public void set(final String key, final Object value) throws IllegalArgumentException {
+        throw TraversalSideEffects.Exceptions.sideEffectKeyDoesNotExist(key);
     }
 
     @Override
-    public <V> Optional<V> get(final String key) throws IllegalArgumentException {
-        return Optional.empty();
+    public <V> V get(final String key) throws IllegalArgumentException {
+        throw TraversalSideEffects.Exceptions.sideEffectKeyDoesNotExist(key);
     }
 
     @Override
-    public void remove(final String key) {
-
+    public void remove(final String key) throws IllegalArgumentException {
+        throw TraversalSideEffects.Exceptions.sideEffectKeyDoesNotExist(key);
     }
 
     @Override
@@ -60,6 +59,33 @@
     }
 
     @Override
+    public void add(final String key, final Object value) throws IllegalArgumentException {
+        throw TraversalSideEffects.Exceptions.sideEffectKeyDoesNotExist(key);
+    }
+
+    @Override
+    public <V> void register(final String key, final Supplier<V> initialValue, final BinaryOperator<V> reducer) {
+
+    }
+
+    @Override
+    public <V> void registerIfAbsent(final String key, final Supplier<V> initialValue, final BinaryOperator<V> reducer) {
+
+    }
+
+    @Override
+    public <V> BinaryOperator<V> getReducer(final String key) throws IllegalArgumentException {
+        throw TraversalSideEffects.Exceptions.sideEffectKeyDoesNotExist(key);
+    }
+
+
+    @Override
+    public <V> Supplier<V> getSupplier(final String key) throws IllegalArgumentException {
+        throw TraversalSideEffects.Exceptions.sideEffectKeyDoesNotExist(key);
+    }
+
+
+    @Override
     public void registerSupplier(final String key, final Supplier supplier) {
 
     }
@@ -89,11 +115,6 @@
         return null;
     }
 
-    @Override
-    public void setLocalVertex(final Vertex vertex) {
-
-    }
-
     @SuppressWarnings("CloneDoesntCallSuperClone")
     @Override
     public TraversalSideEffects clone() {
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversalStrategies.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversalStrategies.java
index d79015e..556cf5c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversalStrategies.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/EmptyTraversalStrategies.java
@@ -63,16 +63,6 @@
         return this;
     }
 
-    @Override
-    public TraverserGeneratorFactory getTraverserGeneratorFactory() {
-        return DefaultTraverserGeneratorFactory.instance();
-    }
-
-    @Override
-    public void setTraverserGeneratorFactory(final TraverserGeneratorFactory traverserGeneratorFactory) {
-
-    }
-
     public static EmptyTraversalStrategies instance() {
         return INSTANCE;
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ImmutableMetrics.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ImmutableMetrics.java
index 8fae2b0..b02c26d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ImmutableMetrics.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ImmutableMetrics.java
@@ -41,6 +41,7 @@
     protected final Map<String, ImmutableMetrics> nested = new LinkedHashMap<>();
 
     protected ImmutableMetrics() {
+        // necessary for gryo serialization
     }
 
     @Override
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java
index 72c1076..a952c65 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/MutableMetrics.java
@@ -42,7 +42,6 @@
         this.name = name;
     }
 
-
     public void addNested(MutableMetrics metrics) {
         this.nested.put(metrics.getId(), metrics);
     }
@@ -178,4 +177,9 @@
         return clone;
     }
 
+    public void finish(long bulk) {
+        stop();
+        incrementCount(TraversalMetrics.TRAVERSER_COUNT_ID, 1);
+        incrementCount(TraversalMetrics.ELEMENT_COUNT_ID, bulk);
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/OrP.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/OrP.java
index 1d75515..e1ce7a2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/OrP.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/OrP.java
@@ -21,6 +21,9 @@
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 
 import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 import java.util.function.BiPredicate;
 import java.util.function.Predicate;
 
@@ -29,11 +32,19 @@
  */
 public final class OrP<V> extends ConnectiveP<V> {
 
-    public OrP(final P<V>... predicates) {
+    public OrP(final List<P<V>> predicates) {
         super(predicates);
         this.biPredicate = new OrBiPredicate(this);
     }
 
+    @Deprecated
+    /**
+     * @deprecated As of release 3.2.0-incubating, replaced by {@link OrP(List)}
+     */
+    public OrP(final P<V>... predicates) {
+        this(Arrays.asList(predicates));
+    }
+
     @Override
     public P<V> or(final Predicate<? super V> predicate) {
         if (!(predicate instanceof P))
@@ -45,7 +56,7 @@
     @Override
     public P<V> negate() {
         super.negate();
-        return new AndP(this.predicates.toArray(new P[this.predicates.size()]));
+        return new AndP<>(this.predicates);
     }
 
     @Override
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/PathUtil.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/PathUtil.java
new file mode 100644
index 0000000..ab97836
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/PathUtil.java
@@ -0,0 +1,81 @@
+/*
+ * 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.util;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Parameterizing;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author Ted Wilmes (http://twilmes.org)
+ */
+public class PathUtil {
+
+    private PathUtil() {
+        // static public methods only
+    }
+
+    public static Set<String> getReferencedLabelsAfterStep(Step<?, ?> step) {
+        final Set<String> labels = new HashSet<>();
+        while (!(step instanceof EmptyStep)) {
+            labels.addAll(PathUtil.getReferencedLabels(step));
+            step = step.getNextStep();
+        }
+        return labels;
+    }
+
+    public static Set<String> getReferencedLabels(final Step step) {
+        final Set<String> referencedLabels = new HashSet<>();
+
+        if (step instanceof Parameterizing) { // TODO: we should really make the mutation steps Scoping :|
+            final Parameters parameters = ((Parameterizing) step).getParameters();
+            for (final Traversal.Admin trav : parameters.getTraversals()) {
+                for (final Object ss : trav.getSteps()) {
+                    if (ss instanceof Scoping) {
+                        for (String label : ((Scoping) ss).getScopeKeys()) {
+                            referencedLabels.add(label);
+                        }
+                    }
+                }
+            }
+        }
+
+        if (step instanceof Scoping) {
+            final Set<String> labels = new HashSet<>(((Scoping) step).getScopeKeys());
+            if (step instanceof MatchStep) {
+                // if this is the last step, keep everything, else just add founds
+                if (step.getNextStep() instanceof EmptyStep) {
+                    labels.addAll(((MatchStep) step).getMatchEndLabels());
+                    labels.addAll(((MatchStep) step).getMatchStartLabels());
+                }
+            }
+            referencedLabels.addAll(labels);
+
+        }
+
+        return referencedLabels;
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/PureTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/PureTraversal.java
new file mode 100644
index 0000000..682f0d2
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/PureTraversal.java
@@ -0,0 +1,100 @@
+/*
+ * 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.util;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.process.computer.util.VertexProgramHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+import java.io.Serializable;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class PureTraversal<S, E> implements Serializable, Cloneable {
+
+    private Traversal.Admin<S, E> pureTraversal;
+    private transient Traversal.Admin<S, E> cachedTraversal;
+
+    public PureTraversal(final Traversal.Admin<S, E> pureTraversal) {
+        this.pureTraversal = pureTraversal;
+    }
+
+    public Traversal.Admin<S, E> getPure() {
+        return this.pureTraversal.clone();
+    }
+
+    public Traversal.Admin<S, E> get() {
+        if (null == this.cachedTraversal)
+            this.cachedTraversal = this.pureTraversal.clone();
+        return this.cachedTraversal;
+    }
+
+    public void storeState(final Configuration configuration, final String configurationKey) {
+        try {
+            VertexProgramHelper.serialize(this, configuration, configurationKey);   // the traversal can not be serialized (probably because of lambdas). As such, try direct reference.
+        } catch (final IllegalArgumentException e) {
+            configuration.setProperty(configurationKey, this);
+        }
+    }
+
+    @Override
+    public int hashCode() {
+        return this.pureTraversal.hashCode();
+    }
+
+    @Override
+    public boolean equals(final Object other) {
+        return other instanceof PureTraversal && this.pureTraversal.equals(((PureTraversal) other).pureTraversal);
+    }
+
+    ////////////
+
+    public static <S, E> void storeState(final Configuration configuration, final String configurationKey, final Traversal.Admin<S, E> traversal) {
+        new PureTraversal<>(traversal).storeState(configuration, configurationKey);
+    }
+
+    public static <S, E> PureTraversal<S, E> loadState(final Configuration configuration, final String configurationKey, final Graph graph) {
+        final Object configValue = configuration.getProperty(configurationKey);
+        final PureTraversal<S, E> pureTraversal = (configValue instanceof String ? (PureTraversal<S, E>) VertexProgramHelper.deserialize(configuration, configurationKey) : ((PureTraversal<S, E>) configValue));
+        pureTraversal.pureTraversal.setGraph(graph);
+        return pureTraversal;
+    }
+
+    ///////////
+
+    @Override
+    public String toString() {
+        return this.get().toString();
+    }
+
+    @Override
+    public PureTraversal<S, E> clone() {
+        try {
+            final PureTraversal<S, E> clone = (PureTraversal<S, E>) super.clone();
+            clone.pureTraversal = this.pureTraversal.clone();
+            clone.cachedTraversal = null;
+            return clone;
+        } catch (final CloneNotSupportedException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ScriptTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ScriptTraversal.java
new file mode 100644
index 0000000..1bf13da
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/ScriptTraversal.java
@@ -0,0 +1,73 @@
+/*
+ * 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.util;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.util.ScriptEngineCache;
+
+import javax.script.Bindings;
+import javax.script.ScriptEngine;
+import javax.script.ScriptException;
+
+/**
+ * ScriptTraversal encapsulates a {@link ScriptEngine} and a script which is compiled into a {@link Traversal} at {@link Admin#applyStrategies()}.
+ * This is useful for serializing traversals as the compilation can happen on the remote end where the traversal will ultimately be processed.
+ *
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class ScriptTraversal<S, E> extends DefaultTraversal<S, E> {
+
+    private final TraversalSourceFactory factory;
+    private final String script;
+    private final String scriptEngine;
+    private final Object[] bindings;
+
+    public ScriptTraversal(final TraversalSource traversalSource, final String scriptEngine, final String script, final Object... bindings) {
+        super();
+        this.graph = traversalSource.getGraph();
+        this.factory = new TraversalSourceFactory<>(traversalSource);
+        this.scriptEngine = scriptEngine;
+        this.script = script;
+        this.bindings = bindings;
+        if (this.bindings.length % 2 != 0)
+            throw new IllegalArgumentException("The provided key/value bindings array length must be a multiple of two");
+    }
+
+    @Override
+    public void applyStrategies() throws IllegalStateException {
+        try {
+            final ScriptEngine engine = ScriptEngineCache.get(this.scriptEngine);
+            final Bindings engineBindings = engine.createBindings();
+            engineBindings.put("g", this.factory.createTraversalSource(this.graph));
+            engineBindings.put("graph", this.graph);
+            for (int i = 0; i < this.bindings.length; i = i + 2) {
+                engineBindings.put((String) this.bindings[i], this.bindings[i + 1]);
+            }
+            final Traversal.Admin<S, E> traversal = (Traversal.Admin<S, E>) engine.eval(this.script, engineBindings);
+            traversal.getSideEffects().mergeInto(this.sideEffects);
+            traversal.getSteps().forEach(this::addStep);
+            this.strategies = traversal.getStrategies();
+            super.applyStrategies();
+        } catch (final ScriptException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/SideEffectHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/SideEffectHelper.java
index 36b88af..d605c76 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/SideEffectHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/SideEffectHelper.java
@@ -28,12 +28,20 @@
     private SideEffectHelper() {
     }
 
-    public static void validateSideEffect(final String key, final Object value) throws IllegalArgumentException {
-        if (null == value)
-            throw TraversalSideEffects.Exceptions.sideEffectValueCanNotBeNull();
+    public static void validateSideEffectKey(final String key) throws IllegalArgumentException {
         if (null == key)
             throw TraversalSideEffects.Exceptions.sideEffectKeyCanNotBeNull();
         if (key.isEmpty())
             throw TraversalSideEffects.Exceptions.sideEffectKeyCanNotBeEmpty();
     }
+
+    public static void validateSideEffectValue(final Object value) throws IllegalArgumentException {
+        if (null == value)
+            throw TraversalSideEffects.Exceptions.sideEffectValueCanNotBeNull();
+    }
+
+    public static void validateSideEffectKeyValue(final String key, final Object value) throws IllegalArgumentException {
+        SideEffectHelper.validateSideEffectKey(key);
+        SideEffectHelper.validateSideEffectValue(value);
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/StepPosition.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/StepPosition.java
index 4438543..3616f4a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/StepPosition.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/StepPosition.java
@@ -54,4 +54,8 @@
     public String toString() {
         return this.x + DOT + this.y + DOT + this.z + LEFT_PARENTHESES + this.parentId + RIGHT_PARENTHESES;
     }
+
+    public static boolean isStepId(final String maybeAStepId) {
+        return maybeAStepId.matches("[0-9]+\\.[0-9]+\\.[0-9]+\\([0-9\\.\\(\\)]*\\)");
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanation.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanation.java
index 98cef69..6e3692a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanation.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanation.java
@@ -78,20 +78,46 @@
         return this.traversal;
     }
 
+    @Override
+    public String toString() {
+        return this.prettyPrint(Integer.MAX_VALUE);
+    }
+
+    public String prettyPrint() {
+        return this.prettyPrint(100);
+    }
+
     /**
      * A pretty-print representation of the traversal explanation.
      *
      * @return a {@link String} representation of the traversal explanation
      */
-    @Override
-    public String toString() {
+    public String prettyPrint(final int maxLineLength) {
         final String originalTraversal = "Original Traversal";
         final String finalTraversal = "Final Traversal";
-        final int maxStrategyColumnLength = this.strategyTraversals.stream().map(Pair::getValue0).map(Object::toString).map(String::length).max(Comparator.<Integer>naturalOrder()).orElse(15);
-        final int maxTraversalColumnLength = Stream.concat(Stream.of(Pair.with(null, this.traversal)), this.strategyTraversals.stream()).map(Pair::getValue1).map(Object::toString).map(String::length).max(Comparator.<Integer>naturalOrder()).get();
+        final int maxStrategyColumnLength = this.strategyTraversals.stream()
+                .map(Pair::getValue0)
+                .map(Object::toString)
+                .map(String::length)
+                .max(Comparator.naturalOrder())
+                .orElse(15);
+        final int newLineIndent = maxStrategyColumnLength + 10;
+        final int maxTraversalColumn = maxLineLength - newLineIndent;
+        if (maxTraversalColumn < 1)
+            throw new IllegalArgumentException("The maximum line length is too small to present the " + TraversalExplanation.class.getSimpleName() + ": " + maxLineLength);
+        int largestTraversalColumn = Stream.concat(Stream.of(Pair.with(null, this.traversal)), this.strategyTraversals.stream())
+                .map(Pair::getValue1)
+                .map(Object::toString)
+                .map(s -> wordWrap(s, maxTraversalColumn, newLineIndent))
+                .flatMap(s -> Stream.of(s.split("\n")))
+                .map(String::trim)
+                .map(s -> s.trim().startsWith("[") ? s : "   " + s) // 3 indent on new lines
+                .map(String::length)
+                .max(Comparator.naturalOrder())
+                .get();
 
         final StringBuilder builder = new StringBuilder("Traversal Explanation\n");
-        for (int i = 0; i < (maxStrategyColumnLength + 7 + maxTraversalColumnLength); i++) {
+        for (int i = 0; i < (maxStrategyColumnLength + 7 + largestTraversalColumn); i++) {
             builder.append("=");
         }
         builder.append("\n");
@@ -99,7 +125,7 @@
         for (int i = 0; i < maxStrategyColumnLength - originalTraversal.length() + 7; i++) {
             builder.append(" ");
         }
-        builder.append(this.traversal.toString());
+        builder.append(wordWrap(this.traversal.toString(), maxTraversalColumn, newLineIndent));
         builder.append("\n\n");
         for (final Pair<TraversalStrategy, Traversal.Admin<?, ?>> pairs : this.strategyTraversals) {
             builder.append(pairs.getValue0());
@@ -111,14 +137,41 @@
             for (int i = 0; i < 3; i++) {
                 builder.append(" ");
             }
-            builder.append(pairs.getValue1().toString()).append("\n");
+            builder.append(wordWrap(pairs.getValue1().toString(), maxTraversalColumn, newLineIndent)).append("\n");
         }
         builder.append("\n");
         builder.append(finalTraversal);
         for (int i = 0; i < maxStrategyColumnLength - finalTraversal.length() + 7; i++) {
             builder.append(" ");
         }
-        builder.append(this.strategyTraversals.size() > 0 ? this.strategyTraversals.get(this.strategyTraversals.size() - 1).getValue1() : this.traversal);
+        builder.append(wordWrap((this.strategyTraversals.size() > 0 ?
+                this.strategyTraversals.get(this.strategyTraversals.size() - 1).getValue1().toString() :
+                this.traversal.toString()), maxTraversalColumn, newLineIndent));
+        return builder.toString();
+    }
+
+    private String wordWrap(final String longString, final int maxLengthPerLine, final int newLineIndent) {
+        if (longString.length() <= maxLengthPerLine)
+            return longString;
+
+        StringBuilder builder = new StringBuilder();
+        int counter = 0;
+        for (int i = 0; i < longString.length(); i++) {
+            if (0 == counter) {
+                builder.append(longString.charAt(i));
+            } else if (counter < maxLengthPerLine) {
+                builder.append(longString.charAt(i));
+            } else {
+                builder.append("\n");
+                for (int j = 0; j < newLineIndent; j++) {
+                    builder.append(" ");
+                }
+                builder.append(longString.charAt(i));
+                counter = 0;
+            }
+            counter++;
+        }
+
         return builder.toString();
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
index b5c9fbc..67e96b7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
@@ -18,10 +18,13 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.util;
 
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
+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.lambda.ElementValueTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.lambda.TokenTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.HasContainerHolder;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
@@ -31,6 +34,7 @@
 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.EdgeVertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.LabelStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertyMapStep;
@@ -60,49 +64,83 @@
     private TraversalHelper() {
     }
 
-    public static boolean isLocalStarGraph(final Traversal.Admin<?, ?> traversal) {
-        return isLocalStarGraph(traversal, 'v');
-    }
-
-    private static boolean isLocalStarGraph(final Traversal.Admin<?, ?> traversal, char state) {
+    public static boolean isLocalProperties(final Traversal.Admin<?, ?> traversal) {
         for (final Step step : traversal.getSteps()) {
             if (step instanceof RepeatStep &&
                     ((RepeatStep<?>) step).getGlobalChildren().stream()
                             .flatMap(t -> t.getSteps().stream())
-                            .filter(temp -> temp instanceof VertexStep)
+                            .filter(s -> s instanceof VertexStep)
                             .findAny()
                             .isPresent())  // TODO: is this sufficient?
                 return false;
-            if (step instanceof PropertiesStep && state == 'u')
-                return false;
             else if (step instanceof VertexStep) {
-                if (((VertexStep) step).returnsVertex()) {
-                    if (state == 'u') return false;
-                    if (state == 'v') state = 'u';
-                } else {
-                    state = 'e';
-                }
+                return false;
             } else if (step instanceof EdgeVertexStep) {
-                if (state == 'e') state = 'u';
-            } else if (step instanceof HasContainerHolder && state == 'u') {
-                if (((HasContainerHolder) step).getHasContainers().stream()
-                        .filter(c -> !c.getKey().equals(T.id.getAccessor())) // TODO: are labels available?
-                        .findAny().isPresent()) return false;
+                return false;
             } else if (step instanceof TraversalParent) {
-                final char currState = state;
                 if (((TraversalParent) step).getLocalChildren().stream()
-                        .filter(t -> !isLocalStarGraph(t.asAdmin(), currState))
+                        .filter(t -> !isLocalProperties(t.asAdmin()))
                         .findAny().isPresent()) return false;
             }
         }
         return true;
     }
 
+    public static boolean isLocalStarGraph(final Traversal.Admin<?, ?> traversal) {
+        return 'x' != isLocalStarGraph(traversal, 'v');
+    }
+
+    private static char isLocalStarGraph(final Traversal.Admin<?, ?> traversal, char state) {
+        if (state == 'u' &&
+                (traversal instanceof ElementValueTraversal ||
+                        (traversal instanceof TokenTraversal && !((TokenTraversal) traversal).getToken().equals(T.id))))
+            return 'x';
+        for (final Step step : traversal.getSteps()) {
+            if ((step instanceof PropertiesStep || step instanceof LabelStep || step instanceof PropertyMapStep) && state == 'u')
+                return 'x';
+            else if (step instanceof VertexStep) {
+                if (state == 'u') return 'x';
+                state = ((VertexStep) step).returnsVertex() ? 'u' : 'e';
+            } else if (step instanceof EdgeVertexStep) {
+                state = 'u';
+            } else if (step instanceof HasContainerHolder && state == 'u') {
+                if (((HasContainerHolder) step).getHasContainers().stream()
+                        .filter(c -> !c.getKey().equals(T.id.getAccessor()))
+                        .findAny().isPresent()) return 'x';
+            } else if (step instanceof TraversalParent) {
+                final char currState = state;
+                Set<Character> states = ((TraversalParent) step).getLocalChildren().stream()
+                        .map(t -> isLocalStarGraph(t.asAdmin(), currState))
+                        .collect(Collectors.toSet());
+                if (states.contains('x'))
+                    return 'x';
+                else if (!(step instanceof ByModulating)) {
+                    if (states.contains('u'))
+                        state = 'u';
+                    else if (states.contains('e'))
+                        state = 'e';
+                }
+                states = ((TraversalParent) step).getGlobalChildren().stream()
+                        .map(t -> isLocalStarGraph(t.asAdmin(), currState))
+                        .collect(Collectors.toSet());
+                if (states.contains('x'))
+                    return 'x';
+                else if (states.contains('u'))
+                    state = 'u';
+                else if (states.contains('e'))
+                    state = 'e';
+                if (state != currState && (step instanceof RepeatStep || step instanceof MatchStep))
+                    return 'x';
+            }
+        }
+        return state;
+    }
+
     /**
      * Insert a step before a specified step instance.
      *
      * @param insertStep the step to insert
-     * @param afterStep  the step to insert the new step after
+     * @param afterStep  the step to insert the new step before
      * @param traversal  the traversal on which the action should occur
      */
     public static <S, E> void insertBeforeStep(final Step<S, E> insertStep, final Step<E, ?> afterStep, final Traversal.Admin<?, ?> traversal) {
@@ -206,19 +244,39 @@
     }
 
     public static <S> List<S> getStepsOfAssignableClassRecursively(final Class<S> stepClass, final Traversal.Admin<?, ?> traversal) {
+        return getStepsOfAssignableClassRecursively(null, stepClass, traversal);
+    }
+
+    public static <S> List<S> getStepsOfAssignableClassRecursively(final Scope scope, final Class<S> stepClass, final Traversal.Admin<?, ?> traversal) {
         final List<S> list = new ArrayList<>();
         for (final Step<?, ?> step : traversal.getSteps()) {
             if (stepClass.isAssignableFrom(step.getClass()))
                 list.add((S) step);
             if (step instanceof TraversalParent) {
-                for (final Traversal.Admin<?, ?> globalChild : ((TraversalParent) step).getGlobalChildren()) {
-                    list.addAll(TraversalHelper.getStepsOfAssignableClassRecursively(stepClass, globalChild));
+                if (null == scope || Scope.local.equals(scope)) {
+                    for (final Traversal.Admin<?, ?> localChild : ((TraversalParent) step).getLocalChildren()) {
+                        list.addAll(TraversalHelper.getStepsOfAssignableClassRecursively(stepClass, localChild));
+                    }
+                }
+                if (null == scope || Scope.global.equals(scope)) {
+                    for (final Traversal.Admin<?, ?> globalChild : ((TraversalParent) step).getGlobalChildren()) {
+                        list.addAll(TraversalHelper.getStepsOfAssignableClassRecursively(stepClass, globalChild));
+                    }
                 }
             }
         }
         return list;
     }
 
+    public static boolean isGlobalChild(Traversal.Admin<?, ?> traversal) {
+        while (!(traversal.getParent() instanceof EmptyStep)) {
+            if (traversal.getParent().getLocalChildren().contains(traversal))
+                return false;
+            traversal = traversal.getParent().asStep().getTraversal();
+        }
+        return true;
+    }
+
     /**
      * Determine if the traversal has a step of a particular class.
      *
@@ -253,7 +311,7 @@
 
     /**
      * Determine if the traversal has a step of an assignable class in the current {@link Traversal} and its
-     * child traversals.
+     * local and global child traversals.
      *
      * @param stepClass the step class to look for
      * @param traversal the traversal in which to look for the given step class
@@ -261,13 +319,34 @@
      * given <code>stepClass</code>, otherwise <code>false</code>.
      */
     public static boolean hasStepOfAssignableClassRecursively(final Class stepClass, final Traversal.Admin<?, ?> traversal) {
+        return hasStepOfAssignableClassRecursively(null, stepClass, traversal);
+    }
+
+    /**
+     * Determine if the traversal has a step of an assignable class in the current {@link Traversal} and its
+     * {@link Scope} child traversals.
+     *
+     * @param scope     the child traversal scope to check
+     * @param stepClass the step class to look for
+     * @param traversal the traversal in which to look for the given step class
+     * @return <code>true</code> if any step in the given traversal (and its child traversals) is an instance of the
+     * given <code>stepClass</code>, otherwise <code>false</code>.
+     */
+    public static boolean hasStepOfAssignableClassRecursively(final Scope scope, final Class stepClass, final Traversal.Admin<?, ?> traversal) {
         for (final Step<?, ?> step : traversal.getSteps()) {
             if (stepClass.isAssignableFrom(step.getClass())) {
                 return true;
             }
             if (step instanceof TraversalParent) {
-                for (final Traversal.Admin<?, ?> globalChild : ((TraversalParent) step).getGlobalChildren()) {
-                    if (hasStepOfAssignableClassRecursively(stepClass, globalChild)) return true;
+                if (null == scope || Scope.local.equals(scope)) {
+                    for (final Traversal.Admin<?, ?> localChild : ((TraversalParent) step).getLocalChildren()) {
+                        if (hasStepOfAssignableClassRecursively(stepClass, localChild)) return true;
+                    }
+                }
+                if (null == scope || Scope.global.equals(scope)) {
+                    for (final Traversal.Admin<?, ?> globalChild : ((TraversalParent) step).getGlobalChildren()) {
+                        if (hasStepOfAssignableClassRecursively(stepClass, globalChild)) return true;
+                    }
                 }
             }
         }
@@ -276,7 +355,7 @@
 
     /**
      * Determine if the traversal has any of the supplied steps of an assignable class in the current {@link Traversal}
-     * and its child traversals.
+     * and its global or local child traversals.
      *
      * @param stepClasses the step classes to look for
      * @param traversal   the traversal in which to look for the given step classes
@@ -284,6 +363,20 @@
      * provided in <code>stepClasses</code>, otherwise <code>false</code>.
      */
     public static boolean hasStepOfAssignableClassRecursively(final Collection<Class> stepClasses, final Traversal.Admin<?, ?> traversal) {
+        return hasStepOfAssignableClassRecursively(null, stepClasses, traversal);
+    }
+
+    /**
+     * Determine if the traversal has any of the supplied steps of an assignable class in the current {@link Traversal}
+     * and its {@link Scope} child traversals.
+     *
+     * @param scope       whether to check global or local children (null for both).
+     * @param stepClasses the step classes to look for
+     * @param traversal   the traversal in which to look for the given step classes
+     * @return <code>true</code> if any step in the given traversal (and its child traversals) is an instance of a class
+     * provided in <code>stepClasses</code>, otherwise <code>false</code>.
+     */
+    public static boolean hasStepOfAssignableClassRecursively(final Scope scope, final Collection<Class> stepClasses, final Traversal.Admin<?, ?> traversal) {
         if (stepClasses.size() == 1)
             return hasStepOfAssignableClassRecursively(stepClasses.iterator().next(), traversal);
         for (final Step<?, ?> step : traversal.getSteps()) {
@@ -291,8 +384,15 @@
                 return true;
             }
             if (step instanceof TraversalParent) {
-                for (final Traversal.Admin<?, ?> globalChild : ((TraversalParent) step).getGlobalChildren()) {
-                    if (hasStepOfAssignableClassRecursively(stepClasses, globalChild)) return true;
+                if (null == scope || Scope.local.equals(scope)) {
+                    for (final Traversal.Admin<?, ?> localChild : ((TraversalParent) step).getLocalChildren()) {
+                        if (hasStepOfAssignableClassRecursively(stepClasses, localChild)) return true;
+                    }
+                }
+                if (null == scope || Scope.global.equals(scope)) {
+                    for (final Traversal.Admin<?, ?> globalChild : ((TraversalParent) step).getGlobalChildren()) {
+                        if (hasStepOfAssignableClassRecursively(stepClasses, globalChild)) return true;
+                    }
                 }
             }
         }
@@ -312,6 +412,9 @@
                 return true;
             }
             if (step instanceof TraversalParent) {
+                for (final Traversal.Admin<?, ?> localChild : ((TraversalParent) step).getLocalChildren()) {
+                    if (anyStepRecursively(predicate, localChild)) return true;
+                }
                 for (final Traversal.Admin<?, ?> globalChild : ((TraversalParent) step).getGlobalChildren()) {
                     if (anyStepRecursively(predicate, globalChild)) return true;
                 }
@@ -452,4 +555,12 @@
         return variables;
     }
 
+    public static boolean onGraphComputer(Traversal.Admin<?, ?> traversal) {
+        while (!(traversal.getParent() instanceof EmptyStep)) {
+            if (traversal.getParent().asStep() instanceof TraversalVertexProgramStep)
+                return true;
+            traversal = traversal.getParent().asStep().getTraversal();
+        }
+        return false;
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalInterruptedException.java
similarity index 73%
copy from gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
copy to gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalInterruptedException.java
index cb1aeec..f3db464 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalInterruptedException.java
@@ -16,15 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.process.traversal.step;
+package org.apache.tinkerpop.gremlin.process.traversal.util;
 
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 
 /**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * Thrown if a {@link Traversal} is interrupted during execution. This is an unchecked exception.
  */
-public interface EngineDependent {
-
-    public void onEngine(final TraversalEngine traversalEngine);
-
+public class TraversalInterruptedException extends RuntimeException {
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalMetrics.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalMetrics.java
index b2c70cf..6a54680 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalMetrics.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalMetrics.java
@@ -18,8 +18,6 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.util;
 
-import org.apache.tinkerpop.gremlin.structure.Graph;
-
 import java.util.Collection;
 import java.util.concurrent.TimeUnit;
 
@@ -29,10 +27,6 @@
  * @author Bob Briody (http://bobbriody.com)
  */
 public interface TraversalMetrics {
-    /**
-     * The side-effect key used to store and retrieve the TraversalMetrics for a given Traversal.
-     */
-    public static final String METRICS_KEY = Graph.Hidden.hide("metrics");
 
     /**
      * The MetricsId used to obtain the element count via Metrics.getCount(String countKey)
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
index 35e9991..03e3521 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptFunction.java
@@ -31,16 +31,17 @@
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @deprecated As of release 3.2.0, replaced by {@link ScriptTraversal}.
  */
 public final class TraversalScriptFunction<S, E> implements Function<Graph, Traversal.Admin<S, E>>, Serializable {
 
-    private final TraversalSource.Builder traversalSourceBuilder;
+    private final TraversalSourceFactory traversalSourceFactory;
     private final String scriptEngineName;
     private final String traversalScript;
     private final Object[] bindings;
 
-    public TraversalScriptFunction(final TraversalSource.Builder traversalSourceBuilder, final String scriptEngineName, final String traversalScript, final Object... bindings) {
-        this.traversalSourceBuilder = traversalSourceBuilder;
+    public TraversalScriptFunction(final TraversalSource traversalSource, final String scriptEngineName, final String traversalScript, final Object... bindings) {
+        this.traversalSourceFactory = new TraversalSourceFactory<>(traversalSource);
         this.scriptEngineName = scriptEngineName;
         this.traversalScript = traversalScript;
         this.bindings = bindings;
@@ -52,7 +53,7 @@
         try {
             final ScriptEngine engine = ScriptEngineCache.get(this.scriptEngineName);
             final Bindings engineBindings = engine.createBindings();
-            engineBindings.put("g", this.traversalSourceBuilder.create(graph));
+            engineBindings.put("g", this.traversalSourceFactory.createTraversalSource(graph));
             for (int i = 0; i < this.bindings.length; i = i + 2) {
                 engineBindings.put((String) this.bindings[i], this.bindings[i + 1]);
             }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
index 1998512..4fa6e69 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalScriptHelper.java
@@ -18,8 +18,6 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.util;
 
-import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
 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.GraphTraversalSource;
@@ -27,33 +25,31 @@
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @deprecated As of release 3.2.0, replaced by {@link ScriptTraversal}.
  */
+@Deprecated
 public final class TraversalScriptHelper {
 
     private TraversalScriptHelper() {
     }
 
+    @Deprecated
     public static <S, E> Traversal.Admin<S, E> compute(
             final Graph graph,
-            final TraversalSource.Builder builder,
+            final TraversalSource traversalSource,
             final String scriptEngineName,
             final String traversalScript,
             final Object... bindings) {
 
         try {
-            if (builder.create(graph).getGraphComputer().isPresent()) {
-                final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(builder, scriptEngineName, traversalScript, bindings).create(graph);
-                final ComputerResult result = builder.create(graph).getGraphComputer().get().program(program).submit().get();
-                return program.computerResultTraversal(result);
-            } else {
-                return new TraversalScriptFunction<S, E>(builder, scriptEngineName, traversalScript, bindings).apply(graph);
-            }
+            return new TraversalScriptFunction<S, E>(traversalSource, scriptEngineName, traversalScript, bindings).apply(graph);
         } catch (final Exception e) {
             throw new IllegalStateException(e.getMessage(), e);
         }
     }
 
+    @Deprecated
     public static <S, E> Traversal.Admin<S, E> compute(final String script, final GraphTraversalSource g, final Object... bindings) {
-        return TraversalScriptHelper.compute(g.getGraph().get(), g.asBuilder(), "gremlin-groovy", script, bindings);
+        return new ScriptTraversal<>(g, "gremlin-groovy", script, bindings);
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalSourceFactory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalSourceFactory.java
new file mode 100644
index 0000000..5c11c7e
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalSourceFactory.java
@@ -0,0 +1,52 @@
+/*
+ * 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.util;
+
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+import java.io.Serializable;
+
+/**
+ * {@link TraversalSource} is not {@link Serializable}.
+ * {@code TraversalSourceFactory} can be used to create a serializable representation of a traversal source.
+ * This is is primarily an internal utility class for use and should not be used by standard users.
+ *
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class TraversalSourceFactory<T extends TraversalSource> implements Serializable {
+
+    private final TraversalStrategies traversalStrategies;
+    private final Class<T> traversalSourceClass;
+
+    public TraversalSourceFactory(final T traversalSource) {
+        this.traversalSourceClass = (Class<T>) traversalSource.getClass();
+        this.traversalStrategies = traversalSource.getStrategies();
+    }
+
+    public T createTraversalSource(final Graph graph) {
+        try {
+            return this.traversalSourceClass.getConstructor(Graph.class, TraversalStrategies.class).newInstance(graph, this.traversalStrategies);
+        } catch (final Exception e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalUtil.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalUtil.java
index 8913403..b7ae994 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalUtil.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalUtil.java
@@ -96,6 +96,12 @@
         }
     }
 
+    public static final <S, E> Iterator<E> applyAll(final S start, final Traversal.Admin<S, E> traversal) {
+        traversal.reset();
+        traversal.addStart(traversal.getTraverserGenerator().generate(start, traversal.getStartStep(), 1l));
+        return traversal; // flatMap
+    }
+
     public static final <S, E> boolean test(final S start, final Traversal.Admin<S, E> traversal, final E end) {
         if (null == end) return TraversalUtil.test(start, traversal);
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
index bd9870d..455b1a4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
@@ -23,10 +23,7 @@
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.ComputerTraversalEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
 import org.apache.tinkerpop.gremlin.structure.io.Io;
 import org.apache.tinkerpop.gremlin.structure.io.IoRegistry;
 import org.apache.tinkerpop.gremlin.structure.util.FeatureDescriptor;
@@ -148,26 +145,42 @@
     public GraphComputer compute() throws IllegalArgumentException;
 
     /**
-     * Generate a {@link TraversalSource} using the specified {@code TraversalSource.Builder}. The {@link TraversalSource}
-     * provides methods for creating a {@link Traversal} given the context of {@link TraversalStrategy} implementations
-     * and a {@link GraphComputer}.
+     * Generate a {@link TraversalSource} using the specified {@code TraversalSource} class.
+     * The reusable {@link TraversalSource} provides methods for spawning {@link Traversal} instances.
+     *
+     * @param traversalSourceClass The traversal source class
+     * @param <C>                  The traversal source class
+     */
+    public default <C extends TraversalSource> C traversal(final Class<C> traversalSourceClass) {
+        try {
+            return traversalSourceClass.getConstructor(Graph.class).newInstance(this);
+        } catch (final Exception e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
+
+    /**
+     * Generate a {@link TraversalSource} using the specified {@code TraversalSource.Builder}.
+     * The reusable {@link TraversalSource} provides methods for spawning {@link Traversal} instances.
      *
      * @param sourceBuilder The traversal source builder to use
      * @param <C>           The traversal source class
+     * @deprecated As of release 3.2.0. Please use {@link Graph#traversal(Class)}.
      */
+    @Deprecated
     public default <C extends TraversalSource> C traversal(final TraversalSource.Builder<C> sourceBuilder) {
         return sourceBuilder.create(this);
     }
 
     /**
-     * Generate a {@link GraphTraversalSource} instance using the {@link StandardTraversalEngine}. The
-     * {@link TraversalSource} provides methods for creating a {@link Traversal} given the context of
-     * {@link TraversalStrategy} implementations and a {@link GraphComputer}.
+     * Generate a reusable {@link GraphTraversalSource} instance.
+     * The {@link GraphTraversalSource} provides methods for creating
+     * {@link org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal} instances.
      *
-     * @return A standard graph traversal source
+     * @return A graph traversal source
      */
     public default GraphTraversalSource traversal() {
-        return this.traversal(GraphTraversalSource.build().engine(StandardTraversalEngine.build()));
+        return new GraphTraversalSource(this);
     }
 
     /**
@@ -365,9 +378,9 @@
             public static IllegalArgumentException variableValueCanNotBeNull() {
                 return new IllegalArgumentException("Graph variable value can not be null");
             }
-            
+
             public static UnsupportedOperationException dataTypeOfVariableValueNotSupported(final Object val) {
-            	return dataTypeOfVariableValueNotSupported(val, null);
+                return dataTypeOfVariableValueNotSupported(val, null);
             }
 
             public static UnsupportedOperationException dataTypeOfVariableValueNotSupported(final Object val, final Exception rootCause) {
@@ -1110,6 +1123,7 @@
             return new UnsupportedOperationException("Graph does not support graph computer");
         }
 
+        @Deprecated
         public static IllegalArgumentException traversalEngineNotSupported(final TraversalEngine engine) {
             return new IllegalArgumentException("Graph does not support the provided traversal engine: " + engine.getClass().getCanonicalName());
         }
@@ -1143,15 +1157,15 @@
                     new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id null does not exist in the graph") :
                     new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id " + id + " of type " + id.getClass().getSimpleName() + " does not exist in the graph");
         }
-        
+
         public static NoSuchElementException elementNotFound(final Class<? extends Element> elementClass, final Object id, final Exception rootCause) {
-        	NoSuchElementException elementNotFoundException;
-        	if(null == id)
-        		elementNotFoundException = new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id null does not exist in the graph");
-    		else
-    			elementNotFoundException = new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id " + id + " of type " + id.getClass().getSimpleName() + " does not exist in the graph");
-        	elementNotFoundException.initCause(rootCause);
-			return elementNotFoundException;
+            NoSuchElementException elementNotFoundException;
+            if (null == id)
+                elementNotFoundException = new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id null does not exist in the graph");
+            else
+                elementNotFoundException = new NoSuchElementException("The " + elementClass.getSimpleName().toLowerCase() + " with id " + id + " of type " + id.getClass().getSimpleName() + " does not exist in the graph");
+            elementNotFoundException.initCause(rootCause);
+            return elementNotFoundException;
         }
     }
 
@@ -1231,7 +1245,7 @@
          * default, an empty array is assigned and it is thus assumed that all computers are excluded when an
          * {@code OptOut} annotation is used, therefore this value must be overridden to be more specific.
          */
-        public String[] computers() default { };
+        public String[] computers() default {};
 
     }
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/GraphReader.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/GraphReader.java
index b548f07..a56df63 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/GraphReader.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/GraphReader.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.structure.io;
 
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -31,6 +32,7 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.Iterator;
+import java.util.Optional;
 import java.util.function.Function;
 
 /**
@@ -55,19 +57,33 @@
      * It is up to individual implementations to manage transactions, but it is not required or enforced.  Consult
      * the documentation of an implementation to understand the approach it takes.
      *
-     * @param inputStream a stream containing an entire graph of vertices and edges as defined by the accompanying
-     *                    {@link GraphWriter#writeGraph(OutputStream, Graph)}.
+     * @param inputStream    a stream containing an entire graph of vertices and edges as defined by the accompanying
+     *                       {@link GraphWriter#writeGraph(OutputStream, Graph)}.
      * @param graphToWriteTo the graph to write to when reading from the stream.
      */
     public void readGraph(final InputStream inputStream, final Graph graphToWriteTo) throws IOException;
 
     /**
+     * Reads a single vertex from an {@link InputStream}. This method will filter the read the read vertex by the provided
+     * {@link GraphFilter}. If the graph filter will filter the vertex itself, then the returned {@link Optional} is empty.
+     *
+     * @param inputStream a stream containing at least a single vertex as defined by the accompanying
+     *                    {@link GraphWriter#writeVertex(OutputStream, Vertex)}.
+     * @param graphFilter The {@link GraphFilter} to filter the vertex and its associated edges by.
+     * @return the vertex with filtered edges or {@link Optional#empty()}  if the vertex itself was filtered.
+     * @throws IOException
+     */
+    public default Optional<Vertex> readVertex(final InputStream inputStream, final GraphFilter graphFilter) throws IOException {
+        throw new UnsupportedOperationException(this.getClass().getCanonicalName() + " currently does not support " + GraphFilter.class.getSimpleName() + " deserialization filtering");
+    }
+
+    /**
      * Reads a single vertex from an {@link InputStream}.  This method will read vertex properties but not edges.
      * It is expected that the user will manager their own transaction context with respect to this method (i.e.
      * implementations should not commit the transaction for the user).
      *
-     * @param inputStream a stream containing at least a single vertex as defined by the accompanying
-     *                    {@link GraphWriter#writeVertex(OutputStream, Vertex)}.
+     * @param inputStream        a stream containing at least a single vertex as defined by the accompanying
+     *                           {@link GraphWriter#writeVertex(OutputStream, Vertex)}.
      * @param vertexAttachMethod a function that creates re-attaches a {@link Vertex} to a {@link Host} object.
      */
     public Vertex readVertex(final InputStream inputStream, final Function<Attachable<Vertex>, Vertex> vertexAttachMethod) throws IOException;
@@ -77,10 +93,10 @@
      * given the direction supplied as an argument.  It is expected that the user will manager their own transaction
      * context with respect to this method (i.e. implementations should not commit the transaction for the user).
      *
-     * @param inputStream a stream containing at least one {@link Vertex} as defined by the accompanying
-     *                    {@link GraphWriter#writeVertices(OutputStream, Iterator, Direction)} method.
-     * @param vertexAttachMethod a function that creates re-attaches a {@link Vertex} to a {@link Host} object.
-     * @param edgeAttachMethod a function that creates re-attaches a {@link Edge} to a {@link Host} object.
+     * @param inputStream                a stream containing at least one {@link Vertex} as defined by the accompanying
+     *                                   {@link GraphWriter#writeVertices(OutputStream, Iterator, Direction)} method.
+     * @param vertexAttachMethod         a function that creates re-attaches a {@link Vertex} to a {@link Host} object.
+     * @param edgeAttachMethod           a function that creates re-attaches a {@link Edge} to a {@link Host} object.
      * @param attachEdgesOfThisDirection only edges of this direction are passed to the {@code edgeMaker}.
      */
     public Vertex readVertex(final InputStream inputStream,
@@ -95,11 +111,11 @@
      * transaction context with respect to this method (i.e. implementations should not commit the transaction for
      * the user).
      *
-     * @param inputStream a stream containing at least one {@link Vertex} as defined by the accompanying
-     *                    {@link GraphWriter#writeVertices(OutputStream, Iterator, Direction)} or
-     *                    {@link GraphWriter#writeVertices(OutputStream, Iterator)} methods.
-     * @param vertexAttachMethod a function that creates re-attaches a {@link Vertex} to a {@link Host} object.
-     * @param edgeAttachMethod a function that creates re-attaches a {@link Edge} to a {@link Host} object.
+     * @param inputStream                a stream containing at least one {@link Vertex} as defined by the accompanying
+     *                                   {@link GraphWriter#writeVertices(OutputStream, Iterator, Direction)} or
+     *                                   {@link GraphWriter#writeVertices(OutputStream, Iterator)} methods.
+     * @param vertexAttachMethod         a function that creates re-attaches a {@link Vertex} to a {@link Host} object.
+     * @param edgeAttachMethod           a function that creates re-attaches a {@link Edge} to a {@link Host} object.
      * @param attachEdgesOfThisDirection only edges of this direction are passed to the {@code edgeMaker}.
      */
     public Iterator<Vertex> readVertices(final InputStream inputStream,
@@ -112,8 +128,8 @@
      * transaction context with respect to this method (i.e. implementations should not commit the transaction for
      * the user).
      *
-     * @param inputStream a stream containing at least one {@link Edge} as defined by the accompanying
-     *                    {@link GraphWriter#writeEdge(OutputStream, Edge)} method.
+     * @param inputStream      a stream containing at least one {@link Edge} as defined by the accompanying
+     *                         {@link GraphWriter#writeEdge(OutputStream, Edge)} method.
      * @param edgeAttachMethod a function that creates re-attaches a {@link Edge} to a {@link Host} object.
      */
     public Edge readEdge(final InputStream inputStream, final Function<Attachable<Edge>, Edge> edgeAttachMethod) throws IOException;
@@ -123,8 +139,8 @@
      * transaction context with respect to this method (i.e. implementations should not commit the transaction for
      * the user).
      *
-     * @param inputStream a stream containing at least one {@link VertexProperty} as written by the accompanying
-     *                    {@link GraphWriter#writeVertexProperty(OutputStream, VertexProperty)} method.
+     * @param inputStream                a stream containing at least one {@link VertexProperty} as written by the accompanying
+     *                                   {@link GraphWriter#writeVertexProperty(OutputStream, VertexProperty)} method.
      * @param vertexPropertyAttachMethod a function that creates re-attaches a {@link VertexProperty} to a
      *                                   {@link Host} object.
      * @return the value returned by the attach method.
@@ -137,8 +153,8 @@
      * transaction context with respect to this method (i.e. implementations should not commit the transaction for
      * the user).
      *
-     * @param inputStream a stream containing at least one {@link Property} as written by the accompanying
-     *                    {@link GraphWriter#writeProperty(OutputStream, Property)} method.
+     * @param inputStream          a stream containing at least one {@link Property} as written by the accompanying
+     *                             {@link GraphWriter#writeProperty(OutputStream, Property)} method.
      * @param propertyAttachMethod a function that creates re-attaches a {@link Property} to a {@link Host} object.
      * @return the value returned by the attach method.
      */
@@ -148,8 +164,8 @@
     /**
      * Reads an arbitrary object using the registered serializers.
      *
-     * @param inputStream  a stream containing an object.
-     * @param clazz the class expected to be in the stream - may or may not be used by the underlying implementation.
+     * @param inputStream a stream containing an object.
+     * @param clazz       the class expected to be in the stream - may or may not be used by the underlying implementation.
      */
     public <C> C readObject(final InputStream inputStream, final Class<? extends C> clazz) throws IOException;
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Storage.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Storage.java
index 1779b38..533801b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Storage.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Storage.java
@@ -96,21 +96,21 @@
      * Get the vertices at the specified graph location.
      *
      * @param location    the location of the graph (or the root location and search will be made)
-     * @param parserClass the class of the parser that understands the graph format
+     * @param readerClass the class of the parser that understands the graph format
      * @param totalLines  the total number of lines of the graph to return
      * @return an iterator of vertices.
      */
-    public Iterator<Vertex> head(final String location, final Class parserClass, final int totalLines);
+    public Iterator<Vertex> head(final String location, final Class readerClass, final int totalLines);
 
     /**
      * Get the vertices at the specified graph location.
      *
      * @param location    the location of the graph (or the root location and search will be made)
-     * @param parserClass the class of the parser that understands the graph format
+     * @param readerClass the class of the parser that understands the graph format
      * @return an iterator of vertices.
      */
-    public default Iterator<Vertex> head(final String location, final Class parserClass) {
-        return this.head(location, parserClass, Integer.MAX_VALUE);
+    public default Iterator<Vertex> head(final String location, final Class readerClass) {
+        return this.head(location, readerClass, Integer.MAX_VALUE);
     }
 
     /**
@@ -118,11 +118,11 @@
      *
      * @param location    the root location of the data
      * @param memoryKey   the memory key
-     * @param parserClass the class of the parser that understands the memory format
+     * @param readerClass the class of the parser that understands the memory format
      * @param totalLines  the total number of key-values to return
      * @return an iterator of key-values.
      */
-    public <K, V> Iterator<KeyValue<K, V>> head(final String location, final String memoryKey, final Class parserClass, final int totalLines);
+    public <K, V> Iterator<KeyValue<K, V>> head(final String location, final String memoryKey, final Class readerClass, final int totalLines);
 
 
     /**
@@ -130,10 +130,10 @@
      *
      * @param location    the root location of the data
      * @param memoryKey   the memory key
-     * @param parserClass the class of the parser that understands the memory format
+     * @param readerClass the class of the parser that understands the memory format
      * @return an iterator of key-values.
      */
-    public default <K, V> Iterator<KeyValue<K, V>> head(final String location, final String memoryKey, final Class parserClass) {
-        return this.head(location, memoryKey, parserClass, Integer.MAX_VALUE);
+    public default <K, V> Iterator<KeyValue<K, V>> head(final String location, final String memoryKey, final Class readerClass) {
+        return this.head(location, memoryKey, readerClass, Integer.MAX_VALUE);
     }
 }
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 d652932..d5b7681 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
@@ -18,11 +18,23 @@
  */
 package org.apache.tinkerpop.gremlin.structure.io.gryo;
 
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
 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.filter.RangeGlobalStep;
+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.MeanGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.TreeStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ProfileStep;
 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;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_LP_O_S_SE_SL_Traverser;
@@ -33,9 +45,9 @@
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.O_OB_S_SE_SL_Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.O_Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
-import org.apache.tinkerpop.gremlin.process.traversal.util.DependantMutableMetrics;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalMetrics;
+import org.apache.tinkerpop.gremlin.process.traversal.util.ImmutableMetrics;
 import org.apache.tinkerpop.gremlin.process.traversal.util.MutableMetrics;
-import org.apache.tinkerpop.gremlin.process.traversal.util.StandardTraversalMetrics;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalExplanation;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -46,6 +58,8 @@
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.io.IoRegistry;
 import org.apache.tinkerpop.gremlin.structure.io.Mapper;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.shaded.ShadedSerializerAdapter;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedPath;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedProperty;
@@ -57,7 +71,7 @@
 import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex;
 import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertexProperty;
 import org.apache.tinkerpop.gremlin.structure.util.star.StarGraph;
-import org.apache.tinkerpop.gremlin.structure.util.star.StarGraphGryoSerializer;
+import org.apache.tinkerpop.gremlin.structure.util.star.StarGraphSerializer;
 import org.apache.tinkerpop.shaded.kryo.ClassResolver;
 import org.apache.tinkerpop.shaded.kryo.Kryo;
 import org.apache.tinkerpop.shaded.kryo.KryoSerializable;
@@ -66,7 +80,6 @@
 import org.apache.tinkerpop.shaded.kryo.util.DefaultStreamFactory;
 import org.apache.tinkerpop.shaded.kryo.util.MapReferenceResolver;
 import org.javatuples.Pair;
-import org.javatuples.Triplet;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -84,6 +97,7 @@
 import java.time.YearMonth;
 import java.time.ZoneOffset;
 import java.time.ZonedDateTime;
+import java.util.AbstractMap;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
@@ -94,11 +108,14 @@
 import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Set;
 import java.util.TimeZone;
 import java.util.TreeMap;
 import java.util.TreeSet;
@@ -141,13 +158,15 @@
 public final class GryoMapper implements Mapper<Kryo> {
     public static final byte[] GIO = "gio".getBytes();
     public static final byte[] HEADER = Arrays.copyOf(GIO, 16);
-    private final List<Triplet<Class, Function<Kryo, Serializer>, Integer>> serializationList;
+    private final List<TypeRegistration<?>> typeRegistrations;
     private final boolean registrationRequired;
     private final boolean referenceTracking;
     private final Supplier<ClassResolver> classResolver;
 
     private GryoMapper(final Builder builder) {
-        this.serializationList = builder.serializationList;
+        this.typeRegistrations = builder.typeRegistrations;
+        validate();
+
         this.registrationRequired = builder.registrationRequired;
         this.referenceTracking = builder.referenceTracking;
         this.classResolver = builder.classResolver;
@@ -159,25 +178,38 @@
         kryo.addDefaultSerializer(Map.Entry.class, new EntrySerializer());
         kryo.setRegistrationRequired(registrationRequired);
         kryo.setReferences(referenceTracking);
-
-        serializationList.forEach(p -> {
-            final Function<Kryo, Serializer> serializer = p.getValue1();
-            if (null == serializer)
-                kryo.register(p.getValue0(), kryo.getDefaultSerializer(p.getValue0()), p.getValue2());
-            else
-                kryo.register(p.getValue0(), serializer.apply(kryo), p.getValue2());
-        });
+        for (TypeRegistration tr : typeRegistrations)
+            tr.registerWith(kryo);
         return kryo;
     }
 
     public List<Class> getRegisteredClasses() {
-        return this.serializationList.stream().map(Triplet::getValue0).collect(Collectors.toList());
+        return this.typeRegistrations.stream().map(TypeRegistration::getTargetClass).collect(Collectors.toList());
+    }
+
+    public List<TypeRegistration<?>> getTypeRegistrations() {
+        return typeRegistrations;
     }
 
     public static Builder build() {
         return new Builder();
     }
 
+    private void validate() {
+        final Set<Integer> duplicates = new HashSet<>();
+
+        final Set<Integer> ids = new HashSet<>();
+        typeRegistrations.forEach(t -> {
+            if (!ids.contains(t.getId()))
+                ids.add(t.getId());
+            else
+                duplicates.add(t.getId());
+        });
+
+        if (duplicates.size() > 0)
+            throw new IllegalStateException("There are duplicate kryo identifiers in use: " + duplicates);
+    }
+
     /**
      * A builder to construct a {@link GryoMapper} instance.
      */
@@ -212,106 +244,121 @@
          * Note that the following are pre-registered boolean, Boolean, byte, Byte, char, Character, double, Double,
          * int, Integer, float, Float, long, Long, short, Short, String, void.
          */
-        private final List<Triplet<Class, Function<Kryo, Serializer>, Integer>> serializationList = new ArrayList<Triplet<Class, Function<Kryo, Serializer>, Integer>>() {{
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(byte[].class, null, 25));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(char[].class, null, 26));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(short[].class, null, 27));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(int[].class, null, 28));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(long[].class, null, 29));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(float[].class, null, 30));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(double[].class, null, 31));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(String[].class, null, 32));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Object[].class, null, 33));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(ArrayList.class, null, 10));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(BigInteger.class, null, 34));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(BigDecimal.class, null, 35));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Calendar.class, null, 39));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Class.class, null, 41));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Collection.class, null, 37));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Collections.EMPTY_LIST.getClass(), null, 51));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Collections.EMPTY_MAP.getClass(), null, 52));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Collections.EMPTY_SET.getClass(), null, 53));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Collections.singleton(null).getClass(), null, 54));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Collections.singletonList(null).getClass(), null, 24));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Collections.singletonMap(null, null).getClass(), null, 23));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Contains.class, null, 49));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Currency.class, null, 40));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Date.class, null, 38));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Direction.class, null, 12));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(DetachedEdge.class, null, 21));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(DetachedVertexProperty.class, null, 20));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(DetachedProperty.class, null, 18));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(DetachedVertex.class, null, 19));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(DetachedPath.class, null, 60));
+        private final List<TypeRegistration<?>> typeRegistrations = new ArrayList<TypeRegistration<?>>() {{
+            add(GryoTypeReg.of(byte[].class, 25));
+            add(GryoTypeReg.of(char[].class, 26));
+            add(GryoTypeReg.of(short[].class, 27));
+            add(GryoTypeReg.of(int[].class, 28));
+            add(GryoTypeReg.of(long[].class, 29));
+            add(GryoTypeReg.of(float[].class, 30));
+            add(GryoTypeReg.of(double[].class, 31));
+            add(GryoTypeReg.of(String[].class, 32));
+            add(GryoTypeReg.of(Object[].class, 33));
+            add(GryoTypeReg.of(ArrayList.class, 10));
+            add(GryoTypeReg.of(BigInteger.class, 34));
+            add(GryoTypeReg.of(BigDecimal.class, 35));
+            add(GryoTypeReg.of(Calendar.class, 39));
+            add(GryoTypeReg.of(Class.class, 41));
+            add(GryoTypeReg.of(Collection.class, 37));
+            add(GryoTypeReg.of(Collections.EMPTY_LIST.getClass(), 51));
+            add(GryoTypeReg.of(Collections.EMPTY_MAP.getClass(), 52));
+            add(GryoTypeReg.of(Collections.EMPTY_SET.getClass(), 53));
+            add(GryoTypeReg.of(Collections.singleton(null).getClass(), 54));
+            add(GryoTypeReg.of(Collections.singletonList(null).getClass(), 24));
+            add(GryoTypeReg.of(Collections.singletonMap(null, null).getClass(), 23));
+            add(GryoTypeReg.of(Contains.class, 49));
+            add(GryoTypeReg.of(Currency.class, 40));
+            add(GryoTypeReg.of(Date.class, 38));
+            add(GryoTypeReg.of(Direction.class, 12));
+            add(GryoTypeReg.of(DetachedEdge.class, 21));
+            add(GryoTypeReg.of(DetachedVertexProperty.class, 20));
+            add(GryoTypeReg.of(DetachedProperty.class, 18));
+            add(GryoTypeReg.of(DetachedVertex.class, 19));
+            add(GryoTypeReg.of(DetachedPath.class, 60));
             // skip 14
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(EnumSet.class, null, 46));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(HashMap.class, null, 11));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(HashMap.Entry.class, null, 16));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(HASH_MAP_NODE, null, 92));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(KryoSerializable.class, null, 36));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(LinkedHashMap.class, null, 47));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(LinkedHashSet.class, null, 71));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(LINKED_HASH_MAP_ENTRY_CLASS, null, 15));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Locale.class, null, 22));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(StringBuffer.class, null, 43));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(StringBuilder.class, null, 44));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(T.class, null, 48));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(TimeZone.class, null, 42));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(TreeMap.class, null, 45));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(TreeSet.class, null, 50));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(UUID.class, kryo -> new UUIDSerializer(), 17));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(URI.class, kryo -> new URISerializer(), 72));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(VertexTerminator.class, null, 13));
+            add(GryoTypeReg.of(EnumSet.class, 46));
+            add(GryoTypeReg.of(HashMap.class, 11));
+            add(GryoTypeReg.of(HashMap.Entry.class, 16));
+            add(GryoTypeReg.of(HASH_MAP_NODE, 92));
+            add(GryoTypeReg.of(KryoSerializable.class, 36));
+            add(GryoTypeReg.of(LinkedHashMap.class, 47));
+            add(GryoTypeReg.of(LinkedHashSet.class, 71));
+            add(GryoTypeReg.of(LinkedList.class, 116));
+            add(GryoTypeReg.of(LINKED_HASH_MAP_ENTRY_CLASS, 15));
+            add(GryoTypeReg.of(Locale.class, 22));
+            add(GryoTypeReg.of(StringBuffer.class, 43));
+            add(GryoTypeReg.of(StringBuilder.class, 44));
+            add(GryoTypeReg.of(T.class, 48));
+            add(GryoTypeReg.of(TimeZone.class, 42));
+            add(GryoTypeReg.of(TreeMap.class, 45));
+            add(GryoTypeReg.of(TreeSet.class, 50));
+            add(GryoTypeReg.of(UUID.class, 17, new UUIDSerializer()));
+            add(GryoTypeReg.of(URI.class, 72, new URISerializer()));
+            add(GryoTypeReg.of(VertexTerminator.class, 13));
+            add(GryoTypeReg.of(AbstractMap.SimpleEntry.class, 120));
+            add(GryoTypeReg.of(AbstractMap.SimpleImmutableEntry.class, 121)); // ***LAST ID***
 
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(ReferenceEdge.class, null, 81));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(ReferenceVertexProperty.class, null, 82));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(ReferenceProperty.class, null, 83));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(ReferenceVertex.class, null, 84));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(ReferencePath.class, null, 85));
+            add(GryoTypeReg.of(ReferenceEdge.class, 81));
+            add(GryoTypeReg.of(ReferenceVertexProperty.class, 82));
+            add(GryoTypeReg.of(ReferenceProperty.class, 83));
+            add(GryoTypeReg.of(ReferenceVertex.class, 84));
+            add(GryoTypeReg.of(ReferencePath.class, 85));
 
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(StarGraph.class, kryo -> StarGraphGryoSerializer.with(Direction.BOTH), 86));
+            add(GryoTypeReg.of(StarGraph.class, 86, new StarGraphSerializer(Direction.BOTH, new GraphFilter())));
 
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Edge.class, kryo -> new GryoSerializers.EdgeSerializer(), 65));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Vertex.class, kryo -> new GryoSerializers.VertexSerializer(), 66));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Property.class, kryo -> new GryoSerializers.PropertySerializer(), 67));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(VertexProperty.class, kryo -> new GryoSerializers.VertexPropertySerializer(), 68));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Path.class, kryo -> new GryoSerializers.PathSerializer(), 59));
+            add(GryoTypeReg.of(Edge.class, 65, new GryoSerializers.EdgeSerializer()));
+            add(GryoTypeReg.of(Vertex.class, 66, new GryoSerializers.VertexSerializer()));
+            add(GryoTypeReg.of(Property.class, 67, new GryoSerializers.PropertySerializer()));
+            add(GryoTypeReg.of(VertexProperty.class, 68, new GryoSerializers.VertexPropertySerializer()));
+            add(GryoTypeReg.of(Path.class, 59, new GryoSerializers.PathSerializer()));
             // skip 55
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(B_O_Traverser.class, null, 75));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(O_Traverser.class, null, 76));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(B_LP_O_P_S_SE_SL_Traverser.class, null, 77));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(B_O_S_SE_SL_Traverser.class, null, 78));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(B_LP_O_S_SE_SL_Traverser.class, null, 87));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(O_OB_S_SE_SL_Traverser.class, null, 89));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(LP_O_OB_S_SE_SL_Traverser.class, null, 90));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(LP_O_OB_P_S_SE_SL_Traverser.class, null, 91));
+            add(GryoTypeReg.of(B_O_Traverser.class, 75));
+            add(GryoTypeReg.of(O_Traverser.class, 76));
+            add(GryoTypeReg.of(B_LP_O_P_S_SE_SL_Traverser.class, 77));
+            add(GryoTypeReg.of(B_O_S_SE_SL_Traverser.class, 78));
+            add(GryoTypeReg.of(B_LP_O_S_SE_SL_Traverser.class, 87));
+            add(GryoTypeReg.of(O_OB_S_SE_SL_Traverser.class, 89));
+            add(GryoTypeReg.of(LP_O_OB_S_SE_SL_Traverser.class, 90));
+            add(GryoTypeReg.of(LP_O_OB_P_S_SE_SL_Traverser.class, 91));
 
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(TraverserSet.class, null, 58));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Tree.class, null, 61));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(HashSet.class, null, 62));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(BulkSet.class, null, 64));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(MutableMetrics.class, null, 69));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(StandardTraversalMetrics.class, null, 70));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(MapMemory.class, null, 73));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(MapReduce.NullObject.class, null, 74));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(AtomicLong.class, null, 79));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(DependantMutableMetrics.class, null, 80));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Pair.class, kryo -> new PairSerializer(), 88));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(TraversalExplanation.class, kryo -> new JavaSerializer(), 106)); // ***LAST ID**
+            add(GryoTypeReg.of(TraverserSet.class, 58));
+            add(GryoTypeReg.of(Tree.class, 61));
+            add(GryoTypeReg.of(HashSet.class, 62));
+            add(GryoTypeReg.of(BulkSet.class, 64));
+            add(GryoTypeReg.of(MutableMetrics.class, 69));
+            add(GryoTypeReg.of(ImmutableMetrics.class, 115));
+            add(GryoTypeReg.of(DefaultTraversalMetrics.class, 70));
+            add(GryoTypeReg.of(MapMemory.class, 73));
+            add(GryoTypeReg.of(MapReduce.NullObject.class, 74));
+            add(GryoTypeReg.of(AtomicLong.class, 79));
+            add(GryoTypeReg.of(Pair.class, 88, new PairSerializer()));
+            add(GryoTypeReg.of(TraversalExplanation.class, 106, new JavaSerializer()));
 
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Duration.class, kryo -> new JavaTimeSerializers.DurationSerializer(), 93));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Instant.class, kryo -> new JavaTimeSerializers.InstantSerializer(), 94));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(LocalDate.class, kryo -> new JavaTimeSerializers.LocalDateSerializer(), 95));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(LocalDateTime.class, kryo -> new JavaTimeSerializers.LocalDateTimeSerializer(), 96));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(LocalTime.class, kryo -> new JavaTimeSerializers.LocalTimeSerializer(), 97));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(MonthDay.class, kryo -> new JavaTimeSerializers.MonthDaySerializer(), 98));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(OffsetDateTime.class, kryo -> new JavaTimeSerializers.OffsetDateTimeSerializer(), 99));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(OffsetTime.class, kryo -> new JavaTimeSerializers.OffsetTimeSerializer(), 100));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Period.class, kryo -> new JavaTimeSerializers.PeriodSerializer(), 101));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Year.class, kryo -> new JavaTimeSerializers.YearSerializer(), 102));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(YearMonth.class, kryo -> new JavaTimeSerializers.YearMonthSerializer(), 103));
-            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(GryoTypeReg.of(Duration.class, 93, new JavaTimeSerializers.DurationSerializer()));
+            add(GryoTypeReg.of(Instant.class, 94, new JavaTimeSerializers.InstantSerializer()));
+            add(GryoTypeReg.of(LocalDate.class, 95, new JavaTimeSerializers.LocalDateSerializer()));
+            add(GryoTypeReg.of(LocalDateTime.class, 96, new JavaTimeSerializers.LocalDateTimeSerializer()));
+            add(GryoTypeReg.of(LocalTime.class, 97, new JavaTimeSerializers.LocalTimeSerializer()));
+            add(GryoTypeReg.of(MonthDay.class, 98, new JavaTimeSerializers.MonthDaySerializer()));
+            add(GryoTypeReg.of(OffsetDateTime.class, 99, new JavaTimeSerializers.OffsetDateTimeSerializer()));
+            add(GryoTypeReg.of(OffsetTime.class, 100, new JavaTimeSerializers.OffsetTimeSerializer()));
+            add(GryoTypeReg.of(Period.class, 101, new JavaTimeSerializers.PeriodSerializer()));
+            add(GryoTypeReg.of(Year.class, 102, new JavaTimeSerializers.YearSerializer()));
+            add(GryoTypeReg.of(YearMonth.class, 103, new JavaTimeSerializers.YearMonthSerializer()));
+            add(GryoTypeReg.of(ZonedDateTime.class, 104, new JavaTimeSerializers.ZonedDateTimeSerializer()));
+            add(GryoTypeReg.of(ZoneOffset.class, 105, new JavaTimeSerializers.ZoneOffsetSerializer()));
+
+            add(GryoTypeReg.of(Operator.class, 107));
+            add(GryoTypeReg.of(FoldStep.FoldBiOperator.class, 108));
+            add(GryoTypeReg.of(GroupCountStep.GroupCountBiOperator.class, 109));
+            add(GryoTypeReg.of(GroupStep.GroupBiOperator.class, 117, new JavaSerializer())); // because they contain traversals
+            add(GryoTypeReg.of(MeanGlobalStep.MeanGlobalBiOperator.class, 110));
+            add(GryoTypeReg.of(MeanGlobalStep.MeanNumber.class, 111));
+            add(GryoTypeReg.of(TreeStep.TreeBiOperator.class, 112));
+            add(GryoTypeReg.of(GroupStepV3d0.GroupBiOperatorV3d0.class, 113));
+            add(GryoTypeReg.of(RangeGlobalStep.RangeBiOperator.class, 114));
+            add(GryoTypeReg.of(OrderGlobalStep.OrderBiOperator.class, 118, new JavaSerializer())); // because they contain traversals
+            add(GryoTypeReg.of(ProfileStep.ProfileBiOperator.class, 119));
         }};
 
         private final List<IoRegistry> registries = new ArrayList<>();
@@ -326,6 +373,20 @@
         private Supplier<ClassResolver> classResolver = GryoClassResolver::new;
 
         private Builder() {
+            // Validate the default registrations
+            // For justification of these default registration rules, see TinkerPopKryoRegistrator
+            for (TypeRegistration<?> tr : typeRegistrations) {
+                if (tr.hasSerializer() /* no serializer is acceptable */ &&
+                        null == tr.getSerializerShim() /* a shim serializer is acceptable */ &&
+                        !(tr.getShadedSerializer() instanceof JavaSerializer) /* shaded JavaSerializer is acceptable */) {
+                    // everything else is invalid
+                    final String msg = String.format("The default GryoMapper type registration %s is invalid.  " +
+                                    "It must supply either an implementation of %s or %s, but supplies neither.  " +
+                                    "This is probably a bug in GryoMapper's default serialization class registrations.", tr,
+                            SerializerShim.class.getCanonicalName(), JavaSerializer.class.getCanonicalName());
+                    throw new IllegalStateException(msg);
+                }
+            }
         }
 
         /**
@@ -354,29 +415,41 @@
         }
 
         /**
-         * Register custom classes to serializes with gryo using default serialization.
+         * Register custom classes to serializes with gryo using default serialization. Note that calling this method
+         * for a class that is already registered will override that registration.
          */
         public Builder addCustom(final Class... custom) {
-            if (custom != null && custom.length > 0)
-                serializationList.addAll(Arrays.asList(custom).stream()
-                        .map(c -> Triplet.<Class, Function<Kryo, Serializer>, Integer>with(c, null, currentSerializationId.getAndIncrement()))
-                        .collect(Collectors.<Triplet<Class, Function<Kryo, Serializer>, Integer>>toList()));
+            if (custom != null && custom.length > 0) {
+                for (Class c : custom) {
+                    addOrOverrideRegistration(c, id -> GryoTypeReg.of(c, id));
+                }
+            }
             return this;
         }
 
         /**
-         * Register custom class to serialize with a custom serialization class.
+         * Register custom class to serialize with a custom serialization class. Note that calling this method for
+         * a class that is already registered will override that registration.
          */
         public Builder addCustom(final Class clazz, final Serializer serializer) {
-            serializationList.add(Triplet.with(clazz, kryo -> serializer, currentSerializationId.getAndIncrement()));
+            addOrOverrideRegistration(clazz, id -> GryoTypeReg.of(clazz, id, serializer));
             return this;
         }
 
         /**
-         * Register a custom class to serialize with a custom serializer as returned from a {@link Function}.
+         * Register custom class to serialize with a custom serialization shim.
          */
-        public Builder addCustom(final Class clazz, final Function<Kryo, Serializer> serializer) {
-            serializationList.add(Triplet.with(clazz, serializer, currentSerializationId.getAndIncrement()));
+        public Builder addCustom(final Class clazz, final SerializerShim serializer) {
+            addOrOverrideRegistration(clazz, id -> GryoTypeReg.of(clazz, id, serializer));
+            return this;
+        }
+
+        /**
+         * Register a custom class to serialize with a custom serializer as returned from a {@link Function}. Note
+         * that calling this method for a class that is already registered will override that registration.
+         */
+        public Builder addCustom(final Class clazz, final Function<Kryo, Serializer> functionOfKryo) {
+            addOrOverrideRegistration(clazz, id -> GryoTypeReg.of(clazz, id, functionOfKryo));
             return this;
         }
 
@@ -422,14 +495,143 @@
                         addCustom(p.getValue0(), (Function<Kryo, Serializer>) p.getValue1());
                     else
                         throw new IllegalStateException(String.format(
-                                "Unexpected value provided by the %s for %s - expects [null, %s implementation or Function<%s, %s>]",
-                                IoRegistry.class.getSimpleName(), p.getValue0().getClass().getSimpleName(),
+                                "Unexpected value provided by %s for serializable class %s - expected a parameter in [null, %s implementation or Function<%s, %s>], but received %s",
+                                registry.getClass().getSimpleName(), p.getValue0().getClass().getCanonicalName(),
                                 Serializer.class.getName(), Kryo.class.getSimpleName(),
-                                Serializer.class.getSimpleName()));
+                                Serializer.class.getSimpleName(), p.getValue1()));
                 });
             });
 
             return new GryoMapper(this);
         }
+
+        private <T> void addOrOverrideRegistration(final Class<?> clazz,
+                                                   final Function<Integer, TypeRegistration<T>> newRegistrationBuilder) {
+            final Iterator<TypeRegistration<?>> iter = typeRegistrations.iterator();
+            Integer registrationId = null;
+            while (iter.hasNext()) {
+                final TypeRegistration<?> existingRegistration = iter.next();
+                if (existingRegistration.getTargetClass().equals(clazz)) {
+                    // when overridding a registration, use the old id
+                    registrationId = existingRegistration.getId();
+                    // remove the old registration (we install its override below)
+                    iter.remove();
+                    break;
+                }
+            }
+            if (null == registrationId) {
+                // when not overridding a registration, get an id from the counter
+                registrationId = currentSerializationId.getAndIncrement();
+            }
+            typeRegistrations.add(newRegistrationBuilder.apply(registrationId));
+        }
+    }
+
+    private static class GryoTypeReg<T> implements TypeRegistration<T> {
+
+        private final Class<T> clazz;
+        private final Serializer<T> shadedSerializer;
+        private final SerializerShim<T> serializerShim;
+        private final Function<Kryo, Serializer> functionOfShadedKryo;
+        private final int id;
+
+        private GryoTypeReg(final Class<T> clazz,
+                            final Serializer<T> shadedSerializer,
+                            final SerializerShim<T> serializerShim,
+                            final Function<Kryo, Serializer> functionOfShadedKryo,
+                            final int id) {
+            this.clazz = clazz;
+            this.shadedSerializer = shadedSerializer;
+            this.serializerShim = serializerShim;
+            this.functionOfShadedKryo = functionOfShadedKryo;
+            this.id = id;
+
+            int serializerCount = 0;
+            if (null != this.shadedSerializer)
+                serializerCount++;
+            if (null != this.serializerShim)
+                serializerCount++;
+            if (null != this.functionOfShadedKryo)
+                serializerCount++;
+
+            if (1 < serializerCount) {
+                final String msg = String.format(
+                        "GryoTypeReg accepts at most one kind of serializer, but multiple " +
+                                "serializers were supplied for class %s (id %s).  " +
+                                "Shaded serializer: %s.  Shim serializer: %s.  Shaded serializer function: %s.",
+                        this.clazz.getCanonicalName(), id,
+                        this.shadedSerializer, this.serializerShim, this.functionOfShadedKryo);
+                throw new IllegalArgumentException(msg);
+            }
+        }
+
+        private static <T> GryoTypeReg<T> of(final Class<T> clazz, final int id) {
+            return new GryoTypeReg<>(clazz, null, null, null, id);
+        }
+
+        private static <T> GryoTypeReg<T> of(final Class<T> clazz, final int id, final Serializer<T> shadedSerializer) {
+            return new GryoTypeReg<>(clazz, shadedSerializer, null, null, id);
+        }
+
+        private static <T> GryoTypeReg<T> of(final Class<T> clazz, final int id, final SerializerShim<T> serializerShim) {
+            return new GryoTypeReg<>(clazz, null, serializerShim, null, id);
+        }
+
+        private static <T> GryoTypeReg<T> of(final Class clazz, final int id, final Function<Kryo, Serializer> fct) {
+            return new GryoTypeReg<>(clazz, null, null, fct, id);
+        }
+
+        @Override
+        public Serializer<T> getShadedSerializer() {
+            return shadedSerializer;
+        }
+
+        @Override
+        public SerializerShim<T> getSerializerShim() {
+            return serializerShim;
+        }
+
+        @Override
+        public Function<Kryo, Serializer> getFunctionOfShadedKryo() {
+            return functionOfShadedKryo;
+        }
+
+        @Override
+        public Class<T> getTargetClass() {
+            return clazz;
+        }
+
+        @Override
+        public int getId() {
+            return id;
+        }
+
+        @Override
+        public Kryo registerWith(final Kryo kryo) {
+            if (null != functionOfShadedKryo)
+                kryo.register(clazz, functionOfShadedKryo.apply(kryo), id);
+            else if (null != shadedSerializer)
+                kryo.register(clazz, shadedSerializer, id);
+            else if (null != serializerShim)
+                kryo.register(clazz, new ShadedSerializerAdapter<>(serializerShim), id);
+            else {
+                kryo.register(clazz, kryo.getDefaultSerializer(clazz), id);
+                // Suprisingly, the preceding call is not equivalent to
+                //   kryo.register(clazz, id);
+            }
+
+            return kryo;
+        }
+
+        @Override
+        public String toString() {
+            return new ToStringBuilder(this)
+                    .append("targetClass", clazz)
+                    .append("id", id)
+                    .append("shadedSerializer", shadedSerializer)
+                    .append("serializerShim", serializerShim)
+                    .append("functionOfShadedKryo", functionOfShadedKryo)
+                    .toString();
+        }
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoPool.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoPool.java
index e7bf636..59f8a5d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoPool.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoPool.java
@@ -40,6 +40,7 @@
 public final class GryoPool {
     public static final String CONFIG_IO_REGISTRY = "gremlin.io.registry";
     public static final String CONFIG_IO_GRYO_POOL_SIZE = "gremlin.io.gryo.poolSize";
+    public static final int CONFIG_IO_GRYO_POOL_SIZE_DEFAULT = 256;
 
     public enum Type {READER, WRITER, READER_WRITER}
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoReader.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoReader.java
index d457ffb..c34101b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoReader.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoReader.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.structure.io.gryo;
 
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -34,6 +35,7 @@
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedProperty;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
 import org.apache.tinkerpop.gremlin.structure.util.star.StarGraph;
+import org.apache.tinkerpop.gremlin.structure.util.star.StarGraphGryoSerializer;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.apache.tinkerpop.shaded.kryo.Kryo;
 import org.apache.tinkerpop.shaded.kryo.io.Input;
@@ -45,6 +47,7 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Optional;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.function.Function;
 
@@ -60,6 +63,7 @@
  */
 public final class GryoReader implements GraphReader {
     private final Kryo kryo;
+    private final Map<GraphFilter, StarGraphGryoSerializer> graphFilterCache = new HashMap<>();
 
     private final long batchSize;
 
@@ -108,6 +112,21 @@
         if (supportsTx) graphToWriteTo.tx().commit();
     }
 
+    @Override
+    public Optional<Vertex> readVertex(final InputStream inputStream, final GraphFilter graphFilter) throws IOException {
+        StarGraphGryoSerializer serializer = this.graphFilterCache.get(graphFilter);
+        if (null == serializer) {
+            serializer = StarGraphGryoSerializer.withGraphFilter(graphFilter);
+            this.graphFilterCache.put(graphFilter, serializer);
+        }
+        final Input input = new Input(inputStream);
+        this.readHeader(input);
+        final StarGraph starGraph = this.kryo.readObject(input, StarGraph.class, serializer);
+        // read the terminator
+        this.kryo.readClassAndObject(input);
+        return Optional.ofNullable(starGraph == null ? null : starGraph.getStarVertex());
+    }
+
     /**
      * Read {@link Vertex} objects from output generated by any of the {@link GryoWriter} {@code writeVertex} or
      * {@code writeVertices} methods or by {@link GryoWriter#writeGraph(OutputStream, Graph)}.
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java
index a38de03..da4fd7a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java
@@ -23,16 +23,16 @@
 import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.InputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.OutputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedPath;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedProperty;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
-import org.apache.tinkerpop.shaded.kryo.Kryo;
-import org.apache.tinkerpop.shaded.kryo.Serializer;
-import org.apache.tinkerpop.shaded.kryo.io.Input;
-import org.apache.tinkerpop.shaded.kryo.io.Output;
 
 /**
  * Class used to serialize graph-based objects such as vertices, edges, properties, and paths. These objects are
@@ -42,19 +42,19 @@
  * @author Stephen Mallette (http://stephen.genoprime.com)
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-final class GryoSerializers {
+public final class GryoSerializers {
 
     /**
      * Serializes any {@link Edge} implementation encountered to a {@link DetachedEdge}.
      */
-    final static class EdgeSerializer extends Serializer<Edge> {
+    public final static class EdgeSerializer implements SerializerShim<Edge> {
         @Override
-        public void write(final Kryo kryo, final Output output, final Edge edge) {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Edge edge) {
             kryo.writeClassAndObject(output, DetachedFactory.detach(edge, true));
         }
 
         @Override
-        public Edge read(final Kryo kryo, final Input input, final Class<Edge> edgeClass) {
+        public <I extends InputShim> Edge read(final KryoShim<I, ?> kryo, final I input, final Class<Edge> edgeClass) {
             final Object o = kryo.readClassAndObject(input);
             return (Edge) o;
         }
@@ -63,17 +63,14 @@
     /**
      * Serializes any {@link Vertex} implementation encountered to an {@link DetachedVertex}.
      */
-    final static class VertexSerializer extends Serializer<Vertex> {
-        public VertexSerializer() {
-        }
-
+    public final static class VertexSerializer implements SerializerShim<Vertex> {
         @Override
-        public void write(final Kryo kryo, final Output output, final Vertex vertex) {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Vertex vertex) {
             kryo.writeClassAndObject(output, DetachedFactory.detach(vertex, true));
         }
 
         @Override
-        public Vertex read(final Kryo kryo, final Input input, final Class<Vertex> vertexClass) {
+        public <I extends InputShim> Vertex read(final KryoShim<I, ?> kryo, final I input, final Class<Vertex> vertexClass) {
             return (Vertex) kryo.readClassAndObject(input);
         }
     }
@@ -81,17 +78,14 @@
     /**
      * Serializes any {@link Property} implementation encountered to an {@link DetachedProperty}.
      */
-    final static class PropertySerializer extends Serializer<Property> {
-        public PropertySerializer() {
-        }
-
+    public final static class PropertySerializer implements SerializerShim<Property> {
         @Override
-        public void write(final Kryo kryo, final Output output, final Property property) {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Property property) {
             kryo.writeClassAndObject(output, property instanceof VertexProperty ? DetachedFactory.detach((VertexProperty) property, true) : DetachedFactory.detach(property));
         }
 
         @Override
-        public Property read(final Kryo kryo, final Input input, final Class<Property> propertyClass) {
+        public <I extends InputShim> Property read(final KryoShim<I, ?> kryo, final I input, final Class<Property> propertyClass) {
             return (Property) kryo.readClassAndObject(input);
         }
     }
@@ -99,17 +93,14 @@
     /**
      * Serializes any {@link VertexProperty} implementation encountered to an {@link DetachedVertexProperty}.
      */
-    final static class VertexPropertySerializer extends Serializer<VertexProperty> {
-        public VertexPropertySerializer() {
-        }
-
+    public final static class VertexPropertySerializer implements SerializerShim<VertexProperty> {
         @Override
-        public void write(final Kryo kryo, final Output output, final VertexProperty vertexProperty) {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final VertexProperty vertexProperty) {
             kryo.writeClassAndObject(output, DetachedFactory.detach(vertexProperty, true));
         }
 
         @Override
-        public VertexProperty read(final Kryo kryo, final Input input, final Class<VertexProperty> vertexPropertyClass) {
+        public <I extends InputShim> VertexProperty read(final KryoShim<I, ?> kryo, final I input, final Class<VertexProperty> vertexPropertyClass) {
             return (VertexProperty) kryo.readClassAndObject(input);
         }
     }
@@ -117,17 +108,14 @@
     /**
      * Serializes any {@link Path} implementation encountered to an {@link DetachedPath}.
      */
-    final static class PathSerializer extends Serializer<Path> {
-        public PathSerializer() {
-        }
-
+    public final static class PathSerializer implements SerializerShim<Path> {
         @Override
-        public void write(final Kryo kryo, final Output output, final Path path) {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Path path) {
             kryo.writeClassAndObject(output, DetachedFactory.detach(path, false));
         }
 
         @Override
-        public Path read(final Kryo kryo, final Input input, final Class<Path> pathClass) {
+        public <I extends InputShim> Path read(final KryoShim<I, ?> kryo, final I input, final Class<Path> pathClass) {
             return (Path) kryo.readClassAndObject(input);
         }
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/JavaTimeSerializers.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/JavaTimeSerializers.java
index 1d4e236..85bb3c0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/JavaTimeSerializers.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/JavaTimeSerializers.java
@@ -18,10 +18,10 @@
  */
 package org.apache.tinkerpop.gremlin.structure.io.gryo;
 
-import org.apache.tinkerpop.shaded.kryo.Kryo;
-import org.apache.tinkerpop.shaded.kryo.Serializer;
-import org.apache.tinkerpop.shaded.kryo.io.Input;
-import org.apache.tinkerpop.shaded.kryo.io.Output;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.InputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.OutputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
 
 import java.time.Duration;
 import java.time.Instant;
@@ -48,17 +48,14 @@
     /**
      * Serializer for the {@link Duration} class.
      */
-    final static class DurationSerializer extends Serializer<Duration>
-    {
+    final static class DurationSerializer implements SerializerShim<Duration> {
         @Override
-        public void write(final Kryo kryo, final Output output, final Duration duration)
-        {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Duration duration) {
             output.writeLong(duration.toNanos());
         }
 
         @Override
-        public Duration read(final Kryo kryo, final Input input, final Class<Duration> durationClass)
-        {
+        public <I extends InputShim> Duration read(final KryoShim<I, ?> kryo, final I input, final Class<Duration> durationClass) {
             return Duration.ofNanos(input.readLong());
         }
     }
@@ -66,18 +63,15 @@
     /**
      * Serializer for the {@link Instant} class.
      */
-    final static class InstantSerializer extends Serializer<Instant>
-    {
+    final static class InstantSerializer implements SerializerShim<Instant> {
         @Override
-        public void write(Kryo kryo, Output output, Instant instant)
-        {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Instant instant) {
             output.writeLong(instant.getEpochSecond());
             output.writeInt(instant.getNano());
         }
 
         @Override
-        public Instant read(Kryo kryo, Input input, Class<Instant> aClass)
-        {
+        public <I extends InputShim> Instant read(final KryoShim<I, ?> kryo, final I input, final Class<Instant> aClass) {
             return Instant.ofEpochSecond(input.readLong(), input.readInt());
         }
     }
@@ -85,17 +79,14 @@
     /**
      * Serializer for the {@link LocalDate} class.
      */
-    final static class LocalDateSerializer extends Serializer<LocalDate>
-    {
+    final static class LocalDateSerializer implements SerializerShim<LocalDate> {
         @Override
-        public void write(final Kryo kryo, final Output output, final LocalDate localDate)
-        {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final LocalDate localDate) {
             output.writeLong(localDate.toEpochDay());
         }
 
         @Override
-        public LocalDate read(final Kryo kryo, final Input input, final Class<LocalDate> clazz)
-        {
+        public <I extends InputShim> LocalDate read(final KryoShim<I, ?> kryo, final I input, final Class<LocalDate> clazz) {
             return LocalDate.ofEpochDay(input.readLong());
         }
     }
@@ -103,11 +94,9 @@
     /**
      * Serializer for the {@link LocalDateTime} class.
      */
-    final static class LocalDateTimeSerializer extends Serializer<LocalDateTime>
-    {
+    final static class LocalDateTimeSerializer implements SerializerShim<LocalDateTime> {
         @Override
-        public void write(final Kryo kryo, final Output output, final LocalDateTime localDateTime)
-        {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final LocalDateTime localDateTime) {
             output.writeInt(localDateTime.getYear());
             output.writeInt(localDateTime.getMonthValue());
             output.writeInt(localDateTime.getDayOfMonth());
@@ -118,8 +107,7 @@
         }
 
         @Override
-        public LocalDateTime read(final Kryo kryo, final Input input, final Class<LocalDateTime> clazz)
-        {
+        public <I extends InputShim> LocalDateTime read(final KryoShim<I, ?> kryo, final I input, final Class<LocalDateTime> clazz) {
             return LocalDateTime.of(input.readInt(), input.readInt(), input.readInt(), input.readInt(), input.readInt(), input.readInt(), input.readInt());
         }
     }
@@ -127,17 +115,14 @@
     /**
      * Serializer for the {@link LocalTime} class.
      */
-    final static class LocalTimeSerializer extends Serializer<LocalTime>
-    {
+    final static class LocalTimeSerializer implements SerializerShim<LocalTime> {
         @Override
-        public void write(final Kryo kryo, final Output output, final LocalTime localTime)
-        {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final LocalTime localTime) {
             output.writeLong(localTime.toNanoOfDay());
         }
 
         @Override
-        public LocalTime read(final Kryo kryo, final Input input, final Class<LocalTime> clazz)
-        {
+        public <I extends InputShim> LocalTime read(final KryoShim<I, ?> kryo, final I input, final Class<LocalTime> clazz) {
             return LocalTime.ofNanoOfDay(input.readLong());
         }
     }
@@ -145,18 +130,15 @@
     /**
      * Serializer for the {@link MonthDay} class.
      */
-    final static class MonthDaySerializer extends Serializer<MonthDay>
-    {
+    final static class MonthDaySerializer implements SerializerShim<MonthDay> {
         @Override
-        public void write(final Kryo kryo, final Output output, final MonthDay monthDay)
-        {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final MonthDay monthDay) {
             output.writeInt(monthDay.getMonthValue());
             output.writeInt(monthDay.getDayOfMonth());
         }
 
         @Override
-        public MonthDay read(final Kryo kryo, final Input input, final Class<MonthDay> clazz)
-        {
+        public <I extends InputShim> MonthDay read(final KryoShim<I, ?> kryo, final I input, final Class<MonthDay> clazz) {
             return MonthDay.of(input.readInt(), input.readInt());
         }
     }
@@ -164,18 +146,15 @@
     /**
      * Serializer for the {@link OffsetDateTime} class.
      */
-    final static class OffsetDateTimeSerializer extends Serializer<OffsetDateTime>
-    {
+    final static class OffsetDateTimeSerializer implements SerializerShim<OffsetDateTime> {
         @Override
-        public void write(final Kryo kryo, final Output output, final OffsetDateTime offsetDateTime)
-        {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final OffsetDateTime offsetDateTime) {
             kryo.writeObject(output, offsetDateTime.toLocalDateTime());
             kryo.writeObject(output, offsetDateTime.getOffset());
         }
 
         @Override
-        public OffsetDateTime read(final Kryo kryo, final Input input, final Class<OffsetDateTime> clazz)
-        {
+        public <I extends InputShim> OffsetDateTime read(final KryoShim<I, ?> kryo, final I input, final Class<OffsetDateTime> clazz) {
             return OffsetDateTime.of(kryo.readObject(input, LocalDateTime.class), kryo.readObject(input, ZoneOffset.class));
         }
     }
@@ -183,18 +162,15 @@
     /**
      * Serializer for the {@link OffsetTime} class.
      */
-    final static class OffsetTimeSerializer extends Serializer<OffsetTime>
-    {
+    final static class OffsetTimeSerializer implements SerializerShim<OffsetTime> {
         @Override
-        public void write(final Kryo kryo, final Output output, final OffsetTime offsetTime)
-        {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final OffsetTime offsetTime) {
             kryo.writeObject(output, offsetTime.toLocalTime());
             kryo.writeObject(output, offsetTime.getOffset());
         }
 
         @Override
-        public OffsetTime read(final Kryo kryo, final Input input, final Class<OffsetTime> clazz)
-        {
+        public <I extends InputShim> OffsetTime read(final KryoShim<I, ?> kryo, final I input, final Class<OffsetTime> clazz) {
             return OffsetTime.of(kryo.readObject(input, LocalTime.class), kryo.readObject(input, ZoneOffset.class));
         }
     }
@@ -202,19 +178,16 @@
     /**
      * Serializer for the {@link Period} class.
      */
-    final static class PeriodSerializer extends Serializer<Period>
-    {
+    final static class PeriodSerializer implements SerializerShim<Period> {
         @Override
-        public void write(final Kryo kryo, final Output output, final Period period)
-        {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Period period) {
             output.writeInt(period.getYears());
             output.writeInt(period.getMonths());
             output.writeInt(period.getDays());
         }
 
         @Override
-        public Period read(final Kryo kryo, final Input input, final Class<Period> clazz)
-        {
+        public <I extends InputShim> Period read(final KryoShim<I, ?> kryo, final I input, final Class<Period> clazz) {
             return Period.of(input.readInt(), input.readInt(), input.readInt());
         }
     }
@@ -222,17 +195,14 @@
     /**
      * Serializer for the {@link Year} class.
      */
-    final static class YearSerializer extends Serializer<Year>
-    {
+    final static class YearSerializer implements SerializerShim<Year> {
         @Override
-        public void write(final Kryo kryo, final Output output, final Year year)
-        {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Year year) {
             output.writeInt(year.getValue());
         }
 
         @Override
-        public Year read(final Kryo kryo, final Input input, final Class<Year> clazz)
-        {
+        public <I extends InputShim> Year read(final KryoShim<I, ?> kryo, final I input, final Class<Year> clazz) {
             return Year.of(input.readInt());
         }
     }
@@ -240,18 +210,15 @@
     /**
      * Serializer for the {@link YearMonth} class.
      */
-    final static class YearMonthSerializer extends Serializer<YearMonth>
-    {
+    final static class YearMonthSerializer implements SerializerShim<YearMonth> {
         @Override
-        public void write(final Kryo kryo, final Output output, final YearMonth monthDay)
-        {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final YearMonth monthDay) {
             output.writeInt(monthDay.getYear());
             output.writeInt(monthDay.getMonthValue());
         }
 
         @Override
-        public YearMonth read(final Kryo kryo, final Input input, final Class<YearMonth> clazz)
-        {
+        public <I extends InputShim> YearMonth read(final KryoShim<I, ?> kryo, final I input, final Class<YearMonth> clazz) {
             return YearMonth.of(input.readInt(), input.readInt());
         }
     }
@@ -259,11 +226,9 @@
     /**
      * Serializer for the {@link ZonedDateTime} class.
      */
-    final static class ZonedDateTimeSerializer extends Serializer<ZonedDateTime>
-    {
+    final static class ZonedDateTimeSerializer implements SerializerShim<ZonedDateTime> {
         @Override
-        public void write(final Kryo kryo, final Output output, final ZonedDateTime zonedDateTime)
-        {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final ZonedDateTime zonedDateTime) {
             output.writeInt(zonedDateTime.getYear());
             output.writeInt(zonedDateTime.getMonthValue());
             output.writeInt(zonedDateTime.getDayOfMonth());
@@ -275,8 +240,7 @@
         }
 
         @Override
-        public ZonedDateTime read(final Kryo kryo, final Input input, final Class<ZonedDateTime> clazz)
-        {
+        public <I extends InputShim> ZonedDateTime read(final KryoShim<I, ?> kryo, final I input, final Class<ZonedDateTime> clazz) {
             return ZonedDateTime.of(input.readInt(), input.readInt(), input.readInt(),
                     input.readInt(), input.readInt(), input.readInt(), input.readInt(),
                     ZoneId.of(input.readString()));
@@ -286,17 +250,14 @@
     /**
      * Serializer for the {@link ZoneOffset} class.
      */
-    final static class ZoneOffsetSerializer extends Serializer<ZoneOffset>
-    {
+    final static class ZoneOffsetSerializer implements SerializerShim<ZoneOffset> {
         @Override
-        public void write(final Kryo kryo, final Output output, final ZoneOffset zoneOffset)
-        {
+        public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final ZoneOffset zoneOffset) {
             output.writeString(zoneOffset.getId());
         }
 
         @Override
-        public ZoneOffset read(final Kryo kryo, final Input input, final Class<ZoneOffset> clazz)
-        {
+        public <I extends InputShim> ZoneOffset read(final KryoShim<I, ?> kryo, final I input, final Class<ZoneOffset> clazz) {
             return ZoneOffset.of(input.readString());
         }
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/PairSerializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/PairSerializer.java
index e5e92e7..1465b24 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/PairSerializer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/PairSerializer.java
@@ -18,6 +18,10 @@
  */
 package org.apache.tinkerpop.gremlin.structure.io.gryo;
 
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.InputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.OutputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
 import org.apache.tinkerpop.shaded.kryo.Kryo;
 import org.apache.tinkerpop.shaded.kryo.Serializer;
 import org.apache.tinkerpop.shaded.kryo.io.Input;
@@ -27,16 +31,15 @@
 /**
  * @author Daniel Kuppitz (http://gremlin.guru)
  */
-final class PairSerializer extends Serializer<Pair> {
-
+final class PairSerializer implements SerializerShim<Pair> {
     @Override
-    public void write(final Kryo kryo, final Output output, final Pair pair) {
+    public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Pair pair) {
         kryo.writeClassAndObject(output, pair.getValue0());
         kryo.writeClassAndObject(output, pair.getValue1());
     }
 
     @Override
-    public Pair read(final Kryo kryo, final Input input, final Class<Pair> pairClass) {
+    public <I extends InputShim> Pair read(final KryoShim<I, ?> kryo, final I input, final Class<Pair> pairClass) {
         return Pair.with(kryo.readClassAndObject(input), kryo.readClassAndObject(input));
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/TypeRegistration.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/TypeRegistration.java
new file mode 100644
index 0000000..a01d967
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/TypeRegistration.java
@@ -0,0 +1,82 @@
+/*
+ * 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.structure.io.gryo;
+
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
+import org.apache.tinkerpop.shaded.kryo.Kryo;
+import org.apache.tinkerpop.shaded.kryo.Serializer;
+
+/**
+ * Represents a class serializable with Gryo.
+ * <p>
+ * At most one of the {@link #getShadedSerializer()}, {@link #getSerializerShim()},
+ * and {@link #getFunctionOfShadedKryo()} will return a non-null value.  If all
+ * three methods return null, then there is no custom serialization logic associated
+ * with this class.  Gryo/Kryo will use its default serializer.
+ *
+ * @param <T> the serializable type
+ */
+public interface TypeRegistration<T> {
+
+    /**
+     * @return the serializable class this instance describes
+     */
+    Class<T> getTargetClass();
+
+    /**
+     * @return numeric identifier used as a shorthand for this type in Gryo's serialized form
+     */
+    int getId();
+
+    /**
+     * @return the shaded-Kryo serializer that handles this type, if one is defined
+     */
+    Serializer<T> getShadedSerializer();
+
+    /**
+     * @return the shim-Kryo serializer that handles this type, if one is defined
+     */
+    SerializerShim<T> getSerializerShim();
+
+    /**
+     * @return a function that accepts a shaded-Kryo instance and returns a serializer, if such a function is defined
+     */
+    java.util.function.Function<Kryo, Serializer> getFunctionOfShadedKryo();
+
+    /**
+     * Registers this type on the supplied {@link Kryo} instance, using whatever custom serializer
+     * may be present, then returns the same {@linkplain Kryo} instance supplied as the parameter.
+     *
+     * @param kryo Kryo instance into which this type is registered
+     * @return the sole parameter
+     */
+    Kryo registerWith(final Kryo kryo);
+
+    /**
+     * Returns true if at least one of {@link #getShadedSerializer()}, {@link #getSerializerShim()}, or
+     * {@link #getFunctionOfShadedKryo()} is non null.  Returns false if all are null.
+     *
+     * @return whether a serializer is defined for this type registration
+     */
+    default boolean hasSerializer() {
+        return null != getFunctionOfShadedKryo() ||
+                null != getSerializerShim() ||
+                null != getShadedSerializer();
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/URISerializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/URISerializer.java
index 7b6cfec..a65bcea 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/URISerializer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/URISerializer.java
@@ -18,29 +18,32 @@
  */
 package org.apache.tinkerpop.gremlin.structure.io.gryo;
 
-import org.apache.tinkerpop.shaded.kryo.Kryo;
-import org.apache.tinkerpop.shaded.kryo.Serializer;
-import org.apache.tinkerpop.shaded.kryo.io.Input;
-import org.apache.tinkerpop.shaded.kryo.io.Output;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.InputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.OutputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
 
 import java.net.URI;
 
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-final class URISerializer extends Serializer<URI> {
+final class URISerializer implements SerializerShim<URI> {
 
-    public URISerializer() {
-        setImmutable(true);
-    }
+    public URISerializer() { }
 
     @Override
-    public void write(final Kryo kryo, final Output output, final URI uri) {
+    public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final URI uri) {
         output.writeString(uri.toString());
     }
 
     @Override
-    public URI read(final Kryo kryo, final Input input, final Class<URI> uriClass) {
+    public <I extends InputShim> URI read(final KryoShim<I, ?> kryo, final I input, final Class<URI> uriClass) {
         return URI.create(input.readString());
     }
+
+    @Override
+    public boolean isImmutable() {
+        return true;
+    }
 }
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/UUIDSerializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/UUIDSerializer.java
index e694e38..d1d59d3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/UUIDSerializer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/UUIDSerializer.java
@@ -18,29 +18,33 @@
  */
 package org.apache.tinkerpop.gremlin.structure.io.gryo;
 
-import org.apache.tinkerpop.shaded.kryo.Kryo;
-import org.apache.tinkerpop.shaded.kryo.Serializer;
-import org.apache.tinkerpop.shaded.kryo.io.Input;
-import org.apache.tinkerpop.shaded.kryo.io.Output;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.InputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.OutputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
 
 import java.util.UUID;
 
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-final class UUIDSerializer extends Serializer<UUID> {
-    public UUIDSerializer() {
-        setImmutable(true);
-    }
+final class UUIDSerializer implements SerializerShim<UUID> {
+
+    public UUIDSerializer() { }
 
     @Override
-    public void write(final Kryo kryo, final Output output, final UUID uuid) {
+    public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final UUID uuid) {
         output.writeLong(uuid.getMostSignificantBits());
         output.writeLong(uuid.getLeastSignificantBits());
     }
 
     @Override
-    public UUID read(final Kryo kryo, final Input input, final Class<UUID> uuidClass) {
+    public <I extends InputShim> UUID read(final KryoShim<I, ?> kryo, final I input, final Class<UUID> uuidClass) {
         return new UUID(input.readLong(), input.readLong());
     }
+
+    @Override
+    public boolean isImmutable() {
+        return true;
+    }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/InputShim.java
similarity index 66%
copy from gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
copy to gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/InputShim.java
index cb1aeec..424b1bf 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/InputShim.java
@@ -16,15 +16,23 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.process.traversal.step;
-
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+package org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim;
 
 /**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * A minimal {@link org.apache.tinkerpop.shaded.kryo.io.Input}-like abstraction.
+ * See that class for method documentation.
  */
-public interface EngineDependent {
+public interface InputShim {
 
-    public void onEngine(final TraversalEngine traversalEngine);
+    public byte readByte();
 
+    public byte[] readBytes(final int size);
+
+    public String readString();
+
+    public long readLong();
+
+    public int readInt();
+
+    public double readDouble();
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/KryoShim.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/KryoShim.java
new file mode 100644
index 0000000..a4eb2cb
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/KryoShim.java
@@ -0,0 +1,41 @@
+/*
+ * 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.structure.io.gryo.kryoshim;
+
+/**
+ * A minimal {@link org.apache.tinkerpop.shaded.kryo.Kryo}-like abstraction.
+ * See that class for method documentation.
+ *
+ * @param <I> this interface's complementary InputShim
+ * @param <O> this interface's complementary OutputShim
+ */
+public interface KryoShim<I extends InputShim, O extends OutputShim> {
+
+    public <T> T readObject(final I input, final Class<T> type);
+
+    public Object readClassAndObject(final I input);
+
+    public void writeObject(final O output, final Object object);
+
+    public void writeClassAndObject(final O output, final Object object);
+
+    public <T> T readObjectOrNull(final I input, final Class<T> type);
+
+    public void writeObjectOrNull(final O output, final Object object, final Class type);
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/KryoShimService.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/KryoShimService.java
new file mode 100644
index 0000000..b8880a4
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/KryoShimService.java
@@ -0,0 +1,99 @@
+/*
+ * 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.structure.io.gryo.kryoshim;
+
+import org.apache.commons.configuration.Configuration;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * This interface exists to decouple HadoopPools from TinkerPop's shaded Kryo.
+ * <p>
+ * VertexWritable and ObjectWritable formerly implemented Serializable by
+ * resorting to statically-pooled shaded Kryo instances maintained by the HadoopPools class.
+ * This is awkward because those shaded Kryo instances require class registration by default.
+ * <p>
+ * Consider what happens with custom property datatypes reachable from the reference graph rooted at an ObjectWritable
+ * or VertexWritable instance.  It is not enough for these property classes to merely implement
+ * Serializable, though one think that from skimming ObjectWritable/VertexWritable.  Those classes
+ * must also register with TinkerPop's internal, shaded Kryo instances as maintained by HadoopPools,
+ * or else configure those instances to accept unregistered classes.
+ * Otherwise, TinkerPop's shaded Kryo will refuse to serialize those properties (even though
+ * they implement Serializable, and even though the user might think they are only using
+ * Java's standard Serialization mechanism!).
+ * <p>
+ * By hiding the mechanics of serialization behind this interface instead of hardcoding it in
+ * HadoopPools, the user can decide how to implement serialization for ObjectWritable/VertexWritable
+ * (and whatever other classes in TinkerPop decide to implement Serializable but then delegate
+ * all of the implementation details, like ObjectWritable/VertexWritable do now).
+ */
+public interface KryoShimService {
+
+    /**
+     * Deserializes an object from an input stream.
+     *
+     * @param source the stream from which to read an object's serialized form
+     * @return the first deserialized object available from {@code source}
+     */
+    public Object readClassAndObject(final InputStream source);
+
+    /**
+     * Serializes an object to an output stream.  This may flush the output stream.
+     *
+     * @param o the object to serialize
+     * @param sink the stream into which the serialized object is written
+     */
+    public void writeClassAndObject(final Object o, final OutputStream sink);
+
+    /**
+     * Returns this service's relative priority number.  Unless explicitly overridden through a
+     * system property ({@link KryoShimServiceLoader#KRYO_SHIM_SERVICE}),
+     * the service implementation with the numerically highest priority will be used
+     * and all others ignored.  In other words, the highest priority wins (in the absence of a
+     * system property override).
+     * <p>
+     * TinkerPop's current default implementation uses priority value zero.
+     * <p>
+     * Third-party implementations of this interface should (but are not technically required)
+     * to use a priority value with absolute value greater than 100.
+     * <p>
+     * The implementation currently breaks priority ties by lexicographical comparison of
+     * fully-qualified package-and-classname, but this tie-breaking behavior should be
+     * considered undefined and subject to future change.  Ties are ignored if the service
+     * is explicitly set through the system property mentioned above.
+     *
+     * @return this implementation's priority value
+     */
+    public int getPriority();
+
+    /**
+     * Attempt to incorporate the supplied configuration in future read/write calls.
+     * <p>
+     * This method is a wart that exists essentially just to support the old
+     * {@link HadoopPools#initialize(Configuration)} use-case.
+     * <p>
+     * This method is not guaranteed to have any effect on an instance of this interface
+     * after {@link #writeClassAndObject(Object, OutputStream)} or {@link #readClassAndObject(InputStream)}
+     * has been invoked on that particular instance.
+     *
+     * @param conf the configuration to apply to this service's internal serializer
+     */
+    public void applyConfiguration(final Configuration conf);
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/KryoShimServiceLoader.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/KryoShimServiceLoader.java
new file mode 100644
index 0000000..4227edc
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/KryoShimServiceLoader.java
@@ -0,0 +1,215 @@
+/*
+ * 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.structure.io.gryo.kryoshim;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.shaded.kryo.io.Input;
+import org.apache.tinkerpop.shaded.kryo.io.Output;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.ServiceLoader;
+
+/**
+ * Loads the highest-priority or user-selected {@link KryoShimService}.
+ */
+public class KryoShimServiceLoader {
+
+    private static volatile KryoShimService cachedShimService;
+
+    private static volatile Configuration conf;
+
+    private static final Logger log = LoggerFactory.getLogger(KryoShimServiceLoader.class);
+
+    /**
+     * Set this system property to the fully-qualified name of a {@link KryoShimService}
+     * package-and-classname to force it into service.  Setting this property causes the
+     * priority-selection mechanism ({@link KryoShimService#getPriority()}) to be ignored.
+     */
+    public static final String KRYO_SHIM_SERVICE = "gremlin.io.kryoShimService";
+
+    public static void applyConfiguration(final Configuration conf) {
+        KryoShimServiceLoader.conf = conf;
+        load(true);
+    }
+
+    /**
+     * Return a reference to the shim service.  This method may return a cached shim service
+     * unless {@code forceReload} is true.  Calls to this method need not be externally
+     * synchonized.
+     *
+     * @param forceReload if false, this method may use its internal service cache; if true,
+     *                    this method must ignore cache, and it must invoke {@link ServiceLoader#reload()}
+     *                    before selecting a new service to return
+     * @return the shim service
+     */
+    public static KryoShimService load(final boolean forceReload) {
+
+        if (null != cachedShimService && !forceReload) {
+            return cachedShimService;
+        }
+
+        final ArrayList<KryoShimService> services = new ArrayList<>();
+
+        final ServiceLoader<KryoShimService> sl = ServiceLoader.load(KryoShimService.class);
+
+        KryoShimService result = null;
+
+        synchronized (KryoShimServiceLoader.class) {
+            if (forceReload) {
+                sl.reload();
+            }
+
+            for (KryoShimService kss : sl) {
+                services.add(kss);
+            }
+        }
+
+        String shimClass = System.getProperty(KRYO_SHIM_SERVICE);
+
+        if (null != shimClass) {
+            for (KryoShimService kss : services) {
+                if (kss.getClass().getCanonicalName().equals(shimClass)) {
+                    log.info("Set {} provider to {} ({}) from system property {}={}",
+                            KryoShimService.class.getSimpleName(), kss, kss.getClass(),
+                            KRYO_SHIM_SERVICE, shimClass);
+                    result = kss;
+                }
+            }
+        } else {
+            Collections.sort(services, KryoShimServiceComparator.INSTANCE);
+
+            for (KryoShimService kss : services) {
+                log.debug("Found Kryo shim service class {} (priority {})", kss.getClass(), kss.getPriority());
+            }
+
+            if (0 != services.size()) {
+                result = services.get(services.size() - 1);
+            }
+        }
+
+
+        if (null == result) {
+            throw new IllegalStateException("Unable to load KryoShimService");
+        }
+
+        log.info("Set {} provider to {} ({}) because its priority value ({}) is the highest available",
+                KryoShimService.class.getSimpleName(), result, result.getClass(), result.getPriority());
+
+        final Configuration userConf = conf;
+
+        if (null != userConf) {
+            log.info("Configuring {} provider {} with user-provided configuration",
+                    KryoShimService.class.getSimpleName(), result);
+            result.applyConfiguration(userConf);
+        }
+
+        return cachedShimService = result;
+    }
+
+    /**
+     * Equivalent to {@link #load(boolean)} with the parameter {@code true}.
+     *
+     * @return the (possibly cached) shim service
+     */
+    public static KryoShimService load() {
+        return load(false);
+    }
+
+    /**
+     * A loose abstraction of {@link org.apache.tinkerpop.shaded.kryo.Kryo#writeClassAndObject(Output, Object)},
+     * where the {@code output} parameter is an internally-created {@link ByteArrayOutputStream}.  Returns
+     * the byte array underlying that stream.
+     *
+     * @param o an object for which the instance and class are serialized
+     * @return the serialized form
+     */
+    public static byte[] writeClassAndObjectToBytes(final Object o) {
+        final KryoShimService shimService = load();
+
+        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+        shimService.writeClassAndObject(o, baos);
+
+        return baos.toByteArray();
+    }
+
+    /**
+     * A loose abstraction of {@link org.apache.tinkerpop.shaded.kryo.Kryo#readClassAndObject(Input)},
+     * where the {@code input} parameter is {@code source}.  Returns the deserialized object.
+     *
+     * @param source an input stream containing data for a serialized object class and instance
+     * @param <T>    the type to which the deserialized object is cast as it is returned
+     * @return the deserialized object
+     */
+    public static <T> T readClassAndObject(final InputStream source) {
+        final KryoShimService shimService = load();
+
+        return (T) shimService.readClassAndObject(source);
+    }
+
+    /**
+     * Selects the service with greatest {@link KryoShimService#getPriority()}
+     * (not absolute value).
+     * <p>
+     * Breaks ties with lexicographical comparison of classnames where the
+     * name that sorts last is considered to have highest priority.  Ideally
+     * nothing should rely on that tiebreaking behavior, but it beats random
+     * selection in case a user ever gets into that situation by accident and
+     * tries to figure out what's going on.
+     */
+    private enum KryoShimServiceComparator implements Comparator<KryoShimService> {
+        INSTANCE;
+
+        @Override
+        public int compare(final KryoShimService a, final KryoShimService b) {
+            final int ap = a.getPriority();
+            final int bp = b.getPriority();
+
+            if (ap < bp) {
+                return -1;
+            } else if (bp < ap) {
+                return 1;
+            } else {
+                final int result = a.getClass().getCanonicalName().compareTo(b.getClass().getCanonicalName());
+
+                if (0 == result) {
+                    log.warn("Found two {} implementations with the same canonical classname: {}.  " +
+                                    "This may indicate a problem with the classpath/classloader such as " +
+                                    "duplicate or conflicting copies of the file " +
+                                    "META-INF/services/org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimService.",
+                            a.getClass().getCanonicalName());
+                } else {
+                    final String winner = 0 < result ? a.getClass().getCanonicalName() : b.getClass().getCanonicalName();
+                    log.warn("{} implementations {} and {} are tied with priority value {}.  " +
+                                    "Preferring {} to the other because it has a lexicographically greater classname.  " +
+                                    "Consider setting the system property \"{}\" instead of relying on priority tie-breaking.",
+                            KryoShimService.class.getSimpleName(), a, b, ap, winner, KRYO_SHIM_SERVICE);
+                }
+
+                return result;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/OutputShim.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/OutputShim.java
new file mode 100644
index 0000000..e3647f3
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/OutputShim.java
@@ -0,0 +1,40 @@
+/*
+ * 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.structure.io.gryo.kryoshim;
+
+/**
+ * A minimal {@link org.apache.tinkerpop.shaded.kryo.io.Output}-like abstraction.
+ * See that class for method documentation.
+ */
+public interface OutputShim {
+
+    public void writeByte(final byte b);
+
+    public void writeBytes(final byte[] array, final int offset, final int count);
+
+    public void writeString(final String s);
+
+    public void writeLong(final long l);
+
+    public void writeInt(final int i);
+
+    public void writeDouble(final double d);
+
+    public void flush();
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/SerializerShim.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/SerializerShim.java
new file mode 100644
index 0000000..c36cfee
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/SerializerShim.java
@@ -0,0 +1,36 @@
+/*
+ * 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.structure.io.gryo.kryoshim;
+
+/**
+ * A minimal {@link org.apache.tinkerpop.shaded.kryo.Serializer}-like abstraction.
+ * See that class for method documentation.
+ *
+ * @param <T> the class this serializer reads/writes from/to bytes.
+ */
+public interface SerializerShim<T> {
+
+    public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final T object);
+
+    public <I extends InputShim> T read(final KryoShim<I, ?> kryo, final I input, final Class<T> clazz);
+
+    public default boolean isImmutable() {
+        return false;
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/package-info.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/package-info.java
new file mode 100644
index 0000000..70675da
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/package-info.java
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+/**
+ * Abstracts a minimal subset of Kryo types and methods.
+ * <p>
+ * Kryo is often shaded.  For instance, TinkerPop's Gryo
+ * serializer relies on a shaded Kryo package.
+ * TinkerPop serializers written against a particular shaded
+ * Kryo package (or an unshaded Kryo package) are compatible
+ * only with that package.  In contrast, TinkerPop serializers written
+ * against this abstraction can be used with any shaded or
+ * unshaded Kryo package, so long as the signatures and behavior
+ * of the methods in this package remain stable.
+ * <p>
+ * To show how this is useful, consider
+ * {@link org.apache.tinkerpop.gremlin.structure.util.star.StarGraphSerializer}.
+ * This class has logic unique to TinkerPop that performs
+ * efficient and forward-compatible serialization of
+ * {@link org.apache.tinkerpop.gremlin.structure.util.star.StarGraph}
+ * instances.  It takes advantage of package-level visibility
+ * and the fact that it shares a package with its target,
+ * so it would be challenging to cleanly and naturally replicate
+ * (i.e. without package spoofing or runtime visibility overrides).
+ * By implementing
+ * {@link org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim}
+ * instead of, say, Gryo's shaded
+ * {@link org.apache.tinkerpop.shaded.kryo.Serializer},
+ * such a serializer can be used with anybody's Kryo package,
+ * regardless of whether
+ * that package is shaded or not.  This lets third-parties reuse
+ * TinkerPop's efficient, internals-aware StarGraph serializer on
+ * their own serialization platform (and without altering
+ * TinkerPop's bytecode, let alone its source).
+ * <p>
+ * The number of types and methods in this
+ * package is deliberately small to reduce the likelihood of a
+ * new Kryo release introducing an incompatible change.
+ */
+package org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim;
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/shaded/ShadedInputAdapter.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/shaded/ShadedInputAdapter.java
new file mode 100644
index 0000000..29524b9
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/shaded/ShadedInputAdapter.java
@@ -0,0 +1,66 @@
+/*
+ * 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.structure.io.gryo.kryoshim.shaded;
+
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.InputShim;
+import org.apache.tinkerpop.shaded.kryo.io.Input;
+
+public class ShadedInputAdapter implements InputShim {
+
+    private final Input shadedInput;
+
+    public ShadedInputAdapter(final Input shadedInput) {
+        this.shadedInput = shadedInput;
+    }
+
+    Input getShadedInput() {
+        return shadedInput;
+    }
+
+    @Override
+    public byte readByte()
+    {
+        return shadedInput.readByte();
+    }
+
+    @Override
+    public byte[] readBytes(final int size) {
+        return shadedInput.readBytes(size);
+    }
+
+    @Override
+    public String readString() {
+        return shadedInput.readString();
+    }
+
+    @Override
+    public long readLong() {
+        return shadedInput.readLong();
+    }
+
+    @Override
+    public int readInt() {
+        return shadedInput.readInt();
+    }
+
+    @Override
+    public double readDouble() {
+        return shadedInput.readDouble();
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/shaded/ShadedKryoAdapter.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/shaded/ShadedKryoAdapter.java
new file mode 100644
index 0000000..5ce0f6d
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/shaded/ShadedKryoAdapter.java
@@ -0,0 +1,67 @@
+/*
+ * 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.structure.io.gryo.kryoshim.shaded;
+
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShim;
+import org.apache.tinkerpop.shaded.kryo.Kryo;
+
+public class ShadedKryoAdapter implements KryoShim<ShadedInputAdapter, ShadedOutputAdapter> {
+
+    private final Kryo shadedKryo;
+
+    public ShadedKryoAdapter(final Kryo shadedKryo) {
+        this.shadedKryo = shadedKryo;
+    }
+
+    @Override
+    public <T> T readObject(final ShadedInputAdapter input, final Class<T> type)
+    {
+        return shadedKryo.readObject(input.getShadedInput(), type);
+    }
+
+    @Override
+    public Object readClassAndObject(final ShadedInputAdapter input)
+    {
+        return shadedKryo.readClassAndObject(input.getShadedInput());
+    }
+
+    @Override
+    public void writeObject(final ShadedOutputAdapter output, final Object object)
+    {
+        shadedKryo.writeObject(output.getShadedOutput(), object);
+    }
+
+    @Override
+    public void writeClassAndObject(final ShadedOutputAdapter output, final Object object)
+    {
+        shadedKryo.writeClassAndObject(output.getShadedOutput(), object);
+    }
+
+    @Override
+    public <T> T readObjectOrNull(final ShadedInputAdapter input, final Class<T> type)
+    {
+        return shadedKryo.readObjectOrNull(input.getShadedInput(), type);
+    }
+
+    @Override
+    public void writeObjectOrNull(final ShadedOutputAdapter output, final Object object, final Class type)
+    {
+        shadedKryo.writeObjectOrNull(output.getShadedOutput(), object, type);
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/shaded/ShadedOutputAdapter.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/shaded/ShadedOutputAdapter.java
new file mode 100644
index 0000000..b05f528
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/shaded/ShadedOutputAdapter.java
@@ -0,0 +1,71 @@
+/*
+ * 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.structure.io.gryo.kryoshim.shaded;
+
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.OutputShim;
+import org.apache.tinkerpop.shaded.kryo.io.Output;
+
+public class ShadedOutputAdapter implements OutputShim {
+
+    private final Output shadedOutput;
+
+    public ShadedOutputAdapter(final Output shadedOutput) {
+        this.shadedOutput = shadedOutput;
+    }
+
+    @Override
+    public void writeByte(final byte b)
+    {
+        shadedOutput.writeByte(b);
+    }
+
+    @Override
+    public void writeBytes(final byte[] array, final int offset, final int count) {
+        shadedOutput.writeBytes(array, offset, count);
+    }
+
+    @Override
+    public void writeString(final String s) {
+        shadedOutput.writeString(s);
+    }
+
+    @Override
+    public void writeLong(final long l) {
+        shadedOutput.writeLong(l);
+    }
+
+    @Override
+    public void writeInt(final int i) {
+        shadedOutput.writeInt(i);
+    }
+
+    @Override
+    public void writeDouble(final double d) {
+        shadedOutput.writeDouble(d);
+    }
+
+    @Override
+    public void flush() {
+        shadedOutput.flush();
+    }
+
+    Output getShadedOutput() {
+        return shadedOutput;
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/shaded/ShadedSerializerAdapter.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/shaded/ShadedSerializerAdapter.java
new file mode 100644
index 0000000..28a44bd
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/shaded/ShadedSerializerAdapter.java
@@ -0,0 +1,54 @@
+/*
+ * 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.structure.io.gryo.kryoshim.shaded;
+
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
+import org.apache.tinkerpop.shaded.kryo.Kryo;
+import org.apache.tinkerpop.shaded.kryo.Serializer;
+import org.apache.tinkerpop.shaded.kryo.io.Input;
+import org.apache.tinkerpop.shaded.kryo.io.Output;
+
+public class ShadedSerializerAdapter<T> extends Serializer<T> {
+
+    SerializerShim<T> serializer;
+
+    public ShadedSerializerAdapter(final SerializerShim<T> serializer) {
+        this.serializer = serializer;
+        setImmutable(this.serializer.isImmutable());
+    }
+
+    @Override
+    public void write(final Kryo kryo, final Output output, final T t) {
+        /* These adapters could be cached pretty efficiently in instance fields if it were guaranteed that this
+         * class was never subject to concurrent use.  That's true of Kryo instances, but it is not clear that
+         * it is true of Serializer instances.
+         */
+        final ShadedKryoAdapter shadedKryoAdapter = new ShadedKryoAdapter(kryo);
+        final ShadedOutputAdapter shadedOutputAdapter = new ShadedOutputAdapter(output);
+        serializer.write(shadedKryoAdapter, shadedOutputAdapter, t);
+    }
+
+    @Override
+    public T read(final Kryo kryo, final Input input, final Class<T> aClass) {
+        // Same caching opportunity as in write(...)
+        final ShadedKryoAdapter shadedKryoAdapter = new ShadedKryoAdapter(kryo);
+        final ShadedInputAdapter shadedInputAdapter = new ShadedInputAdapter(input);
+        return serializer.read(shadedKryoAdapter, shadedInputAdapter, aClass);
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/shaded/package-info.java
similarity index 72%
copy from gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
copy to gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/shaded/package-info.java
index cb1aeec..d91a3f1 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/kryoshim/shaded/package-info.java
@@ -16,15 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.process.traversal.step;
-
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 
 /**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * Implementations of the interfaces in
+ * {@link org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim}
+ * using TinkerPop's shaded copy of Kryo.
  */
-public interface EngineDependent {
-
-    public void onEngine(final TraversalEngine traversalEngine);
-
-}
+package org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.shaded;
\ No newline at end of file
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractThreadedTransaction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractThreadedTransaction.java
index 2fdc7df..98bdd3e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractThreadedTransaction.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractThreadedTransaction.java
@@ -71,7 +71,8 @@
     }
 
     /**
-     * Most implementations should do nothing with this as the tx is already open on creation.
+     * Threaded transactions should be open immediately upon creation so most implementations should do nothing with
+     * this method.
      */
     @Override
     protected void doReadWrite() {
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
index 9ae8116..b803d6e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.structure.util;
 
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
 import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
@@ -25,18 +26,17 @@
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalRing;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
 import org.apache.tinkerpop.gremlin.util.function.FunctionUtils;
 import org.javatuples.Pair;
 
@@ -45,6 +45,7 @@
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.function.Function;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
@@ -137,14 +138,10 @@
         return graphComputer.getClass().getSimpleName().toLowerCase();
     }
 
-    public static String traversalEngineString(final TraversalEngine traversalEngine) {
-        return traversalEngine.getClass().getSimpleName().toLowerCase();
-    }
-
     public static String traversalSourceString(final TraversalSource traversalSource) {
-        final String graphString = traversalSource.getGraph().orElse(EmptyGraph.instance()).toString();
-        final String graphComputerString = traversalSource.getGraphComputer().isPresent() ? traversalSource.getGraphComputer().get().toString() : "standard";
-        return traversalSource.getClass().getSimpleName().toLowerCase() + L_BRACKET + graphString + COMMA_SPACE + graphComputerString + R_BRACKET;
+        final String graphString = traversalSource.getGraph().toString();
+        final Optional<Computer> optional = VertexProgramStrategy.getComputer(traversalSource.getStrategies());
+        return traversalSource.getClass().getSimpleName().toLowerCase() + L_BRACKET + graphString + COMMA_SPACE + (optional.isPresent() ? optional.get().toString() : "standard") + R_BRACKET;
     }
 
     public static String featureString(final Graph.Features features) {
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertex.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertex.java
index 419003a..371c091 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertex.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/detached/DetachedVertex.java
@@ -22,7 +22,6 @@
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferencePath.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferencePath.java
index 13f4cf2..e70554b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferencePath.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferencePath.java
@@ -24,6 +24,7 @@
 import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.util.Attachable;
 
+import java.util.HashSet;
 import java.util.function.Function;
 
 /**
@@ -43,19 +44,19 @@
         path.forEach((object, labels) -> {
             if (object instanceof ReferenceElement || object instanceof ReferenceProperty || object instanceof ReferencePath) {
                 this.objects.add(object);
-                this.labels.add(labels);
+                this.labels.add(new HashSet<>(labels));
             } else if (object instanceof Element) {
                 this.objects.add(ReferenceFactory.detach((Element) object));
-                this.labels.add(labels);
+                this.labels.add(new HashSet<>(labels));
             } else if (object instanceof Property) {
                 this.objects.add(ReferenceFactory.detach((Property) object));
-                this.labels.add(labels);
+                this.labels.add(new HashSet<>(labels));
             } else if (object instanceof Path) {
                 this.objects.add(ReferenceFactory.detach((Path) object));
-                this.labels.add(labels);
+                this.labels.add(new HashSet<>(labels));
             } else {
                 this.objects.add(object);
-                this.labels.add(labels);
+                this.labels.add(new HashSet<>(labels));
             }
         });
     }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraph.java
index f516630..73c7ca7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraph.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraph.java
@@ -21,6 +21,7 @@
 import org.apache.commons.configuration.BaseConfiguration;
 import org.apache.commons.configuration.Configuration;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
@@ -39,10 +40,12 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.NoSuchElementException;
+import java.util.Optional;
 import java.util.stream.Stream;
 
 /**
@@ -212,6 +215,13 @@
         return starGraph;
     }
 
+    public Optional<StarGraph> applyGraphFilter(final GraphFilter graphFilter) {
+        if (null == this.starVertex)
+            return Optional.empty();
+        final Optional<StarGraph.StarVertex> filtered = this.starVertex.applyGraphFilter(graphFilter);
+        return filtered.isPresent() ? Optional.of((StarGraph) filtered.get().graph()) : Optional.empty();
+    }
+
     ///////////////////////
     //// STAR ELEMENT ////
     //////////////////////
@@ -271,11 +281,30 @@
             super(id, label);
         }
 
-        public void dropEdges() {
-            if (null != this.outEdges) this.outEdges.clear();
-            if (null != this.inEdges) this.inEdges.clear();
-            this.outEdges = null;
-            this.inEdges = null;
+        public void dropEdges(final Direction direction) {
+            if ((direction.equals(Direction.OUT) || direction.equals(Direction.BOTH)) && null != this.outEdges) {
+                this.outEdges.clear();
+                this.outEdges = null;
+            }
+            if ((direction.equals(Direction.IN) || direction.equals(Direction.BOTH)) && null != this.inEdges) {
+                this.inEdges.clear();
+                this.inEdges = null;
+            }
+        }
+
+        public void dropEdges(final Direction direction, final String edgeLabel) {
+            if (null != this.outEdges && (direction.equals(Direction.OUT) || direction.equals(Direction.BOTH))) {
+                this.outEdges.remove(edgeLabel);
+
+                if (this.outEdges.isEmpty())
+                    this.outEdges = null;
+            }
+            if (null != this.inEdges && (direction.equals(Direction.IN) || direction.equals(Direction.BOTH))) {
+                this.inEdges.remove(edgeLabel);
+
+                if (this.inEdges.isEmpty())
+                    this.inEdges = null;
+            }
         }
 
         public void dropVertexProperties(final String... propertyKeys) {
@@ -412,6 +441,65 @@
                         .flatMap(entry -> entry.getValue().stream())
                         .iterator();
         }
+
+        ///////////////
+
+        public Optional<StarVertex> applyGraphFilter(final GraphFilter graphFilter) {
+            if (!graphFilter.hasFilter())
+                return Optional.of(this);
+            else if (graphFilter.legalVertex(this)) {
+                if (graphFilter.hasEdgeFilter()) {
+                    if (graphFilter.checkEdgeLegality(Direction.OUT).negative())
+                        this.dropEdges(Direction.OUT);
+                    if (graphFilter.checkEdgeLegality(Direction.IN).negative())
+                        this.dropEdges(Direction.IN);
+                    if (null != this.outEdges)
+                        for (final String key : new HashSet<>(this.outEdges.keySet())) {
+                            if (graphFilter.checkEdgeLegality(Direction.OUT, key).negative())
+                                this.dropEdges(Direction.OUT, key);
+                        }
+                    if (null != this.inEdges)
+                        for (final String key : new HashSet<>(this.inEdges.keySet())) {
+                            if (graphFilter.checkEdgeLegality(Direction.IN, key).negative())
+                                this.dropEdges(Direction.IN, key);
+                        }
+                    if (null != this.inEdges || null != this.outEdges) {
+                        final Map<String, List<Edge>> outEdges = new HashMap<>();
+                        final Map<String, List<Edge>> inEdges = new HashMap<>();
+                        graphFilter.legalEdges(this).forEachRemaining(edge -> {
+                            if (edge instanceof StarGraph.StarOutEdge) {
+                                List<Edge> edges = outEdges.get(edge.label());
+                                if (null == edges) {
+                                    edges = new ArrayList<>();
+                                    outEdges.put(edge.label(), edges);
+                                }
+                                edges.add(edge);
+                            } else {
+                                List<Edge> edges = inEdges.get(edge.label());
+                                if (null == edges) {
+                                    edges = new ArrayList<>();
+                                    inEdges.put(edge.label(), edges);
+                                }
+                                edges.add(edge);
+                            }
+                        });
+
+                        if (outEdges.isEmpty())
+                            this.dropEdges(Direction.OUT);
+                        else
+                            this.outEdges = outEdges;
+
+                        if (inEdges.isEmpty())
+                            this.dropEdges(Direction.IN);
+                        else
+                            this.inEdges = inEdges;
+                    }
+                }
+                return Optional.of(this);
+            } else {
+                return Optional.empty();
+            }
+        }
     }
 
     ///////////////////////////////
@@ -450,7 +538,7 @@
         @Override
         public void remove() {
             if (null != StarGraph.this.starVertex.vertexProperties)
-                StarGraph.this.starVertex.vertexProperties.get(this.label()).remove(this);
+                StarGraph.this.starVertex.vertexProperties.get(this.label).remove(this);
         }
 
         @Override
@@ -846,5 +934,4 @@
             return true;
         }
     }
-
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGryoSerializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGryoSerializer.java
index 0a9d07d..b2379ce 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGryoSerializer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphGryoSerializer.java
@@ -18,37 +18,24 @@
  */
 package org.apache.tinkerpop.gremlin.structure.util.star;
 
-import org.apache.tinkerpop.gremlin.structure.Direction;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.T;
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.apache.tinkerpop.shaded.kryo.Kryo;
-import org.apache.tinkerpop.shaded.kryo.Serializer;
-import org.apache.tinkerpop.shaded.kryo.io.Input;
-import org.apache.tinkerpop.shaded.kryo.io.Output;
-
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.shaded.ShadedSerializerAdapter;
+
 /**
- * Kryo serializer for {@link StarGraph}.  Implements an internal versioning capability for backward compatibility.
- * The single byte at the front of the serialization stream denotes the version.  That version can be used to choose
- * the correct deserialization mechanism.  The limitation is that this versioning won't help with backward
- * compatibility for custom serializers from providers.  Providers should be encouraged to write their serializers
- * with backward compatibility in mind.
+ * A wrapper for {@link StarGraphSerializer} that makes it compatible with TinkerPop's
+ * shaded Kryo.
  *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public final class StarGraphGryoSerializer extends Serializer<StarGraph> {
+public final class StarGraphGryoSerializer extends ShadedSerializerAdapter<StarGraph>  {
 
     private static final Map<Direction, StarGraphGryoSerializer> CACHE = new HashMap<>();
 
-    private final Direction edgeDirectionToSerialize;
-
-    private final static byte VERSION_1 = Byte.MIN_VALUE;
-
     static {
         CACHE.put(Direction.BOTH, new StarGraphGryoSerializer(Direction.BOTH));
         CACHE.put(Direction.IN, new StarGraphGryoSerializer(Direction.IN));
@@ -56,8 +43,12 @@
         CACHE.put(null, new StarGraphGryoSerializer(null));
     }
 
+    private StarGraphGryoSerializer(final Direction edgeDirectionToSerialize, final GraphFilter graphFilter) {
+        super(new StarGraphSerializer(edgeDirectionToSerialize, graphFilter));
+    }
+
     private StarGraphGryoSerializer(final Direction edgeDirectionToSerialize) {
-        this.edgeDirectionToSerialize = edgeDirectionToSerialize;
+        this(edgeDirectionToSerialize, new GraphFilter());
     }
 
     /**
@@ -68,88 +59,8 @@
         return CACHE.get(direction);
     }
 
-    @Override
-    public void write(final Kryo kryo, final Output output, final StarGraph starGraph) {
-        output.writeByte(VERSION_1);
-        kryo.writeObjectOrNull(output, starGraph.edgeProperties, HashMap.class);
-        kryo.writeObjectOrNull(output, starGraph.metaProperties, HashMap.class);
-        kryo.writeClassAndObject(output, starGraph.starVertex.id);
-        kryo.writeObject(output, starGraph.starVertex.label);
-        writeEdges(kryo, output, starGraph, Direction.IN);
-        writeEdges(kryo, output, starGraph, Direction.OUT);
-        kryo.writeObject(output, null != starGraph.starVertex.vertexProperties);
-        if (null != starGraph.starVertex.vertexProperties) {
-            kryo.writeObject(output, starGraph.starVertex.vertexProperties.size());
-            for (final Map.Entry<String, List<VertexProperty>> vertexProperties : starGraph.starVertex.vertexProperties.entrySet()) {
-                kryo.writeObject(output, vertexProperties.getKey());
-                kryo.writeObject(output, vertexProperties.getValue().size());
-                for (final VertexProperty vertexProperty : vertexProperties.getValue()) {
-                    kryo.writeClassAndObject(output, vertexProperty.id());
-                    kryo.writeClassAndObject(output, vertexProperty.value());
-                }
-            }
-        }
-    }
-
-    @Override
-    public StarGraph read(final Kryo kryo, final Input input, final Class<StarGraph> aClass) {
-        final StarGraph starGraph = StarGraph.open();
-        input.readByte();  // version field ignored for now - for future use with backward compatibility
-        starGraph.edgeProperties = kryo.readObjectOrNull(input, HashMap.class);
-        starGraph.metaProperties = kryo.readObjectOrNull(input, HashMap.class);
-        starGraph.addVertex(T.id, kryo.readClassAndObject(input), T.label, kryo.readObject(input, String.class));
-        readEdges(kryo, input, starGraph, Direction.IN);
-        readEdges(kryo, input, starGraph, Direction.OUT);
-        if (kryo.readObject(input, Boolean.class)) {
-            final int numberOfUniqueKeys = kryo.readObject(input, Integer.class);
-            for (int i = 0; i < numberOfUniqueKeys; i++) {
-                final String vertexPropertyKey = kryo.readObject(input, String.class);
-                final int numberOfVertexPropertiesWithKey = kryo.readObject(input, Integer.class);
-                for (int j = 0; j < numberOfVertexPropertiesWithKey; j++) {
-                    final Object id = kryo.readClassAndObject(input);
-                    final Object value = kryo.readClassAndObject(input);
-                    starGraph.starVertex.property(VertexProperty.Cardinality.list, vertexPropertyKey, value, T.id, id);
-                }
-            }
-        }
-        return starGraph;
-    }
-
-    private void writeEdges(final Kryo kryo, final Output output, final StarGraph starGraph, final Direction direction) {
-        // only write edges if there are some AND if the user requested them to be serialized AND if they match
-        // the direction being serialized by the format
-        final Map<String, List<Edge>> starEdges = direction.equals(Direction.OUT) ? starGraph.starVertex.outEdges : starGraph.starVertex.inEdges;
-        final boolean writeEdges = null != starEdges && edgeDirectionToSerialize != null
-                && (edgeDirectionToSerialize == direction || edgeDirectionToSerialize == Direction.BOTH);
-        kryo.writeObject(output, writeEdges);
-        if (writeEdges) {
-            kryo.writeObject(output, starEdges.size());
-            for (final Map.Entry<String, List<Edge>> edges : starEdges.entrySet()) {
-                kryo.writeObject(output, edges.getKey());
-                kryo.writeObject(output, edges.getValue().size());
-                for (final Edge edge : edges.getValue()) {
-                    kryo.writeClassAndObject(output, edge.id());
-                    kryo.writeClassAndObject(output, direction.equals(Direction.OUT) ? edge.inVertex().id() : edge.outVertex().id());
-                }
-            }
-        }
-    }
-
-    private static void readEdges(final Kryo kryo, final Input input, final StarGraph starGraph, final Direction direction) {
-        if (kryo.readObject(input, Boolean.class)) {
-            final int numberOfUniqueLabels = kryo.readObject(input, Integer.class);
-            for (int i = 0; i < numberOfUniqueLabels; i++) {
-                final String edgeLabel = kryo.readObject(input, String.class);
-                final int numberOfEdgesWithLabel = kryo.readObject(input, Integer.class);
-                for (int j = 0; j < numberOfEdgesWithLabel; j++) {
-                    final Object edgeId = kryo.readClassAndObject(input);
-                    final Object adjacentVertexId = kryo.readClassAndObject(input);
-                    if (direction.equals(Direction.OUT))
-                        starGraph.starVertex.addOutEdge(edgeLabel, starGraph.addVertex(T.id, adjacentVertexId), T.id, edgeId);
-                    else
-                        starGraph.starVertex.addInEdge(edgeLabel, starGraph.addVertex(T.id, adjacentVertexId), T.id, edgeId);
-                }
-            }
-        }
+    public static StarGraphGryoSerializer withGraphFilter(final GraphFilter graphFilter) {
+        final StarGraphGryoSerializer serializer = new StarGraphGryoSerializer(Direction.BOTH, graphFilter.clone());
+        return serializer;
     }
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphSerializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphSerializer.java
new file mode 100644
index 0000000..f4ffa7d
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/star/StarGraphSerializer.java
@@ -0,0 +1,150 @@
+/*
+ * 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.structure.util.star;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.T;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.InputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.OutputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
+
+/**
+ * Kryo serializer for {@link StarGraph}.  Implements an internal versioning capability for backward compatibility.
+ * The single byte at the front of the serialization stream denotes the version.  That version can be used to choose
+ * the correct deserialization mechanism.  The limitation is that this versioning won't help with backward
+ * compatibility for custom serializers from providers.  Providers should be encouraged to write their serializers
+ * with backward compatibility in mind.
+ *
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class StarGraphSerializer implements SerializerShim<StarGraph> {
+
+    private final Direction edgeDirectionToSerialize;
+    private GraphFilter graphFilter;
+
+    private final static byte VERSION_1 = Byte.MIN_VALUE;
+
+    public StarGraphSerializer(final Direction edgeDirectionToSerialize, final GraphFilter graphFilter) {
+        this.edgeDirectionToSerialize = edgeDirectionToSerialize;
+        this.graphFilter = graphFilter;
+    }
+
+    @Override
+    public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final StarGraph starGraph) {
+        output.writeByte(VERSION_1);
+        kryo.writeObjectOrNull(output, starGraph.edgeProperties, HashMap.class);
+        kryo.writeObjectOrNull(output, starGraph.metaProperties, HashMap.class);
+        kryo.writeClassAndObject(output, starGraph.starVertex.id);
+        kryo.writeObject(output, starGraph.starVertex.label);
+        writeEdges(kryo, output, starGraph, Direction.IN);
+        writeEdges(kryo, output, starGraph, Direction.OUT);
+        kryo.writeObject(output, null != starGraph.starVertex.vertexProperties);
+        if (null != starGraph.starVertex.vertexProperties) {
+            kryo.writeObject(output, starGraph.starVertex.vertexProperties.size());
+            for (final Map.Entry<String, List<VertexProperty>> vertexProperties : starGraph.starVertex.vertexProperties.entrySet()) {
+                kryo.writeObject(output, vertexProperties.getKey());
+                kryo.writeObject(output, vertexProperties.getValue().size());
+                for (final VertexProperty vertexProperty : vertexProperties.getValue()) {
+                    kryo.writeClassAndObject(output, vertexProperty.id());
+                    kryo.writeClassAndObject(output, vertexProperty.value());
+                }
+            }
+        }
+    }
+
+    /**
+     * If the returned {@link StarGraph} is null, that means that the {@link GraphFilter} filtered the vertex.
+     */
+    @Override
+    public <I extends InputShim> StarGraph read(final KryoShim<I, ?> kryo, final I input, final Class<StarGraph> clazz) {
+        final StarGraph starGraph = StarGraph.open();
+        input.readByte();  // version field ignored for now - for future use with backward compatibility
+        starGraph.edgeProperties = kryo.readObjectOrNull(input, HashMap.class);
+        starGraph.metaProperties = kryo.readObjectOrNull(input, HashMap.class);
+        starGraph.addVertex(T.id, kryo.readClassAndObject(input), T.label, kryo.readObject(input, String.class));
+        readEdges(kryo, input, starGraph, Direction.IN);
+        readEdges(kryo, input, starGraph, Direction.OUT);
+        if (kryo.readObject(input, Boolean.class)) {
+            final int numberOfUniqueKeys = kryo.readObject(input, Integer.class);
+            for (int i = 0; i < numberOfUniqueKeys; i++) {
+                final String vertexPropertyKey = kryo.readObject(input, String.class);
+                final int numberOfVertexPropertiesWithKey = kryo.readObject(input, Integer.class);
+                for (int j = 0; j < numberOfVertexPropertiesWithKey; j++) {
+                    final Object id = kryo.readClassAndObject(input);
+                    final Object value = kryo.readClassAndObject(input);
+                    starGraph.starVertex.property(VertexProperty.Cardinality.list, vertexPropertyKey, value, T.id, id);
+                }
+            }
+        }
+        return this.graphFilter.hasFilter() ? starGraph.applyGraphFilter(this.graphFilter).orElse(null) : starGraph;
+    }
+
+    private <O extends OutputShim> void writeEdges(final KryoShim<?, O> kryo, final O output, final StarGraph starGraph, final Direction direction) {
+        // only write edges if there are some AND if the user requested them to be serialized AND if they match
+        // the direction being serialized by the format
+        final Map<String, List<Edge>> starEdges = direction.equals(Direction.OUT) ? starGraph.starVertex.outEdges : starGraph.starVertex.inEdges;
+        final boolean writeEdges = null != starEdges && edgeDirectionToSerialize != null
+                && (edgeDirectionToSerialize == direction || edgeDirectionToSerialize == Direction.BOTH);
+        kryo.writeObject(output, writeEdges);
+        if (writeEdges) {
+            kryo.writeObject(output, starEdges.size());
+            for (final Map.Entry<String, List<Edge>> edges : starEdges.entrySet()) {
+                kryo.writeObject(output, edges.getKey());
+                kryo.writeObject(output, edges.getValue().size());
+                for (final Edge edge : edges.getValue()) {
+                    kryo.writeClassAndObject(output, edge.id());
+                    kryo.writeClassAndObject(output, direction.equals(Direction.OUT) ? edge.inVertex().id() : edge.outVertex().id());
+                }
+            }
+        }
+    }
+
+    private <I extends InputShim> void readEdges(final KryoShim<I, ?> kryo, final I input, final StarGraph starGraph, final Direction direction) {
+        if (kryo.readObject(input, Boolean.class)) {
+            final int numberOfUniqueLabels = kryo.readObject(input, Integer.class);
+            for (int i = 0; i < numberOfUniqueLabels; i++) {
+                final String edgeLabel = kryo.readObject(input, String.class);
+                final int numberOfEdgesWithLabel = kryo.readObject(input, Integer.class);
+                for (int j = 0; j < numberOfEdgesWithLabel; j++) {
+                    final Object edgeId = kryo.readClassAndObject(input);
+                    final Object adjacentVertexId = kryo.readClassAndObject(input);
+                    if (this.graphFilter.checkEdgeLegality(direction, edgeLabel).positive()) {
+                        if (direction.equals(Direction.OUT))
+                            starGraph.starVertex.addOutEdge(edgeLabel, starGraph.addVertex(T.id, adjacentVertexId), T.id, edgeId);
+                        else
+                            starGraph.starVertex.addInEdge(edgeLabel, starGraph.addVertex(T.id, adjacentVertexId), T.id, edgeId);
+                    } else if (null != starGraph.edgeProperties) {
+                        starGraph.edgeProperties.remove(edgeId);
+                    }
+                }
+            }
+        }
+    }
+}
+
+
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ChainedComparator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ChainedComparator.java
index 8c69f1b..44a994b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ChainedComparator.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/ChainedComparator.java
@@ -19,8 +19,11 @@
 package org.apache.tinkerpop.gremlin.util.function;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Order;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.ComparatorTraverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.TraversalComparator;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.IdentityTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
+import org.javatuples.Pair;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -31,19 +34,21 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class ChainedComparator<T> implements Comparator<T>, Serializable {
+public final class ChainedComparator<S, C extends Comparable> implements Comparator<S>, Serializable {
 
-    private final List<Comparator<T>> comparators;
-    private transient Comparator<T> chain;
+    private final List<Pair<Traversal.Admin<S, C>, Comparator<C>>> comparators = new ArrayList<>();
     private final boolean isShuffle;
+    private final boolean traversers;
 
-    public ChainedComparator(final List<Comparator<T>> comparators) {
+    public ChainedComparator(final boolean traversers, final List<Pair<Traversal.Admin<S, C>, Comparator<C>>> comparators) {
+        this.traversers = traversers;
         if (comparators.isEmpty())
-            throw new IllegalArgumentException("A chained comparator requires at least one comparator");
-        this.comparators = new ArrayList<>(comparators);
-        this.isShuffle = ChainedComparator.testIsShuffle(this.comparators.get(this.comparators.size() - 1));
+            this.comparators.add(new Pair<>(new IdentityTraversal(), (Comparator) Order.incr));
+        else
+            this.comparators.addAll(comparators);
+        this.isShuffle = (Comparator) (this.comparators.get(this.comparators.size() - 1).getValue1()) == Order.shuffle;
         if (!this.isShuffle)
-            this.comparators.removeAll(this.comparators.stream().filter(ChainedComparator::testIsShuffle).collect(Collectors.toList()));
+            this.comparators.removeAll(this.comparators.stream().filter(pair -> (Comparator) pair.getValue1() == Order.shuffle).collect(Collectors.toList()));
     }
 
     public boolean isShuffle() {
@@ -51,20 +56,14 @@
     }
 
     @Override
-    public int compare(final T objectA, final T objectB) {
-        if (null == this.chain) this.chain = this.comparators.stream().reduce((a, b) -> a.thenComparing(b)).get();
-        return this.chain.compare(objectA, objectB);
+    public int compare(final S objectA, final S objectB) {
+        for (final Pair<Traversal.Admin<S, C>, Comparator<C>> pair : this.comparators) {
+            final int comparison = this.traversers ?
+                    pair.getValue1().compare(TraversalUtil.apply((Traverser.Admin<S>) objectA, pair.getValue0()), TraversalUtil.apply((Traverser.Admin<S>) objectB, pair.getValue0())) :
+                    pair.getValue1().compare(TraversalUtil.apply(objectA, pair.getValue0()), TraversalUtil.apply(objectB, pair.getValue0()));
+            if (comparison != 0)
+                return comparison;
+        }
+        return 0;
     }
-
-    private static boolean testIsShuffle(final Comparator comparator) {
-        if (comparator.equals(Order.shuffle))
-            return true;
-        else if (comparator instanceof ComparatorTraverser)
-            return testIsShuffle(((ComparatorTraverser) comparator).getComparator());
-        else if (comparator instanceof TraversalComparator)
-            return testIsShuffle(((TraversalComparator) comparator).getComparator());
-        else
-            return false;
-    }
-
 }
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/DefaultTraversalMetricsSupplier.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/DefaultTraversalMetricsSupplier.java
new file mode 100644
index 0000000..e46b668
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/DefaultTraversalMetricsSupplier.java
@@ -0,0 +1,45 @@
+/*
+ * 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.util.function;
+
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalMetrics;
+
+import java.io.Serializable;
+import java.util.function.Supplier;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class DefaultTraversalMetricsSupplier implements Supplier<DefaultTraversalMetrics>, Serializable {
+
+    private static final DefaultTraversalMetricsSupplier INSTANCE = new DefaultTraversalMetricsSupplier();
+
+    private DefaultTraversalMetricsSupplier() {
+    }
+
+    @Override
+    public DefaultTraversalMetrics get() {
+        return new DefaultTraversalMetrics();
+    }
+
+    public static DefaultTraversalMetricsSupplier instance() {
+        return INSTANCE;
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/MutableMetricsSupplier.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/MutableMetricsSupplier.java
new file mode 100644
index 0000000..15e4420
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/function/MutableMetricsSupplier.java
@@ -0,0 +1,50 @@
+/*
+ * 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.util.function;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ComputerAwareStep;
+import org.apache.tinkerpop.gremlin.process.traversal.util.MutableMetrics;
+
+import java.io.Serializable;
+import java.util.function.Supplier;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class MutableMetricsSupplier implements Supplier<MutableMetrics>, Serializable {
+
+    private final String stepId;
+    private final String stepString;
+
+    public MutableMetricsSupplier(final Step<?, ?> previousStep) {
+        this.stepId = previousStep.getId();
+        this.stepString =
+                previousStep instanceof RepeatStep.RepeatEndStep || previousStep instanceof ComputerAwareStep.EndStep ?
+                        previousStep.toString() + " (profiling ignored)" :
+                        previousStep.toString();
+    }
+
+    @Override
+    public MutableMetrics get() {
+        return new MutableMetrics(this.stepId, this.stepString);
+    }
+}
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/computer/GraphFilterTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/computer/GraphFilterTest.java
new file mode 100644
index 0000000..0420f60
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/computer/GraphFilterTest.java
@@ -0,0 +1,330 @@
+/*
+ * 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.computer;
+
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.junit.Test;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class GraphFilterTest {
+
+    @Test
+    public void shouldHaveValidLegalEnumOrdering() {
+        assertTrue(GraphFilter.Legal.YES.compareTo(GraphFilter.Legal.YES) == 0);
+        assertTrue(GraphFilter.Legal.YES.compareTo(GraphFilter.Legal.NO) < 0);
+        assertTrue(GraphFilter.Legal.YES.compareTo(GraphFilter.Legal.MAYBE) < 0);
+        assertTrue(GraphFilter.Legal.MAYBE.compareTo(GraphFilter.Legal.NO) < 0);
+    }
+
+    @Test
+    public void shouldOnlyAllowEdgeFilterToTraverseLocalStarGraph() {
+        GraphFilter graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.outE());
+        try {
+            graphFilter.setEdgeFilter(__.<Vertex>outE().inV().outE());
+            fail("Should not allow traversals past the star graph");
+        } catch (final IllegalArgumentException e) {
+            assertEquals(e.getMessage(), GraphComputer.Exceptions.edgeFilterAccessesAdjacentVertices(__.<Vertex>outE().inV().outE()).getMessage());
+        }
+    }
+
+    @Test
+    public void shouldOnlyAllowVertexFilterToTraverseVertex() {
+        GraphFilter graphFilter = new GraphFilter();
+        graphFilter.setVertexFilter(__.hasLabel("person"));
+        try {
+            graphFilter.setVertexFilter(__.<Vertex>as("a").outE().<Vertex>select("a"));
+            fail("Should not allow traversals to the incident edges");
+        } catch (final IllegalArgumentException e) {
+            assertEquals(e.getMessage(), GraphComputer.Exceptions.vertexFilterAccessesIncidentEdges(__.<Vertex>as("a").outE().<Vertex>select("a")).getMessage());
+        }
+    }
+
+    @Test
+    public void shouldGetLegallyPositiveEdgeLabels() {
+        GraphFilter graphFilter = new GraphFilter();
+        assertFalse(graphFilter.hasEdgeFilter());
+        assertEquals(Collections.singleton(null), graphFilter.getLegallyPositiveEdgeLabels(Direction.OUT));
+        assertEquals(Collections.singleton(null), graphFilter.getLegallyPositiveEdgeLabels(Direction.IN));
+        assertEquals(Collections.singleton(null), graphFilter.getLegallyPositiveEdgeLabels(Direction.BOTH));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.outE("created"));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(Collections.singleton("created"), graphFilter.getLegallyPositiveEdgeLabels(Direction.OUT));
+        assertEquals(Collections.emptySet(), graphFilter.getLegallyPositiveEdgeLabels(Direction.IN));
+        assertEquals(Collections.emptySet(), graphFilter.getLegallyPositiveEdgeLabels(Direction.BOTH));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.outE());
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(Collections.singleton(null), graphFilter.getLegallyPositiveEdgeLabels(Direction.OUT));
+        assertEquals(Collections.emptySet(), graphFilter.getLegallyPositiveEdgeLabels(Direction.IN));
+        assertEquals(Collections.emptySet(), graphFilter.getLegallyPositiveEdgeLabels(Direction.BOTH));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.<Vertex>outE("created").has("weight", 32));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(Collections.singleton("created"), graphFilter.getLegallyPositiveEdgeLabels(Direction.OUT));
+        assertEquals(Collections.emptySet(), graphFilter.getLegallyPositiveEdgeLabels(Direction.IN));
+        assertEquals(Collections.emptySet(), graphFilter.getLegallyPositiveEdgeLabels(Direction.BOTH));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.<Vertex>identity().outE("created"));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(Collections.singleton(null), graphFilter.getLegallyPositiveEdgeLabels(Direction.OUT));
+        assertEquals(Collections.singleton(null), graphFilter.getLegallyPositiveEdgeLabels(Direction.IN));
+        assertEquals(Collections.singleton(null), graphFilter.getLegallyPositiveEdgeLabels(Direction.BOTH));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.bothE());
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(Collections.singleton(null), graphFilter.getLegallyPositiveEdgeLabels(Direction.OUT));
+        assertEquals(Collections.singleton(null), graphFilter.getLegallyPositiveEdgeLabels(Direction.IN));
+        assertEquals(Collections.singleton(null), graphFilter.getLegallyPositiveEdgeLabels(Direction.BOTH));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.<Vertex>bothE().has("weight", 32));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(Collections.singleton(null), graphFilter.getLegallyPositiveEdgeLabels(Direction.OUT));
+        assertEquals(Collections.singleton(null), graphFilter.getLegallyPositiveEdgeLabels(Direction.IN));
+        assertEquals(Collections.singleton(null), graphFilter.getLegallyPositiveEdgeLabels(Direction.BOTH));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.<Vertex>bothE().limit(0));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(Collections.emptySet(), graphFilter.getLegallyPositiveEdgeLabels(Direction.OUT));
+        assertEquals(Collections.emptySet(), graphFilter.getLegallyPositiveEdgeLabels(Direction.IN));
+        assertEquals(Collections.emptySet(), graphFilter.getLegallyPositiveEdgeLabels(Direction.BOTH));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.<Vertex>bothE("created").has("weight", 32));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(Collections.singleton("created"), graphFilter.getLegallyPositiveEdgeLabels(Direction.OUT));
+        assertEquals(Collections.singleton("created"), graphFilter.getLegallyPositiveEdgeLabels(Direction.IN));
+        assertEquals(Collections.singleton("created"), graphFilter.getLegallyPositiveEdgeLabels(Direction.BOTH));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.union(__.outE("created"), __.inE("likes")));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(Collections.singleton("created"), graphFilter.getLegallyPositiveEdgeLabels(Direction.OUT));
+        assertEquals(Collections.singleton("likes"), graphFilter.getLegallyPositiveEdgeLabels(Direction.IN));
+        assertEquals(Collections.emptySet(), graphFilter.getLegallyPositiveEdgeLabels(Direction.BOTH));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.union(__.outE("created"), __.inE("likes", "created")));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(Collections.singleton("created"), graphFilter.getLegallyPositiveEdgeLabels(Direction.OUT));
+        assertEquals(new HashSet<>(Arrays.asList("likes", "created")), graphFilter.getLegallyPositiveEdgeLabels(Direction.IN));
+        assertEquals(Collections.singleton("created"), graphFilter.getLegallyPositiveEdgeLabels(Direction.BOTH));
+    }
+
+    @Test
+    public void shouldHaveProperEdgeLegality() {
+        GraphFilter graphFilter = new GraphFilter();
+        assertFalse(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.IN, "created"));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.BOTH, "likes"));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT, "knows"));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.flatMap(v -> v.get().edges(Direction.OUT, "created")));  // lambdas can not be introspected
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.OUT));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.IN, "created"));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.BOTH, "likes"));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.OUT, "knows"));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.<Vertex>identity().bothE());  // there are no strategies for __.
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.OUT));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.IN, "created"));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.BOTH, "likes"));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.OUT, "knows"));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.<Vertex>bothE().has("weight", 32));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.OUT));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.IN, "created"));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.BOTH, "likes"));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.OUT, "knows"));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.<Vertex>inE().has("weight", 32));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.OUT));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.IN, "created"));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.BOTH, "likes"));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.OUT, "knows"));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.<Vertex>bothE().limit(0));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.OUT));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.outE());
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT, "knows"));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.<Vertex>outE().limit(10));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.OUT));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.OUT, "knows"));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.<Vertex>outE("knows").limit(10));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.OUT));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.OUT, "knows"));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.OUT, "created"));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.bothE("created"));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.BOTH, "created"));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.IN, "created"));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.BOTH, "knows"));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.OUT, "knows"));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.outE("knows", "likes"));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.BOTH, "likes"));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.BOTH, "created"));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT, "knows"));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT, "likes"));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.OUT, "created"));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.union(__.inE("bought"), __.outE("created"), __.bothE("knows", "likes")));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT, "created"));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT, "likes"));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.IN, "created"));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.OUT, "worksFor"));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.union(__.outE("created"), __.bothE("knows", "likes")));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT, "created"));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT, "likes"));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.IN, "created"));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.IN, "likes"));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.OUT, "worksFor"));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.union(__.inE("bought").has("weight", 32), __.outE("created"), __.bothE("knows", "likes")));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT, "created"));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT, "likes"));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.IN, "created"));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.IN, "bought"));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.OUT, "worksFor"));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.IN, "likes"));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.IN, "knows"));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.union(__.inE("bought").has("weight", 32), __.outE("created"), __.bothE("knows", "likes", "bought")));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT, "created"));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT, "likes"));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.OUT, "blah"));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.IN, "created"));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.IN, "bought"));
+        assertEquals(GraphFilter.Legal.NO, graphFilter.checkEdgeLegality(Direction.OUT, "worksFor"));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.IN, "likes"));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.IN, "knows"));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.union(__.outE("created").limit(0), __.inE("created")));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.OUT));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.OUT, "created"));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.IN, "created"));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.BOTH, "created"));
+        //
+        graphFilter = new GraphFilter();
+        graphFilter.setEdgeFilter(__.union(__.outE(), __.inE().limit(0)));
+        assertTrue(graphFilter.hasEdgeFilter());
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.IN));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.BOTH));
+        assertEquals(GraphFilter.Legal.YES, graphFilter.checkEdgeLegality(Direction.OUT, "created"));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.IN, "created"));
+        assertEquals(GraphFilter.Legal.MAYBE, graphFilter.checkEdgeLegality(Direction.BOTH, "created"));
+    }
+}
\ No newline at end of file
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/optimization/GraphFilterStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/optimization/GraphFilterStrategyTest.java
new file mode 100644
index 0000000..e2deeed
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/computer/traversal/strategy/optimization/GraphFilterStrategyTest.java
@@ -0,0 +1,74 @@
+/*
+ * 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.computer.traversal.strategy.optimization;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.Arrays;
+
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.as;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(Parameterized.class)
+public class GraphFilterStrategyTest {
+
+    @Parameterized.Parameter(value = 0)
+    public Traversal original;
+
+    @Parameterized.Parameter(value = 1)
+    public Traversal edgeFilter;
+
+
+    @Test
+    public void doTest() {
+        assertEquals(GraphFilterStrategy.instance().getEdgeFilter(this.original.asAdmin()), this.edgeFilter);
+    }
+
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> generateTestParameters() {
+
+        return Arrays.asList(new Traversal[][]{
+                {__.V().count(), __.bothE().limit(0)},
+                {__.V().both().has("name"), null},
+                {__.bothE(), null},
+                {__.V().outE(), __.outE()},
+                {__.V().in(), __.inE()},
+                {__.V().local(__.outE("knows", "created").limit(10)), __.outE("knows", "created")},
+                {__.out("created"), __.outE("created")},
+                {__.in("created", "knows"), __.inE("created", "knows")},
+                {__.V().both("created"), __.bothE("created")},
+                {__.V().out("created").repeat(__.both("knows").until(__.inE("bought", "likes"))).outE("likes"), __.union(__.outE("created"), __.bothE("bought", "knows", "likes"))},
+                {__.union(__.inE("created"), __.bothE()), null},
+                {__.union(__.inE("created"), __.outE("created")), __.bothE("created")},
+                {__.union(__.inE("knows"), __.outE("created")), __.union(__.outE("created"), __.bothE("knows"))},
+                {__.union(__.inE("knows", "created"), __.outE("created")), __.bothE("knows", "created")},
+                {__.V().out().out().match(
+                        as("a").in("created").as("b"),
+                        as("b").in("knows").as("c")).select("c").out("created").values("name"), null}
+        });
+    }
+}
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PathTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PathTest.java
index 66c1a4d..1b37502 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PathTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PathTest.java
@@ -76,6 +76,29 @@
             assertEquals(Integer.valueOf(2), path.get(1));
             assertEquals(Integer.valueOf(3), path.get(2));
             assertEquals(Integer.valueOf(3), path.get(3));
+            Path retractedPath = path.retract(Collections.singleton("f")).clone();
+            assertFalse(path.hasLabel("f"));
+            assertEquals(4, path.size());
+            assertEquals(retractedPath, path);
+            path = path.retract(Collections.singleton("b"));
+            assertFalse(path.hasLabel("b"));
+            assertEquals(3, path.size());
+            assertEquals(retractedPath.retract(Collections.singleton("b")), path);
+            path = path.retract(Collections.singleton("a"));
+            assertEquals(2, path.size());
+            assertFalse(path.hasLabel("a"));
+            assertTrue(path.hasLabel("d"));
+            path = path.retract(new HashSet<>(Arrays.asList("c", "d")));
+            assertFalse(path.hasLabel("c"));
+            assertFalse(path.hasLabel("d"));
+            assertTrue(path.hasLabel("e"));
+            assertEquals(1, path.size());
+            path = path.retract(Collections.singleton("e"));
+            assertFalse(path.hasLabel("c"));
+            assertFalse(path.hasLabel("d"));
+            assertFalse(path.hasLabel("e"));
+            assertNotEquals(retractedPath, path);
+            assertEquals(0, path.size());
         });
     }
 
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalTest.java
index 97da482..98d590b 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalTest.java
@@ -31,7 +31,7 @@
  */
 public class GraphTraversalTest {
 
-    private static Set<String> NO_GRAPH = new HashSet<>(Arrays.asList("asAdmin", "by", "option", "iterate", "to", "from", "profile"));
+    private static Set<String> NO_GRAPH = new HashSet<>(Arrays.asList("asAdmin", "by", "option", "iterate", "to", "from", "profile", "pageRank", "peerPressure", "program"));
     private static Set<String> NO_ANONYMOUS = new HashSet<>(Arrays.asList("start", "__"));
 
     @Test
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupCountStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupCountStepTest.java
index 7e68291..f4eb7ac 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupCountStepTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupCountStepTest.java
@@ -16,6 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
@@ -26,7 +27,7 @@
 import java.util.List;
 
 /**
- * @author Daniel Kuppitz (http://gremlin.guru)
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public class GroupCountStepTest extends StepTest {
 
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStepTest.java
index 73a434c..6edcdab 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStepTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStepTest.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.traversal.Scope;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.StepTest;
@@ -27,10 +27,8 @@
 import java.util.Arrays;
 import java.util.List;
 
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.count;
-
 /**
- * @author Daniel Kuppitz (http://gremlin.guru)
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public class GroupStepTest extends StepTest {
 
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStepTest.java
index 7360e24..9061258 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStepTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStepTest.java
@@ -41,8 +41,16 @@
 import java.util.function.Consumer;
 
 import static org.apache.tinkerpop.gremlin.process.traversal.P.eq;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
-import static org.junit.Assert.*;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.and;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.as;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.in;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.match;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.or;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.where;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -112,7 +120,7 @@
                 __.match(as("a").out().as("b"), as("c").path().as("d").and().as("e").barrier()).asAdmin());
         assertEquals(1, new HashSet<>(traversals).size());   // the two patterns should pre-compile to the same traversal
         traversals.forEach(traversal -> {
-            MatchStep<?, ?> matchStep = (MatchStep<?, ?>) traversal.getStartStep();
+            final MatchStep<?, ?> matchStep = (MatchStep<?, ?>) traversal.getStartStep();
             assertEquals(2, matchStep.getGlobalChildren().size());
             Traversal.Admin<Object, Object> pattern = matchStep.getGlobalChildren().get(0);
             assertEquals("a", ((MatchStep.MatchStartStep) pattern.getStartStep()).getSelectKey().get());
@@ -126,7 +134,7 @@
             assertEquals(PathStep.class, ((MatchStep<?, ?>) pattern.getStartStep()).getGlobalChildren().get(0).getStartStep().getNextStep().getClass());
             assertEquals("d", ((MatchStep.MatchEndStep) ((MatchStep<?, ?>) pattern.getStartStep()).getGlobalChildren().get(0).getEndStep()).getMatchKey().get());
             assertEquals("e", ((MatchStep.MatchStartStep) ((MatchStep<?, ?>) pattern.getStartStep()).getGlobalChildren().get(1).getStartStep()).getSelectKey().get());
-            assertEquals(LambdaCollectingBarrierStep.class, ((MatchStep<?, ?>) pattern.getStartStep()).getGlobalChildren().get(1).getStartStep().getNextStep().getClass());
+            assertEquals(NoOpBarrierStep.class, ((MatchStep<?, ?>) pattern.getStartStep()).getGlobalChildren().get(1).getStartStep().getNextStep().getClass());
             assertFalse(((MatchStep.MatchEndStep) ((MatchStep<?, ?>) pattern.getStartStep()).getGlobalChildren().get(1).getEndStep()).getMatchKey().isPresent());
         });
     }
@@ -138,7 +146,7 @@
                 __.match(as("a").out().as("b"), where(as("c").in().as("d"))).asAdmin());
         assertEquals(1, new HashSet<>(traversals).size()); // the two patterns should pre-compile to the same traversal
         traversals.forEach(traversal -> {
-            MatchStep<?, ?> matchStep = (MatchStep<?, ?>) traversal.getStartStep();
+            final MatchStep<?, ?> matchStep = (MatchStep<?, ?>) traversal.getStartStep();
             //assertFalse(matchStep.getStartLabel().isPresent());
             assertEquals(2, matchStep.getGlobalChildren().size());
             Traversal.Admin<Object, Object> pattern = matchStep.getGlobalChildren().get(0);
@@ -169,7 +177,7 @@
                 __.match(as("a").out().as("b"), where("c", P.neq("d"))).asAdmin());
         assertEquals(1, new HashSet<>(traversals).size()); // the two patterns should pre-compile to the same traversal
         traversals.forEach(traversal -> {
-            MatchStep<?, ?> matchStep = (MatchStep<?, ?>) traversal.getStartStep();
+            final MatchStep<?, ?> matchStep = (MatchStep<?, ?>) traversal.getStartStep();
             //assertFalse(matchStep.getStartLabel().isPresent());
             assertEquals(2, matchStep.getGlobalChildren().size());
             Traversal.Admin<Object, Object> pattern = matchStep.getGlobalChildren().get(0);
@@ -317,7 +325,7 @@
         // MAKE SURE OLAP JOBS ARE BIASED TOWARDS STAR GRAPH DATA
         final Consumer doNothing = s -> {
         };
-        Traversal.Admin<?, ?> traversal = __.match(
+        final Traversal.Admin<?, ?> traversal = __.match(
                 as("a").sideEffect(doNothing).as("b"),    // 1
                 as("b").sideEffect(doNothing).as("c"),    // 2
                 as("a").sideEffect(doNothing).as("d"),    // 5
@@ -325,7 +333,7 @@
                 as("c").sideEffect(doNothing).as("f"))    // 3
                 .asAdmin();
         traversal.applyStrategies(); // necessary to enure step ids are unique
-        MatchStep.CountMatchAlgorithm countMatchAlgorithm = new MatchStep.CountMatchAlgorithm();
+        final MatchStep.CountMatchAlgorithm countMatchAlgorithm = new MatchStep.CountMatchAlgorithm();
         countMatchAlgorithm.initialize(TraversalEngine.Type.COMPUTER, ((MatchStep<?, ?>) traversal.getStartStep()).getGlobalChildren());
         Traversal.Admin<Object, Object> firstPattern = ((MatchStep<?, ?>) traversal.getStartStep()).getGlobalChildren().get(0);
         Traversal.Admin<Object, Object> secondPattern = ((MatchStep<?, ?>) traversal.getStartStep()).getGlobalChildren().get(1);
@@ -410,4 +418,5 @@
                 as("b").in("created").count().is(P.gt(1))).asAdmin();
         assertEquals("a", MatchStep.Helper.computeStartLabel(((MatchStep<?, ?>) traversal.getStartStep()).getGlobalChildren()));
     }
+
 }
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStepTest.java
index 5613bd8..82acad3 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStepTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderGlobalStepTest.java
@@ -22,7 +22,6 @@
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.StepTest;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import java.util.ArrayList;
@@ -33,15 +32,11 @@
 
 /**
  * @author Daniel Kuppitz (http://gremlin.guru)
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public class OrderGlobalStepTest extends StepTest {
 
     @Override
-    @Ignore("hashCode() doesn't work properly for .order().by()")
-    public void testEquality() {
-    }
-
-    @Override
     protected List<Traversal> getTraversals() {
         return Arrays.asList(
                 __.order(),
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStepTest.java
index 30b96b0..8cc2e7e 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStepTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStepTest.java
@@ -34,15 +34,11 @@
 
 /**
  * @author Daniel Kuppitz (http://gremlin.guru)
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public class OrderLocalStepTest extends StepTest {
 
     @Override
-    @Ignore("hashCode() doesn't work properly for .order(local).by()")
-    public void testEquality() {
-    }
-
-    @Override
     protected List<Traversal> getTraversals() {
         return Arrays.asList(
                 __.order(Scope.local),
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStepV3d0Test.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProjectStepTest.java
similarity index 74%
rename from gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStepV3d0Test.java
rename to gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProjectStepTest.java
index 2ba2714..fb63526 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStepV3d0Test.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProjectStepTest.java
@@ -19,29 +19,29 @@
 
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.traversal.Scope;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.StepTest;
-import org.apache.tinkerpop.gremlin.structure.T;
 
 import java.util.Arrays;
 import java.util.List;
 
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.count;
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-@Deprecated
-public class GroupStepV3d0Test extends StepTest {
+public class ProjectStepTest extends StepTest {
 
     @Override
     protected List<Traversal> getTraversals() {
         return Arrays.asList(
-                __.groupV3d0().by(T.label),
-                __.groupV3d0().by(T.label).by("name"),
-                __.groupV3d0().by(T.label).by("name").by(count(Scope.local))
+                __.project("x", "y"),
+                __.project("x"),
+                __.project("y"),
+                __.project("x", "y").by(__.outE().count()).by("name"),
+                __.project("x", "y").by("age").by("name"),
+                __.project("x", "y").by(__.outE().count()),
+                __.project("x").by(__.outE().count()),
+                __.project("y").by("name")
         );
     }
-}
+}
\ No newline at end of file
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStepV3d0Test.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStepV3d0Test.java
index 92b6923..8e93bc5 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStepV3d0Test.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupSideEffectStepV3d0Test.java
@@ -19,13 +19,17 @@
 
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
 
+import org.apache.tinkerpop.gremlin.process.traversal.Scope;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.StepTest;
+import org.apache.tinkerpop.gremlin.structure.T;
 
 import java.util.Arrays;
 import java.util.List;
 
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.count;
+
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
@@ -35,12 +39,9 @@
     @Override
     protected List<Traversal> getTraversals() {
         return Arrays.asList(
-                __.groupCount("x"),
-                __.groupCount("x").by("name"),
-                __.groupCount("x").by("age"),
-                __.groupCount("y"),
-                __.groupCount("y").by("name"),
-                __.groupCount("y").by("age")
+                __.groupV3d0("a").by(T.label),
+                __.groupV3d0("a").by(T.label).by("name"),
+                __.groupV3d0("a").by(T.label).by("name").by(count(Scope.local))
         );
     }
 }
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileSideEffectStepTest.java
similarity index 90%
rename from gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileStepTest.java
rename to gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileSideEffectStepTest.java
index 4b7a57b..6ad6ec1 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileStepTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileSideEffectStepTest.java
@@ -28,10 +28,10 @@
 /**
  * @author Daniel Kuppitz (http://gremlin.guru)
  */
-public class ProfileStepTest extends StepTest {
+public class ProfileSideEffectStepTest extends StepTest {
 
     @Override
     protected List<Traversal> getTraversals() {
-        return Collections.singletonList(__.identity().profile());
+        return Collections.singletonList(__.identity().profile("x"));
     }
 }
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/TraversalStrategyPerformanceTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/TraversalStrategyPerformanceTest.java
new file mode 100644
index 0000000..f589cc3
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/TraversalStrategyPerformanceTest.java
@@ -0,0 +1,120 @@
+/*
+ * 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.strategy;
+
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
+import org.apache.tinkerpop.gremlin.util.TimeUtil;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Random;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Daniel Kuppitz (http://gremlin.guru)
+ */
+public abstract class TraversalStrategyPerformanceTest {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(TraversalStrategyPerformanceTest.class);
+    private static final Random RANDOM = new Random();
+
+    protected int getClockRuns() {
+        return 1000;
+    }
+
+    /**
+     * Specifies for how many percent of all comparisons the optimized traversal must be faster than the
+     * original traversal. Default is 100.
+     */
+    protected double getAssertionPercentile() {
+        return 100.0;
+    }
+
+    protected abstract Class<? extends TraversalStrategy> getStrategyUnderTest();
+
+    protected TraversalStrategy<?> getStrategyUnderTestInstance() throws Exception {
+        return (TraversalStrategy) getStrategyUnderTest().getMethod("instance").invoke(null);
+    }
+
+    protected abstract Iterator<GraphTraversal> getTraversalIterator();
+
+    @Test
+    public void shouldBeFaster() throws Exception {
+
+        final TraversalStrategies withStrategyUnderTest = new DefaultTraversalStrategies();
+        withStrategyUnderTest.addStrategies(getStrategyUnderTestInstance());
+
+        final TraversalStrategies withoutStrategyUnderTest = new DefaultTraversalStrategies();
+        withoutStrategyUnderTest.removeStrategies(getStrategyUnderTest());
+
+        final int clockRuns = getClockRuns();
+        final Iterator<GraphTraversal> iterator = getTraversalIterator();
+        int faster = 0, numTraversals = 0;
+        while (iterator.hasNext()) {
+
+            final GraphTraversal traversal = iterator.next();
+            final GraphTraversal.Admin original = traversal.asAdmin();
+            final GraphTraversal.Admin optimized = original.clone();
+
+            original.setStrategies(withoutStrategyUnderTest);
+            optimized.setStrategies(withStrategyUnderTest);
+
+            final double originalTime, optimizedTime;
+
+            if (RANDOM.nextBoolean()) {
+                originalTime = TimeUtil.clock(clockRuns, () -> original.clone().iterate());
+                optimizedTime = TimeUtil.clock(clockRuns, () -> optimized.clone().iterate());
+            } else {
+                optimizedTime = TimeUtil.clock(clockRuns, () -> optimized.clone().iterate());
+                originalTime = TimeUtil.clock(clockRuns, () -> original.clone().iterate());
+            }
+
+            final List originalResult = original.toList();
+            final List optimizedResult = optimized.toList();
+
+            if (originalTime > optimizedTime) {
+                LOGGER.debug("Original traversal ({} ms): {}", originalTime, original);
+                LOGGER.debug("Optimized traversal ({} ms): {}", optimizedTime, optimized);
+            } else {
+                LOGGER.warn("Original traversal ({} ms): {}", originalTime, original);
+                LOGGER.warn("Optimized traversal ({} ms): {}", optimizedTime, optimized);
+            }
+
+            if (getAssertionPercentile() >= 100) assertTrue(originalTime > optimizedTime);
+            else {
+                if (originalTime > optimizedTime)
+                    faster++;
+                numTraversals++;
+            }
+
+            assertEquals(originalResult, optimizedResult);
+        }
+
+        if (getAssertionPercentile() < 100 && numTraversals > 0)
+            assertTrue(((faster * 100.0) / numTraversals) >= getAssertionPercentile());
+    }
+}
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategyTest.java
index 348b2d0..47bee6a 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ConnectiveStrategyTest.java
@@ -19,165 +19,108 @@
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
 import org.junit.Test;
-import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
 import java.util.Arrays;
 
 import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
 public class ConnectiveStrategyTest {
 
-    @RunWith(Parameterized.class)
-    public static class StandardTest extends AbstractConnectiveStrategyTest {
+    @Parameterized.Parameter(value = 0)
+    public Traversal original;
 
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
+    @Parameterized.Parameter(value = 1)
+    public Traversal optimized;
 
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    void applyConnectiveStrategy(final Traversal traversal) {
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(ConnectiveStrategy.instance());
+        traversal.asAdmin().setStrategies(strategies);
+        traversal.asAdmin().applyStrategies();
     }
 
-    @RunWith(Parameterized.class)
-    public static class ComputerTest extends AbstractConnectiveStrategyTest {
-
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
-
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    @Test
+    public void doTest() {
+        applyConnectiveStrategy(original);
+        assertEquals(optimized, original);
     }
 
-    private static abstract class AbstractConnectiveStrategyTest {
-
-        protected TraversalEngine traversalEngine;
-
-        void applyMatchWhereStrategy(final Traversal traversal) {
-            final TraversalStrategies strategies = new DefaultTraversalStrategies();
-            strategies.addStrategies(ConnectiveStrategy.instance());
-
-            traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().applyStrategies();
-            traversal.asAdmin().setEngine(traversalEngine);
-        }
-
-        public void doTest(final Traversal traversal, final Traversal optimized) {
-            applyMatchWhereStrategy(traversal);
-            assertEquals(optimized, traversal);
-        }
-
-        static Iterable<Object[]> generateTestParameters() {
-
-            return Arrays.asList(new Traversal[][]{
-                    {__.has("name", "stephen").or().where(__.out("knows").has("name", "stephen")), __.or(__.has("name", "stephen"), __.where(__.out("knows").has("name", "stephen")))},
-                    {__.out("a").out("b").and().out("c").or().out("d"), __.or(__.and(__.out("a").out("b"), __.out("c")), __.out("d"))},
-                    {__.as("1").out("a").out("b").as("2").and().as("3").out("c").as("4").or().as("5").out("d").as("6"), __.or(__.and(__.as("1").out("a").out("b").as("2"), __.as("3").out("c").as("4")), __.as("5").out("d").as("6"))},
-                    {__.as("1").out("a").out("b").and().as("3").out("c").or().as("5").out("d"), __.or(__.and(__.as("1").out("a").out("b"), __.as("3").out("c")), __.as("5").out("d"))},
-                    {__.as("1").out("a").out("b").or().as("3").out("c").and().as("5").out("d"), __.or(__.as("1").out("a").out("b"), __.and(__.as("3").out("c"), __.as("5").out("d")))},
-                    {__.as("a").out().as("b").and().as("c").in().as("d"), __.and(__.as("a").out().as("b"), __.as("c").in().as("d"))},
-                    {__.union(__.as("a").out("l1").as("b").or().as("c").in("l2").as("d"), __.as("e").out("l3").as("f").and().as("g").in("l4").as("h")), __.union(__.or(__.as("a").out("l1").as("b"), __.as("c").in("l2").as("d")), __.and(__.as("e").out("l3").as("f"), __.as("g").in("l4").as("h")))},
-                    {__
-                    .as("a1").out("a").as("a2").or()
-                    .as("b1").out("b").as("b2").and()
-                    .as("c1").out("c").as("c2").or()
-                    .as("d1").out("d").as("d2").or()
-                    .as("e1").out("e").as("e2").and()
-                    .as("f1").out("f").as("f2").and()
-                    .as("g1").out("g").as("g2").or()
-                    .as("h1").out("h").as("h2").or(__
-                            .as("i1").out("i").as("i2").or()
-                            .as("j1").out("j").as("j2").and()
-                            .as("k1").out("k").as("k2")).and()
-                    .as("l1").out("l").as("l2").and()
-                    .as("m1").out("m").as("m2").and()
-                    .as("n1").out("n").as("n2"),
-                    // EXPECT:
-                    __.or(
-                            __.as("a1").out("a").as("a2"),
-                            __.or(
-                                    __.and(
-                                            __.as("b1").out("b").as("b2"),
-                                            __.as("c1").out("c").as("c2")
-                                    ),
-                                    __.or(
-                                            __.as("d1").out("d").as("d2"),
-                                            __.or(
-                                                    __.and(
-                                                            __.as("e1").out("e").as("e2"),
-                                                            __.and(
-                                                                    __.as("f1").out("f").as("f2"),
-                                                                    __.as("g1").out("g").as("g2")
-                                                            )
-                                                    ),
-                                                    __.and(
-                                                            __.as("h1").out("h").as("h2").or(
-                                                                    __.or(
-                                                                            __.as("i1").out("i").as("i2"),
-                                                                            __.and(
-                                                                                    __.as("j1").out("j").as("j2"),
-                                                                                    __.as("k1").out("k").as("k2")
-                                                                            )
-                                                                    )
-                                                            ),
-                                                            __.and(
-                                                                    __.as("l1").out("l").as("l2"),
-                                                                    __.and(
-                                                                            __.as("m1").out("m").as("m2"),
-                                                                            __.as("n1").out("n").as("n2")
-                                                                    )
-                                                            )
-                                                    )
-                                            )
-                                    )
-                            )
-                    )
-            }
-            });
-        }
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> generateTestParameters() {
+        return Arrays.asList(new Traversal[][]{
+                {__.has("name", "stephen").or().where(__.out("knows").has("name", "stephen")), __.or(__.has("name", "stephen"), __.where(__.out("knows").has("name", "stephen")))},
+                {__.out("a").out("b").and().out("c").or().out("d"), __.or(__.and(__.out("a").out("b"), __.out("c")), __.out("d"))},
+                {__.as("1").out("a").out("b").as("2").and().as("3").out("c").as("4").or().as("5").out("d").as("6"), __.or(__.and(__.as("1").out("a").out("b").as("2"), __.as("3").out("c").as("4")), __.as("5").out("d").as("6"))},
+                {__.as("1").out("a").out("b").and().as("3").out("c").or().as("5").out("d"), __.or(__.and(__.as("1").out("a").out("b"), __.as("3").out("c")), __.as("5").out("d"))},
+                {__.as("1").out("a").out("b").or().as("3").out("c").and().as("5").out("d"), __.or(__.as("1").out("a").out("b"), __.and(__.as("3").out("c"), __.as("5").out("d")))},
+                {__.as("a").out().as("b").and().as("c").in().as("d"), __.and(__.as("a").out().as("b"), __.as("c").in().as("d"))},
+                {__.union(__.as("a").out("l1").as("b").or().as("c").in("l2").as("d"), __.as("e").out("l3").as("f").and().as("g").in("l4").as("h")), __.union(__.or(__.as("a").out("l1").as("b"), __.as("c").in("l2").as("d")), __.and(__.as("e").out("l3").as("f"), __.as("g").in("l4").as("h")))},
+                {__
+                        .as("a1").out("a").as("a2").or()
+                        .as("b1").out("b").as("b2").and()
+                        .as("c1").out("c").as("c2").or()
+                        .as("d1").out("d").as("d2").or()
+                        .as("e1").out("e").as("e2").and()
+                        .as("f1").out("f").as("f2").and()
+                        .as("g1").out("g").as("g2").or()
+                        .as("h1").out("h").as("h2").or(__
+                                .as("i1").out("i").as("i2").or()
+                                .as("j1").out("j").as("j2").and()
+                                .as("k1").out("k").as("k2")).and()
+                        .as("l1").out("l").as("l2").and()
+                        .as("m1").out("m").as("m2").and()
+                        .as("n1").out("n").as("n2"),
+                        // EXPECT:
+                        __.or(
+                                __.as("a1").out("a").as("a2"),
+                                __.or(
+                                        __.and(
+                                                __.as("b1").out("b").as("b2"),
+                                                __.as("c1").out("c").as("c2")
+                                        ),
+                                        __.or(
+                                                __.as("d1").out("d").as("d2"),
+                                                __.or(
+                                                        __.and(
+                                                                __.as("e1").out("e").as("e2"),
+                                                                __.and(
+                                                                        __.as("f1").out("f").as("f2"),
+                                                                        __.as("g1").out("g").as("g2")
+                                                                )
+                                                        ),
+                                                        __.and(
+                                                                __.as("h1").out("h").as("h2").or(
+                                                                        __.or(
+                                                                                __.as("i1").out("i").as("i2"),
+                                                                                __.and(
+                                                                                        __.as("j1").out("j").as("j2"),
+                                                                                        __.as("k1").out("k").as("k2")
+                                                                                )
+                                                                        )
+                                                                ),
+                                                                __.and(
+                                                                        __.as("l1").out("l").as("l2"),
+                                                                        __.and(
+                                                                                __.as("m1").out("m").as("m2"),
+                                                                                __.as("n1").out("n").as("n2")
+                                                                        )
+                                                                )
+                                                        )
+                                                )
+                                        )
+                                )
+                        )
+                }
+        });
     }
 }
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategyTest.java
new file mode 100644
index 0000000..c091bb3
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/VertexProgramStrategyTest.java
@@ -0,0 +1,86 @@
+/*
+ * 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.strategy.decoration;
+
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ComputerResultStep;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversal;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.Arrays;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(Parameterized.class)
+public class VertexProgramStrategyTest {
+
+    @Parameterized.Parameter(value = 0)
+    public Traversal original;
+
+    @Parameterized.Parameter(value = 1)
+    public Traversal optimized;
+
+
+    @Test
+    public void doTest() {
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(new VertexProgramStrategy(Computer.compute()), ComputerVerificationStrategy.instance());
+        original.asAdmin().setStrategies(strategies);
+        original.asAdmin().applyStrategies();
+        assertEquals(optimized, original);
+    }
+
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> generateTestParameters() {
+
+        final ComputerResultStep computerResultStep = new ComputerResultStep(EmptyTraversal.instance());
+
+        return Arrays.asList(new Traversal[][]{
+                {__.V().out().count(), start().addStep(traversal(__.V().out().count())).addStep(computerResultStep)},
+                {__.V().pageRank().out().count(), start().pageRank().asAdmin().addStep(traversal(__.V().out().count())).addStep(computerResultStep)},
+                {__.V().out().pageRank(), start().addStep(traversal(__.V().out())).pageRank().asAdmin().addStep(traversal(__.identity())).addStep(computerResultStep)},
+                {__.V().out().pageRank().count(), start().addStep(traversal(__.V().out())).pageRank().asAdmin().addStep(traversal(__.count())).addStep(computerResultStep)},
+                {__.V().pageRank().order().limit(1), start().pageRank().asAdmin().addStep(traversal(__.V().order().limit(1))).addStep(computerResultStep)}
+        });
+    }
+
+    private static GraphTraversal.Admin<?, ?> start() {
+        return new DefaultGraphTraversal<>().asAdmin();
+    }
+
+    private static Step<?, ?> traversal(final Traversal<?, ?> traversal) {
+        return new TraversalVertexProgramStep(EmptyTraversal.instance(), traversal.asAdmin());
+    }
+}
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategyTest.java
index 40bf867..97f8c7f 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/LazyBarrierStrategyTest.java
@@ -19,82 +19,56 @@
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
 import org.junit.Test;
-import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
 import java.util.Arrays;
 
 import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
 public class LazyBarrierStrategyTest {
 
-    @RunWith(Parameterized.class)
-    public static class StandardTest extends AbstractLazyBarrierStrategyTest {
-
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
-
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> data() {
+        return generateTestParameters();
     }
 
-    private static abstract class AbstractLazyBarrierStrategyTest {
+    @Parameterized.Parameter(value = 0)
+    public Traversal original;
 
-        protected TraversalEngine traversalEngine;
+    @Parameterized.Parameter(value = 1)
+    public Traversal optimized;
 
-        void applyAdjacentToIncidentStrategy(final Traversal traversal) {
-            final TraversalStrategies strategies = new DefaultTraversalStrategies();
-            strategies.addStrategies(LazyBarrierStrategy.instance());
-
-            traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(this.traversalEngine);
-            traversal.asAdmin().applyStrategies();
-        }
-
-        public void doTest(final Traversal traversal, final Traversal optimized) {
-            applyAdjacentToIncidentStrategy(traversal);
-            assertEquals(optimized, traversal);
-        }
-
-        static Iterable<Object[]> generateTestParameters() {
-            final int size = LazyBarrierStrategy.MAX_BARRIER_SIZE;
-            return Arrays.asList(new Traversal[][]{
-                    {__.out().count(), __.out().count()},
-                    {__.out().out().count(), __.out().out().count()},
-                    {__.out().out().out().count(), __.out().out().barrier(size).out().barrier(size).count()},
-                    {__.outE().inV().outE().inV().outE().inV().groupCount(), __.outE().inV().outE().inV().barrier(size).outE().inV().barrier(size).groupCount()},
-                    {__.out().out().has("age", 32).out().count(), __.out().out().barrier(size).has("age", 32).out().barrier(size).count()},
-            });
-        }
+    void applyAdjacentToIncidentStrategy(final Traversal traversal) {
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(LazyBarrierStrategy.instance());
+        traversal.asAdmin().setStrategies(strategies);
+        traversal.asAdmin().applyStrategies();
     }
 
+    @Test
+    public void doTest() {
+        applyAdjacentToIncidentStrategy(original);
+        assertEquals(optimized, original);
+    }
+
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> generateTestParameters() {
+        final int size = LazyBarrierStrategy.MAX_BARRIER_SIZE;
+        return Arrays.asList(new Traversal[][]{
+                {__.out().count(), __.out().count()},
+                {__.out().out().count(), __.out().out().count()},
+                {__.out().out().out().count(), __.out().out().barrier(size).out().barrier(size).count()},
+                {__.outE().inV().outE().inV().outE().inV().groupCount(), __.outE().inV().outE().inV().barrier(size).outE().inV().barrier(size).groupCount()},
+                {__.out().out().has("age", 32).out().count(), __.out().out().barrier(size).has("age", 32).out().barrier(size).count()},
+        });
+    }
 }
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategyTest.java
index cb3051a..c791cd5 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/AdjacentToIncidentStrategyTest.java
@@ -19,116 +19,65 @@
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
 import org.junit.Test;
-import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
 import java.util.Arrays;
 
 import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 /**
  * @author Daniel Kuppitz (http://gremlin.guru)
  */
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
 public class AdjacentToIncidentStrategyTest {
 
-    @RunWith(Parameterized.class)
-    public static class StandardTest extends AbstractAdjacentToIncidentStrategyTest {
+    @Parameterized.Parameter(value = 0)
+    public Traversal original;
 
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
+    @Parameterized.Parameter(value = 1)
+    public Traversal optimized;
 
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
 
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    void applyAdjacentToIncidentStrategy(final Traversal traversal) {
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(AdjacentToIncidentStrategy.instance());
+        traversal.asAdmin().setStrategies(strategies);
+        traversal.asAdmin().applyStrategies();
     }
 
-    @RunWith(Parameterized.class)
-    public static class ComputerTest extends AbstractAdjacentToIncidentStrategyTest {
-
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
-
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    @Test
+    public void doTest() {
+        applyAdjacentToIncidentStrategy(original);
+        assertEquals(optimized, original);
     }
 
-    private static abstract class AbstractAdjacentToIncidentStrategyTest {
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> generateTestParameters() {
 
-        protected TraversalEngine traversalEngine;
-
-        void applyAdjacentToIncidentStrategy(final Traversal traversal) {
-            final TraversalStrategies strategies = new DefaultTraversalStrategies();
-            strategies.addStrategies(AdjacentToIncidentStrategy.instance());
-
-            traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(this.traversalEngine);
-            traversal.asAdmin().applyStrategies();
-        }
-
-        public void doTest(final Traversal traversal, final Traversal optimized) {
-            applyAdjacentToIncidentStrategy(traversal);
-            assertEquals(optimized, traversal);
-        }
-
-        static Iterable<Object[]> generateTestParameters() {
-
-            return Arrays.asList(new Traversal[][]{
-                    {__.out().count(), __.outE().count()},
-                    {__.in().count(), __.inE().count()},
-                    {__.both().count(), __.bothE().count()},
-                    {__.out("knows").count(), __.outE("knows").count()},
-                    {__.out("knows", "likes").count(), __.outE("knows", "likes").count()},
-                    {__.filter(__.out()), __.filter(__.outE())},
-                    {__.where(__.not(__.out())), __.where(__.not(__.outE()))},
-                    {__.where(__.out("knows")), __.where(__.outE("knows"))},
-                    {__.values().count(), __.properties().count()},
-                    {__.values("name").count(), __.properties("name").count()},
-                    {__.where(__.values()), __.where(__.properties())},
-                    {__.and(__.out(), __.in()), __.and(__.outE(), __.inE())},
-                    {__.or(__.out(), __.in()), __.or(__.outE(), __.inE())},
-                    {__.out().as("a").count(),__.outE().count()},   // TODO: is this good?
-                    {__.where(__.as("a").out("knows").as("b")), __.where(__.as("a").out("knows").as("b"))}});
-        }
+        return Arrays.asList(new Traversal[][]{
+                {__.outE().count(), __.outE().count()},
+                {__.bothE("knows").count(), __.bothE("knows").count()},
+                {__.properties().count(), __.properties().count()},
+                {__.properties("name").count(), __.properties("name").count()},
+                {__.out().count(), __.outE().count()},
+                {__.in().count(), __.inE().count()},
+                {__.both().count(), __.bothE().count()},
+                {__.out("knows").count(), __.outE("knows").count()},
+                {__.out("knows", "likes").count(), __.outE("knows", "likes").count()},
+                {__.filter(__.out()), __.filter(__.outE())},
+                {__.where(__.not(__.out())), __.where(__.not(__.outE()))},
+                {__.where(__.out("knows")), __.where(__.outE("knows"))},
+                {__.values().count(), __.properties().count()},
+                {__.values("name").count(), __.properties("name").count()},
+                {__.where(__.values()), __.where(__.properties())},
+                {__.and(__.out(), __.in()), __.and(__.outE(), __.inE())},
+                {__.or(__.out(), __.in()), __.or(__.outE(), __.inE())},
+                {__.out().as("a").count(), __.outE().count()},   // TODO: is this good?
+                {__.where(__.as("a").out("knows").as("b")), __.where(__.as("a").out("knows").as("b"))}});
     }
-}
+}
\ No newline at end of file
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java
index 9be49a3..2a57185 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java
@@ -19,112 +19,63 @@
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
 import org.junit.Test;
-import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
 import java.util.Arrays;
 
 import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
 public class FilterRankingStrategyTest {
 
-    @RunWith(Parameterized.class)
-    public static class StandardTest extends AbstractDedupBijectionStrategyTest {
 
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
-
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    public static Iterable<Object[]> data() {
+        return generateTestParameters();
     }
 
-    @RunWith(Parameterized.class)
-    public static class ComputerTest extends AbstractDedupBijectionStrategyTest {
+    @Parameterized.Parameter(value = 0)
+    public Traversal original;
 
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
+    @Parameterized.Parameter(value = 1)
+    public Traversal optimized;
 
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
 
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    void applyFilterRankingStrategy(final Traversal traversal) {
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(FilterRankingStrategy.instance(), IdentityRemovalStrategy.instance());
+        traversal.asAdmin().setStrategies(strategies);
+        traversal.asAdmin().applyStrategies();
     }
 
-    private static abstract class AbstractDedupBijectionStrategyTest {
+    @Test
+    public void doTest() {
+        applyFilterRankingStrategy(original);
+        assertEquals(optimized, original);
+    }
 
-        protected TraversalEngine traversalEngine;
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> generateTestParameters() {
 
-        void applyDedupBijectionStrategy(final Traversal traversal) {
-            final TraversalStrategies strategies = new DefaultTraversalStrategies();
-            strategies.addStrategies(FilterRankingStrategy.instance(), IdentityRemovalStrategy.instance());
-
-            traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(this.traversalEngine);
-            traversal.asAdmin().applyStrategies();
-        }
-
-        public void doTest(final Traversal traversal, final Traversal optimized) {
-            applyDedupBijectionStrategy(traversal);
-            assertEquals(optimized, traversal);
-        }
-
-        static Iterable<Object[]> generateTestParameters() {
-
-            return Arrays.asList(new Traversal[][]{
-                    {__.dedup().order(), __.dedup().order()},
-                    {__.order().dedup(), __.dedup().order()},
-                    {__.identity().order().dedup(), __.dedup().order()},
-                    {__.order().identity().dedup(), __.dedup().order()},
-                    {__.order().out().dedup(), __.order().out().dedup()},
-                    {__.has("value", 0).filter(__.out()).dedup(), __.has("value", 0).filter(__.out()).dedup()},
-                    {__.dedup().filter(__.out()).has("value", 0), __.has("value", 0).filter(__.out()).dedup()},
-                    {__.filter(__.out()).dedup().has("value", 0), __.has("value", 0).filter(__.out()).dedup()},
-                    {__.has("value", 0).filter(__.out()).dedup(), __.has("value", 0).filter(__.out()).dedup()},
-            });
-        }
+        return Arrays.asList(new Traversal[][]{
+                {__.dedup().order(), __.dedup().order()},
+                {__.order().dedup(), __.dedup().order()},
+                {__.identity().order().dedup(), __.dedup().order()},
+                {__.order().identity().dedup(), __.dedup().order()},
+                {__.order().out().dedup(), __.order().out().dedup()},
+                {__.has("value", 0).filter(__.out()).dedup(), __.has("value", 0).filter(__.out()).dedup()},
+                {__.dedup().filter(__.out()).has("value", 0), __.has("value", 0).filter(__.out()).dedup()},
+                {__.filter(__.out()).dedup().has("value", 0), __.has("value", 0).filter(__.out()).dedup()},
+                {__.has("value", 0).filter(__.out()).dedup(), __.has("value", 0).filter(__.out()).dedup()},
+        });
     }
 }
 
+
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IdentityRemovalStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IdentityRemovalStrategyTest.java
index e7d76d9..b14798e 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IdentityRemovalStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IdentityRemovalStrategyTest.java
@@ -19,21 +19,23 @@
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.TraversalStrategyPerformanceTest;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
 import org.junit.Test;
 import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
 import java.util.Arrays;
+import java.util.Iterator;
+import java.util.stream.IntStream;
 
 import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -42,12 +44,7 @@
 public class IdentityRemovalStrategyTest {
 
     @RunWith(Parameterized.class)
-    public static class StandardTest extends AbstractIdentityRemovalStrategyTest {
-
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
+    public static class ParameterizedTests {
 
         @Parameterized.Parameter(value = 0)
         public Traversal original;
@@ -55,64 +52,23 @@
         @Parameterized.Parameter(value = 1)
         public Traversal optimized;
 
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
-        }
 
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
-    }
-
-    @RunWith(Parameterized.class)
-    public static class ComputerTest extends AbstractIdentityRemovalStrategyTest {
-
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
-
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
-    }
-
-    private static abstract class AbstractIdentityRemovalStrategyTest {
-
-        protected TraversalEngine traversalEngine;
-
-        void applyMatchWhereStrategy(final Traversal traversal) {
+        private void applyIdentityRemovalStrategy(final Traversal traversal) {
             final TraversalStrategies strategies = new DefaultTraversalStrategies();
             strategies.addStrategies(IdentityRemovalStrategy.instance());
-
             traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(this.traversalEngine);
             traversal.asAdmin().applyStrategies();
 
         }
 
-        public void doTest(final Traversal traversal, final Traversal optimized) {
-            applyMatchWhereStrategy(traversal);
-            assertEquals(optimized, traversal);
+        @Test
+        public void doTest() {
+            applyIdentityRemovalStrategy(original);
+            assertEquals(optimized, original);
         }
 
-        static Iterable<Object[]> generateTestParameters() {
+        @Parameterized.Parameters(name = "{0}")
+        public static Iterable<Object[]> generateTestParameters() {
 
             return Arrays.asList(new Traversal[][]{
                     {__.identity(), __.identity()},
@@ -124,5 +80,42 @@
                     {__.out().identity().as("a").out().in().identity().identity().as("b").identity().out(), __.out().as("a").out().in().as("b").out()},
             });
         }
+
+    }
+
+    public static class PerformanceTest extends TraversalStrategyPerformanceTest {
+
+        @Override
+        protected Class<? extends TraversalStrategy> getStrategyUnderTest() {
+            return IdentityRemovalStrategy.class;
+        }
+
+        @Override
+        protected Iterator<GraphTraversal> getTraversalIterator() {
+
+            return new Iterator<GraphTraversal>() {
+
+                final int minIdentities = 5;
+                final int maxIdentities = 10;
+                final Integer[] starts = IntStream.range(0, 1000).boxed().toArray(Integer[]::new);
+
+                private int numberOfIdentities = minIdentities;
+
+                @Override
+                public boolean hasNext() {
+                    return numberOfIdentities <= maxIdentities;
+                }
+
+                @Override
+                public GraphTraversal next() {
+                    final GraphTraversal traversal = __.inject(starts);
+                    for (int j = 0; j < numberOfIdentities; j++) {
+                        traversal.identity();
+                    }
+                    numberOfIdentities++;
+                    return traversal;
+                }
+            };
+        }
     }
 }
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategyTest.java
index 45f583e..7139f7b 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/IncidentToAdjacentStrategyTest.java
@@ -19,15 +19,12 @@
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.junit.Before;
 import org.junit.Test;
-import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
@@ -35,103 +32,51 @@
 import java.util.function.Function;
 
 import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 /**
  * @author Daniel Kuppitz (http://gremlin.guru)
  */
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
 public class IncidentToAdjacentStrategyTest {
 
-    @RunWith(Parameterized.class)
-    public static class StandardTest extends AbstractIncidentToAdjacentStrategyTest {
 
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
+    @Parameterized.Parameter(value = 0)
+    public Traversal original;
 
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
+    @Parameterized.Parameter(value = 1)
+    public Traversal optimized;
 
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    void applyIncidentToAdjacentStrategy(final Traversal traversal) {
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(IncidentToAdjacentStrategy.instance());
+        traversal.asAdmin().setStrategies(strategies);
+        traversal.asAdmin().applyStrategies();
     }
 
-    @RunWith(Parameterized.class)
-    public static class ComputerTest extends AbstractIncidentToAdjacentStrategyTest {
-
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
-
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    @Test
+    public void doTest() {
+        applyIncidentToAdjacentStrategy(original);
+        assertEquals(optimized, original);
     }
 
-    private static abstract class AbstractIncidentToAdjacentStrategyTest {
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> generateTestParameters() {
 
-        protected TraversalEngine traversalEngine;
-
-        void applyIncidentToAdjacentStrategy(final Traversal traversal) {
-            final TraversalStrategies strategies = new DefaultTraversalStrategies();
-            strategies.addStrategies(IncidentToAdjacentStrategy.instance());
-
-            traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(this.traversalEngine);
-            traversal.asAdmin().applyStrategies();
-
-        }
-
-        public void doTest(final Traversal traversal, final Traversal optimized) {
-            applyIncidentToAdjacentStrategy(traversal);
-            assertEquals(optimized, traversal);
-        }
-
-        static Iterable<Object[]> generateTestParameters() {
-
-            Function<Traverser<Vertex>, Vertex> lambda = Traverser::get; // to ensure same hashCode
-            return Arrays.asList(new Traversal[][]{
-                    {__.outE().inV(), __.out()},
-                    {__.inE().outV(), __.in()},
-                    {__.bothE().otherV(), __.both()},
-                    {__.outE().outV(), __.outE().outV()},
-                    {__.inE().inV(), __.inE().inV()},
-                    {__.bothE().bothV(), __.bothE().bothV()},
-                    {__.bothE().inV(), __.bothE().inV()},
-                    {__.bothE().outV(), __.bothE().outV()},
-                    {__.outE().as("a").inV(), __.outE().as("a").inV()}, // todo: this can be optimized, but requires a lot more checks
-                    {__.outE().inV().path(), __.outE().inV().path()},
-                    {__.outE().inV().map(lambda), __.outE().inV().map(lambda)},
-                    {__.union(__.outE().inV(), __.inE().outV()).path(), __.union(__.outE().inV(), __.inE().outV()).path()},
-                    {__.as("a").outE().inV().as("b"), __.as("a").out().as("b")}});
-        }
+        Function<Traverser<Vertex>, Vertex> lambda = Traverser::get; // to ensure same hashCode
+        return Arrays.asList(new Traversal[][]{
+                {__.outE().inV(), __.out()},
+                {__.inE().outV(), __.in()},
+                {__.bothE().otherV(), __.both()},
+                {__.outE().outV(), __.outE().outV()},
+                {__.inE().inV(), __.inE().inV()},
+                {__.bothE().bothV(), __.bothE().bothV()},
+                {__.bothE().inV(), __.bothE().inV()},
+                {__.bothE().outV(), __.bothE().outV()},
+                {__.outE().as("a").inV(), __.outE().as("a").inV()}, // todo: this can be optimized, but requires a lot more checks
+                {__.outE().inV().path(), __.outE().inV().path()},
+                {__.outE().inV().map(lambda), __.outE().inV().map(lambda)},
+                {__.union(__.outE().inV(), __.inE().outV()).path(), __.union(__.outE().inV(), __.inE().outV()).path()},
+                {__.as("a").outE().inV().as("b"), __.as("a").out().as("b")}});
     }
 }
+
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java
index a51d8d9..41d3525 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java
@@ -103,7 +103,7 @@
             final TraversalStrategies strategies = new DefaultTraversalStrategies();
             strategies.addStrategies(MatchPredicateStrategy.instance(), IdentityRemovalStrategy.instance());
             traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(this.traversalEngine);
+            //traversal.asAdmin().setEngine(this.traversalEngine);
             traversal.asAdmin().applyStrategies();
         }
 
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/OrderLimitStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/OrderLimitStrategyTest.java
new file mode 100644
index 0000000..8cb8342
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/OrderLimitStrategyTest.java
@@ -0,0 +1,72 @@
+/*
+ * 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.strategy.optimization;
+
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.Arrays;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(Parameterized.class)
+public class OrderLimitStrategyTest {
+
+    @Parameterized.Parameter(value = 0)
+    public Traversal traversal;
+
+    @Parameterized.Parameter(value = 1)
+    public long limit;
+
+    void applyOrderLimitStrategyStrategy(final Traversal traversal) {
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(OrderLimitStrategy.instance());
+        traversal.asAdmin().setStrategies(strategies);
+        traversal.asAdmin().applyStrategies();
+    }
+
+    @Test
+    public void doTest() {
+        traversal.asAdmin().setParent(new TraversalVertexProgramStep(EmptyTraversal.instance(), EmptyTraversal.instance())); // trick it
+        applyOrderLimitStrategyStrategy(traversal);
+        assertEquals(limit, TraversalHelper.getFirstStepOfAssignableClass(OrderGlobalStep.class, traversal.asAdmin()).get().getLimit());
+    }
+
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object> generateTestParameters() {
+        return Arrays.asList(new Object[][]{
+                {__.order().limit(1), 1l},
+                {__.out().order().range(7, 15), 15l},
+                {__.order().select("a").limit(7), 7l},
+                {__.order().out().limit(10), Long.MAX_VALUE}});
+    }
+}
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathProcessorStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathProcessorStrategyTest.java
new file mode 100644
index 0000000..84f4dcd
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathProcessorStrategyTest.java
@@ -0,0 +1,97 @@
+/*
+ * 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.strategy.optimization;
+
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
+import org.apache.tinkerpop.gremlin.process.traversal.Pop;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.ElementValueTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.IdentityTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversal;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.Arrays;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(Parameterized.class)
+public class PathProcessorStrategyTest {
+
+    @Parameterized.Parameter(value = 0)
+    public Traversal original;
+
+    @Parameterized.Parameter(value = 1)
+    public Traversal optimized;
+
+
+    void applyPathProcessorStrategy(final Traversal traversal) {
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(PathProcessorStrategy.instance());
+        traversal.asAdmin().setStrategies(strategies);
+        traversal.asAdmin().applyStrategies();
+    }
+
+    @Test
+    public void doTest() {
+        original.asAdmin().setParent(new TraversalVertexProgramStep(EmptyTraversal.instance(), EmptyTraversal.instance())); // trick it
+        applyPathProcessorStrategy(original);
+        assertEquals(optimized, original);
+    }
+
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> generateTestParameters() {
+
+        return Arrays.asList(new Traversal[][]{
+                // select("a")
+                {__.select("a"), __.select("a")},
+                {__.select("a").by(), __.select("a").by()},
+                {__.select("a").by(__.outE().count()), __.select("a").map(__.outE().count())},
+                {__.select("a").by("name"), __.select("a").map(new ElementValueTraversal<>("name"))},
+                {__.select("a").out(), __.select("a").out()},
+                {__.select(Pop.all, "a").by(__.values("name")), __.select(Pop.all, "a").by(__.values("name"))},
+                {__.select(Pop.last, "a").by(__.values("name")), __.select(Pop.last, "a").map(__.values("name"))},
+                {__.select(Pop.first, "a").by(__.values("name")), __.select(Pop.first, "a").map(__.values("name"))},
+                // select("a","b")
+                {__.select("a", "b"), __.select("a", "b")},
+                {__.select("a", "b").by(), __.select("a", "b").by()},
+                {__.select("a", "b", "c").by(), __.select("a", "b", "c").by()},
+                {__.select("a", "b").by().by("age"), __.select("b").map(new ElementValueTraversal<>("age")).as("b").select("a").map(new IdentityTraversal<>()).as("a").select(Pop.last, "a", "b")},
+                {__.select("a", "b").by("name").by("age"), __.select("b").map(new ElementValueTraversal<>("age")).as("b").select("a").map(new ElementValueTraversal<>("name")).as("a").select(Pop.last, "a", "b")},
+                {__.select("a", "b", "c").by("name").by(__.outE().count()), __.select("c").map(new ElementValueTraversal<>("name")).as("c").select("b").map(__.outE().count()).as("b").select("a").map(new ElementValueTraversal<>("name")).as("a").select(Pop.last, "a", "b", "c")},
+                {__.select(Pop.first, "a", "b").by("name").by("age"), __.select(Pop.first, "b").map(new ElementValueTraversal<>("age")).as("b").select(Pop.first, "a").map(new ElementValueTraversal<>("name")).as("a").select(Pop.last, "a", "b")},
+                {__.select(Pop.last, "a", "b").by("name").by("age"), __.select(Pop.last, "b").map(new ElementValueTraversal<>("age")).as("b").select(Pop.last, "a").map(new ElementValueTraversal<>("name")).as("a").select(Pop.last, "a", "b")},
+                {__.select(Pop.all, "a", "b").by("name").by("age"), __.select(Pop.all, "a", "b").by("name").by("age")},
+                // where(as("a")...)
+                {__.where(__.out("knows")), __.where(__.out("knows"))},
+                //{__.where(__.as("a").out("knows")), __.select(Pop.last, "a").where(__.out("knows"))},
+                //{__.where(__.as("a").out("knows").as("b")), __.select(Pop.last, "a").where(__.out("knows").as("b"))},    // todo: need to be able to drop path labels for this to work
+                {__.where("a", P.eq("b")), __.where("a", P.eq("b"))}
+        });
+    }
+}
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategyTest.java
new file mode 100644
index 0000000..0063289
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategyTest.java
@@ -0,0 +1,188 @@
+/*
+ * 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.strategy.optimization;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Order;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
+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.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
+import static org.apache.tinkerpop.gremlin.process.traversal.P.eq;
+import static org.apache.tinkerpop.gremlin.process.traversal.P.gte;
+import static org.apache.tinkerpop.gremlin.process.traversal.P.neq;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.as;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.limit;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.select;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.values;
+import static org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.PathRetractionStrategy.DEFAULT_STANDARD_BARRIER_SIZE;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Ted Wilmes (http://twilmes.org)
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(Parameterized.class)
+public class PathRetractionStrategyTest {
+
+    private final List<TraversalStrategies> strategies = Arrays.asList(
+            new DefaultTraversalStrategies().addStrategies(PathRetractionStrategy.instance()),
+            new DefaultTraversalStrategies().addStrategies(PathRetractionStrategy.instance(), PathProcessorStrategy.instance()),
+            new DefaultTraversalStrategies().addStrategies(PathRetractionStrategy.instance(), PathProcessorStrategy.instance(), MatchPredicateStrategy.instance()),
+            new DefaultTraversalStrategies().addStrategies(PathRetractionStrategy.instance(), PathProcessorStrategy.instance(), MatchPredicateStrategy.instance(), RepeatUnrollStrategy.instance()),
+            TraversalStrategies.GlobalCache.getStrategies(Graph.class));
+
+    @Parameterized.Parameter(value = 0)
+    public Traversal.Admin traversal;
+
+    @Parameterized.Parameter(value = 1)
+    public String labels;
+
+    @Parameterized.Parameter(value = 2)
+    public Traversal.Admin optimized;
+
+    @Test
+    public void doTest() {
+        for (final TraversalStrategies currentStrategies : this.strategies) {
+            final Traversal.Admin<?, ?> currentTraversal = this.traversal.clone();
+            currentTraversal.setStrategies(currentStrategies);
+            currentTraversal.applyStrategies();
+            assertEquals(this.labels, getKeepLabels(currentTraversal).toString());
+            if (null != optimized)
+                assertEquals(currentTraversal, optimized);
+        }
+    }
+
+    private List<Object> getKeepLabels(final Traversal.Admin<?, ?> traversal) {
+        List<Object> keepLabels = new ArrayList<>();
+        for (Step step : traversal.getSteps()) {
+            if (step instanceof PathProcessor) {
+                final Set<String> keepers = ((PathProcessor) step).getKeepLabels();
+                if (keepers != null)
+                    keepLabels.add(keepers);
+            }
+            if (step instanceof TraversalParent) {
+                final TraversalParent parent = (TraversalParent) step;
+                final List<Traversal.Admin<?, ?>> children = new ArrayList<>();
+                children.addAll(parent.getGlobalChildren());
+                children.addAll(parent.getLocalChildren());
+                for (final Traversal.Admin<?, ?> child : children) {
+                    final List<Object> childLabels = getKeepLabels(child);
+                    if (childLabels.size() > 0) {
+                        keepLabels.add(childLabels);
+                    }
+                }
+            }
+        }
+        return keepLabels;
+    }
+
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> generateTestParameters() {
+
+        return Arrays.asList(new Object[][]{
+                {out(), "[]", null},
+                {__.V().as("a").out().as("b").where(neq("a")).out(), "[[]]", null},
+                {__.V().as("a").out().where(out().where(neq("a"))).out(), "[[[]]]", null},
+                {__.V().as("a").out().where(neq("a")).out().select("a"), "[[a], []]", null},
+                {__.V().as("a").out().as("b").where(neq("a")).out().select("a", "b").out().select("b"), "[[a, b], [b], []]", null},
+                {__.V().match(__.as("a").out().as("b")), "[[a, b]]", null},
+                {__.V().match(__.as("a").out().as("b")).select("a"), "[[a], []]", null},
+                {__.V().out().out().match(
+                        as("a").in("created").as("b"),
+                        as("b").in("knows").as("c")).select("c").out("created").where(neq("a")).values("name"),
+                        "[[a, c], [a], []]", null},
+                {__.V().as("a").out().select("a").path(), "[]", null},
+                {__.V().as("a").out().select("a").map(t -> t.path().get("a")), "[]", null}, // lambda introspection is not possible
+                {__.V().as("a").out().select("a").subgraph("b"), "[[]]", null},
+                {__.V().as("a").out().select("a").subgraph("b").select("a"), "[[a], []]", null},
+                {__.V().out().out().match(
+                        as("a").in("created").as("b"),
+                        as("b").in("knows").as("c")).select("c").out("created").where(neq("a")).values("name").path(),
+                        "[]", null},
+                {__.V().out().as("a").where(neq("a")).out().where(neq("a")).out(), "[[a], []]", null},
+                {__.V().out().as("a").where(out().select("a").values("prop").count().is(gte(1))).out().where(neq("a")), "[[[a]], []]", null},
+                {__.V().as("a").out().as("b").where(out().select("a", "b", "c").values("prop").count().is(gte(1))).out().where(neq("a")).out().select("b"),
+                        "[[[a, b]], [b], []]", null},
+                {__.outE().inV().group().by(__.inE().outV().groupCount().by(__.both().count().is(P.gt(2)))), "[]", null},
+                {__.V().as("a").repeat(out().where(neq("a"))).emit().select("a").values("test"), "[[[a]], []]", null},
+                // given the way this test harness is structured, I have to manual test for RepeatUnrollStrategy (and it works) TODO: add more test parameters
+                // {__.V().as("a").repeat(__.out().where(neq("a"))).times(3).select("a").values("test"), Arrays.asList(Collections.singleton("a"), Collections.singleton("a"), Collections.singleton("a"), Collections.emptySet())}
+                {__.V().as("a").out().as("b").select("a").out().out(), "[[]]", __.V().as("a").out().as("b").select("a").barrier(DEFAULT_STANDARD_BARRIER_SIZE).out().out()},
+                {__.V().as("a").out().as("b").select("a").count(), "[[]]", __.V().as("a").out().as("b").select("a").count()},
+                {__.V().as("a").out().as("b").select("a").barrier().count(), "[[]]", __.V().as("a").out().as("b").select("a").barrier().count()},
+                {__.V().as("a").out().as("b").dedup("a", "b").out(), "[[]]", __.V().as("a").out().as("b").dedup("a", "b").out()},
+                {__.V().as("a").out().as("b").match(as("a").out().as("b")), "[[a, b]]", __.V().as("a").out().as("b").match(as("a").out().as("b"))},
+                {__.V().as("a").out().as("b").match(as("a").out().as("b")).select("a"), "[[a], []]", __.V().as("a").out().as("b").match(as("a").out().as("b")).select("a").barrier(DEFAULT_STANDARD_BARRIER_SIZE)},
+                {__.V().as("a").out().as("b").match(as("a").out().as("b")).select("a").out().dedup("a"), "[[a], [a], []]", __.V().as("a").out().as("b").match(as("a").out().as("b")).select("a").barrier(DEFAULT_STANDARD_BARRIER_SIZE).out().dedup("a")},
+                {__.V().as("a").out().as("b").where(P.gt("a")).out().out(), "[[]]", __.V().as("a").out().as("b").where(P.gt("a")).barrier(DEFAULT_STANDARD_BARRIER_SIZE).out().out()},
+                {__.V().as("a").out().as("b").where(P.gt("a")).count(), "[[]]", __.V().as("a").out().as("b").where(P.gt("a")).count()},
+                {__.V().as("a").out().as("b").select("a").as("c").where(P.gt("b")).out(), "[[b], []]", __.V().as("a").out().as("b").select("a").as("c").barrier(DEFAULT_STANDARD_BARRIER_SIZE).where(P.gt("b")).barrier(DEFAULT_STANDARD_BARRIER_SIZE).out()},
+                {__.V().select("c").map(select("c").map(select("c"))).select("c"), "[[c], [[c], [[c]]], []]", null},
+                {__.V().select("c").map(select("c").map(select("c"))).select("b"), "[[b, c], [[b, c], [[b]]], []]", null},
+                {__.V().as("a").out().as("b").select("a").select("b").union(
+                        as("c").out().as("d", "e").select("c", "e").out().select("c"),
+                        as("c").out().as("d", "e").select("c", "e").out().select("c")).
+                        out().select("c"),
+                        "[[b, c, e], [c, e], [[c], [c]], [[c], [c]], []]", null},
+                {__.V().as("a").out().as("b").select("a").select("b").
+                        local(as("c").out().as("d", "e").select("c", "e").out().select("c")).
+                        out().select("c"),
+                        "[[b, c, e], [c, e], [[c], [c]], []]", null},
+                // TODO: same as above but note how path() makes things react
+//                {__.V().as("a").out().as("b").select("a").select("b").path().local(as("c").out().as("d", "e").select("c", "e").out().select("c")).out().select("c"),
+//                        "[[[c, e], [c, e]]]", null},
+                {__.V().as("a").out().as("b").select("a").select("b").repeat(out().as("c").select("b", "c").out().select("c")).out().select("c").out().select("b"),
+                        "[[b, c], [b, c], [[b, c], [b, c]], [b], []]", null},
+                {__.V().as("a").out().as("b").select("a").select("b").repeat(out().as("c").select("b")).out().select("c").out().select("b"),
+                        "[[b, c], [b, c], [[b, c]], [b], []]", null},
+                {__.V().as("a").out().as("b").select("a").select("b").repeat(out().as("c").select("b")),
+                        "[[b], [b], [[b]]]", null},
+                {__.V().select("a").map(select("c").map(select("b"))).select("c"),
+                        "[[b, c], [[b, c], [[c]]], []]", null},
+                {__.V().select("a").map(select("b").repeat(select("c"))).select("a"),
+                        "[[a, b, c], [[a, c], [[a, c]]], []]", null},
+                {__.V().select("c").map(select("c").map(select("c"))).select("c"), "[[c], [[c], [[c]]], []]", null},
+                {__.V().select("c").map(select("c").map(select("c"))).select("b"), "[[b, c], [[b, c], [[b]]], []]", null},
+                {__.V().select("a").map(select("c").map(select("b"))).select("c"),
+                        "[[b, c], [[b, c], [[c]]], []]", null},
+                {__.V().select("a").map(select("b").repeat(select("c"))).select("a"),
+                        "[[a, b, c], [[a, c], [[a, c]]], []]", null},
+                {__.V().out("created").project("a", "b").by("name").by(__.in("created").count()).order().by(select("b")).select("a"), "[[[a]], []]", null},
+                {__.order().by("weight", Order.decr).store("w").by("weight").filter(values("weight").as("cw").
+                        select("w").by(limit(Scope.local, 1)).as("mw").where("cw", eq("mw"))).project("from", "to", "weight").by(__.outV()).by(__.inV()).by("weight"),
+                        "[[[cw, mw], []]]", null}
+        });
+    }
+}
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategyTest.java
index 03d5176..0e9539d 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategyTest.java
@@ -19,13 +19,10 @@
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
 import org.junit.Test;
-import org.junit.experimental.runners.Enclosed;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
@@ -41,114 +38,61 @@
 import static org.apache.tinkerpop.gremlin.process.traversal.P.within;
 import static org.apache.tinkerpop.gremlin.process.traversal.P.without;
 import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 /**
  * @author Daniel Kuppitz (http://gremlin.guru)
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-@RunWith(Enclosed.class)
+@RunWith(Parameterized.class)
 public class RangeByIsCountStrategyTest {
 
-    @RunWith(Parameterized.class)
-    public static class StandardTest extends AbstractRangeByIsCountStrategyTest {
+    @Parameterized.Parameter(value = 0)
+    public Traversal original;
 
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
+    @Parameterized.Parameter(value = 1)
+    public Traversal optimized;
 
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    void applyRangeByIsCountStrategy(final Traversal traversal) {
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(RangeByIsCountStrategy.instance());
+        traversal.asAdmin().setStrategies(strategies);
+        traversal.asAdmin().applyStrategies();
     }
 
-    @RunWith(Parameterized.class)
-    public static class ComputerTest extends AbstractRangeByIsCountStrategyTest {
-
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
-
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
+    @Test
+    public void doTest() {
+        applyRangeByIsCountStrategy(original);
+        assertEquals(optimized, original);
     }
 
-    private static abstract class AbstractRangeByIsCountStrategyTest {
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object[]> generateTestParameters() {
 
-        protected TraversalEngine traversalEngine;
-
-        void applyRangeByIsCountStrategy(final Traversal traversal) {
-            final TraversalStrategies strategies = new DefaultTraversalStrategies();
-            strategies.addStrategies(RangeByIsCountStrategy.instance());
-
-            traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(this.traversalEngine);
-            traversal.asAdmin().applyStrategies();
-        }
-
-        public void doTest(final Traversal traversal, final Traversal optimized) {
-            applyRangeByIsCountStrategy(traversal);
-            assertEquals(optimized, traversal);
-        }
-
-        static Iterable<Object[]> generateTestParameters() {
-
-            return Arrays.asList(new Traversal[][]{
-                    {__.count().is(0), __.not(__.identity())},
-                    {__.count().is(1), __.limit(2).count().is(1)},
-                    {__.out().count().is(0), __.not(__.out())},
-                    {__.outE().count().is(lt(1)), __.not(__.outE())},
-                    {__.both().count().is(lte(0)), __.not(__.both())},
-                    {__.store("x").count().is(0).as("a"), __.store("x").limit(1).count().is(0).as("a")},
-                    {__.out().count().as("a").is(0), __.out().limit(1).count().as("a").is(0)},
-                    {__.out().count().is(neq(4)), __.out().limit(5).count().is(neq(4))},
-                    {__.out().count().is(lte(3)), __.out().limit(4).count().is(lte(3))},
-                    {__.out().count().is(lt(3)), __.out().limit(3).count().is(lt(3))},
-                    {__.out().count().is(gt(2)), __.out().limit(3).count().is(gt(2))},
-                    {__.out().count().is(gte(2)), __.out().limit(2).count().is(gte(2))},
-                    {__.out().count().is(inside(2, 4)), __.out().limit(4).count().is(inside(2, 4))},
-                    {__.out().count().is(outside(2, 4)), __.out().limit(5).count().is(outside(2, 4))},
-                    {__.out().count().is(within(2, 6, 4)), __.out().limit(7).count().is(within(2, 6, 4))},
-                    {__.out().count().is(without(2, 6, 4)), __.out().limit(6).count().is(without(2, 6, 4))},
-                    {__.map(__.count().is(0)), __.map(__.limit(1).count().is(0))},
-                    {__.flatMap(__.count().is(0)), __.flatMap(__.limit(1).count().is(0))},
-                    {__.filter(__.count().is(0)), __.filter(__.not(__.identity()))},
-                    {__.sideEffect(__.count().is(0)), __.sideEffect(__.not(__.identity()))},
-                    {__.branch(__.count().is(0)), __.branch(__.limit(1).count().is(0))},
-                    {__.count().is(0).store("x"), __.limit(1).count().is(0).store("x")},
-                    {__.repeat(__.out()).until(__.outE().count().is(0)), __.repeat(__.out()).until(__.not(__.outE()))},
-                    {__.repeat(__.out()).emit(__.outE().count().is(0)), __.repeat(__.out()).emit(__.not(__.outE()))},
-            });
-        }
+        return Arrays.asList(new Traversal[][]{
+                {__.count().is(0), __.not(__.identity())},
+                {__.count().is(1), __.limit(2).count().is(1)},
+                {__.out().count().is(0), __.not(__.out())},
+                {__.outE().count().is(lt(1)), __.not(__.outE())},
+                {__.both().count().is(lte(0)), __.not(__.both())},
+                {__.store("x").count().is(0).as("a"), __.store("x").limit(1).count().is(0).as("a")},
+                {__.out().count().as("a").is(0), __.out().limit(1).count().as("a").is(0)},
+                {__.out().count().is(neq(4)), __.out().limit(5).count().is(neq(4))},
+                {__.out().count().is(lte(3)), __.out().limit(4).count().is(lte(3))},
+                {__.out().count().is(lt(3)), __.out().limit(3).count().is(lt(3))},
+                {__.out().count().is(gt(2)), __.out().limit(3).count().is(gt(2))},
+                {__.out().count().is(gte(2)), __.out().limit(2).count().is(gte(2))},
+                {__.out().count().is(inside(2, 4)), __.out().limit(4).count().is(inside(2, 4))},
+                {__.out().count().is(outside(2, 4)), __.out().limit(5).count().is(outside(2, 4))},
+                {__.out().count().is(within(2, 6, 4)), __.out().limit(7).count().is(within(2, 6, 4))},
+                {__.out().count().is(without(2, 6, 4)), __.out().limit(6).count().is(without(2, 6, 4))},
+                {__.map(__.count().is(0)), __.map(__.limit(1).count().is(0))},
+                {__.flatMap(__.count().is(0)), __.flatMap(__.limit(1).count().is(0))},
+                {__.filter(__.count().is(0)), __.filter(__.not(__.identity()))},
+                {__.sideEffect(__.count().is(0)), __.sideEffect(__.not(__.identity()))},
+                {__.branch(__.count().is(0)), __.branch(__.limit(1).count().is(0))},
+                {__.count().is(0).store("x"), __.limit(1).count().is(0).store("x")},
+                {__.repeat(__.out()).until(__.outE().count().is(0)), __.repeat(__.out()).until(__.not(__.outE()))},
+                {__.repeat(__.out()).emit(__.outE().count().is(0)), __.repeat(__.out()).emit(__.not(__.outE()))},
+        });
     }
 }
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategyTest.java
new file mode 100644
index 0000000..4a02218
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategyTest.java
@@ -0,0 +1,143 @@
+/*
+ *  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.strategy.optimization;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.TraversalStrategyPerformanceTest;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.junit.Test;
+import org.junit.experimental.runners.Enclosed;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.function.Predicate;
+import java.util.stream.IntStream;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+
+@RunWith(Enclosed.class)
+public class RepeatUnrollStrategyTest {
+
+    @RunWith(Parameterized.class)
+    public static class ParameterizedTests {
+
+        @Parameterized.Parameter(value = 0)
+        public Traversal original;
+
+        @Parameterized.Parameter(value = 1)
+        public Traversal optimized;
+
+
+        private void applyRepeatUnrollStrategy(final Traversal traversal) {
+            final TraversalStrategies strategies = new DefaultTraversalStrategies();
+            strategies.addStrategies(RepeatUnrollStrategy.instance());
+            traversal.asAdmin().setStrategies(strategies);
+            traversal.asAdmin().applyStrategies();
+
+        }
+
+        @Test
+        public void doTest() {
+            applyRepeatUnrollStrategy(original);
+            assertEquals(optimized, original);
+        }
+
+        @Parameterized.Parameters(name = "{0}")
+        public static Iterable<Object[]> generateTestParameters() {
+            final int maxBarrierSize = 5000;
+            final Predicate<Traverser<Vertex>> predicate = t -> t.loops() > 5;
+            return Arrays.asList(new Traversal[][]{
+                    {__.repeat(__.out()).times(0), __.repeat(__.out()).times(0)},
+                    {__.<Vertex>times(0).repeat(__.out()), __.<Vertex>times(0).repeat(__.out())},
+                    {__.identity(), __.identity()},
+                    {__.out().as("a").in().repeat(__.outE("created").bothV()).times(2).in(), __.out().as("a").in().outE("created").bothV().barrier(maxBarrierSize).outE("created").bothV().barrier(maxBarrierSize).in()},
+                    {__.out().repeat(__.outE("created").bothV()).times(1).in(), __.out().outE("created").bothV().barrier(maxBarrierSize).in()},
+                    {__.repeat(__.outE("created").bothV()).times(1).in(), __.outE("created").bothV().barrier(maxBarrierSize).in()},
+                    {__.repeat(__.out()).times(2).as("x").repeat(__.in().as("b")).times(3), __.out().barrier(maxBarrierSize).out().barrier(maxBarrierSize).as("x").in().as("b").barrier(maxBarrierSize).in().as("b").barrier(maxBarrierSize).in().as("b").barrier(maxBarrierSize)},
+                    {__.repeat(__.outE("created").inV()).times(2), __.outE("created").inV().barrier(maxBarrierSize).outE("created").inV().barrier(maxBarrierSize)},
+                    {__.repeat(__.out()).times(3), __.out().barrier(maxBarrierSize).out().barrier(maxBarrierSize).out().barrier(maxBarrierSize)},
+                    {__.repeat(__.local(__.select("a").out("knows"))).times(2), __.local(__.select("a").out("knows")).barrier(maxBarrierSize).local(__.select("a").out("knows")).barrier(maxBarrierSize)},
+                    {__.<Vertex>times(2).repeat(__.out()), __.out().barrier(maxBarrierSize).out().barrier(maxBarrierSize)},
+                    {__.<Vertex>out().times(2).repeat(__.out().as("a")).as("x"), __.out().out().as("a").barrier(maxBarrierSize).out().as("a").barrier(maxBarrierSize).as("x")},
+                    {__.repeat(__.out()).emit().times(2), __.repeat(__.out()).emit().times(2)},
+                    {__.repeat(__.out()).until(predicate), __.repeat(__.out()).until(predicate)},
+                    {__.repeat(__.out()).until(predicate).repeat(__.out()).times(2), __.repeat(__.out()).until(predicate).out().barrier(maxBarrierSize).out().barrier(maxBarrierSize)},
+                    {__.repeat(__.union(__.both(), __.identity())).times(2).out(), __.union(__.both(), __.identity()).barrier(maxBarrierSize).union(__.both(), __.identity()).barrier(maxBarrierSize).out()},
+                    {__.in().repeat(__.out("knows")).times(3).as("a").count().is(0), __.in().out("knows").barrier(maxBarrierSize).out("knows").barrier(maxBarrierSize).out("knows").as("a").count().is(0)},
+            });
+        }
+    }
+
+    public static class PerformanceTest extends TraversalStrategyPerformanceTest {
+
+        @Override
+        protected double getAssertionPercentile() {
+            return 95.0;
+        }
+
+        @Override
+        protected Class<? extends TraversalStrategy> getStrategyUnderTest() {
+            return RepeatUnrollStrategy.class;
+        }
+
+        @Override
+        protected Iterator<GraphTraversal> getTraversalIterator() {
+
+            return new Iterator<GraphTraversal>() {
+
+                final int minLoops = 2;
+                final int maxLoops = 5;
+                final int minModulo = 100;
+                final int maxModulo = 1000;
+
+                private int numberOfLoops = minLoops;
+                private int modulo = minModulo;
+
+                @Override
+                public boolean hasNext() {
+                    return modulo <= maxModulo;
+                }
+
+                @Override
+                public GraphTraversal next() {
+                    final Integer[] starts = IntStream.range(0, 1000).map(i -> i % modulo).boxed().toArray(Integer[]::new);
+                    final GraphTraversal traversal = __.inject(starts).repeat(__.identity()).times(numberOfLoops).sum();
+                    if (++numberOfLoops > maxLoops) {
+                        numberOfLoops = minLoops;
+                        modulo += 200;
+                    }
+                    return traversal;
+                }
+            };
+        }
+    }
+}
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyTest.java
index a845fa9..da41881 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyTest.java
@@ -18,21 +18,24 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.verification;
 
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
+import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversal;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
 import java.util.Arrays;
 
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.max;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.min;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.sum;
+import static org.junit.Assert.fail;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -40,20 +43,16 @@
 @RunWith(Parameterized.class)
 public class ComputerVerificationStrategyTest {
 
-    private TraversalEngine traversalEngine;
-
-    @Before
-    public void setup() {
-        this.traversalEngine = mock(TraversalEngine.class);
-        when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
-    }
-
     @Parameterized.Parameters(name = "{0}")
     public static Iterable<Object[]> data() {
         return Arrays.asList(new Object[][]{
-                {"__.out().union(__.out().count(),__.in().count())", __.out().union(__.out().count(), __.in().count())},
-                {"__.where(__.out().values(\"name\"))", __.where(__.out().values("name"))},
-                {"__.groupCount(\"a\").out().cap(\"a\").count()", __.groupCount("a").out().cap("a").count()},
+                // illegal
+                {"__.where(__.out().values(\"name\"))", __.where(__.out().values("name")), false},
+                {"__.local(out().out())", __.local(out().out()), false},
+                // legal
+                {"__.values(\"age\").union(max(), min(), sum())", __.values("age").union(max(), min(), sum()), true},
+                {"__.count().sum()", __.count().sum(), true},
+                {"__.where(\"a\",eq(\"b\")).out()", __.where("a", P.eq("b")).out(), true},
 
         });
     }
@@ -64,17 +63,23 @@
     @Parameterized.Parameter(value = 1)
     public Traversal traversal;
 
+    @Parameterized.Parameter(value = 2)
+    public boolean legal;
+
     @Test
     public void shouldBeVerifiedIllegal() {
+
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(ComputerVerificationStrategy.instance());
+        this.traversal.asAdmin().setParent(new TraversalVertexProgramStep(EmptyTraversal.instance(), EmptyTraversal.instance())); // trick it
+        this.traversal.asAdmin().setStrategies(strategies);
         try {
-            final TraversalStrategies strategies = new DefaultTraversalStrategies();
-            strategies.addStrategies(ComputerVerificationStrategy.instance());
-            traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(this.traversalEngine);
-            traversal.asAdmin().applyStrategies();
-            fail("The strategy should not allow lambdas: " + this.traversal);
-        } catch (VerificationException ise) {
-           assertTrue(true);
+            this.traversal.asAdmin().applyStrategies();
+            if (!this.legal)
+                fail("The traversal should not be allowed: " + this.traversal);
+        } catch (final VerificationException ise) {
+            if (this.legal)
+                fail("The traversal should be allowed: " + this.traversal);
         }
     }
 
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategyTest.java
index 4b8f6df..4efca84 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategyTest.java
@@ -18,13 +18,15 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.verification;
 
+import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.process.traversal.Scope;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
+import org.apache.tinkerpop.gremlin.structure.Column;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -43,15 +45,20 @@
     @Parameterized.Parameters(name = "{0}")
     public static Iterable<Object[]> data() {
         return Arrays.asList(new Object[][]{
-                {"filter(x->true)", __.filter(x -> true)},
-                {"map(Traverser::get)", __.map(Traverser::get)},
+                {"filter(x->true)", __.filter(x -> true), false},
+                {"map(Traverser::get)", __.map(Traverser::get), false},
                 {"sideEffect(x -> {int i = 1+1;})", __.sideEffect(x -> {
                     int i = 1 + 1;
-                })},
-                {"select('a','b').by(Object::toString)", __.select("a","b").by(Object::toString)},
-                {"order().by((a,b)->a.compareTo(b))", __.order().by((a, b) -> ((Integer) a).compareTo((Integer) b))},
-                {"order(local).by((a,b)->a.compareTo(b))", __.order(Scope.local).by((a, b) -> ((Integer) a).compareTo((Integer) b))},
-                {"__.choose(v->v.toString().equals(\"marko\"),__.out(),__.in())", __.choose(v -> v.toString().equals("marko"), __.out(), __.in())},
+                }), false},
+                {"select('a','b').by(Object::toString)", __.select("a", "b").by(Object::toString), false},
+                {"order().by((a,b)->a.compareTo(b))", __.order().by((a, b) -> ((Integer) a).compareTo((Integer) b)), false},
+                {"order(local).by((a,b)->a.compareTo(b))", __.order(Scope.local).by((a, b) -> ((Integer) a).compareTo((Integer) b)), false},
+                {"__.choose(v->v.toString().equals(\"marko\"),__.out(),__.in())", __.choose(v -> v.toString().equals("marko"), __.out(), __.in()), false},
+                {"order(local).by(values,decr)", __.order(Scope.local).by(Column.values, (a, b) -> ((Double) a).compareTo((Double) b)), false},
+                //
+                {"order(local).by(values,decr)", __.order(Scope.local).by(Column.values, Order.decr), true},
+                {"order().by(label,decr)", __.order().by(T.label, Order.decr), true},
+                {"groupCount().by(label)", __.groupCount().by(T.label), true},
         });
     }
 
@@ -61,17 +68,23 @@
     @Parameterized.Parameter(value = 1)
     public Traversal traversal;
 
+    @Parameterized.Parameter(value = 2)
+    public boolean allow;
+
     @Test
     public void shouldBeVerifiedIllegal() {
-        try {
-            final TraversalStrategies strategies = new DefaultTraversalStrategies();
-            strategies.addStrategies(LambdaRestrictionStrategy.instance());
-            traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(StandardTraversalEngine.instance());
+        final TraversalStrategies strategies = new DefaultTraversalStrategies();
+        strategies.addStrategies(LambdaRestrictionStrategy.instance());
+        traversal.asAdmin().setStrategies(strategies);
+        if (allow) {
             traversal.asAdmin().applyStrategies();
-            fail("The strategy should not allow lambdas: " + this.traversal);
-        } catch (VerificationException ise) {
-            assertTrue(ise.getMessage().contains("lambda"));
+        } else {
+            try {
+                traversal.asAdmin().applyStrategies();
+                fail("The strategy should not allow lambdas: " + this.traversal);
+            } catch (VerificationException ise) {
+                assertTrue(ise.getMessage().contains("lambda"));
+            }
         }
     }
 }
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java
index f08e9db..2d80de4 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/StandardVerificationStrategyTest.java
@@ -19,21 +19,19 @@
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.verification;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
 
 import java.util.Arrays;
 
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.repeat;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.sum;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -41,14 +39,6 @@
 @RunWith(Parameterized.class)
 public class StandardVerificationStrategyTest {
 
-    private TraversalEngine traversalEngine;
-
-    @Before
-    public void setup() {
-        this.traversalEngine = mock(TraversalEngine.class);
-        when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
-    }
-
     @Parameterized.Parameters(name = "{0}")
     public static Iterable<Object[]> data() {
         return Arrays.asList(new Object[][]{
@@ -67,11 +57,10 @@
     public void shouldBeVerifiedIllegal() {
         try {
             final TraversalStrategies strategies = new DefaultTraversalStrategies();
-            strategies.addStrategies(ComputerVerificationStrategy.instance());
+            strategies.addStrategies(StandardVerificationStrategy.instance());
             traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(this.traversalEngine);
             traversal.asAdmin().applyStrategies();
-            fail("The strategy should not allow lambdas: " + this.traversal);
+            fail("The strategy should not allow traversal: " + this.traversal);
         } catch (IllegalStateException ise) {
             assertTrue(true);
         }
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/DefaultTraverserGeneratorFactoryTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/DefaultTraverserGeneratorFactoryTest.java
index bdf5def..60f3880 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/DefaultTraverserGeneratorFactoryTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/DefaultTraverserGeneratorFactoryTest.java
@@ -29,7 +29,6 @@
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.LP_O_OB_P_S_SE_SL_Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.LP_O_OB_S_SE_SL_Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.O_OB_S_SE_SL_Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.O_Traverser;
 import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
 import org.junit.Test;
 
@@ -47,7 +46,7 @@
 
         Traversal.Admin traversal = traversalSource.V().out().asAdmin();
         traversal.applyStrategies();
-        assertEquals(O_Traverser.class, traversal.getTraverserGenerator().generate(start, traversal.getStartStep(), 1l).getClass());
+        assertEquals(B_O_Traverser.class, traversal.getTraverserGenerator().generate(start, traversal.getStartStep(), 1l).getClass());
         //
         traversal = traversalSource.V().out().barrier().asAdmin();
         traversal.applyStrategies();
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalSideEffectsTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalSideEffectsTest.java
new file mode 100644
index 0000000..679042d
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalSideEffectsTest.java
@@ -0,0 +1,134 @@
+/*
+ * 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.util;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
+import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
+import org.junit.Test;
+
+import java.util.Arrays;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class DefaultTraversalSideEffectsTest {
+
+    @Test
+    public void shouldOperateCorrectly() {
+        final TraversalSideEffects sideEffects = new DefaultTraversalSideEffects();
+        try {
+            sideEffects.set("a", "marko");
+            fail("The key was not registered: a");
+        } catch (final IllegalArgumentException e) {
+            assertEquals(TraversalSideEffects.Exceptions.sideEffectKeyDoesNotExist("a").getMessage(), e.getMessage());
+        }
+        for (final String key : Arrays.asList("a", "b", "c")) {
+            try {
+                sideEffects.get(key);
+                fail("The key was not registered: " + key);
+            } catch (final IllegalArgumentException e) {
+                assertEquals(TraversalSideEffects.Exceptions.sideEffectKeyDoesNotExist(key).getMessage(), e.getMessage());
+            }
+        }
+
+        sideEffects.register("a", new ConstantSupplier<>("temp"), null);
+        sideEffects.register("b", new ConstantSupplier<>(0), Operator.sum);
+        sideEffects.register("c", null, Operator.and);
+
+        assertEquals(0, sideEffects.<Integer>get("b").intValue());
+        try {
+            sideEffects.get("c");
+            fail("The key was not registered with a supplier: c");
+        } catch (final IllegalArgumentException e) {
+            assertEquals(TraversalSideEffects.Exceptions.sideEffectKeyDoesNotExist("c").getMessage(), e.getMessage());
+        }
+
+        sideEffects.set("a", "marko");
+        sideEffects.set("b", 1);
+        sideEffects.set("c", true);
+        assertFalse(sideEffects.exists("blah"));
+        assertTrue(sideEffects.exists("a"));
+        assertEquals("marko", sideEffects.get("a"));
+        assertTrue(sideEffects.exists("b"));
+        assertEquals(1, sideEffects.<Integer>get("b").intValue());
+        assertTrue(sideEffects.exists("c"));
+        assertEquals(true, sideEffects.get("c"));
+
+        sideEffects.add("a", "rodriguez");
+        sideEffects.add("b", 2);
+        sideEffects.add("c", false);
+        assertTrue(sideEffects.exists("a"));
+        assertEquals("rodriguez", sideEffects.get("a"));
+        assertTrue(sideEffects.exists("b"));
+        assertEquals(3, sideEffects.<Integer>get("b").intValue());
+        assertTrue(sideEffects.exists("c"));
+        assertEquals(false, sideEffects.get("c"));
+
+        sideEffects.set("c", true);
+        assertEquals(true, sideEffects.get("c"));
+    }
+
+    @Test
+    public void shouldMergeCorrectly() {
+        final TraversalSideEffects sideEffects = new DefaultTraversalSideEffects();
+        final TraversalSideEffects other =new DefaultTraversalSideEffects();
+
+        sideEffects.register("a", new ConstantSupplier<>("temp"), null);
+        sideEffects.register("b", new ConstantSupplier<>(0), Operator.sum);
+        sideEffects.register("c", null, Operator.and);
+
+        sideEffects.mergeInto(other);
+
+        assertEquals("temp",other.get("a"));
+        assertEquals(0,other.<Integer>get("b").intValue());
+        try {
+            other.get("c");
+            fail("The key was not registered with a supplier: c");
+        } catch (final IllegalArgumentException e) {
+            assertEquals(TraversalSideEffects.Exceptions.sideEffectKeyDoesNotExist("c").getMessage(), e.getMessage());
+        }
+
+        other.set("a", "marko");
+        other.set("b", 1);
+        other.set("c", true);
+        assertFalse(other.exists("blah"));
+        assertTrue(other.exists("a"));
+        assertEquals("marko", other.get("a"));
+        assertTrue(other.exists("b"));
+        assertEquals(1, other.<Integer>get("b").intValue());
+        assertTrue(other.exists("c"));
+        assertEquals(true, other.get("c"));
+
+        assertEquals("temp",sideEffects.get("a"));
+        assertEquals(0,sideEffects.<Integer>get("b").intValue());
+        try {
+            sideEffects.get("c");
+            fail("The key was not registered with a supplier: c");
+        } catch (final IllegalArgumentException e) {
+            assertEquals(TraversalSideEffects.Exceptions.sideEffectKeyDoesNotExist("c").getMessage(), e.getMessage());
+        }
+    }
+}
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/DefaultTraversalStrategiesTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategiesTest.java
similarity index 64%
rename from gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/DefaultTraversalStrategiesTest.java
rename to gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategiesTest.java
index 01d4fdd..c63ed93 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/DefaultTraversalStrategiesTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalStrategiesTest.java
@@ -16,15 +16,19 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.process.util;
+package org.apache.tinkerpop.gremlin.process.traversal.util;
 
 import org.apache.tinkerpop.gremlin.process.TraversalStrategiesTest;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SideEffectStrategy;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -152,5 +156,53 @@
         assertEquals(c, s.toList().get(3));
         assertEquals(e, s.toList().get(4));
     }
+
+    @Test
+    public void testCloningAndStatefulStrategies() {
+        final DefaultTraversal firstTraversal = new DefaultTraversal();
+        final DefaultTraversalStrategies first = new DefaultTraversalStrategies();
+        assertEquals(0, first.traversalStrategies.size());
+        SideEffectStrategy.addSideEffect(first, "a", 2, Operator.sum);
+        assertEquals(1, first.traversalStrategies.size());
+        firstTraversal.setStrategies(first);
+        firstTraversal.applyStrategies();
+        assertEquals(1, firstTraversal.getSideEffects().keys().size());
+        assertEquals(2, firstTraversal.getSideEffects().<Integer>get("a").intValue());
+        final DefaultTraversalStrategies second = first.clone();
+        SideEffectStrategy.addSideEffect(second, "b", "marko", Operator.assign);
+
+        final DefaultTraversal secondTraversal = new DefaultTraversal();
+        secondTraversal.setStrategies(first);
+        secondTraversal.applyStrategies();
+        assertEquals(1, secondTraversal.getSideEffects().keys().size());
+        assertEquals(2, secondTraversal.getSideEffects().<Integer>get("a").intValue());
+
+        final DefaultTraversal thirdTraversal = new DefaultTraversal();
+        thirdTraversal.setStrategies(second);
+        thirdTraversal.applyStrategies();
+        assertEquals(2, thirdTraversal.getSideEffects().keys().size());
+        assertEquals(2, thirdTraversal.getSideEffects().<Integer>get("a").intValue());
+        assertEquals("marko", thirdTraversal.getSideEffects().get("b"));
+
+        SideEffectStrategy.addSideEffect(second, "c", "hello", Operator.assign);
+        final DefaultTraversal forthTraversal = new DefaultTraversal();
+        forthTraversal.setStrategies(second);
+        forthTraversal.applyStrategies();
+        assertEquals(3, forthTraversal.getSideEffects().keys().size());
+        assertEquals(2, forthTraversal.getSideEffects().<Integer>get("a").intValue());
+        assertEquals("marko", forthTraversal.getSideEffects().get("b"));
+        assertEquals("hello", forthTraversal.getSideEffects().get("c"));
+
+        final DefaultTraversal fifthTraversal = new DefaultTraversal();
+        fifthTraversal.setStrategies(first);
+        fifthTraversal.applyStrategies();
+        assertEquals(1, fifthTraversal.getSideEffects().keys().size());
+        assertEquals(2, fifthTraversal.getSideEffects().<Integer>get("a").intValue());
+
+        assertTrue(firstTraversal.getStrategies() == secondTraversal.getStrategies());
+        assertTrue(firstTraversal.getStrategies() != thirdTraversal.getStrategies());
+        assertTrue(forthTraversal.getStrategies() == thirdTraversal.getStrategies());
+        assertTrue(fifthTraversal.getStrategies() == firstTraversal.getStrategies());
+    }
 }
 
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalTest.java
new file mode 100644
index 0000000..6f6a6c6
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalTest.java
@@ -0,0 +1,149 @@
+/*
+ * 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.util;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
+import org.apache.tinkerpop.gremlin.util.function.HashSetSupplier;
+import org.hamcrest.CoreMatchers;
+import org.junit.Test;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.is;
+import static org.hamcrest.number.OrderingComparison.greaterThan;
+import static org.hamcrest.number.OrderingComparison.lessThan;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class DefaultTraversalTest {
+
+    @Test
+    public void shouldRespectThreadInterruption() throws Exception {
+        final AtomicBoolean exceptionThrown = new AtomicBoolean(false);
+        final AtomicInteger counter = new AtomicInteger(0);
+        final CountDownLatch startedIterating = new CountDownLatch(100);
+        final List<Integer> l = IntStream.range(0, 1000000).boxed().collect(Collectors.toList());
+        final Thread t = new Thread(() -> {
+            try {
+                __.inject(l).unfold().sideEffect(i -> {
+                    startedIterating.countDown();
+                    counter.incrementAndGet();
+                }).iterate();
+            } catch (Exception ex) {
+                exceptionThrown.set(ex instanceof TraversalInterruptedException);
+            }
+        });
+
+        t.start();
+        startedIterating.await();
+        t.interrupt();
+        t.join();
+
+        // ensure that some but not all of the traversal was iterated and that the right exception was tossed
+        assertThat(counter.get(), greaterThan(0));
+        assertThat(counter.get(), lessThan(1000000));
+        assertThat(exceptionThrown.get(), CoreMatchers.is(true));
+    }
+
+    @Test
+    public void shouldCloneTraversalCorrectly() {
+        final DefaultGraphTraversal<?, ?> original = new DefaultGraphTraversal<>();
+        original.out().groupCount("m").values("name").count();
+        final DefaultTraversal<?, ?> clone = (DefaultTraversal) original.clone();
+        assertEquals(original.hashCode(), clone.hashCode());
+        assertEquals(original.getSteps().size(), clone.getSteps().size());
+
+        for (int i = 0; i < original.steps.size(); i++) {
+            assertEquals(original.getSteps().get(i), clone.getSteps().get(i));
+        }
+        assertNotEquals(original.sideEffects, clone.sideEffects);
+        original.getSideEffects().set("m", 1);
+        assertEquals(1, original.getSideEffects().<Integer>get("m").intValue());
+        clone.getSideEffects().set("m", 2);
+        assertEquals(1, original.getSideEffects().<Integer>get("m").intValue());
+        assertEquals(2, clone.getSideEffects().<Integer>get("m").intValue());
+    }
+
+    @Test
+    public void shouldBeTheSameSideEffectsThroughoutAllChildTraversals() {
+        final DefaultTraversal.Admin<?, ?> traversal = (DefaultTraversal.Admin) __.out().repeat(__.in().groupCount("a").by(__.select("a"))).in();
+        final TraversalSideEffects sideEffects = traversal.getSideEffects();
+        sideEffects.register("a", (Supplier) HashSetSupplier.instance(), Operator.addAll);
+        sideEffects.register("b", new ConstantSupplier<>(1), Operator.sum);
+        assertEquals(1, sideEffects.<Integer>get("b").intValue());
+        assertFalse(traversal.isLocked());
+        traversal.applyStrategies();
+        assertTrue(traversal.isLocked());
+        sideEffects.add("b", 7);
+        assertEquals(0, sideEffects.<Set>get("a").size());
+        assertEquals(8, sideEffects.<Integer>get("b").intValue());
+        recursiveTestTraversals(traversal, sideEffects, sideEffects.get("a"), 8);
+        sideEffects.add("a", new HashSet<>(Arrays.asList("marko", "bob")));
+        sideEffects.set("b", 3);
+        recursiveTestTraversals(traversal, sideEffects, new HashSet<>(Arrays.asList("marko", "bob")), 3);
+        sideEffects.add("a", new HashSet<>(Arrays.asList("marko", "x", "x", "bob")));
+        sideEffects.add("b", 10);
+        recursiveTestTraversals(traversal, sideEffects, new HashSet<>(Arrays.asList("marko", "bob", "x")), 13);
+    }
+
+    private void recursiveTestTraversals(final Traversal.Admin<?, ?> traversal, final TraversalSideEffects sideEffects, final Set aValue, final int bValue) {
+        assertTrue(traversal.getSideEffects() == sideEffects);
+        assertEquals(sideEffects.keys().size(), traversal.getSideEffects().keys().size());
+        assertEquals(bValue, traversal.getSideEffects().<Integer>get("b").intValue());
+        assertEquals(aValue.size(), traversal.getSideEffects().<Set>get("a").size());
+        assertFalse(aValue.stream().filter(k -> !traversal.getSideEffects().<Set>get("a").contains(k)).findAny().isPresent());
+        assertFalse(traversal.getSideEffects().exists("c"));
+        for (final Step<?, ?> step : traversal.getSteps()) {
+            assertTrue(step.getTraversal().getSideEffects() == sideEffects);
+            assertEquals(sideEffects.keys().size(), step.getTraversal().getSideEffects().keys().size());
+            assertEquals(bValue, step.getTraversal().getSideEffects().<Integer>get("b").intValue());
+            assertEquals(aValue.size(), step.getTraversal().getSideEffects().<Set>get("a").size());
+            assertFalse(aValue.stream().filter(k -> !step.getTraversal().getSideEffects().<Set>get("a").contains(k)).findAny().isPresent());
+            assertFalse(step.getTraversal().getSideEffects().exists("c"));
+            if (step instanceof TraversalParent) {
+                ((TraversalParent) step).getGlobalChildren().forEach(t -> this.recursiveTestTraversals(t, sideEffects, aValue, bValue));
+                ((TraversalParent) step).getLocalChildren().forEach(t -> this.recursiveTestTraversals(t, sideEffects, aValue, bValue));
+            }
+        }
+    }
+}
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/StepPositionTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/StepPositionTest.java
new file mode 100644
index 0000000..986a51c
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/StepPositionTest.java
@@ -0,0 +1,64 @@
+/*
+ * 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.util;
+
+import org.apache.tinkerpop.gremlin.process.traversal.P;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
+import org.apache.tinkerpop.gremlin.process.traversal.step.SideEffectCapable;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class StepPositionTest {
+
+    @Test
+    public void shouldCorrectlyIdentifyStepIds() {
+        testEachTraversal(__.out().in().groupCount().unfold().select("a").asAdmin());
+    }
+
+    @Test
+    public void shouldNotIdentitySideEffectAndScopingLabels() {
+        testEachTraversal(__.out().in().groupCount("a").unfold().union(__.out(), __.both().select("c")).select("b").groupCount("c").by(__.values("name")).where("a", P.neq("b")).asAdmin());
+    }
+
+    private void testEachTraversal(final Traversal.Admin<?, ?> traversal) {
+        for (final Step step : traversal.getSteps()) {
+            assertTrue(StepPosition.isStepId(step.getId()));
+            if (step instanceof SideEffectCapable) {
+                assertFalse(StepPosition.isStepId(((SideEffectCapable) step).getSideEffectKey()));
+            }
+            if (step instanceof Scoping) {
+                ((Scoping) step).getScopeKeys().forEach(key -> assertFalse(StepPosition.isStepId(key)));
+            }
+            if (step instanceof TraversalParent) {
+                ((TraversalParent) step).getLocalChildren().forEach(this::testEachTraversal);
+                ((TraversalParent) step).getGlobalChildren().forEach(this::testEachTraversal);
+            }
+        }
+    }
+}
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanationTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanationTest.java
index 3059879..3040fe8 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanationTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalExplanationTest.java
@@ -22,11 +22,15 @@
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.junit.Test;
 
+import java.util.stream.Stream;
+
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 /**
@@ -43,6 +47,45 @@
     }
 
     @Test
+    public void shouldWordWrapCorrectly() {
+        GraphTraversal<?, ?> traversal = __.V().out().out();
+        String toString = traversal.explain().prettyPrint();
+        assertFalse(toString.contains("VertexStep(OUT,vertex),\n"));
+        //System.out.println(toString);
+        ///
+        traversal = __.V().out().out().out().out();
+        toString = traversal.explain().prettyPrint();
+        assertTrue(toString.contains("VertexStep(OUT,vertex),"));
+        //System.out.println(toString);
+        ///
+        for (int i = 0; i < 30; i++) {
+            traversal = __.V();
+            for (int j = 0; j < i; j++) {
+                traversal.out();
+            }
+            traversal.asAdmin().setStrategies(TraversalStrategies.GlobalCache.getStrategies(Graph.class));
+            toString = traversal.explain().prettyPrint();
+            if (i < 3)
+                assertFalse(toString.contains("VertexStep(OUT,vertex),\n"));
+            else {
+                assertTrue(Stream.of(toString.split("\n"))
+                        .filter(s -> s.startsWith(" "))
+                        .map(String::trim)
+                        .filter(s -> Character.isLowerCase(s.charAt(0)))
+                        .findAny()
+                        .isPresent()); // all indented word wraps should start with steps
+                assertTrue(toString.contains("vertex"));
+            }
+            for (int j = 80; j < 200; j++) {
+                for (final String line : traversal.explain().prettyPrint(j).split("\n")) {
+                    assertTrue(line.length() <= j);
+                }
+            }
+            // System.out.println(toString);
+        }
+    }
+
+    @Test
     public void shouldApplyStrategiesCorrectly() {
         Traversal.Admin<?, ?> traversal = __.out().count().asAdmin();
         traversal.setStrategies(TraversalStrategies.GlobalCache.getStrategies(Graph.class));
@@ -64,8 +107,10 @@
         ///
         traversal = __.outE().inV().group().by(__.inE().outV().groupCount().by(__.both().count().is(P.gt(2)))).asAdmin();
         traversal.setStrategies(TraversalStrategies.GlobalCache.getStrategies(Graph.class).clone());
+        // System.out.println(traversal.explain());
         found = 0;
-        for (final String line : traversal.explain().toString().split("\n")) {
+        for (final String line : traversal.explain().toString().split("]\n")) { // need to split cause of word wrap
+            //System.out.println(line + "\n\n");
             if (line.contains("IncidentToAdjacentStrategy") && line.contains("[VertexStep(IN,vertex)"))
                 found++;
             if (line.contains("IncidentToAdjacentStrategy") && line.contains("[VertexStep(OUT,vertex)"))
@@ -76,6 +121,18 @@
                 found++;
         }
         assertEquals(4, found);
-        // System.out.println(traversal.explain());
+        //
+        found = 0;
+        for (final String line : traversal.explain().prettyPrint(158).split("]\n")) { // need to split cause of word wrap
+            if (line.contains("IncidentToAdjacentStrategy") && line.contains("[VertexStep(IN,vertex)"))
+                found++;
+            if (line.contains("IncidentToAdjacentStrategy") && line.contains("[VertexStep(OUT,vertex)"))
+                found++;
+            if (line.contains("AdjacentToIncidentStrategy") && line.contains("[VertexStep(BOTH,edge)"))
+                found++;
+            if (line.contains("RangeByIsCountStrategy") && line.contains("RangeGlobalStep(0,3)"))
+                found++;
+        }
+        assertEquals(4, found);
     }
 }
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java
index f0fc45a..8505215 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/util/TraversalHelperTest.java
@@ -18,28 +18,38 @@
  */
 package org.apache.tinkerpop.gremlin.process.util;
 
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DropStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+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.FilterStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.LambdaFilterStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TraversalFilterStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStartStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTraversalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesStep;
+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.sideEffect.IdentityStep;
-import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.structure.PropertyType;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
 import org.junit.Test;
 import org.mockito.Mockito;
 
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
 import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -48,6 +58,56 @@
 public class TraversalHelperTest {
 
     @Test
+    public void shouldIdentifyLocalChildren() {
+        final Traversal.Admin<?, ?> localChild = __.as("x").select("a", "b").by("name").asAdmin();
+        new LocalStep<>(new DefaultTraversal(), localChild);
+        assertFalse(TraversalHelper.isGlobalChild(localChild));
+        ///
+        new WhereTraversalStep<>(new DefaultTraversal(), localChild);
+        assertFalse(TraversalHelper.isGlobalChild(localChild));
+        ///
+        new TraversalFilterStep<>(new DefaultTraversal(), localChild);
+        assertFalse(TraversalHelper.isGlobalChild(localChild));
+        ///
+        new TraversalMapStep<>(new DefaultTraversal(), localChild);
+        assertFalse(TraversalHelper.isGlobalChild(localChild));
+        ///
+        new TraversalFlatMapStep<>(new DefaultTraversal(), localChild);
+        assertFalse(TraversalHelper.isGlobalChild(localChild));
+        ///
+        final Traversal.Admin<?, ?> remoteLocalChild = __.repeat(localChild).asAdmin();
+        new LocalStep<>(new DefaultTraversal<>(), remoteLocalChild);
+        assertFalse(TraversalHelper.isGlobalChild(localChild));
+    }
+
+    @Test
+    public void shouldIdentifyGlobalChildren() {
+        final Traversal.Admin<?, ?> globalChild = __.select("a", "b").by("name").asAdmin();
+        TraversalParent parent = new RepeatStep<>(new DefaultTraversal());
+        ((RepeatStep) parent).setRepeatTraversal(globalChild);
+        assertTrue(TraversalHelper.isGlobalChild(globalChild));
+        ///
+        new UnionStep<>(new DefaultTraversal(), globalChild);
+        assertTrue(TraversalHelper.isGlobalChild(globalChild));
+        ///
+        new TraversalVertexProgramStep(new DefaultTraversal<>(), globalChild);
+        assertTrue(TraversalHelper.isGlobalChild(globalChild));
+        ///
+        final Traversal.Admin<?, ?> remoteRemoteChild = __.repeat(globalChild).asAdmin();
+        new UnionStep<>(new DefaultTraversal(), remoteRemoteChild);
+        assertTrue(TraversalHelper.isGlobalChild(globalChild));
+    }
+
+    @Test
+    public void shouldIdentityLocalProperties() {
+        assertTrue(TraversalHelper.isLocalProperties(__.identity().asAdmin()));
+        assertTrue(TraversalHelper.isLocalProperties(__.id().asAdmin()));
+        assertTrue(TraversalHelper.isLocalProperties(__.label().asAdmin()));
+        assertTrue(TraversalHelper.isLocalProperties(__.values("name").asAdmin()));
+        assertFalse(TraversalHelper.isLocalProperties(__.outE("knows").asAdmin()));
+    }
+
+    @Test
     public void shouldNotFindStepOfClassInTraversal() {
         final Traversal.Admin traversal = new DefaultTraversal<>(EmptyGraph.instance());
         traversal.asAdmin().addStep(0, new HasStep(traversal));
@@ -232,4 +292,38 @@
         Mockito.when(s.toString()).thenReturn("0123456789");
         assertEquals("0123...", TraversalHelper.getShortName(s, 7));
     }
+
+    @Test
+    public void shouldIdentifyStarGraphTraversals() {
+        assertTrue(TraversalHelper.isLocalStarGraph(__.identity().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.id().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.out().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.label().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.bothE().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.values().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.properties().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.repeat(__.identity()).asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.repeat(__.has("name")).asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.out().repeat(__.identity()).asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.out().id().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.label().union(__.out(), __.in()).asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.label().union(__.out(), __.in()).id().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.coalesce(out("likes"), out("knows"), out("created")).groupCount().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.local(__.out()).groupCount().asAdmin()));
+        assertTrue(TraversalHelper.isLocalStarGraph(__.local(__.out()).groupCount().by(T.id).asAdmin()));
+        // assertTrue(TraversalHelper.isLocalStarGraph(__.out().repeat(__.has("name")).asAdmin()));
+        //
+        assertFalse(TraversalHelper.isLocalStarGraph(__.out().label().asAdmin()));
+        assertFalse(TraversalHelper.isLocalStarGraph(__.out().values().asAdmin()));
+        assertFalse(TraversalHelper.isLocalStarGraph(__.out().valueMap().asAdmin()));
+        assertFalse(TraversalHelper.isLocalStarGraph(__.repeat(__.out()).asAdmin()));
+        assertFalse(TraversalHelper.isLocalStarGraph(__.repeat(__.has("name").out()).asAdmin()));
+        assertFalse(TraversalHelper.isLocalStarGraph(__.repeat(__.has("name").union(__.out(), __.in())).asAdmin()));
+        assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.out(), __.in()).label().asAdmin()));
+        assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.out(), __.in().out()).asAdmin()));
+        assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.out(), __.out().union(__.in(), __.out())).asAdmin()));
+        assertFalse(TraversalHelper.isLocalStarGraph(__.union(__.values(), __.out().union(__.in(), __.out())).out().asAdmin()));
+        assertFalse(TraversalHelper.isLocalStarGraph(__.coalesce(out("likes"), out("knows"), out("created")).groupCount().by("name").asAdmin()));
+        assertFalse(TraversalHelper.isLocalStarGraph(__.local(__.out()).groupCount().by("name").asAdmin()));
+    }
 }
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapperTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapperTest.java
index 861c6f6..29ddc57 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapperTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapperTest.java
@@ -29,6 +29,7 @@
 import org.apache.tinkerpop.shaded.kryo.ClassResolver;
 import org.apache.tinkerpop.shaded.kryo.Kryo;
 import org.apache.tinkerpop.shaded.kryo.Registration;
+import org.apache.tinkerpop.shaded.kryo.Serializer;
 import org.apache.tinkerpop.shaded.kryo.io.Input;
 import org.apache.tinkerpop.shaded.kryo.io.Output;
 import org.junit.Test;
@@ -57,9 +58,12 @@
 import java.util.function.Supplier;
 
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.__;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.IsInstanceOf.instanceOf;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.fail;
 
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
@@ -220,85 +224,100 @@
     }
 
     @Test
-    public void shouldHandleDuration()throws Exception  {
+    public void shouldOverrideExistingSerializer() throws Exception {
+        final GryoMapper mapper = GryoMapper.build()
+                .addCustom(Duration.class, new OverrideDurationSerializer()).create();
+
+        try (final OutputStream stream = new ByteArrayOutputStream()) {
+            final Output out = new Output(stream);
+            mapper.createMapper().writeObject(out, Duration.ZERO);
+            fail("The OverrideDurationSerializer throws exceptions so this should not have worked");
+        } catch (Exception ex) {
+            assertThat(ex, instanceOf(UnsupportedOperationException.class));
+            assertEquals("I don't do anything", ex.getMessage());
+        }
+    }
+
+    @Test
+    public void shouldHandleDuration() throws Exception  {
         final Duration o = Duration.ZERO;
         assertEquals(o, serializeDeserialize(o, Duration.class));
     }
 
     @Test
-    public void shouldHandleInstant()throws Exception  {
+    public void shouldHandleInstant() throws Exception  {
         final Instant o = Instant.ofEpochMilli(System.currentTimeMillis());
         assertEquals(o, serializeDeserialize(o, Instant.class));
     }
 
     @Test
-    public void shouldHandleLocalDate()throws Exception  {
+    public void shouldHandleLocalDate() throws Exception  {
         final LocalDate o = LocalDate.now();
         assertEquals(o, serializeDeserialize(o, LocalDate.class));
     }
 
     @Test
-    public void shouldHandleLocalDateTime()throws Exception  {
+    public void shouldHandleLocalDateTime() throws Exception  {
         final LocalDateTime o = LocalDateTime.now();
         assertEquals(o, serializeDeserialize(o, LocalDateTime.class));
     }
 
     @Test
-    public void shouldHandleLocalTime()throws Exception  {
+    public void shouldHandleLocalTime() throws Exception  {
         final LocalTime o = LocalTime.now();
         assertEquals(o, serializeDeserialize(o, LocalTime.class));
     }
 
     @Test
-    public void shouldHandleMonthDay()throws Exception  {
+    public void shouldHandleMonthDay() throws Exception  {
         final MonthDay o = MonthDay.now();
         assertEquals(o, serializeDeserialize(o, MonthDay.class));
     }
 
     @Test
-    public void shouldHandleOffsetDateTime()throws Exception  {
+    public void shouldHandleOffsetDateTime() throws Exception  {
         final OffsetDateTime o = OffsetDateTime.now();
         assertEquals(o, serializeDeserialize(o, OffsetDateTime.class));
     }
 
     @Test
-    public void shouldHandleOffsetTime()throws Exception  {
+    public void shouldHandleOffsetTime() throws Exception  {
         final OffsetTime o = OffsetTime.now();
         assertEquals(o, serializeDeserialize(o, OffsetTime.class));
     }
 
     @Test
-    public void shouldHandlePeriod()throws Exception  {
+    public void shouldHandlePeriod() throws Exception  {
         final Period o = Period.ofDays(3);
         assertEquals(o, serializeDeserialize(o, Period.class));
     }
 
     @Test
-    public void shouldHandleYear()throws Exception  {
+    public void shouldHandleYear() throws Exception  {
         final Year o = Year.now();
         assertEquals(o, serializeDeserialize(o, Year.class));
     }
 
     @Test
-    public void shouldHandleYearMonth()throws Exception  {
+    public void shouldHandleYearMonth() throws Exception  {
         final YearMonth o = YearMonth.now();
         assertEquals(o, serializeDeserialize(o, YearMonth.class));
     }
 
     @Test
-    public void shouldHandleZonedDateTime()throws Exception  {
+    public void shouldHandleZonedDateTime() throws Exception  {
         final ZonedDateTime o = ZonedDateTime.now();
         assertEquals(o, serializeDeserialize(o, ZonedDateTime.class));
     }
 
     @Test
-    public void shouldHandleZonedOffset()throws Exception  {
+    public void shouldHandleZonedOffset() throws Exception  {
         final ZoneOffset o  = ZonedDateTime.now().getOffset();
         assertEquals(o, serializeDeserialize(o, ZoneOffset.class));
     }
 
     @Test
-    public void shouldHandleTraversalExplanation()throws Exception  {
+    public void shouldHandleTraversalExplanation() throws Exception  {
         final TraversalExplanation te = __().out().outV().outE().explain();
         assertEquals(te.toString(), serializeDeserialize(te, TraversalExplanation.class).toString());
     }
@@ -349,4 +368,20 @@
             }
         }
     }
+
+    final static class OverrideDurationSerializer extends Serializer<Duration>
+    {
+        @Override
+        public void write(final Kryo kryo, final Output output, final Duration duration)
+        {
+            throw new UnsupportedOperationException("I don't do anything");
+        }
+
+        @Override
+        public Duration read(final Kryo kryo, final Input input, final Class<Duration> durationClass)
+        {
+            throw new UnsupportedOperationException("I don't do anything");
+        }
+    }
+
 }
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/function/ChainedComparatorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/function/ChainedComparatorTest.java
deleted file mode 100644
index 39a13e8..0000000
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/util/function/ChainedComparatorTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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.util.function;
-
-import org.junit.Test;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-
-import static org.junit.Assert.assertEquals;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class ChainedComparatorTest {
-
-    final ChainedComparator<Integer> chained = new ChainedComparator<>(Arrays.asList(Comparator.<Integer>naturalOrder(), Comparator.<Integer>reverseOrder()));
-
-    @Test(expected = IllegalArgumentException.class)
-    public void shouldThrowIfNoComparators() {
-        new ChainedComparator<>(Collections.emptyList());
-    }
-
-    @Test
-    public void shouldCompareBigger() {
-        assertEquals(1, chained.compare(2, 1));
-    }
-
-    @Test
-    public void shouldCompareSmaller() {
-        assertEquals(-1, chained.compare(1, 2));
-    }
-
-    @Test
-    public void shouldCompareSame() {
-        assertEquals(0, chained.compare(2, 2));
-    }
-}
diff --git a/gremlin-driver/pom.xml b/gremlin-driver/pom.xml
index 184a73a..0f5fa81 100644
--- a/gremlin-driver/pom.xml
+++ b/gremlin-driver/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.4-SNAPSHOT</version>
+        <version>3.2.2-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-driver</artifactId>
     <name>Apache TinkerPop :: Gremlin Driver</name>
@@ -60,7 +60,6 @@
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
-            <version>3.3.1</version>
         </dependency>
         <!-- TEST -->
         <dependency>
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Channelizer.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Channelizer.java
index 40be11c..fc39652 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Channelizer.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Channelizer.java
@@ -131,7 +131,7 @@
 
             configure(pipeline);
             pipeline.addLast(PIPELINE_GREMLIN_SASL_HANDLER, new Handler.GremlinSaslAuthenticationHandler(cluster.authProperties()));
-            pipeline.addLast(PIPELINE_GREMLIN_HANDLER, new Handler.GremlinResponseHandler(pending));
+            pipeline.addLast(PIPELINE_GREMLIN_HANDLER, new Handler.GremlinResponseHandler(pending, connection.getClient().getSettings()));
         }
     }
 
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Client.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Client.java
index a8b1710..9eb0b35 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Client.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Client.java
@@ -20,8 +20,12 @@
 
 import org.apache.tinkerpop.gremlin.driver.exception.ConnectionException;
 import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.util.Serializer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -31,6 +35,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.UUID;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
@@ -53,9 +58,11 @@
 
     protected final Cluster cluster;
     protected volatile boolean initialized;
+    protected final Client.Settings settings;
 
-    Client(final Cluster cluster) {
+    Client(final Cluster cluster, final Client.Settings settings) {
         this.cluster = cluster;
+        this.settings = settings;
     }
 
     /**
@@ -100,8 +107,8 @@
      *
      * @param graphOrTraversalSource rebinds the specified global Gremlin Server variable to "g"
      */
-    public Client alias(String graphOrTraversalSource) {
-        return new AliasClusteredClient(this, graphOrTraversalSource);
+    public Client alias(final String graphOrTraversalSource) {
+        return alias(makeDefaultAliasMap(graphOrTraversalSource));
     }
 
     /**
@@ -120,7 +127,27 @@
      * the created {@code Client}.
      */
     public Client alias(final Map<String,String> aliases) {
-        return new AliasClusteredClient(this, aliases);
+        return new AliasClusteredClient(this, aliases, settings);
+    }
+
+    /**
+     * Submit a {@link Traversal} to the server for remote execution.
+     */
+    public ResultSet submit(final Traversal traversal) {
+        try {
+            return submitAsync(traversal).get();
+        } catch (UnsupportedOperationException uoe) {
+            throw uoe;
+        } catch (Exception ex) {
+            throw new RuntimeException(ex);
+        }
+    }
+
+    /**
+     * An asynchronous version of {@link #submit(Traversal)}.
+     */
+    public CompletableFuture<ResultSet> submitAsync(final Traversal traversal) {
+        throw new UnsupportedOperationException("This implementation does not support Traversal submission - use a sessionless Client created with from the alias() method");
     }
 
     /**
@@ -212,7 +239,7 @@
         Optional.ofNullable(parameters).ifPresent(params -> request.addArg(Tokens.ARGS_BINDINGS, parameters));
 
         if (graphOrTraversalSource != null && !graphOrTraversalSource.isEmpty())
-            request.addArg(Tokens.ARGS_ALIASES, makeAliases(graphOrTraversalSource));
+            request.addArg(Tokens.ARGS_ALIASES, makeDefaultAliasMap(graphOrTraversalSource));
 
         return submitAsync(buildMessage(request).create());
     }
@@ -276,7 +303,21 @@
         closeAsync().join();
     }
 
-    private Map<String,String> makeAliases(final String graphOrTraversalSource) {
+    /**
+     * Gets the {@link Client.Settings}.
+     */
+    public Settings getSettings() {
+        return settings;
+    }
+
+    /**
+     * Gets the {@link Cluster} that spawned this {@code Client}.
+     */
+    public Cluster getCluster() {
+        return cluster;
+    }
+
+    protected Map<String,String> makeDefaultAliasMap(final String graphOrTraversalSource) {
         final Map<String,String> aliases = new HashMap<>();
         aliases.put("g", graphOrTraversalSource);
         return aliases;
@@ -291,8 +332,8 @@
 
         private ConcurrentMap<Host, ConnectionPool> hostConnectionPools = new ConcurrentHashMap<>();
 
-        ClusteredClient(final Cluster cluster) {
-            super(cluster);
+        ClusteredClient(final Cluster cluster, final Client.Settings settings) {
+            super(cluster, settings);
         }
 
         /**
@@ -324,6 +365,89 @@
         }
 
         /**
+         * The asynchronous version of {@link #submit(String, Map)}} where the returned future will complete when the
+         * write of the request completes.
+         *
+         * @param gremlin the gremlin script to execute
+         * @param parameters a map of parameters that will be bound to the script on execution
+         * @param graphOrTraversalSource rebinds the specified global Gremlin Server variable to "g"
+         */
+        public CompletableFuture<ResultSet> submitAsync(final String gremlin, final String graphOrTraversalSource,
+                                                        final Map<String, Object> parameters) {
+            final RequestMessage.Builder request = RequestMessage.build(Tokens.OPS_EVAL)
+                    .add(Tokens.ARGS_GREMLIN, gremlin)
+                    .add(Tokens.ARGS_BATCH_SIZE, cluster.connectionPoolSettings().resultIterationBatchSize);
+
+            Optional.ofNullable(parameters).ifPresent(params -> request.addArg(Tokens.ARGS_BINDINGS, parameters));
+
+            if (graphOrTraversalSource != null && !graphOrTraversalSource.isEmpty())
+                request.addArg(Tokens.ARGS_ALIASES, makeDefaultAliasMap(graphOrTraversalSource));
+
+            return submitAsync(buildMessage(request).create());
+        }
+
+        /**
+         * The asynchronous version of {@link #submit(String, Map)}} where the returned future will complete when the
+         * write of the request completes.
+         *
+         * @param gremlin the gremlin script to execute
+         * @param parameters a map of parameters that will be bound to the script on execution
+         * @param aliases aliases the specified global Gremlin Server variable some other name that then be used in the
+         *                script where the key is the alias name and the value represents the global variable on the
+         *                server
+         */
+        public CompletableFuture<ResultSet> submitAsync(final String gremlin, final Map<String,String> aliases,
+                                                        final Map<String, Object> parameters) {
+            final RequestMessage.Builder request = RequestMessage.build(Tokens.OPS_EVAL)
+                    .add(Tokens.ARGS_GREMLIN, gremlin)
+                    .add(Tokens.ARGS_BATCH_SIZE, cluster.connectionPoolSettings().resultIterationBatchSize);
+
+            Optional.ofNullable(parameters).ifPresent(params -> request.addArg(Tokens.ARGS_BINDINGS, parameters));
+
+            if (aliases != null && !aliases.isEmpty())
+                request.addArg(Tokens.ARGS_ALIASES, aliases);
+
+            return submitAsync(buildMessage(request).create());
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        @Deprecated
+        public Client rebind(final String graphOrTraversalSource) {
+            return alias(graphOrTraversalSource);
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public Client alias(final String graphOrTraversalSource) {
+            final Map<String,String> aliases = new HashMap<>();
+            aliases.put("g", graphOrTraversalSource);
+            return alias(aliases);
+        }
+
+        /**
+         * Creates a {@code Client} that supplies the specified set of aliases, thus allowing the user to re-name
+         * one or more globally defined {@link Graph} or {@link TraversalSource} server bindings for the context of
+         * the created {@code Client}.
+         */
+        @Deprecated
+        public Client rebind(final Map<String,String> rebindings) {
+            return alias(rebindings);
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public Client alias(final Map<String,String> aliases) {
+            return new AliasClusteredClient(this, aliases, settings);
+        }
+
+        /**
          * Uses a {@link LoadBalancingStrategy} to choose the best {@link Host} and then selects the best connection
          * from that host's connection pool.
          */
@@ -376,12 +500,9 @@
      * specified {@link Graph} or {@link TraversalSource} instances on the server-side.
      */
     public final static class AliasClusteredClient extends ReboundClusteredClient {
-        public AliasClusteredClient(Client clusteredClient, String graphOrTraversalSource) {
-            super(clusteredClient, graphOrTraversalSource);
-        }
-
-        public AliasClusteredClient(Client clusteredClient, Map<String, String> rebindings) {
-            super(clusteredClient, rebindings);
+        public AliasClusteredClient(final Client client, final Map<String, String> rebindings,
+                                    final Client.Settings settings) {
+            super(client, rebindings, settings);
         }
     }
 
@@ -397,19 +518,31 @@
         private final Map<String,String> aliases = new HashMap<>();
         final CompletableFuture<Void> close = new CompletableFuture<>();
 
-        ReboundClusteredClient(final Client client, final String graphOrTraversalSource) {
-            super(client.cluster);
-            this.client = client;
-            aliases.put("g", graphOrTraversalSource);
-        }
-
-        ReboundClusteredClient(final Client client, final Map<String,String> rebindings) {
-            super(client.cluster);
+        ReboundClusteredClient(final Client client, final Map<String,String> rebindings,
+                               final Client.Settings settings) {
+            super(client.cluster, settings);
             this.client = client;
             this.aliases.putAll(rebindings);
         }
 
         @Override
+        public CompletableFuture<ResultSet> submitAsync(final Traversal traversal) {
+            final byte[] serializedTraversal;
+            try {
+                serializedTraversal = Serializer.serializeObject(traversal);
+            } catch (Exception ex) {
+                throw new RuntimeException(ex);
+            }
+
+            try {
+                return submitAsync(buildMessage(RequestMessage.build(Tokens.OPS_TRAVERSE)
+                        .processor("traversal").addArg(Tokens.ARGS_GREMLIN, serializedTraversal)).create());
+            } catch (Exception ex) {
+                throw new RuntimeException(ex);
+            }
+        }
+
+        @Override
         public synchronized Client init() {
             if (close.isDone()) throw new IllegalStateException("Client is closed");
 
@@ -466,9 +599,9 @@
          * {@inheritDoc}
          */
         @Override
-        public Client alias(String graphOrTraversalSource) {
+        public Client alias(final Map<String, String> aliases) {
             if (close.isDone()) throw new IllegalStateException("Client is closed");
-            return new AliasClusteredClient(client, graphOrTraversalSource);
+            return new AliasClusteredClient(client, aliases, settings);
         }
     }
 
@@ -483,10 +616,10 @@
 
         private ConnectionPool connectionPool;
 
-        SessionedClient(final Cluster cluster, final String sessionId, final boolean manageTransactions) {
-            super(cluster);
-            this.sessionId = sessionId;
-            this.manageTransactions = manageTransactions;
+        SessionedClient(final Cluster cluster, final Client.Settings settings) {
+            super(cluster, settings);
+            this.sessionId = settings.getSession().get().sessionId;
+            this.manageTransactions = settings.getSession().get().manageTransactions;
         }
 
         String getSessionId() {
@@ -533,4 +666,156 @@
             return connectionPool.closeAsync();
         }
     }
+
+    /**
+     * Settings given to {@link Cluster#connect(Settings)} that configures how a {@link Client} will behave.
+     */
+    public static class Settings {
+        private final boolean unrollTraversers;
+        private final Optional<SessionSettings> session;
+
+        private Settings(final Builder builder) {
+            this.unrollTraversers = builder.unrollTraversers;
+            this.session = builder.session;
+        }
+
+        public static Builder build() {
+            return new Builder();
+        }
+
+        /**
+         * A request to Gremlin Server may return a {@link Traverser}. By default a {@link Traverser} is "unrolled"
+         * into an actual result on the client side. So, if the {@link Traverser} contained a {@link Vertex} then
+         * the {@link Vertex} would be extracted out of that {@link Traverser} for purposes of the result.  If this
+         * values is instead set to {@code false} then the {@link ResultSet} will simply contain a {@link Traverser}
+         * and it will be up to the user to work with that component directly.
+         */
+        public boolean unrollTraversers() {
+            return unrollTraversers;
+        }
+
+        /**
+         * Determines if the {@link Client} is to be constructed with a session. If the value is present, then a
+         * session is expected.
+         */
+        public Optional<SessionSettings> getSession() {
+            return session;
+        }
+
+        public static class Builder {
+            private boolean unrollTraversers = true;
+            private Optional<SessionSettings> session = Optional.empty();
+
+            private Builder() {}
+
+            /**
+             * A request to Gremlin Server may return a {@link Traverser}. By default a {@link Traverser} is "unrolled"
+             * into an actual result on the client side. So, if the {@link Traverser} contained a {@link Vertex} then
+             * the {@link Vertex} would be extracted out of that {@link Traverser} for purposes of the result.  If this
+             * values is instead set to {@code false} then the {@link ResultSet} will simply contain a {@link Traverser}
+             * and it will be up to the user to work with that component directly.
+             */
+            public Builder unrollTraversers(final boolean unrollTraversers) {
+                this.unrollTraversers = unrollTraversers;
+                return this;
+            }
+
+            /**
+             * Enables a session. By default this will create a random session name and configure transactions to be
+             * unmanaged. This method will override settings provided by calls to the other overloads of
+             * {@code useSession}.
+             */
+            public Builder useSession(final boolean enabled) {
+                session = enabled ? Optional.of(SessionSettings.build().create()) : Optional.empty();
+                return this;
+            }
+
+            /**
+             * Enables a session. By default this will create a session with the provided name and configure
+             * transactions to be unmanaged. This method will override settings provided by calls to the other
+             * overloads of {@code useSession}.
+             */
+            public Builder useSession(final String sessionId) {
+                session = sessionId != null && !sessionId.isEmpty() ?
+                        Optional.of(SessionSettings.build().sessionId(sessionId).create()) : Optional.empty();
+                return this;
+            }
+
+            /**
+             * Enables a session. This method will override settings provided by calls to the other overloads of
+             * {@code useSession}.
+             */
+            public Builder useSession(final SessionSettings settings) {
+                session = Optional.ofNullable(settings);
+                return this;
+            }
+
+            public Settings create() {
+                return new Settings(this);
+            }
+
+        }
+    }
+
+    /**
+     * Settings for a {@link Client} that involve a session.
+     */
+    public static class SessionSettings {
+        private final boolean manageTransactions;
+        private final String sessionId;
+
+        private SessionSettings(final Builder builder) {
+            manageTransactions = builder.manageTransactions;
+            sessionId = builder.sessionId;
+        }
+
+        /**
+         * If enabled, transactions will be "managed" such that each request will represent a complete transaction.
+         */
+        public boolean manageTransactions() {
+            return manageTransactions;
+        }
+
+        /**
+         * Provides the identifier of the session.
+         */
+        public String getSessionId() {
+            return sessionId;
+        }
+
+        public static SessionSettings.Builder build() {
+            return new SessionSettings.Builder();
+        }
+
+        public static class Builder {
+            private boolean manageTransactions = false;
+            private String sessionId = UUID.randomUUID().toString();
+
+            private Builder() {}
+
+            /**
+             * If enabled, transactions will be "managed" such that each request will represent a complete transaction.
+             * By default this value is {@code false}.
+             */
+            public Builder manageTransactions(final boolean manage) {
+                manageTransactions = manage;
+                return this;
+            }
+
+            /**
+             * Provides the identifier of the session. This value cannot be null or empty. By default it is set to
+             * a random {@code UUID}.
+             */
+            public Builder sessionId(final String sessionId) {
+                if (null == sessionId || sessionId.isEmpty())
+                    throw new IllegalArgumentException("sessionId cannot be null or empty");
+                this.sessionId = sessionId;
+                return this;
+            }
+
+            public SessionSettings create() {
+                return new SessionSettings(this);
+            }
+        }
+    }
 }
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java
index f033dc3..32600a2 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Cluster.java
@@ -24,6 +24,7 @@
 import io.netty.handler.ssl.SslContextBuilder;
 import io.netty.handler.ssl.SslProvider;
 import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
+import org.apache.commons.configuration.Configuration;
 import org.apache.tinkerpop.gremlin.driver.ser.Serializers;
 import io.netty.bootstrap.Bootstrap;
 import io.netty.channel.EventLoopGroup;
@@ -83,7 +84,7 @@
      * submitted or can be directly initialized via {@link Client#init()}.
      */
     public <T extends Client> T connect() {
-        return (T) new Client.ClusteredClient(this);
+        return (T) new Client.ClusteredClient(this, Client.Settings.build().create());
     }
 
     /**
@@ -120,9 +121,19 @@
      * @param manageTransactions enables auto-transactions when set to true
      */
     public <T extends Client> T connect(final String sessionId, final boolean manageTransactions) {
-        if (null == sessionId || sessionId.isEmpty())
-            throw new IllegalArgumentException("sessionId cannot be null or empty");
-        return (T) new Client.SessionedClient(this, sessionId, manageTransactions);
+        final Client.SessionSettings sessionSettings = Client.SessionSettings.build()
+                .manageTransactions(manageTransactions)
+                .sessionId(sessionId).create();
+        final Client.Settings settings = Client.Settings.build().useSession(sessionSettings).create();
+        return connect(settings);
+    }
+
+    /**
+     * Creates a new {@link Client} based on the settings provided.
+     */
+    public <T extends Client> T connect(final Client.Settings settings) {
+        return settings.getSession().isPresent() ? (T) new Client.SessionedClient(this, settings) :
+                (T) new Client.ClusteredClient(this, settings);
     }
 
     @Override
@@ -140,6 +151,10 @@
 
     public static Builder build(final File configurationFile) throws FileNotFoundException {
         final Settings settings = Settings.read(new FileInputStream(configurationFile));
+        return getBuilderFromSettings(settings);
+    }
+
+    private static Builder getBuilderFromSettings(final Settings settings) {
         final List<String> addresses = settings.hosts;
         if (addresses.size() == 0)
             throw new IllegalStateException("At least one value must be specified to the hosts setting");
@@ -196,6 +211,13 @@
     }
 
     /**
+     * Create a {@code Cluster} from Apache Configurations.
+     */
+    public static Cluster open(final Configuration conf) {
+        return getBuilderFromSettings(Settings.from(conf)).create();
+    }
+
+    /**
      * Create a {@code Cluster} using a YAML-based configuration file.
      */
     public static Cluster open(final String configurationFile) throws Exception {
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java
index 773322a..10d06d7 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Handler.java
@@ -29,6 +29,7 @@
 import io.netty.util.AttributeKey;
 import io.netty.util.ReferenceCountUtil;
 import org.apache.tinkerpop.gremlin.driver.ser.SerializationException;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -171,9 +172,11 @@
     static class GremlinResponseHandler extends SimpleChannelInboundHandler<ResponseMessage> {
         private static final Logger logger = LoggerFactory.getLogger(GremlinResponseHandler.class);
         private final ConcurrentMap<UUID, ResultQueue> pending;
+        private final boolean unrollTraversers;
 
-        public GremlinResponseHandler(final ConcurrentMap<UUID, ResultQueue> pending) {
+        public GremlinResponseHandler(final ConcurrentMap<UUID, ResultQueue> pending, final Client.Settings settings) {
             this.pending = pending;
+            unrollTraversers = settings.unrollTraversers();
         }
 
         @Override
@@ -186,10 +189,11 @@
                         // unrolls the collection into individual results to be handled by the queue.
                         final List<Object> listToUnroll = (List<Object>) data;
                         final ResultQueue queue = pending.get(response.getRequestId());
-                        listToUnroll.forEach(item -> queue.add(new Result(item)));
+                        listToUnroll.forEach(item -> tryUnrollTraverser(queue, item));
                     } else {
                         // since this is not a list it can just be added to the queue
-                        pending.get(response.getRequestId()).add(new Result(response.getResult().getData()));
+                        final ResultQueue queue = pending.get(response.getRequestId());
+                        tryUnrollTraverser(queue, response.getResult().getData());
                     }
                 } else {
                     // this is a "success" but represents no results otherwise it is an error
@@ -207,6 +211,18 @@
             }
         }
 
+        private void tryUnrollTraverser(final ResultQueue queue, final Object item) {
+            if (unrollTraversers && item instanceof Traverser) {
+                final Traverser t = (Traverser) item;
+                final Object traverserObject = t.get();
+                for (long ix = 0; ix < t.bulk(); ix++) {
+                    queue.add(new Result(traverserObject));
+                }
+            } else {
+                queue.add(new Result(item));
+            }
+        }
+
         @Override
         public void exceptionCaught(final ChannelHandlerContext ctx, final Throwable cause) throws Exception {
             // if this happens enough times (like the client is unable to deserialize a response) the pending
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Settings.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Settings.java
index 373b9c7..43014ce 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Settings.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Settings.java
@@ -19,16 +19,22 @@
 package org.apache.tinkerpop.gremlin.driver;
 
 import org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0;
+import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.yaml.snakeyaml.TypeDescription;
 import org.yaml.snakeyaml.Yaml;
 import org.yaml.snakeyaml.constructor.Constructor;
 
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
+import java.util.Properties;
+import java.util.stream.Collectors;
 
 /**
  * Settings for the {@link Cluster} and its related components.
@@ -107,6 +113,107 @@
         return yaml.loadAs(stream, Settings.class);
     }
 
+    /**
+     * Read configuration from a file into a new {@link Settings} object.
+     */
+    public static Settings from(final Configuration conf) {
+        final Settings settings = new Settings();
+
+        if (conf.containsKey("port"))
+            settings.port = conf.getInt("port");
+
+        if (conf.containsKey("nioPoolSize"))
+            settings.nioPoolSize = conf.getInt("nioPoolSize");
+
+        if (conf.containsKey("workerPoolSize"))
+            settings.workerPoolSize = conf.getInt("workerPoolSize");
+
+        if (conf.containsKey("username"))
+            settings.username = conf.getString("username");
+
+        if (conf.containsKey("password"))
+            settings.password = conf.getString("password");
+
+        if (conf.containsKey("jaasEntry"))
+            settings.jaasEntry = conf.getString("jaasEntry");
+
+        if (conf.containsKey("protocol"))
+            settings.protocol = conf.getString("protocol");
+
+        if (conf.containsKey("hosts"))
+            settings.hosts = conf.getList("hosts").stream().map(Object::toString).collect(Collectors.toList());
+
+        if (conf.containsKey("serializer.className")) {
+            final SerializerSettings serializerSettings = new SerializerSettings();
+            final Configuration serializerConf = conf.subset("serializer");
+
+            if (serializerConf.containsKey("className"))
+                serializerSettings.className = serializerConf.getString("className");
+
+            final Configuration serializerConfigConf = conf.subset("serializer.config");
+            if (IteratorUtils.count(serializerConfigConf.getKeys()) > 0) {
+                final Map<String,Object> m = new HashMap<>();
+                serializerConfigConf.getKeys().forEachRemaining(name -> {
+                    m.put(name, serializerConfigConf.getProperty(name));
+                });
+                serializerSettings.config = m;
+            }
+            settings.serializer = serializerSettings;
+        }
+
+        final Configuration connectionPoolConf = conf.subset("connectionPool");
+        if (IteratorUtils.count(connectionPoolConf.getKeys()) > 0) {
+            final ConnectionPoolSettings cpSettings = new ConnectionPoolSettings();
+
+            if (connectionPoolConf.containsKey("channelizer"))
+                cpSettings.channelizer = connectionPoolConf.getString("channelizer");
+
+            if (connectionPoolConf.containsKey("enableSsl"))
+                cpSettings.enableSsl = connectionPoolConf.getBoolean("enableSsl");
+
+            if (connectionPoolConf.containsKey("trustCertChainFile"))
+                cpSettings.trustCertChainFile = connectionPoolConf.getString("trustCertChainFile");
+
+            if (connectionPoolConf.containsKey("minSize"))
+                cpSettings.minSize = connectionPoolConf.getInt("minSize");
+
+            if (connectionPoolConf.containsKey("maxSize"))
+                cpSettings.maxSize = connectionPoolConf.getInt("maxSize");
+
+            if (connectionPoolConf.containsKey("minSimultaneousUsagePerConnection"))
+                cpSettings.minSimultaneousUsagePerConnection = connectionPoolConf.getInt("minSimultaneousUsagePerConnection");
+
+            if (connectionPoolConf.containsKey("maxSimultaneousUsagePerConnection"))
+                cpSettings.maxSimultaneousUsagePerConnection = connectionPoolConf.getInt("maxSimultaneousUsagePerConnection");
+
+            if (connectionPoolConf.containsKey("maxInProcessPerConnection"))
+                cpSettings.maxInProcessPerConnection = connectionPoolConf.getInt("maxInProcessPerConnection");
+
+            if (connectionPoolConf.containsKey("minInProcessPerConnection"))
+                cpSettings.minInProcessPerConnection = connectionPoolConf.getInt("minInProcessPerConnection");
+
+            if (connectionPoolConf.containsKey("maxWaitForConnection"))
+                cpSettings.maxWaitForConnection = connectionPoolConf.getInt("maxWaitForConnection");
+
+            if (connectionPoolConf.containsKey("maxContentLength"))
+                cpSettings.maxContentLength = connectionPoolConf.getInt("maxContentLength");
+
+            if (connectionPoolConf.containsKey("reconnectInterval"))
+                cpSettings.reconnectInterval = connectionPoolConf.getInt("reconnectInterval");
+
+            if (connectionPoolConf.containsKey("reconnectInitialDelay"))
+                cpSettings.reconnectInitialDelay = connectionPoolConf.getInt("reconnectInitialDelay");
+
+            if (connectionPoolConf.containsKey("resultIterationBatchSize"))
+                cpSettings.resultIterationBatchSize = connectionPoolConf.getInt("resultIterationBatchSize");
+
+
+            settings.connectionPool = cpSettings;
+        }
+
+        return settings;
+    }
+
     static class ConnectionPoolSettings {
         /**
          * Determines if SSL should be enabled or not. If enabled on the server then it must be enabled on the client.
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Tokens.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Tokens.java
index 460ed12..4cacd11 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Tokens.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Tokens.java
@@ -38,6 +38,7 @@
     public static final String OPS_USE = "use";
     public static final String OPS_VERSION = "version";
     public static final String OPS_AUTHENTICATION = "authentication";
+    public static final String OPS_TRAVERSE = "traverse";
 
     public static final String ARGS_BATCH_SIZE = "batchSize";
     public static final String ARGS_BINDINGS = "bindings";
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteConnection.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteConnection.java
new file mode 100644
index 0000000..2bea54b
--- /dev/null
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/remote/DriverRemoteConnection.java
@@ -0,0 +1,228 @@
+/*
+ * 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.driver.remote;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.driver.Client;
+import org.apache.tinkerpop.gremlin.driver.Cluster;
+import org.apache.tinkerpop.gremlin.driver.Result;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;
+import org.apache.tinkerpop.gremlin.process.remote.RemoteConnection;
+import org.apache.tinkerpop.gremlin.process.remote.RemoteConnectionException;
+import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.structure.Element;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.util.Attachable;
+import org.apache.tinkerpop.gremlin.structure.util.GraphFactory;
+
+import java.util.Iterator;
+import java.util.Optional;
+import java.util.function.Supplier;
+
+/**
+ * A {@link RemoteConnection} implementation for Gremlin Server. Each {@code DriverServerConnection} is bound to one
+ * graph instance hosted in Gremlin Server.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class DriverRemoteConnection implements RemoteConnection {
+
+    public static final String GREMLIN_REMOTE_GRAPH_DRIVER_CLUSTERFILE = "gremlin.remoteGraph.driver.clusterFile";
+    public static final String GREMLIN_REMOTE_GRAPH_DRIVER_GRAPHNAME = "gremlin.remoteGraph.driver.graphName";
+    private static final String DEFAULT_GRAPH = "graph";
+    private static final boolean attachElements = Boolean.valueOf(System.getProperty("is.testing", "false"));
+
+    private final Client client;
+    private final boolean tryCloseCluster;
+    private final String connectionGraphName;
+    private transient Optional<Configuration> conf = Optional.empty();
+
+    public DriverRemoteConnection(final Configuration conf) {
+        if (conf.containsKey(GREMLIN_REMOTE_GRAPH_DRIVER_CLUSTERFILE) && conf.containsKey("clusterConfiguration"))
+            throw new IllegalStateException(String.format("A configuration should not contain both '%s' and 'clusterConfiguration'", GREMLIN_REMOTE_GRAPH_DRIVER_CLUSTERFILE));
+
+        connectionGraphName = conf.getString(GREMLIN_REMOTE_GRAPH_DRIVER_GRAPHNAME, DEFAULT_GRAPH);
+
+        try {
+            final Cluster cluster;
+            if (!conf.containsKey(GREMLIN_REMOTE_GRAPH_DRIVER_CLUSTERFILE) && !conf.containsKey("clusterConfiguration"))
+                cluster = Cluster.open();
+            else
+                cluster = conf.containsKey(GREMLIN_REMOTE_GRAPH_DRIVER_CLUSTERFILE) ?
+                        Cluster.open(conf.getString(GREMLIN_REMOTE_GRAPH_DRIVER_CLUSTERFILE)) : Cluster.open(conf.subset("clusterConfiguration"));
+
+            client = cluster.connect(Client.Settings.build().unrollTraversers(false).create()).alias(connectionGraphName);
+        } catch (Exception ex) {
+            throw new IllegalStateException(ex);
+        }
+
+        tryCloseCluster = true;
+        this.conf = Optional.of(conf);
+    }
+
+    private DriverRemoteConnection(final Cluster cluster, final boolean tryCloseCluster, final String connectionGraphName) {
+        client = cluster.connect(Client.Settings.build().unrollTraversers(false).create()).alias(connectionGraphName);
+        this.connectionGraphName = connectionGraphName;
+        this.tryCloseCluster = tryCloseCluster;
+    }
+
+    /**
+     * This constructor is largely just for unit testing purposes and should not typically be used externally.
+     */
+    DriverRemoteConnection(final Cluster cluster, final Configuration conf) {
+        connectionGraphName = conf.getString(GREMLIN_REMOTE_GRAPH_DRIVER_GRAPHNAME, DEFAULT_GRAPH);
+        client = cluster.connect(Client.Settings.build().unrollTraversers(false).create()).alias(connectionGraphName);
+        tryCloseCluster = false;
+        this.conf = Optional.of(conf);
+    }
+
+    /**
+     * Creates a {@link DriverRemoteConnection} from an existing {@link Cluster} instance. When {@link #close()} is
+     * called, the {@link Cluster} is left open for the caller to close. By default, this method will bind the
+     * {@link RemoteConnection} to a graph on the server named "graph".
+     */
+    public static DriverRemoteConnection using(final Cluster cluster) {
+        return using(cluster, "graph");
+    }
+
+    /**
+     * Creates a {@link DriverRemoteConnection} from an existing {@link Cluster} instance. When {@link #close()} is
+     * called, the {@link Cluster} is left open for the caller to close.
+     */
+    public static DriverRemoteConnection using(final Cluster cluster, final String connectionGraphName) {
+        return new DriverRemoteConnection(cluster, false, connectionGraphName);
+    }
+
+    /**
+     * Creates a {@link DriverRemoteConnection} using a new {@link Cluster} instance created from the supplied
+     * configuration file. When {@link #close()} is called, this new {@link Cluster} is also closed. By default,
+     * this method will bind the {@link RemoteConnection} to a graph on the server named "graph".
+     */
+    public static DriverRemoteConnection using(final String clusterConfFile) {
+        return using(clusterConfFile, "graph");
+    }
+
+    /**
+     * Creates a {@link DriverRemoteConnection} using a new {@link Cluster} instance created from the supplied
+     * configuration file. When {@link #close()} is called, this new {@link Cluster} is also closed.
+     */
+    public static DriverRemoteConnection using(final String clusterConfFile, final String connectionGraphName) {
+        try {
+            return new DriverRemoteConnection(Cluster.open(clusterConfFile), true, connectionGraphName);
+        } catch (Exception ex) {
+            throw new IllegalStateException(ex);
+        }
+    }
+
+    /**
+     * Creates a {@link DriverRemoteConnection} using an Apache {@code Configuration} object. This method of creation
+     * is typically used by {@link RemoteGraph} when being constructed via {@link GraphFactory}. The
+     * {@code Configuration} object should contain one of two required keys, either: {@code clusterConfigurationFile}
+     * or {@code clusterConfiguration}. The {@code clusterConfigurationFile} key is a pointer to a file location
+     * containing a configuration for a {@link Cluster}. The {@code clusterConfiguration} should contain the actual
+     * contents of a configuration that would be used by a {@link Cluster}.  This {@code configuration} may also
+     * contain the optional, but likely necessary, {@code connectionGraphName} which tells the
+     * {@code DriverServerConnection} which graph on the server to bind to.
+     */
+    public static DriverRemoteConnection using(final Configuration conf) {
+        if (conf.containsKey("clusterConfigurationFile") && conf.containsKey("clusterConfiguration"))
+            throw new IllegalStateException("A configuration should not contain both 'clusterConfigurationFile' and 'clusterConfiguration'");
+
+        if (!conf.containsKey("clusterConfigurationFile") && !conf.containsKey("clusterConfiguration"))
+            throw new IllegalStateException("A configuration must contain either 'clusterConfigurationFile' and 'clusterConfiguration'");
+
+        final String connectionGraphName = conf.getString("connectionGraphName", "graph");
+        if (conf.containsKey("clusterConfigurationFile"))
+            return using(conf.getString("clusterConfigurationFile"), connectionGraphName);
+        else {
+            return using(Cluster.open(conf.subset("clusterConfiguration")), connectionGraphName);
+        }
+    }
+
+    @Override
+    public <E> Iterator<Traverser.Admin<E>> submit(final Traversal<?, E> t) throws RemoteConnectionException {
+        try {
+            if (attachElements && !t.asAdmin().getStrategies().toList().stream().filter(s -> s instanceof VertexProgramStrategy).findAny().isPresent()) {
+                if (!conf.isPresent()) throw new IllegalStateException("Traverser can't be reattached for testing");
+                final Graph graph = ((Supplier<Graph>) conf.get().getProperty("hidden.for.testing.only")).get();
+                return new AttachingTraverserIterator<>(client.submit(t).iterator(), graph);
+            } else {
+                return new TraverserIterator<>(client.submit(t).iterator());
+            }
+        } catch (Exception ex) {
+            throw new RemoteConnectionException(ex);
+        }
+    }
+
+    @Override
+    public void close() throws Exception {
+        try {
+            client.close();
+        } catch (Exception ex) {
+            throw new RemoteConnectionException(ex);
+        } finally {
+            if (tryCloseCluster)
+                client.getCluster().close();
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "DriverServerConnection-" + client.getCluster() + " [graph=" + connectionGraphName + "]";
+    }
+
+    static class TraverserIterator<E> implements Iterator<Traverser.Admin<E>> {
+
+        private Iterator<Result> inner;
+
+        public TraverserIterator(final Iterator<Result> resultIterator) {
+            inner = resultIterator;
+        }
+
+        @Override
+        public boolean hasNext() {
+            return inner.hasNext();
+        }
+
+        @Override
+        public Traverser.Admin<E> next() {
+            return (Traverser.Admin<E>) inner.next().getObject();
+        }
+    }
+
+    static class AttachingTraverserIterator<E> extends TraverserIterator<E> {
+        private final Graph graph;
+
+        public AttachingTraverserIterator(final Iterator<Result> resultIterator, final Graph graph) {
+            super(resultIterator);
+            this.graph = graph;
+        }
+
+        @Override
+        public Traverser.Admin<E> next() {
+            final Traverser.Admin<E> traverser = super.next();
+            if (traverser.get() instanceof Attachable && !(traverser.get() instanceof Property))
+                traverser.set((E) ((Attachable<Element>) traverser.get()).attach(Attachable.Method.get(graph)));
+            return traverser;
+        }
+    }
+}
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGryoMessageSerializerV1d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGryoMessageSerializerV1d0.java
new file mode 100644
index 0000000..498536d
--- /dev/null
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGryoMessageSerializerV1d0.java
@@ -0,0 +1,311 @@
+/*
+ * 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.driver.ser;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufAllocator;
+import io.netty.util.ReferenceCountUtil;
+import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper;
+import org.apache.tinkerpop.shaded.kryo.ClassResolver;
+import org.apache.tinkerpop.shaded.kryo.Kryo;
+import org.apache.tinkerpop.shaded.kryo.Serializer;
+import org.apache.tinkerpop.shaded.kryo.io.Input;
+import org.apache.tinkerpop.shaded.kryo.io.Output;
+
+import java.io.ByteArrayOutputStream;
+import java.lang.reflect.Method;
+import java.nio.charset.Charset;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.UUID;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public abstract class AbstractGryoMessageSerializerV1d0 extends AbstractMessageSerializer {
+    private GryoMapper gryoMapper;
+    private ThreadLocal<Kryo> kryoThreadLocal = new ThreadLocal<Kryo>() {
+        @Override
+        protected Kryo initialValue() {
+            return gryoMapper.createMapper();
+        }
+    };
+
+    private static final Charset UTF8 = Charset.forName("UTF-8");
+
+    public static final String TOKEN_CUSTOM = "custom";
+    public static final String TOKEN_SERIALIZE_RESULT_TO_STRING = "serializeResultToString";
+    public static final String TOKEN_USE_MAPPER_FROM_GRAPH = "useMapperFromGraph";
+    public static final String TOKEN_BUFFER_SIZE = "bufferSize";
+    public static final String TOKEN_CLASS_RESOLVER_SUPPLIER = "classResolverSupplier";
+
+    protected boolean serializeToString = false;
+    private int bufferSize = 4096;
+
+    /**
+     * Creates an instance with a provided mapper configured {@link GryoMapper} instance. Note that this instance
+     * will be overridden by {@link #configure} is called.
+     */
+    public AbstractGryoMessageSerializerV1d0(final GryoMapper kryo) {
+        this.gryoMapper = kryo;
+    }
+
+    /**
+     * Called from the {@link #configure(Map, Map)} method right before the call to create the builder. Sub-classes
+     * can choose to alter the builder or completely replace it.
+     */
+    GryoMapper.Builder configureBuilder(final GryoMapper.Builder builder, final Map<String, Object> config,
+                                        final Map<String, Graph> graphs) {
+        return builder;
+    }
+
+    @Override
+    public final void configure(final Map<String, Object> config, final Map<String, Graph> graphs) {
+        final GryoMapper.Builder builder;
+        final Object graphToUseForMapper = config.get(TOKEN_USE_MAPPER_FROM_GRAPH);
+        if (graphToUseForMapper != null) {
+            if (null == graphs) throw new IllegalStateException(String.format(
+                    "No graphs have been provided to the serializer and therefore %s is not a valid configuration", TOKEN_USE_MAPPER_FROM_GRAPH));
+
+            final Graph g = graphs.get(graphToUseForMapper.toString());
+            if (null == g) throw new IllegalStateException(String.format(
+                    "There is no graph named [%s] configured to be used in the %s setting",
+                    graphToUseForMapper, TOKEN_USE_MAPPER_FROM_GRAPH));
+
+            // a graph was found so use the mapper it constructs.  this allows gryo to be auto-configured with any
+            // custom classes that the implementation allows for
+            builder = g.io(GryoIo.build()).mapper();
+        } else {
+            // no graph was supplied so just use the default - this will likely be the case when using a graph
+            // with no custom classes or a situation where the user needs complete control like when using two
+            // distinct implementations each with their own custom classes.
+            builder = GryoMapper.build();
+        }
+
+        addIoRegistries(config, builder);
+        addClassResolverSupplier(config, builder);
+        addCustomClasses(config, builder);
+
+        this.serializeToString = Boolean.parseBoolean(config.getOrDefault(TOKEN_SERIALIZE_RESULT_TO_STRING, "false").toString());
+        this.bufferSize = Integer.parseInt(config.getOrDefault(TOKEN_BUFFER_SIZE, "4096").toString());
+
+        this.gryoMapper = configureBuilder(builder, config, graphs).create();
+    }
+
+    private void addClassResolverSupplier(final Map<String, Object> config, final GryoMapper.Builder builder) {
+        final String className = (String) config.getOrDefault(TOKEN_CLASS_RESOLVER_SUPPLIER, null);
+        if (className != null && !className.isEmpty()) {
+            try {
+                final Class<?> clazz = Class.forName(className);
+                try {
+                    final Method instanceMethod = clazz.getDeclaredMethod("getInstance");
+                    builder.classResolver((Supplier<ClassResolver>) instanceMethod.invoke(null));
+                } catch (Exception methodex) {
+                    // tried getInstance() and that failed so try newInstance() no-arg constructor
+                    builder.classResolver((Supplier<ClassResolver>) clazz.newInstance());
+                }
+            } catch (Exception ex) {
+                throw new IllegalStateException(ex);
+            }
+        }
+    }
+
+    private void addCustomClasses(final Map<String, Object> config, final GryoMapper.Builder builder) {
+        final List<String> classNameList = getListStringFromConfig(TOKEN_CUSTOM, config);
+
+        classNameList.stream().forEach(serializerDefinition -> {
+            String className;
+            Optional<String> serializerName;
+            if (serializerDefinition.contains(";")) {
+                final String[] split = serializerDefinition.split(";");
+                if (split.length != 2)
+                    throw new IllegalStateException(String.format("Invalid format for serializer definition [%s] - expected <class>;<serializer-class>", serializerDefinition));
+
+                className = split[0];
+                serializerName = Optional.of(split[1]);
+            } else {
+                serializerName = Optional.empty();
+                className = serializerDefinition;
+            }
+
+            try {
+                final Class clazz = Class.forName(className);
+                final Serializer serializer;
+                if (serializerName.isPresent()) {
+                    final Class serializerClazz = Class.forName(serializerName.get());
+                    serializer = (Serializer) serializerClazz.newInstance();
+                    builder.addCustom(clazz, kryo -> serializer);
+                } else
+                    builder.addCustom(clazz);
+            } catch (Exception ex) {
+                throw new IllegalStateException("Class could not be found", ex);
+            }
+        });
+    }
+
+    @Override
+    public ResponseMessage deserializeResponse(final ByteBuf msg) throws SerializationException {
+        try {
+            final Kryo kryo = kryoThreadLocal.get();
+            final byte[] payload = new byte[msg.capacity()];
+            msg.readBytes(payload);
+            try (final Input input = new Input(payload)) {
+                final UUID requestId = kryo.readObjectOrNull(input, UUID.class);
+                final int status = input.readShort();
+                final String statusMsg = input.readString();
+                final Map<String,Object> statusAttributes = (Map<String,Object>) kryo.readClassAndObject(input);
+                final Object result = kryo.readClassAndObject(input);
+                final Map<String,Object> metaAttributes = (Map<String,Object>) kryo.readClassAndObject(input);
+
+                return ResponseMessage.build(requestId)
+                        .code(ResponseStatusCode.getFromValue(status))
+                        .statusMessage(statusMsg)
+                        .statusAttributes(statusAttributes)
+                        .result(result)
+                        .responseMetaData(metaAttributes)
+                        .create();
+            }
+        } catch (Exception ex) {
+            logger.warn("Response [{}] could not be deserialized by {}.", msg, GryoMessageSerializerV1d0.class.getName());
+            throw new SerializationException(ex);
+        }
+    }
+
+    @Override
+    public ByteBuf serializeResponseAsBinary(final ResponseMessage responseMessage, final ByteBufAllocator allocator) throws SerializationException {
+        ByteBuf encodedMessage = null;
+        try {
+            final Kryo kryo = kryoThreadLocal.get();
+            try (final ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
+                final Output output = new Output(baos, bufferSize);
+
+                // request id - if present
+                kryo.writeObjectOrNull(output, responseMessage.getRequestId() != null ? responseMessage.getRequestId() : null, UUID.class);
+
+                // status
+                output.writeShort(responseMessage.getStatus().getCode().getValue());
+                output.writeString(responseMessage.getStatus().getMessage());
+                kryo.writeClassAndObject(output, responseMessage.getStatus().getAttributes());
+
+                // result
+                kryo.writeClassAndObject(output, serializeToString ? serializeResultToString(responseMessage) : responseMessage.getResult().getData());
+                kryo.writeClassAndObject(output, responseMessage.getResult().getMeta());
+
+                final long size = output.total();
+                if (size > Integer.MAX_VALUE)
+                    throw new SerializationException(String.format("Message size of %s exceeds allocatable space", size));
+
+                output.flush();
+                encodedMessage = allocator.buffer((int) size);
+                encodedMessage.writeBytes(baos.toByteArray());
+            }
+
+            return encodedMessage;
+        } catch (Exception ex) {
+            if (encodedMessage != null) ReferenceCountUtil.release(encodedMessage);
+
+            logger.warn("Response [{}] could not be serialized by {}.", responseMessage.toString(), GryoMessageSerializerV1d0.class.getName());
+            throw new SerializationException(ex);
+        }
+    }
+
+    @Override
+    public RequestMessage deserializeRequest(final ByteBuf msg) throws SerializationException {
+        try {
+            final Kryo kryo = kryoThreadLocal.get();
+            final byte[] payload = new byte[msg.readableBytes()];
+            msg.readBytes(payload);
+            try (final Input input = new Input(payload)) {
+                // by the time the message gets here, the mime length/type have been already read, so this part just
+                // needs to process the payload.
+                final UUID id = kryo.readObject(input, UUID.class);
+                final String processor = input.readString();
+                final String op = input.readString();
+
+                final RequestMessage.Builder builder = RequestMessage.build(op)
+                        .overrideRequestId(id)
+                        .processor(processor);
+
+                final Map<String, Object> args = kryo.readObject(input, HashMap.class);
+                args.forEach(builder::addArg);
+                return builder.create();
+            }
+        } catch (Exception ex) {
+            logger.warn("Request [{}] could not be deserialized by {}.", msg, GryoMessageSerializerV1d0.class.getName());
+            throw new SerializationException(ex);
+        }
+    }
+
+    @Override
+    public ByteBuf serializeRequestAsBinary(final RequestMessage requestMessage, final ByteBufAllocator allocator) throws SerializationException {
+        ByteBuf encodedMessage = null;
+        try {
+            final Kryo kryo = kryoThreadLocal.get();
+            try (final ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
+                final Output output = new Output(baos, bufferSize);
+                final String mimeType = mimeTypesSupported()[0];
+                output.writeByte(mimeType.length());
+                output.write(mimeType.getBytes(UTF8));
+
+                kryo.writeObject(output, requestMessage.getRequestId());
+                output.writeString(requestMessage.getProcessor());
+                output.writeString(requestMessage.getOp());
+                kryo.writeObject(output, requestMessage.getArgs());
+
+                final long size = output.total();
+                if (size > Integer.MAX_VALUE)
+                    throw new SerializationException(String.format("Message size of %s exceeds allocatable space", size));
+
+                output.flush();
+                encodedMessage = allocator.buffer((int) size);
+                encodedMessage.writeBytes(baos.toByteArray());
+            }
+
+            return encodedMessage;
+        } catch (Exception ex) {
+            if (encodedMessage != null) ReferenceCountUtil.release(encodedMessage);
+
+            logger.warn("Request [{}] could not be serialized by {}.", requestMessage.toString(), GryoMessageSerializerV1d0.class.getName());
+            throw new SerializationException(ex);
+        }
+    }
+
+    private Object serializeResultToString(final ResponseMessage msg) {
+        if (msg.getResult() == null) return "null";
+        if (msg.getResult().getData() == null) return "null";
+
+        // the IteratorHandler should return a collection so keep it as such
+        final Object o = msg.getResult().getData();
+        if (o instanceof Collection) {
+            return ((Collection) o).stream().map(d -> null == d ? "null" : d.toString()).collect(Collectors.toList());
+        } else {
+            return o.toString();
+        }
+    }
+}
\ No newline at end of file
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoLiteMessageSerializerV1d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoLiteMessageSerializerV1d0.java
new file mode 100644
index 0000000..53825be
--- /dev/null
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoLiteMessageSerializerV1d0.java
@@ -0,0 +1,164 @@
+/*
+ * 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.driver.ser;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceEdge;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceFactory;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferencePath;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceProperty;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertexProperty;
+import org.apache.tinkerpop.shaded.kryo.Kryo;
+import org.apache.tinkerpop.shaded.kryo.Serializer;
+import org.apache.tinkerpop.shaded.kryo.io.Input;
+import org.apache.tinkerpop.shaded.kryo.io.Output;
+
+import java.util.Map;
+
+/**
+ * An alternative Gryo serializer that uses "referenced" graph elements during serialization. Referenced elements such
+ * as {@link ReferenceVertex} exclude the label and the properties associated with it and only return the identifier.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class GryoLiteMessageSerializerV1d0 extends AbstractGryoMessageSerializerV1d0 {
+
+    private static final String MIME_TYPE = SerTokens.MIME_GRYO_LITE_V1D0;
+    private static final String MIME_TYPE_STRINGD = SerTokens.MIME_GRYO_LITE_V1D0 + "-stringd";
+
+    /**
+     * Creates an instance with a standard {@link GryoMapper} instance. Note that this instance
+     * will be overridden by {@link #configure} is called.
+     */
+    public GryoLiteMessageSerializerV1d0() {
+        super(overrideWithLite(GryoMapper.build()).create());
+    }
+
+    /**
+     * Creates an instance with a standard {@link GryoMapper} instance. Note that the instance created by the supplied
+     * builder will be overridden by {@link #configure} if it is called.
+     */
+    public GryoLiteMessageSerializerV1d0(final GryoMapper.Builder kryo) {
+        super(overrideWithLite(kryo).create());
+    }
+
+    @Override
+    public String[] mimeTypesSupported() {
+        return new String[]{serializeToString ? MIME_TYPE_STRINGD : MIME_TYPE};
+    }
+
+    @Override
+    GryoMapper.Builder configureBuilder(final GryoMapper.Builder builder, final Map<String, Object> config,
+                                        final Map<String, Graph> graphs) {
+        return overrideWithLite(builder);
+    }
+
+    private static GryoMapper.Builder overrideWithLite(final GryoMapper.Builder builder) {
+        // override the core graph Elements so as to serialize with "reference" as opposed to "detached"
+        builder.addCustom(Edge.class, new EdgeLiteSerializer());
+        builder.addCustom(Vertex.class, new VertexLiteSerializer());
+        builder.addCustom(VertexProperty.class, new VertexPropertyLiteSerializer());
+        builder.addCustom(Property.class, new PropertyLiteSerializer());
+        builder.addCustom(Path.class, new PathLiteSerializer());
+        return builder;
+    }
+
+    /**
+     * Serializes any {@link Edge} implementation encountered to a {@link ReferenceEdge}.
+     */
+    final static class EdgeLiteSerializer extends Serializer<Edge> {
+        @Override
+        public void write(final Kryo kryo, final Output output, final Edge edge) {
+            kryo.writeClassAndObject(output, ReferenceFactory.detach(edge));
+        }
+
+        @Override
+        public Edge read(final Kryo kryo, final Input input, final Class<Edge> edgeClass) {
+            final Object o = kryo.readClassAndObject(input);
+            return (Edge) o;
+        }
+    }
+
+    /**
+     * Serializes any {@link Vertex} implementation encountered to an {@link ReferenceVertex}.
+     */
+    final static class VertexLiteSerializer extends Serializer<Vertex> {
+        @Override
+        public void write(final Kryo kryo, final Output output, final Vertex vertex) {
+            kryo.writeClassAndObject(output, ReferenceFactory.detach(vertex));
+        }
+
+        @Override
+        public Vertex read(final Kryo kryo, final Input input, final Class<Vertex> vertexClass) {
+            return (Vertex) kryo.readClassAndObject(input);
+        }
+    }
+
+    /**
+     * Serializes any {@link Property} implementation encountered to an {@link ReferenceProperty}.
+     */
+    final static class PropertyLiteSerializer extends Serializer<Property> {
+        @Override
+        public void write(final Kryo kryo, final Output output, final Property property) {
+            kryo.writeClassAndObject(output, property instanceof VertexProperty ? ReferenceFactory.detach((VertexProperty) property) : ReferenceFactory.detach(property));
+        }
+
+        @Override
+        public Property read(final Kryo kryo, final Input input, final Class<Property> propertyClass) {
+            return (Property) kryo.readClassAndObject(input);
+        }
+    }
+
+    /**
+     * Serializes any {@link VertexProperty} implementation encountered to an {@link ReferenceVertexProperty}.
+     */
+    final static class VertexPropertyLiteSerializer extends Serializer<VertexProperty> {
+        @Override
+        public void write(final Kryo kryo, final Output output, final VertexProperty vertexProperty) {
+            kryo.writeClassAndObject(output, ReferenceFactory.detach(vertexProperty));
+        }
+
+        @Override
+        public VertexProperty read(final Kryo kryo, final Input input, final Class<VertexProperty> vertexPropertyClass) {
+            return (VertexProperty) kryo.readClassAndObject(input);
+        }
+    }
+
+    /**
+     * Serializes any {@link Path} implementation encountered to an {@link ReferencePath}.
+     */
+    final static class PathLiteSerializer extends Serializer<Path> {
+        @Override
+        public void write(final Kryo kryo, final Output output, final Path path) {
+            kryo.writeClassAndObject(output, ReferenceFactory.detach(path));
+        }
+
+        @Override
+        public Path read(final Kryo kryo, final Input input, final Class<Path> pathClass) {
+            return (Path) kryo.readClassAndObject(input);
+        }
+    }
+}
\ No newline at end of file
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java
index ce46dfc..445b6cc 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java
@@ -18,301 +18,51 @@
  */
 package org.apache.tinkerpop.gremlin.driver.ser;
 
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.ByteBufAllocator;
-import io.netty.util.ReferenceCountUtil;
-import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
-import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
-import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper;
-import org.apache.tinkerpop.shaded.kryo.ClassResolver;
-import org.apache.tinkerpop.shaded.kryo.Kryo;
-import org.apache.tinkerpop.shaded.kryo.Serializer;
-import org.apache.tinkerpop.shaded.kryo.io.Input;
-import org.apache.tinkerpop.shaded.kryo.io.Output;
-
-import java.io.ByteArrayOutputStream;
-import java.lang.reflect.Method;
-import java.nio.charset.Charset;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.UUID;
-import java.util.function.Supplier;
-import java.util.stream.Collectors;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
 
 /**
+ * The standard Gryo serializer that uses "detached" graph elements during serialization. Detached elements such as
+ * {@link DetachedVertex} include the label and the properties associated with it which could be more costly for
+ * network serialization purposes.
+ *
+ * @see GryoLiteMessageSerializerV1d0
+ *
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public final class GryoMessageSerializerV1d0 extends AbstractMessageSerializer {
-    private GryoMapper gryoMapper;
-    private ThreadLocal<Kryo> kryoThreadLocal = new ThreadLocal<Kryo>() {
-        @Override
-        protected Kryo initialValue() {
-            return gryoMapper.createMapper();
-        }
-    };
-
-    private static final Charset UTF8 = Charset.forName("UTF-8");
+public final class GryoMessageSerializerV1d0 extends AbstractGryoMessageSerializerV1d0 {
 
     private static final String MIME_TYPE = SerTokens.MIME_GRYO_V1D0;
     private static final String MIME_TYPE_STRINGD = SerTokens.MIME_GRYO_V1D0 + "-stringd";
 
-    public static final String TOKEN_CUSTOM = "custom";
-    public static final String TOKEN_SERIALIZE_RESULT_TO_STRING = "serializeResultToString";
-    public static final String TOKEN_USE_MAPPER_FROM_GRAPH = "useMapperFromGraph";
-    public static final String TOKEN_BUFFER_SIZE = "bufferSize";
-    public static final String TOKEN_CLASS_RESOLVER_SUPPLIER = "classResolverSupplier";
-
-    private boolean serializeToString = false;
-    private int bufferSize = 4096;
-
     /**
-     * Creates an instance with a standard {@link GryoMapper} instance. Note that this instance
-     * will be overriden by {@link #configure} is called.
+     * Creates an instance with a standard {@link GryoMapper} instance.
      */
     public GryoMessageSerializerV1d0() {
-        gryoMapper = GryoMapper.build().create();
+        super(GryoMapper.build().create());
     }
 
     /**
-     * Creates an instance with a provided mapper configured {@link GryoMapper} instance. Note that this instance
-     * will be overridden by {@link #configure} is called.
+     * Creates an instance with a standard {@link GryoMapper} instance. Note that the instance created by the supplied
+     * builder will be overridden by {@link #configure} if it is called.
      */
+    public GryoMessageSerializerV1d0(final GryoMapper.Builder kryo) {
+        super(kryo.create());
+    }
+
+    /**
+     * Creates an instance with a standard {@link GryoMapper} instance. Note that the instance supplied
+     * will be overridden by {@link #configure} if it is called.
+     *
+     * @deprecated As of release 3.2.1, replaced by {@link GryoMessageSerializerV1d0#GryoMessageSerializerV1d0(GryoMapper.Builder)}.
+     */
+    @Deprecated
     public GryoMessageSerializerV1d0(final GryoMapper kryo) {
-        this.gryoMapper = kryo;
-    }
-
-    @Override
-    public void configure(final Map<String, Object> config, final Map<String, Graph> graphs) {
-        final GryoMapper.Builder builder;
-        final Object graphToUseForMapper = config.get(TOKEN_USE_MAPPER_FROM_GRAPH);
-        if (graphToUseForMapper != null) {
-            if (null == graphs) throw new IllegalStateException(String.format(
-                    "No graphs have been provided to the serializer and therefore %s is not a valid configuration", TOKEN_USE_MAPPER_FROM_GRAPH));
-
-            final Graph g = graphs.get(graphToUseForMapper.toString());
-            if (null == g) throw new IllegalStateException(String.format(
-                    "There is no graph named [%s] configured to be used in the %s setting",
-                    graphToUseForMapper, TOKEN_USE_MAPPER_FROM_GRAPH));
-
-            // a graph was found so use the mapper it constructs.  this allows gryo to be auto-configured with any
-            // custom classes that the implementation allows for
-            builder = g.io(GryoIo.build()).mapper();
-        } else {
-            // no graph was supplied so just use the default - this will likely be the case when using a graph
-            // with no custom classes or a situation where the user needs complete control like when using two
-            // distinct implementations each with their own custom classes.
-            builder = GryoMapper.build();
-        }
-
-        addIoRegistries(config, builder);
-        addClassResolverSupplier(config, builder);
-        addCustomClasses(config, builder);
-
-        this.serializeToString = Boolean.parseBoolean(config.getOrDefault(TOKEN_SERIALIZE_RESULT_TO_STRING, "false").toString());
-        this.bufferSize = Integer.parseInt(config.getOrDefault(TOKEN_BUFFER_SIZE, "4096").toString());
-
-        this.gryoMapper = builder.create();
-    }
-
-    private void addClassResolverSupplier(final Map<String, Object> config, final GryoMapper.Builder builder) {
-        final String className = (String) config.getOrDefault(TOKEN_CLASS_RESOLVER_SUPPLIER, null);
-        if (className != null && !className.isEmpty()) {
-            try {
-                final Class<?> clazz = Class.forName(className);
-                try {
-                    final Method instanceMethod = clazz.getDeclaredMethod("getInstance");
-                    builder.classResolver((Supplier<ClassResolver>) instanceMethod.invoke(null));
-                } catch (Exception methodex) {
-                    // tried getInstance() and that failed so try newInstance() no-arg constructor
-                    builder.classResolver((Supplier<ClassResolver>) clazz.newInstance());
-                }
-            } catch (Exception ex) {
-                throw new IllegalStateException(ex);
-            }
-        }
-    }
-
-    private void addCustomClasses(final Map<String, Object> config, final GryoMapper.Builder builder) {
-        final List<String> classNameList = getListStringFromConfig(TOKEN_CUSTOM, config);
-
-        classNameList.stream().forEach(serializerDefinition -> {
-            String className;
-            Optional<String> serializerName;
-            if (serializerDefinition.contains(";")) {
-                final String[] split = serializerDefinition.split(";");
-                if (split.length != 2)
-                    throw new IllegalStateException(String.format("Invalid format for serializer definition [%s] - expected <class>;<serializer-class>", serializerDefinition));
-
-                className = split[0];
-                serializerName = Optional.of(split[1]);
-            } else {
-                serializerName = Optional.empty();
-                className = serializerDefinition;
-            }
-
-            try {
-                final Class clazz = Class.forName(className);
-                final Serializer serializer;
-                if (serializerName.isPresent()) {
-                    final Class serializerClazz = Class.forName(serializerName.get());
-                    serializer = (Serializer) serializerClazz.newInstance();
-                    builder.addCustom(clazz, kryo -> serializer);
-                } else
-                    builder.addCustom(clazz);
-            } catch (Exception ex) {
-                throw new IllegalStateException("Class could not be found", ex);
-            }
-        });
+        super(kryo);
     }
 
     @Override
     public String[] mimeTypesSupported() {
-        return new String[]{this.serializeToString ? MIME_TYPE_STRINGD : MIME_TYPE};
-    }
-
-    @Override
-    public ResponseMessage deserializeResponse(final ByteBuf msg) throws SerializationException {
-        try {
-            final Kryo kryo = kryoThreadLocal.get();
-            final byte[] payload = new byte[msg.capacity()];
-            msg.readBytes(payload);
-            try (final Input input = new Input(payload)) {
-                final UUID requestId = kryo.readObjectOrNull(input, UUID.class);
-                final int status = input.readShort();
-                final String statusMsg = input.readString();
-                final Map<String,Object> statusAttributes = (Map<String,Object>) kryo.readClassAndObject(input);
-                final Object result = kryo.readClassAndObject(input);
-                final Map<String,Object> metaAttributes = (Map<String,Object>) kryo.readClassAndObject(input);
-
-                return ResponseMessage.build(requestId)
-                        .code(ResponseStatusCode.getFromValue(status))
-                        .statusMessage(statusMsg)
-                        .statusAttributes(statusAttributes)
-                        .result(result)
-                        .responseMetaData(metaAttributes)
-                        .create();
-            }
-        } catch (Exception ex) {
-            logger.warn("Response [{}] could not be deserialized by {}.", msg, GryoMessageSerializerV1d0.class.getName());
-            throw new SerializationException(ex);
-        }
-    }
-
-    @Override
-    public ByteBuf serializeResponseAsBinary(final ResponseMessage responseMessage, final ByteBufAllocator allocator) throws SerializationException {
-        ByteBuf encodedMessage = null;
-        try {
-            final Kryo kryo = kryoThreadLocal.get();
-            try (final ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
-                final Output output = new Output(baos, bufferSize);
-
-                // request id - if present
-                kryo.writeObjectOrNull(output, responseMessage.getRequestId() != null ? responseMessage.getRequestId() : null, UUID.class);
-
-                // status
-                output.writeShort(responseMessage.getStatus().getCode().getValue());
-                output.writeString(responseMessage.getStatus().getMessage());
-                kryo.writeClassAndObject(output, responseMessage.getStatus().getAttributes());
-
-                // result
-                kryo.writeClassAndObject(output, serializeToString ? serializeResultToString(responseMessage) : responseMessage.getResult().getData());
-                kryo.writeClassAndObject(output, responseMessage.getResult().getMeta());
-
-                final long size = output.total();
-                if (size > Integer.MAX_VALUE)
-                    throw new SerializationException(String.format("Message size of %s exceeds allocatable space", size));
-
-                output.flush();
-                encodedMessage = allocator.buffer((int) size);
-                encodedMessage.writeBytes(baos.toByteArray());
-            }
-
-            return encodedMessage;
-        } catch (Exception ex) {
-            if (encodedMessage != null) ReferenceCountUtil.release(encodedMessage);
-
-            logger.warn("Response [{}] could not be serialized by {}.", responseMessage.toString(), GryoMessageSerializerV1d0.class.getName());
-            throw new SerializationException(ex);
-        }
-    }
-
-    @Override
-    public RequestMessage deserializeRequest(final ByteBuf msg) throws SerializationException {
-        try {
-            final Kryo kryo = kryoThreadLocal.get();
-            final byte[] payload = new byte[msg.readableBytes()];
-            msg.readBytes(payload);
-            try (final Input input = new Input(payload)) {
-                // by the time the message gets here, the mime length/type have been already read, so this part just
-                // needs to process the payload.
-                final UUID id = kryo.readObject(input, UUID.class);
-                final String processor = input.readString();
-                final String op = input.readString();
-
-                final RequestMessage.Builder builder = RequestMessage.build(op)
-                        .overrideRequestId(id)
-                        .processor(processor);
-
-                final Map<String, Object> args = kryo.readObject(input, HashMap.class);
-                args.forEach(builder::addArg);
-                return builder.create();
-            }
-        } catch (Exception ex) {
-            logger.warn("Request [{}] could not be deserialized by {}.", msg, GryoMessageSerializerV1d0.class.getName());
-            throw new SerializationException(ex);
-        }
-    }
-
-    @Override
-    public ByteBuf serializeRequestAsBinary(final RequestMessage requestMessage, final ByteBufAllocator allocator) throws SerializationException {
-        ByteBuf encodedMessage = null;
-        try {
-            final Kryo kryo = kryoThreadLocal.get();
-            try (final ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
-                final Output output = new Output(baos, bufferSize);
-                final String mimeType = serializeToString ? MIME_TYPE_STRINGD : MIME_TYPE;
-                output.writeByte(mimeType.length());
-                output.write(mimeType.getBytes(UTF8));
-
-                kryo.writeObject(output, requestMessage.getRequestId());
-                output.writeString(requestMessage.getProcessor());
-                output.writeString(requestMessage.getOp());
-                kryo.writeObject(output, requestMessage.getArgs());
-
-                final long size = output.total();
-                if (size > Integer.MAX_VALUE)
-                    throw new SerializationException(String.format("Message size of %s exceeds allocatable space", size));
-
-                output.flush();
-                encodedMessage = allocator.buffer((int) size);
-                encodedMessage.writeBytes(baos.toByteArray());
-            }
-
-            return encodedMessage;
-        } catch (Exception ex) {
-            if (encodedMessage != null) ReferenceCountUtil.release(encodedMessage);
-
-            logger.warn("Request [{}] could not be serialized by {}.", requestMessage.toString(), GryoMessageSerializerV1d0.class.getName());
-            throw new SerializationException(ex);
-        }
-    }
-
-    private Object serializeResultToString(final ResponseMessage msg) {
-        if (msg.getResult() == null) return "null";
-        if (msg.getResult().getData() == null) return "null";
-
-        // the IteratorHandler should return a collection so keep it as such
-        final Object o = msg.getResult().getData();
-        if (o instanceof Collection) {
-            return ((Collection) o).stream().map(d -> null == d ? "null" : d.toString()).collect(Collectors.toList());
-        } else {
-            return o.toString();
-        }
+        return new String[]{serializeToString ? MIME_TYPE_STRINGD : MIME_TYPE};
     }
 }
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java
index 779355a..c857116 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/SerTokens.java
@@ -39,4 +39,5 @@
     public static final String MIME_JSON = "application/json";
     public static final String MIME_GRAPHSON_V1D0 = "application/vnd.gremlin-v1.0+json";
     public static final String MIME_GRYO_V1D0 = "application/vnd.gremlin-v1.0+gryo";
+    public static final String MIME_GRYO_LITE_V1D0 = "application/vnd.gremlin-v1.0+gryo-lite";
 }
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/Serializers.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/Serializers.java
index 11a180e..45ae301 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/Serializers.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/Serializers.java
@@ -28,7 +28,8 @@
 public enum Serializers {
     GRAPHSON(SerTokens.MIME_JSON),
     GRAPHSON_V1D0(SerTokens.MIME_GRAPHSON_V1D0),
-    GRYO_V1D0(SerTokens.MIME_GRYO_V1D0);
+    GRYO_V1D0(SerTokens.MIME_GRYO_V1D0),
+    GRYO_LITE_V1D0(SerTokens.MIME_GRYO_LITE_V1D0);
 
     private String value;
 
@@ -62,6 +63,8 @@
                 return new GraphSONMessageSerializerGremlinV1d0();
             case SerTokens.MIME_GRYO_V1D0:
                 return new GryoMessageSerializerV1d0();
+            case SerTokens.MIME_GRYO_LITE_V1D0:
+                return new GryoLiteMessageSerializerV1d0();
             default:
                 throw new RuntimeException("Could not create a simple MessageSerializer instance of " + value);
         }
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultQueueTest.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultQueueTest.java
index 91b9ee3..59be4ea 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultQueueTest.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultQueueTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.driver;
 
-import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.apache.commons.lang.exception.ExceptionUtils;
 import org.junit.Test;
 
 import java.util.ArrayList;
@@ -143,7 +143,6 @@
 
     @Test
     public void shouldAwaitFailTheFutureOnMarkError() throws Exception {
-        // not so sure this is good behavior (i.e. flushing whatever has arrived up to the error)
         final CompletableFuture<List<Result>> future = resultQueue.await(4);
         resultQueue.add(new Result("test1"));
         resultQueue.add(new Result("test2"));
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/SettingsTest.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/SettingsTest.java
new file mode 100644
index 0000000..a6a2298
--- /dev/null
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/SettingsTest.java
@@ -0,0 +1,88 @@
+/*
+ * 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.driver;
+
+import org.apache.commons.configuration.BaseConfiguration;
+import org.apache.commons.configuration.Configuration;
+import org.junit.Test;
+
+import java.util.Arrays;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class SettingsTest {
+
+    @Test
+    public void shouldCreateFromConfiguration() {
+        final Configuration conf = new BaseConfiguration();
+        conf.setProperty("port", 8000);
+        conf.setProperty("nioPoolSize", 16);
+        conf.setProperty("workerPoolSize", 32);
+        conf.setProperty("username", "user1");
+        conf.setProperty("password", "password1");
+        conf.setProperty("jaasEntry", "JaasIt");
+        conf.setProperty("protocol", "protocol0");
+        conf.setProperty("hosts", Arrays.asList("255.0.0.1", "255.0.0.2", "255.0.0.3"));
+        conf.setProperty("serializer.className", "my.serializers.MySerializer");
+        conf.setProperty("serializer.config.any", "thing");
+        conf.setProperty("connectionPool.enableSsl", true);
+        conf.setProperty("connectionPool.trustCertChainFile", "pem");
+        conf.setProperty("connectionPool.minSize", 100);
+        conf.setProperty("connectionPool.maxSize", 200);
+        conf.setProperty("connectionPool.minSimultaneousUsagePerConnection", 300);
+        conf.setProperty("connectionPool.maxSimultaneousUsagePerConnection", 400);
+        conf.setProperty("connectionPool.maxInProcessPerConnection", 500);
+        conf.setProperty("connectionPool.minInProcessPerConnection", 600);
+        conf.setProperty("connectionPool.maxWaitForConnection", 700);
+        conf.setProperty("connectionPool.maxContentLength", 800);
+        conf.setProperty("connectionPool.reconnectInterval", 900);
+        conf.setProperty("connectionPool.reconnectInitialDelay", 1000);
+        conf.setProperty("connectionPool.resultIterationBatchSize", 1100);
+        conf.setProperty("connectionPool.channelizer", "channelizer0");
+
+        final Settings settings = Settings.from(conf);
+
+        assertEquals(8000, settings.port);
+        assertEquals(16, settings.nioPoolSize);
+        assertEquals(32, settings.workerPoolSize);
+        assertEquals("user1", settings.username);
+        assertEquals("password1", settings.password);
+        assertEquals("JaasIt", settings.jaasEntry);
+        assertEquals("protocol0", settings.protocol);
+        assertEquals("my.serializers.MySerializer", settings.serializer.className);
+        assertEquals("thing", settings.serializer.config.get("any"));
+        assertEquals(true, settings.connectionPool.enableSsl);
+        assertEquals("pem", settings.connectionPool.trustCertChainFile);
+        assertEquals(100, settings.connectionPool.minSize);
+        assertEquals(200, settings.connectionPool.maxSize);
+        assertEquals(300, settings.connectionPool.minSimultaneousUsagePerConnection);
+        assertEquals(400, settings.connectionPool.maxSimultaneousUsagePerConnection);
+        assertEquals(500, settings.connectionPool.maxInProcessPerConnection);
+        assertEquals(600, settings.connectionPool.minInProcessPerConnection);
+        assertEquals(700, settings.connectionPool.maxWaitForConnection);
+        assertEquals(800, settings.connectionPool.maxContentLength);
+        assertEquals(900, settings.connectionPool.reconnectInterval);
+        assertEquals(1000, settings.connectionPool.reconnectInitialDelay);
+        assertEquals(1100, settings.connectionPool.resultIterationBatchSize);
+        assertEquals("channelizer0", settings.connectionPool.channelizer);
+    }
+}
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoBaseMessageSerializerV1d0Test.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoBaseMessageSerializerV1d0Test.java
new file mode 100644
index 0000000..99bd564
--- /dev/null
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoBaseMessageSerializerV1d0Test.java
@@ -0,0 +1,520 @@
+/*
+ * 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.driver.ser;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufAllocator;
+import io.netty.buffer.UnpooledByteBufAllocator;
+import org.apache.commons.lang.exception.ExceptionUtils;
+import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
+import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.io.AbstractIoRegistry;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoClassResolver;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+import org.apache.tinkerpop.shaded.kryo.ClassResolver;
+import org.apache.tinkerpop.shaded.kryo.Kryo;
+import org.apache.tinkerpop.shaded.kryo.KryoException;
+import org.apache.tinkerpop.shaded.kryo.Registration;
+import org.apache.tinkerpop.shaded.kryo.Serializer;
+import org.apache.tinkerpop.shaded.kryo.io.Input;
+import org.apache.tinkerpop.shaded.kryo.io.Output;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.awt.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import java.util.function.Supplier;
+
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+@RunWith(Parameterized.class)
+public class GryoBaseMessageSerializerV1d0Test {
+    @Parameterized.Parameters(name = "expect({0})")
+    public static Iterable<Object[]> data() {
+        final GryoMessageSerializerV1d0 v1d0Text = new GryoMessageSerializerV1d0();
+        v1d0Text.configure(config, null);
+
+        final GryoMessageSerializerV1d0 v1d0LiteText = new GryoMessageSerializerV1d0();
+        v1d0LiteText.configure(config, null);
+
+        return Arrays.asList(new Object[][]{
+                {"V1d0", new GryoMessageSerializerV1d0(), v1d0Text},
+                {"V1d0Lite", new GryoLiteMessageSerializerV1d0(), v1d0LiteText }});
+    }
+
+    @Parameterized.Parameter(value = 0)
+    public String name;
+
+    @Parameterized.Parameter(value = 1)
+    public MessageSerializer binarySerializer;
+
+    @Parameterized.Parameter(value = 2)
+    public MessageSerializer textSerializer;
+
+    private static final Map<String, Object> config = new HashMap<String, Object>() {{
+        put(GryoMessageSerializerV1d0.TOKEN_SERIALIZE_RESULT_TO_STRING, true);
+    }};
+
+    private UUID requestId = UUID.fromString("6457272A-4018-4538-B9AE-08DD5DDC0AA1");
+    private ResponseMessage.Builder responseMessageBuilder = ResponseMessage.build(requestId);
+    private static ByteBufAllocator allocator = UnpooledByteBufAllocator.DEFAULT;
+
+    @Test
+    public void shouldConfigureIoRegistry() throws Exception {
+        final MessageSerializer serializer = new GryoMessageSerializerV1d0();
+        final Map<String, Object> config = new HashMap<String, Object>() {{
+            put(GryoMessageSerializerV1d0.TOKEN_IO_REGISTRIES, Arrays.asList(ColorIoRegistry.class.getName()));
+        }};
+
+        serializer.configure(config, null);
+
+        final ResponseMessage toSerialize = ResponseMessage.build(requestId).result(Color.RED).create();
+        final ByteBuf bb = serializer.serializeResponseAsBinary(toSerialize, allocator);
+        final ResponseMessage deserialized = serializer.deserializeResponse(bb);
+
+        assertCommon(deserialized);
+        assertEquals(Color.RED, deserialized.getResult().getData());
+    }
+
+    @Test
+    public void shouldConfigureCustomClassResolver() {
+        final MessageSerializer serializer = new GryoMessageSerializerV1d0();
+        final Map<String, Object> config = new HashMap<String, Object>() {{
+            put(GryoMessageSerializerV1d0.TOKEN_CLASS_RESOLVER_SUPPLIER, ErrorOnlyClassResolverSupplier.class.getName());
+        }};
+
+        serializer.configure(config, null);
+
+        try {
+            serializer.serializeResponseAsBinary(responseMessageBuilder.create(), allocator);
+            fail("Should fail because the ClassResolver used here always generates an error");
+        } catch (Exception ex) {
+            assertEquals("java.lang.RuntimeException: Registration is not allowed with this ClassResolver - it is not a good implementation", ex.getMessage());
+        }
+    }
+
+    @Test
+    public void shouldConfigureCustomClassResolverFromInstance() {
+        final MessageSerializer serializer = new GryoMessageSerializerV1d0();
+        final Map<String, Object> config = new HashMap<String, Object>() {{
+            put(GryoMessageSerializerV1d0.TOKEN_CLASS_RESOLVER_SUPPLIER, ErrorOnlyClassResolverSupplierAsInstance.class.getName());
+        }};
+
+        serializer.configure(config, null);
+
+        try {
+            serializer.serializeResponseAsBinary(responseMessageBuilder.create(), allocator);
+            fail("Should fail because the ClassResolver used here always generates an error");
+        } catch (Exception ex) {
+            assertEquals("java.lang.RuntimeException: Registration is not allowed with this ClassResolver - it is not a good implementation", ex.getMessage());
+        }
+    }
+
+    @Test
+    public void shouldSerializeIterable() throws Exception {
+        final ArrayList<Integer> list = new ArrayList<>();
+        list.add(1);
+        list.add(100);
+
+        final ResponseMessage response = convertBinary(list);
+        assertCommon(response);
+
+        final java.util.List<Integer> deserializedFunList = (java.util.List<Integer>) response.getResult().getData();
+        assertEquals(2, deserializedFunList.size());
+        assertEquals(new Integer(1), deserializedFunList.get(0));
+        assertEquals(new Integer(100), deserializedFunList.get(1));
+    }
+
+    @Test
+    public void shouldSerializeIterableToString() throws Exception {
+        final ArrayList<Integer> list = new ArrayList<>();
+        list.add(1);
+        list.add(100);
+
+        final ResponseMessage response = convertText(list);
+        assertCommon(response);
+
+        final java.util.List deserializedFunList = (java.util.List) response.getResult().getData();
+        assertEquals(2, deserializedFunList.size());
+        assertEquals("1", deserializedFunList.get(0));
+        assertEquals("100", deserializedFunList.get(1));
+    }
+
+    @Test
+    public void shouldSerializeIterableToStringWithNull() throws Exception {
+        final ArrayList<Integer> list = new ArrayList<>();
+        list.add(1);
+        list.add(null);
+        list.add(100);
+
+        final ResponseMessage response = convertText(list);
+        assertCommon(response);
+
+        final java.util.List deserializedFunList = (java.util.List) response.getResult().getData();
+        assertEquals(3, deserializedFunList.size());
+        assertEquals("1", deserializedFunList.get(0).toString());
+        assertEquals("null", deserializedFunList.get(1).toString());
+        assertEquals("100", deserializedFunList.get(2).toString());
+    }
+
+    @Test
+    public void shouldSerializeIterableWithNull() throws Exception {
+        final ArrayList<Integer> list = new ArrayList<>();
+        list.add(1);
+        list.add(null);
+        list.add(100);
+
+        final ResponseMessage response = convertBinary(list);
+        assertCommon(response);
+
+        final java.util.List<Integer> deserializedFunList = (java.util.List<Integer>) response.getResult().getData();
+        assertEquals(3, deserializedFunList.size());
+        assertEquals(new Integer(1), deserializedFunList.get(0));
+        assertNull(deserializedFunList.get(1));
+        assertEquals(new Integer(100), deserializedFunList.get(2));
+    }
+
+    @Test
+    public void shouldSerializeMap() throws Exception {
+        final Map<String, Object> map = new HashMap<>();
+        final Map<String, String> innerMap = new HashMap<>();
+        innerMap.put("a", "b");
+
+        map.put("x", 1);
+        map.put("y", "some");
+        map.put("z", innerMap);
+
+        final ResponseMessage response = convertBinary(map);
+        assertCommon(response);
+
+        final Map<String, Object> deserializedMap = (Map<String, Object>) response.getResult().getData();
+        assertEquals(3, deserializedMap.size());
+        assertEquals(1, deserializedMap.get("x"));
+        assertEquals("some", deserializedMap.get("y"));
+
+        final Map<String, String> deserializedInnerMap = (Map<String, String>) deserializedMap.get("z");
+        assertEquals(1, deserializedInnerMap.size());
+        assertEquals("b", deserializedInnerMap.get("a"));
+    }
+
+    @Test
+    public void shouldSerializeMapEntry() throws Exception {
+        final Graph graph = TinkerGraph.open();
+        final Vertex v1 = graph.addVertex();
+        final Date d = new Date();
+
+        final Map<Object, Object> map = new HashMap<>();
+        map.put("x", 1);
+        map.put(v1, 100);
+        map.put(d, "test");
+
+        final ResponseMessage response = convertBinary(IteratorUtils.asList(map.entrySet()));
+        assertCommon(response);
+
+        final java.util.List<Map.Entry<Object, Object>> deserializedEntries = (java.util.List<Map.Entry<Object, Object>>) response.getResult().getData();
+        assertEquals(3, deserializedEntries.size());
+        deserializedEntries.forEach(e -> {
+            if (e.getKey().equals("x"))
+                assertEquals(1, e.getValue());
+            else if (e.getKey().equals(v1))
+                assertEquals(100, e.getValue());
+            else if (e.getKey().equals(d))
+                assertEquals("test", e.getValue());
+            else
+                fail("Map entries contains a key that is not part of what was serialized");
+        });
+    }
+
+    @Test
+    public void shouldSerializeTree() throws Exception {
+        final Graph g = TinkerFactory.createModern();
+        final Tree t = g.traversal().V().out().out().tree().by("name").next();
+
+        final ResponseMessage response = convertBinary(t);
+        assertCommon(response);
+
+        final Tree deserialized = (Tree) response.getResult().getData();
+        assertEquals(t, deserialized);
+
+        assertThat(deserialized.containsKey("marko"), is(true));
+        assertEquals(1, deserialized.size());
+
+        final Tree markoChildren = (Tree) deserialized.get("marko");
+        assertThat(markoChildren.containsKey("josh"), is(true));
+        assertEquals(1, markoChildren.size());
+
+        final Tree joshChildren = (Tree) markoChildren.get("josh");
+        assertThat(joshChildren.containsKey("lop"), is(true));
+        assertThat(joshChildren.containsKey("ripple"), is(true));
+        assertEquals(2, joshChildren.size());
+    }
+
+    @Test
+    public void shouldSerializeFullResponseMessage() throws Exception {
+        final UUID id = UUID.randomUUID();
+
+        final Map<String, Object> metaData = new HashMap<>();
+        metaData.put("test", "this");
+        metaData.put("one", 1);
+
+        final Map<String, Object> attributes = new HashMap<>();
+        attributes.put("test", "that");
+        attributes.put("two", 2);
+
+        final ResponseMessage response = ResponseMessage.build(id)
+                .responseMetaData(metaData)
+                .code(ResponseStatusCode.SUCCESS)
+                .result("some-result")
+                .statusAttributes(attributes)
+                .statusMessage("worked")
+                .create();
+
+        final ByteBuf bb = binarySerializer.serializeResponseAsBinary(response, allocator);
+        final ResponseMessage deserialized = binarySerializer.deserializeResponse(bb);
+
+        assertEquals(id, deserialized.getRequestId());
+        assertEquals("this", deserialized.getResult().getMeta().get("test"));
+        assertEquals(1, deserialized.getResult().getMeta().get("one"));
+        assertEquals("some-result", deserialized.getResult().getData());
+        assertEquals("that", deserialized.getStatus().getAttributes().get("test"));
+        assertEquals(2, deserialized.getStatus().getAttributes().get("two"));
+        assertEquals(ResponseStatusCode.SUCCESS.getValue(), deserialized.getStatus().getCode().getValue());
+        assertEquals("worked", deserialized.getStatus().getMessage());
+    }
+
+    @Test
+    public void shouldHaveTooSmallBufferToSerializeResponseMessage() throws Exception {
+        final UUID id = UUID.randomUUID();
+
+        final Map<String, Object> metaData = new HashMap<>();
+        metaData.put("test", "this");
+        metaData.put("one", 1);
+
+        final Map<String, Object> attributes = new HashMap<>();
+        attributes.put("test", "that");
+        attributes.put("two", 2);
+
+        final ResponseMessage response = ResponseMessage.build(id)
+                .responseMetaData(metaData)
+                .code(ResponseStatusCode.SUCCESS)
+                .result("some-result")
+                .statusAttributes(attributes)
+                .statusMessage("worked")
+                .create();
+
+        final MessageSerializer binarySerializerWithSmallBuffer = new GryoMessageSerializerV1d0();
+        final Map<String, Object> configWithSmallBuffer = new HashMap<String, Object>() {{
+            put("bufferSize", 1);
+        }};
+        binarySerializerWithSmallBuffer.configure(configWithSmallBuffer, null);
+
+        try {
+            binarySerializerWithSmallBuffer.serializeResponseAsBinary(response, allocator);
+            fail("Should have a buffer size that is too small");
+        } catch (Exception ex) {
+            final Throwable root = ExceptionUtils.getRootCause(ex);
+            assertThat(root, instanceOf(KryoException.class));
+        }
+    }
+
+    @Test
+    public void shouldReturnAllBytesInResponse() throws Exception {
+        final UUID id = UUID.randomUUID();
+
+        final Map<String, Object> metaData = new HashMap<>();
+        metaData.put("test", "this");
+        metaData.put("one", 1);
+
+        final Map<String, Object> attributes = new HashMap<>();
+        attributes.put("test", "that");
+        attributes.put("two", 2);
+
+        final ResponseMessage response = ResponseMessage.build(id)
+                .responseMetaData(metaData)
+                .code(ResponseStatusCode.SUCCESS)
+                .result("some-result")
+                .statusAttributes(attributes)
+                .statusMessage("worked")
+                .create();
+
+        final MessageSerializer binarySerializerWithSmallBuffer = new GryoMessageSerializerV1d0();
+        final Map<String, Object> configWithSmallBuffer = new HashMap<String, Object>() {{
+            // set to bufferSize < total message size but still greater than any individual object requires
+            put("bufferSize", 50);
+        }};
+        binarySerializerWithSmallBuffer.configure(configWithSmallBuffer, null);
+
+        ByteBuf buf = binarySerializerWithSmallBuffer.serializeResponseAsBinary(response, allocator);
+        assertTrue(buf.isReadable());
+        assertEquals(82, buf.readableBytes());
+    }
+
+    @Test
+    public void shouldSerializeFullRequestMessage() throws Exception {
+        final UUID id = UUID.randomUUID();
+
+        final RequestMessage request = RequestMessage.build("try")
+                .overrideRequestId(id)
+                .processor("pro")
+                .addArg("test", "this")
+                .create();
+        final ByteBuf bb = binarySerializer.serializeRequestAsBinary(request, allocator);
+        final int mimeLen = bb.readByte();
+        bb.readBytes(new byte[mimeLen]);
+        final RequestMessage deserialized = binarySerializer.deserializeRequest(bb);
+
+        assertEquals(id, deserialized.getRequestId());
+        assertEquals("pro", deserialized.getProcessor());
+        assertEquals("try", deserialized.getOp());
+        assertEquals("this", deserialized.getArgs().get("test"));
+    }
+
+    @Test
+    public void shouldHaveTooSmallBufferToSerializeRequestMessage() throws Exception {
+        final UUID id = UUID.randomUUID();
+
+        final RequestMessage request = RequestMessage.build("try")
+                .overrideRequestId(id)
+                .processor("pro")
+                .addArg("test", "this")
+                .create();
+
+        final MessageSerializer binarySerializerWithSmallBuffer = new GryoMessageSerializerV1d0();
+        final Map<String, Object> configWithSmallBuffer = new HashMap<String, Object>() {{
+            put("bufferSize", 1);
+        }};
+        binarySerializerWithSmallBuffer.configure(configWithSmallBuffer, null);
+
+        try {
+            binarySerializerWithSmallBuffer.serializeRequestAsBinary(request, allocator);
+            fail("Should have a buffer size that is too small");
+        } catch (Exception ex) {
+            final Throwable root = ExceptionUtils.getRootCause(ex);
+            assertThat(root, instanceOf(KryoException.class));
+        }
+    }
+
+    @Test
+    public void shouldReturnAllBytesInRequest() throws Exception {
+        final UUID id = UUID.randomUUID();
+
+        final RequestMessage request = RequestMessage.build("try")
+                .overrideRequestId(id)
+                .processor("pro")
+                .addArg("test", "this")
+                .create();
+
+        final MessageSerializer binarySerializerWithSmallBuffer = new GryoMessageSerializerV1d0();
+        final Map<String, Object> configWithSmallBuffer = new HashMap<String, Object>() {{
+            // set to bufferSize < total message size but still greater than any individual object requires
+            put("bufferSize", 50);
+        }};
+        binarySerializerWithSmallBuffer.configure(configWithSmallBuffer, null);
+
+        ByteBuf buf = binarySerializerWithSmallBuffer.serializeRequestAsBinary(request, allocator);
+        assertTrue(buf.isReadable());
+        assertEquals(71, buf.readableBytes());
+    }
+
+    private void assertCommon(final ResponseMessage response) {
+        assertEquals(requestId, response.getRequestId());
+        assertEquals(ResponseStatusCode.SUCCESS, response.getStatus().getCode());
+    }
+
+    private ResponseMessage convertBinary(final Object toSerialize) throws SerializationException {
+        final ByteBuf bb = binarySerializer.serializeResponseAsBinary(responseMessageBuilder.result(toSerialize).create(), allocator);
+        return binarySerializer.deserializeResponse(bb);
+    }
+
+    private ResponseMessage convertText(final Object toSerialize) throws SerializationException {
+        final ByteBuf bb = textSerializer.serializeResponseAsBinary(responseMessageBuilder.result(toSerialize).create(), allocator);
+        return textSerializer.deserializeResponse(bb);
+    }
+
+    public static class ErrorOnlyClassResolverSupplierAsInstance implements Supplier<ClassResolver> {
+
+        private static final ErrorOnlyClassResolverSupplierAsInstance instance = new ErrorOnlyClassResolverSupplierAsInstance();
+
+        private ErrorOnlyClassResolverSupplierAsInstance() {}
+
+        public static ErrorOnlyClassResolverSupplierAsInstance getInstance() {
+            return instance;
+        }
+
+        @Override
+        public ClassResolver get() {
+            return new ErrorOnlyClassResolver();
+        }
+    }
+
+    public static class ErrorOnlyClassResolverSupplier implements Supplier<ClassResolver> {
+        @Override
+        public ClassResolver get() {
+            return new ErrorOnlyClassResolver();
+        }
+    }
+
+    public static class ErrorOnlyClassResolver extends GryoClassResolver {
+        @Override
+        public Registration getRegistration(Class clazz) {
+            throw new RuntimeException("Registration is not allowed with this ClassResolver - it is not a good implementation");
+        }
+    }
+
+    public static class ColorIoRegistry extends AbstractIoRegistry {
+        public ColorIoRegistry() {
+            register(GryoIo.class, Color.class, new ColorSerializer());
+        }
+    }
+
+    public static class ColorSerializer extends Serializer<Color> {
+        @Override
+        public void write(final Kryo kryo, final Output output, final Color color) {
+            output.write(color.equals(Color.RED) ? 1 : 0);
+        }
+
+        @Override
+        public Color read(final Kryo kryo, final Input input, final Class<Color> aClass) {
+            return input.read() == 1 ? Color.RED : Color.BLACK;
+        }
+    }
+}
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoLiteMessageSerializerV1d0Test.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoLiteMessageSerializerV1d0Test.java
new file mode 100644
index 0000000..2a23d02
--- /dev/null
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoLiteMessageSerializerV1d0Test.java
@@ -0,0 +1,150 @@
+/*
+ * 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.driver.ser;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufAllocator;
+import io.netty.buffer.UnpooledByteBufAllocator;
+import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceEdge;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Serializer tests that cover non-lossy serialization/deserialization methods.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class GryoLiteMessageSerializerV1d0Test {
+    private static final Map<String, Object> config = new HashMap<String, Object>() {{
+        put(AbstractGryoMessageSerializerV1d0.TOKEN_SERIALIZE_RESULT_TO_STRING, true);
+    }};
+
+    private UUID requestId = UUID.fromString("6457272A-4018-4538-B9AE-08DD5DDC0AA1");
+    private ResponseMessage.Builder responseMessageBuilder = ResponseMessage.build(requestId);
+    private static ByteBufAllocator allocator = UnpooledByteBufAllocator.DEFAULT;
+
+    public MessageSerializer binarySerializer = new GryoLiteMessageSerializerV1d0();
+
+    @Test
+    public void shouldSerializeEdge() throws Exception {
+        final Graph g = TinkerGraph.open();
+        final Vertex v1 = g.addVertex();
+        final Vertex v2 = g.addVertex();
+        final Edge e = v1.addEdge("test", v2);
+        e.property("abc", 123);
+
+        final Iterable<Edge> iterable = IteratorUtils.list(g.edges());
+
+        final ResponseMessage response = convertBinary(iterable);
+        assertCommon(response);
+
+        final List<ReferenceEdge> edgeList = (List<ReferenceEdge>) response.getResult().getData();
+        assertEquals(1, edgeList.size());
+
+        final ReferenceEdge deserializedEdge = edgeList.get(0);
+        assertEquals(e.id(), deserializedEdge.id());
+        assertEquals("test", deserializedEdge.label());
+
+        assertEquals(0, IteratorUtils.count(deserializedEdge.properties()));
+        assertEquals(v1.id(), deserializedEdge.outVertex().id());
+        assertEquals("", deserializedEdge.outVertex().label());
+        assertEquals(v2.id(), deserializedEdge.inVertex().id());
+        assertEquals("", deserializedEdge.inVertex().label());
+    }
+
+    @Test
+    public void shouldSerializeVertexWithEmbeddedMap() throws Exception {
+        final Graph g = TinkerGraph.open();
+        final Vertex v = g.addVertex();
+        final Map<String, Object> map = new HashMap<>();
+        map.put("x", 500);
+        map.put("y", "some");
+
+        final ArrayList<Object> friends = new ArrayList<>();
+        friends.add("x");
+        friends.add(5);
+        friends.add(map);
+
+        v.property(VertexProperty.Cardinality.single, "friends", friends);
+
+        final List list = IteratorUtils.list(g.vertices());
+
+        final ResponseMessage response = convertBinary(list);
+        assertCommon(response);
+
+        final List<ReferenceVertex> vertexList = (List<ReferenceVertex>) response.getResult().getData();
+        assertEquals(1, vertexList.size());
+
+        final ReferenceVertex deserializedVertex = vertexList.get(0);
+        assertEquals(0L, deserializedVertex.id());
+        assertEquals("", deserializedVertex.label());
+
+        assertEquals(0, IteratorUtils.count(deserializedVertex.properties()));
+    }
+
+    @Test
+    public void shouldSerializeToMapWithElementForKey() throws Exception {
+        final TinkerGraph graph = TinkerFactory.createClassic();
+        final GraphTraversalSource g = graph.traversal();
+        final Map<Vertex, Integer> map = new HashMap<>();
+        map.put(g.V().has("name", "marko").next(), 1000);
+
+        final ResponseMessage response = convertBinary(map);
+        assertCommon(response);
+
+        final Map<Vertex, Integer> deserializedMap = (Map<Vertex, Integer>) response.getResult().getData();
+        assertEquals(1, deserializedMap.size());
+
+        final Vertex deserializedMarko = deserializedMap.keySet().iterator().next();
+        assertEquals(0, IteratorUtils.count(deserializedMarko.properties()));
+        assertEquals(1, deserializedMarko.id());
+        assertEquals("", deserializedMarko.label());
+
+        assertEquals(new Integer(1000), deserializedMap.values().iterator().next());
+    }
+
+    private void assertCommon(final ResponseMessage response) {
+        assertEquals(requestId, response.getRequestId());
+        assertEquals(ResponseStatusCode.SUCCESS, response.getStatus().getCode());
+    }
+
+    private ResponseMessage convertBinary(final Object toSerialize) throws SerializationException {
+        final ByteBuf bb = binarySerializer.serializeResponseAsBinary(responseMessageBuilder.result(toSerialize).create(), allocator);
+        return binarySerializer.deserializeResponse(bb);
+    }
+}
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0Test.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0Test.java
index bb731a9..36e17c0 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0Test.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0Test.java
@@ -18,54 +18,31 @@
  */
 package org.apache.tinkerpop.gremlin.driver.ser;
 
-import org.apache.commons.lang.exception.ExceptionUtils;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufAllocator;
+import io.netty.buffer.UnpooledByteBufAllocator;
 import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
-import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
 import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
 import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.apache.tinkerpop.gremlin.structure.io.AbstractIoRegistry;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoClassResolver;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.ByteBufAllocator;
-import io.netty.buffer.UnpooledByteBufAllocator;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
-import org.apache.tinkerpop.shaded.kryo.ClassResolver;
-import org.apache.tinkerpop.shaded.kryo.Kryo;
-import org.apache.tinkerpop.shaded.kryo.KryoException;
-import org.apache.tinkerpop.shaded.kryo.Registration;
-import org.apache.tinkerpop.shaded.kryo.Serializer;
-import org.apache.tinkerpop.shaded.kryo.io.Input;
-import org.apache.tinkerpop.shaded.kryo.io.Output;
 import org.junit.Test;
 
-import java.awt.*;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
-import java.util.function.Supplier;
 
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 
 /**
  * Serializer tests that cover non-lossy serialization/deserialization methods.
@@ -83,178 +60,6 @@
 
     public MessageSerializer binarySerializer = new GryoMessageSerializerV1d0();
 
-    public MessageSerializer textSerializer = new GryoMessageSerializerV1d0();
-
-    public GryoMessageSerializerV1d0Test() {
-        textSerializer.configure(config, null);
-    }
-
-    @Test
-    public void shouldConfigureIoRegistry() throws Exception {
-        final MessageSerializer serializer = new GryoMessageSerializerV1d0();
-        final Map<String, Object> config = new HashMap<String, Object>() {{
-            put(GryoMessageSerializerV1d0.TOKEN_IO_REGISTRIES, Arrays.asList(ColorIoRegistry.class.getName()));
-        }};
-
-        serializer.configure(config, null);
-
-        final ResponseMessage toSerialize = ResponseMessage.build(requestId).result(Color.RED).create();
-        final ByteBuf bb = serializer.serializeResponseAsBinary(toSerialize, allocator);
-        final ResponseMessage deserialized = serializer.deserializeResponse(bb);
-
-        assertCommon(deserialized);
-        assertEquals(Color.RED, deserialized.getResult().getData());
-    }
-
-    @Test
-    public void shouldConfigureCustomClassResolver() {
-        final MessageSerializer serializer = new GryoMessageSerializerV1d0();
-        final Map<String, Object> config = new HashMap<String, Object>() {{
-            put(GryoMessageSerializerV1d0.TOKEN_CLASS_RESOLVER_SUPPLIER, ErrorOnlyClassResolverSupplier.class.getName());
-        }};
-
-        serializer.configure(config, null);
-
-        try {
-            serializer.serializeResponseAsBinary(responseMessageBuilder.create(), allocator);
-            fail("Should fail because the ClassResolver used here always generates an error");
-        } catch (Exception ex) {
-            assertEquals("java.lang.RuntimeException: Registration is not allowed with this ClassResolver - it is not a good implementation", ex.getMessage());
-        }
-    }
-
-    @Test
-    public void shouldConfigureCustomClassResolverFromInstance() {
-        final MessageSerializer serializer = new GryoMessageSerializerV1d0();
-        final Map<String, Object> config = new HashMap<String, Object>() {{
-            put(GryoMessageSerializerV1d0.TOKEN_CLASS_RESOLVER_SUPPLIER, ErrorOnlyClassResolverSupplierAsInstance.class.getName());
-        }};
-
-        serializer.configure(config, null);
-
-        try {
-            serializer.serializeResponseAsBinary(responseMessageBuilder.create(), allocator);
-            fail("Should fail because the ClassResolver used here always generates an error");
-        } catch (Exception ex) {
-            assertEquals("java.lang.RuntimeException: Registration is not allowed with this ClassResolver - it is not a good implementation", ex.getMessage());
-        }
-    }
-
-    @Test
-    public void shouldSerializeIterable() throws Exception {
-        final ArrayList<Integer> list = new ArrayList<>();
-        list.add(1);
-        list.add(100);
-
-        final ResponseMessage response = convertBinary(list);
-        assertCommon(response);
-
-        final List<Integer> deserializedFunList = (List<Integer>) response.getResult().getData();
-        assertEquals(2, deserializedFunList.size());
-        assertEquals(new Integer(1), deserializedFunList.get(0));
-        assertEquals(new Integer(100), deserializedFunList.get(1));
-    }
-
-    @Test
-    public void shouldSerializeIterableToString() throws Exception {
-        final ArrayList<Integer> list = new ArrayList<>();
-        list.add(1);
-        list.add(100);
-
-        final ResponseMessage response = convertText(list);
-        assertCommon(response);
-
-        final List deserializedFunList = (List) response.getResult().getData();
-        assertEquals(2, deserializedFunList.size());
-        assertEquals("1", deserializedFunList.get(0));
-        assertEquals("100", deserializedFunList.get(1));
-    }
-
-    @Test
-    public void shouldSerializeIterableToStringWithNull() throws Exception {
-        final ArrayList<Integer> list = new ArrayList<>();
-        list.add(1);
-        list.add(null);
-        list.add(100);
-
-        final ResponseMessage response = convertText(list);
-        assertCommon(response);
-
-        final List deserializedFunList = (List) response.getResult().getData();
-        assertEquals(3, deserializedFunList.size());
-        assertEquals("1", deserializedFunList.get(0).toString());
-        assertEquals("null", deserializedFunList.get(1).toString());
-        assertEquals("100", deserializedFunList.get(2).toString());
-    }
-
-    @Test
-    public void shouldSerializeIterableWithNull() throws Exception {
-        final ArrayList<Integer> list = new ArrayList<>();
-        list.add(1);
-        list.add(null);
-        list.add(100);
-
-        final ResponseMessage response = convertBinary(list);
-        assertCommon(response);
-
-        final List<Integer> deserializedFunList = (List<Integer>) response.getResult().getData();
-        assertEquals(3, deserializedFunList.size());
-        assertEquals(new Integer(1), deserializedFunList.get(0));
-        assertNull(deserializedFunList.get(1));
-        assertEquals(new Integer(100), deserializedFunList.get(2));
-    }
-
-    @Test
-    public void shouldSerializeMap() throws Exception {
-        final Map<String, Object> map = new HashMap<>();
-        final Map<String, String> innerMap = new HashMap<>();
-        innerMap.put("a", "b");
-
-        map.put("x", 1);
-        map.put("y", "some");
-        map.put("z", innerMap);
-
-        final ResponseMessage response = convertBinary(map);
-        assertCommon(response);
-
-        final Map<String, Object> deserializedMap = (Map<String, Object>) response.getResult().getData();
-        assertEquals(3, deserializedMap.size());
-        assertEquals(1, deserializedMap.get("x"));
-        assertEquals("some", deserializedMap.get("y"));
-
-        final Map<String, String> deserializedInnerMap = (Map<String, String>) deserializedMap.get("z");
-        assertEquals(1, deserializedInnerMap.size());
-        assertEquals("b", deserializedInnerMap.get("a"));
-    }
-
-    @Test
-    public void shouldSerializeMapEntry() throws Exception {
-        final Graph graph = TinkerGraph.open();
-        final Vertex v1 = graph.addVertex();
-        final Date d = new Date();
-
-        final Map<Object, Object> map = new HashMap<>();
-        map.put("x", 1);
-        map.put(v1, 100);
-        map.put(d, "test");
-
-        final ResponseMessage response = convertBinary(IteratorUtils.asList(map.entrySet()));
-        assertCommon(response);
-
-        final List<Map.Entry<Object, Object>> deserializedEntries = (List<Map.Entry<Object, Object>>) response.getResult().getData();
-        assertEquals(3, deserializedEntries.size());
-        deserializedEntries.forEach(e -> {
-            if (e.getKey().equals("x"))
-                assertEquals(1, e.getValue());
-            else if (e.getKey().equals(v1))
-                assertEquals(100, e.getValue());
-            else if (e.getKey().equals(d))
-                assertEquals("test", e.getValue());
-            else
-                fail("Map entries contains a key that is not part of what was serialized");
-        });
-    }
-
     @Test
     public void shouldSerializeEdge() throws Exception {
         final Graph g = TinkerGraph.open();
@@ -284,30 +89,6 @@
     }
 
     @Test
-    public void shouldSerializeTree() throws Exception {
-        final Graph g = TinkerFactory.createModern();
-        final Tree t = g.traversal().V().out().out().tree().by("name").next();
-
-        final ResponseMessage response = convertBinary(t);
-        assertCommon(response);
-
-        final Tree deserialized = (Tree) response.getResult().getData();
-        assertEquals(t, deserialized);
-
-        assertThat(deserialized.containsKey("marko"), is(true));
-        assertEquals(1, deserialized.size());
-
-        final Tree markoChildren = (Tree) deserialized.get("marko");
-        assertThat(markoChildren.containsKey("josh"), is(true));
-        assertEquals(1, markoChildren.size());
-
-        final Tree joshChildren = (Tree) markoChildren.get("josh");
-        assertThat(joshChildren.containsKey("lop"), is(true));
-        assertThat(joshChildren.containsKey("ripple"), is(true));
-        assertEquals(2, joshChildren.size());
-    }
-
-    @Test
     public void shouldSerializeVertexWithEmbeddedMap() throws Exception {
         final Graph g = TinkerGraph.open();
         final Vertex v = g.addVertex();
@@ -370,173 +151,6 @@
         assertEquals(new Integer(1000), deserializedMap.values().iterator().next());
     }
 
-    @Test
-    public void shouldSerializeFullResponseMessage() throws Exception {
-        final UUID id = UUID.randomUUID();
-
-        final Map<String, Object> metaData = new HashMap<>();
-        metaData.put("test", "this");
-        metaData.put("one", 1);
-
-        final Map<String, Object> attributes = new HashMap<>();
-        attributes.put("test", "that");
-        attributes.put("two", 2);
-
-        final ResponseMessage response = ResponseMessage.build(id)
-                .responseMetaData(metaData)
-                .code(ResponseStatusCode.SUCCESS)
-                .result("some-result")
-                .statusAttributes(attributes)
-                .statusMessage("worked")
-                .create();
-
-        final ByteBuf bb = binarySerializer.serializeResponseAsBinary(response, allocator);
-        final ResponseMessage deserialized = binarySerializer.deserializeResponse(bb);
-
-        assertEquals(id, deserialized.getRequestId());
-        assertEquals("this", deserialized.getResult().getMeta().get("test"));
-        assertEquals(1, deserialized.getResult().getMeta().get("one"));
-        assertEquals("some-result", deserialized.getResult().getData());
-        assertEquals("that", deserialized.getStatus().getAttributes().get("test"));
-        assertEquals(2, deserialized.getStatus().getAttributes().get("two"));
-        assertEquals(ResponseStatusCode.SUCCESS.getValue(), deserialized.getStatus().getCode().getValue());
-        assertEquals("worked", deserialized.getStatus().getMessage());
-    }
-
-    @Test
-    public void shouldHaveTooSmallBufferToSerializeResponseMessage() throws Exception {
-        final UUID id = UUID.randomUUID();
-
-        final Map<String, Object> metaData = new HashMap<>();
-        metaData.put("test", "this");
-        metaData.put("one", 1);
-
-        final Map<String, Object> attributes = new HashMap<>();
-        attributes.put("test", "that");
-        attributes.put("two", 2);
-
-        final ResponseMessage response = ResponseMessage.build(id)
-                .responseMetaData(metaData)
-                .code(ResponseStatusCode.SUCCESS)
-                .result("some-result")
-                .statusAttributes(attributes)
-                .statusMessage("worked")
-                .create();
-
-        final MessageSerializer binarySerializerWithSmallBuffer = new GryoMessageSerializerV1d0();
-        final Map<String, Object> configWithSmallBuffer = new HashMap<String, Object>() {{
-            put("bufferSize", 1);
-        }};
-        binarySerializerWithSmallBuffer.configure(configWithSmallBuffer, null);
-
-        try {
-            binarySerializerWithSmallBuffer.serializeResponseAsBinary(response, allocator);
-            fail("Should have a buffer size that is too small");
-        } catch (Exception ex) {
-            final Throwable root = ExceptionUtils.getRootCause(ex);
-            assertThat(root, instanceOf(KryoException.class));
-        }
-    }
-
-    @Test
-    public void shouldReturnAllBytesInResponse() throws Exception {
-        final UUID id = UUID.randomUUID();
-
-        final Map<String, Object> metaData = new HashMap<>();
-        metaData.put("test", "this");
-        metaData.put("one", 1);
-
-        final Map<String, Object> attributes = new HashMap<>();
-        attributes.put("test", "that");
-        attributes.put("two", 2);
-
-        final ResponseMessage response = ResponseMessage.build(id)
-                .responseMetaData(metaData)
-                .code(ResponseStatusCode.SUCCESS)
-                .result("some-result")
-                .statusAttributes(attributes)
-                .statusMessage("worked")
-                .create();
-
-        final MessageSerializer binarySerializerWithSmallBuffer = new GryoMessageSerializerV1d0();
-        final Map<String, Object> configWithSmallBuffer = new HashMap<String, Object>() {{
-            // set to bufferSize < total message size but still greater than any individual object requires
-            put("bufferSize", 50);
-        }};
-        binarySerializerWithSmallBuffer.configure(configWithSmallBuffer, null);
-
-        ByteBuf buf = binarySerializerWithSmallBuffer.serializeResponseAsBinary(response, allocator);
-        assertTrue(buf.isReadable());
-        assertEquals(82, buf.readableBytes());
-    }
-
-    @Test
-    public void shouldSerializeFullRequestMessage() throws Exception {
-        final UUID id = UUID.randomUUID();
-
-        final RequestMessage request = RequestMessage.build("try")
-                .overrideRequestId(id)
-                .processor("pro")
-                .addArg("test", "this")
-                .create();
-        final ByteBuf bb = binarySerializer.serializeRequestAsBinary(request, allocator);
-        final int mimeLen = bb.readByte();
-        bb.readBytes(new byte[mimeLen]);
-        final RequestMessage deserialized = binarySerializer.deserializeRequest(bb);
-
-        assertEquals(id, deserialized.getRequestId());
-        assertEquals("pro", deserialized.getProcessor());
-        assertEquals("try", deserialized.getOp());
-        assertEquals("this", deserialized.getArgs().get("test"));
-    }
-
-    @Test
-    public void shouldHaveTooSmallBufferToSerializeRequestMessage() throws Exception {
-        final UUID id = UUID.randomUUID();
-
-        final RequestMessage request = RequestMessage.build("try")
-                .overrideRequestId(id)
-                .processor("pro")
-                .addArg("test", "this")
-                .create();
-
-        final MessageSerializer binarySerializerWithSmallBuffer = new GryoMessageSerializerV1d0();
-        final Map<String, Object> configWithSmallBuffer = new HashMap<String, Object>() {{
-            put("bufferSize", 1);
-        }};
-        binarySerializerWithSmallBuffer.configure(configWithSmallBuffer, null);
-
-        try {
-            binarySerializerWithSmallBuffer.serializeRequestAsBinary(request, allocator);
-            fail("Should have a buffer size that is too small");
-        } catch (Exception ex) {
-            final Throwable root = ExceptionUtils.getRootCause(ex);
-            assertThat(root, instanceOf(KryoException.class));
-        }
-    }
-
-    @Test
-    public void shouldReturnAllBytesInRequest() throws Exception {
-        final UUID id = UUID.randomUUID();
-
-        final RequestMessage request = RequestMessage.build("try")
-                .overrideRequestId(id)
-                .processor("pro")
-                .addArg("test", "this")
-                .create();
-
-        final MessageSerializer binarySerializerWithSmallBuffer = new GryoMessageSerializerV1d0();
-        final Map<String, Object> configWithSmallBuffer = new HashMap<String, Object>() {{
-            // set to bufferSize < total message size but still greater than any individual object requires
-            put("bufferSize", 50);
-        }};
-        binarySerializerWithSmallBuffer.configure(configWithSmallBuffer, null);
-
-        ByteBuf buf = binarySerializerWithSmallBuffer.serializeRequestAsBinary(request, allocator);
-        assertTrue(buf.isReadable());
-        assertEquals(71, buf.readableBytes());
-    }
-
     private void assertCommon(final ResponseMessage response) {
         assertEquals(requestId, response.getRequestId());
         assertEquals(ResponseStatusCode.SUCCESS, response.getStatus().getCode());
@@ -546,57 +160,4 @@
         final ByteBuf bb = binarySerializer.serializeResponseAsBinary(responseMessageBuilder.result(toSerialize).create(), allocator);
         return binarySerializer.deserializeResponse(bb);
     }
-
-    private ResponseMessage convertText(final Object toSerialize) throws SerializationException {
-        final ByteBuf bb = textSerializer.serializeResponseAsBinary(responseMessageBuilder.result(toSerialize).create(), allocator);
-        return textSerializer.deserializeResponse(bb);
-    }
-
-    public static class ErrorOnlyClassResolverSupplierAsInstance implements Supplier<ClassResolver> {
-
-        private static final ErrorOnlyClassResolverSupplierAsInstance instance = new ErrorOnlyClassResolverSupplierAsInstance();
-
-        private ErrorOnlyClassResolverSupplierAsInstance() {}
-
-        public static ErrorOnlyClassResolverSupplierAsInstance getInstance() {
-            return instance;
-        }
-
-        @Override
-        public ClassResolver get() {
-            return new ErrorOnlyClassResolver();
-        }
-    }
-
-    public static class ErrorOnlyClassResolverSupplier implements Supplier<ClassResolver> {
-        @Override
-        public ClassResolver get() {
-            return new ErrorOnlyClassResolver();
-        }
-    }
-
-    public static class ErrorOnlyClassResolver extends GryoClassResolver {
-        @Override
-        public Registration getRegistration(Class clazz) {
-            throw new RuntimeException("Registration is not allowed with this ClassResolver - it is not a good implementation");
-        }
-    }
-
-    public static class ColorIoRegistry extends AbstractIoRegistry {
-        public ColorIoRegistry() {
-            register(GryoIo.class, Color.class, new ColorSerializer());
-        }
-    }
-
-    public static class ColorSerializer extends Serializer<Color> {
-        @Override
-        public void write(final Kryo kryo, final Output output, final Color color) {
-            output.write(color.equals(Color.RED) ? 1 : 0);
-        }
-
-        @Override
-        public Color read(final Kryo kryo, final Input input, final Class<Color> aClass) {
-            return input.read() == 1 ? Color.RED : Color.BLACK;
-        }
-    }
 }
diff --git a/gremlin-groovy-test/pom.xml b/gremlin-groovy-test/pom.xml
index 852d153..44cd54b 100644
--- a/gremlin-groovy-test/pom.xml
+++ b/gremlin-groovy-test/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.4-SNAPSHOT</version>
+        <version>3.2.2-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-groovy-test</artifactId>
     <name>Apache TinkerPop :: Gremlin Groovy Test</name>
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoaderPerformanceTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoaderPerformanceTest.groovy
index c32d1d2..809db18 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoaderPerformanceTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoaderPerformanceTest.groovy
@@ -34,11 +34,13 @@
 
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.2.1, replaced by gremlin-benchmark.
  */
 @AxisRange(min = 0d, max = 1d)
 @BenchmarkMethodChart(filePrefix = "sugar")
 @BenchmarkHistoryChart(labelWith = LabelType.CUSTOM_KEY, maxRuns = 20, filePrefix = "hx-sugar")
 @FixMethodOrder(MethodSorters.JVM)
+@Deprecated
 class SugarLoaderPerformanceTest extends AbstractGremlinTest {
     @Rule
     public TestRule benchmarkRun = new BenchmarkRule()
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoaderTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoaderTest.groovy
index 5fec65a..dc973c4 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoaderTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoaderTest.groovy
@@ -22,12 +22,18 @@
 import org.apache.tinkerpop.gremlin.LoadGraphWith
 import org.apache.tinkerpop.gremlin.groovy.util.SugarTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.structure.*
+import org.apache.tinkerpop.gremlin.structure.Edge
+import org.apache.tinkerpop.gremlin.structure.Graph
+import org.apache.tinkerpop.gremlin.structure.Property
+import org.apache.tinkerpop.gremlin.structure.Vertex
+import org.apache.tinkerpop.gremlin.structure.VertexProperty
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory
 import org.junit.Test
 
 import static org.apache.tinkerpop.gremlin.process.traversal.P.eq
-import static org.junit.Assert.*
+import static org.junit.Assert.assertEquals
+import static org.junit.Assert.assertTrue
+import static org.junit.Assert.fail
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy
index 49046a6..fe13e1d 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy
@@ -18,8 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.branch
 
-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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,17 +31,17 @@
 
         @Override
         public Traversal<Vertex, Object> get_g_V_branchXlabel_eq_person__a_bX_optionXa__ageX_optionXb__langX_optionXb__nameX() {
-            TraversalScriptHelper.compute("g.V.branch(__.label.is('person').count).option(1L, __.age).option(0L, __.lang).option(0L,__.name)", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.branch(__.label.is('person').count).option(1L, __.age).option(0L, __.lang).option(0L,__.name)");
         }
 
         @Override
         public Traversal<Vertex, Object> get_g_V_branchXlabelX_optionXperson__ageX_optionXsoftware__langX_optionXsoftware__nameX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
             g.V.branch{it.label == 'person' ? 'a' : 'b'}
                     .option('a', __.age)
                     .option('b', __.lang)
                     .option('b', __.name)
-            """, g)
+            """)
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy
index cb3bb3e..509340c 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy
@@ -18,12 +18,10 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.branch
 
-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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Joshua Shinavier (http://fortytwo.net)
@@ -33,12 +31,12 @@
     public static class Traversals extends ChooseTest {
         @Override
         public Traversal<Vertex, Object> get_g_V_chooseXout_countX_optionX2L__nameX_optionX3L__valueMapX() {
-            TraversalScriptHelper.compute("g.V.choose(__.out.count).option(2L, __.values('name')).option(3L, __.valueMap())", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.choose(__.out.count).option(2L, __.values('name')).option(3L, __.valueMap())")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_chooseXlabel_eqXpersonX__outXknowsX__inXcreatedXX_name() {
-            TraversalScriptHelper.compute("g.V.choose({it.label() == 'person'}, out('knows'), __.in('created')).name",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.choose({it.label() == 'person'}, out('knows'), __.in('created')).name")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy
index fe8d629..0e2ef3e 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyLocalTest.groovy
@@ -18,8 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.branch
 
-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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -32,52 +32,60 @@
 
         @Override
         public Traversal<Vertex, String> get_g_V_localXpropertiesXlocationX_order_byXvalueX_limitX2XX_value() {
-            TraversalScriptHelper.compute("g.V.local(__.properties('location').order.by(value,incr).limit(2)).value", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.local(__.properties('location').order.by(value,incr).limit(2)).value");
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXlabel_personX_asXaX_localXoutXcreatedX_asXbXX_selectXa_bX_byXnameX_byXidX() {
-            TraversalScriptHelper.compute("g.V.has(T.label, 'person').as('a').local(__.out('created').as('b')).select('a', 'b').by('name').by(T.id)", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has(T.label, 'person').as('a').local(__.out('created').as('b')).select('a', 'b').by('name').by(T.id)");
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_localXoutE_countX() {
-            TraversalScriptHelper.compute("g.V.local(__.outE.count())", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.local(__.outE.count())");
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_localXoutEXknowsX_limitX1XX_inV_name(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).local(__.outE('knows').limit(1)).inV.name", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).local(__.outE('knows').limit(1)).inV.name", "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_localXbothEXcreatedX_limitX1XX_otherV_name() {
-            TraversalScriptHelper.compute("g.V().local(__.bothE('created').limit(1)).otherV.name", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().local(__.bothE('created').limit(1)).otherV.name");
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX4X_localXbothEX1_createdX_limitX1XX(final Object v4Id) {
-            TraversalScriptHelper.compute("g.V(v4Id).local(__.bothE('created').limit(1))", g, "v4Id", v4Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v4Id).local(__.bothE('created').limit(1))", "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX4X_localXbothEXknows_createdX_limitX1XX(final Object v4Id) {
-            TraversalScriptHelper.compute("g.V(v4Id).local(__.bothE('knows', 'created').limit(1))", g, "v4Id", v4Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v4Id).local(__.bothE('knows', 'created').limit(1))", "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX4X_localXbothE_limitX1XX_otherV_name(final Object v4Id) {
-            TraversalScriptHelper.compute("g.V(v4Id).local(__.bothE.limit(1)).otherV.name", g, "v4Id", v4Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v4Id).local(__.bothE.limit(1)).otherV.name", "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX4X_localXbothE_limitX2XX_otherV_name(final Object v4Id) {
-            TraversalScriptHelper.compute("g.V(v4Id).local(__.bothE.limit(2)).otherV.name", g, "v4Id", v4Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v4Id).local(__.bothE.limit(2)).otherV.name", "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_localXinEXknowsX_limitX2XX_outV_name() {
-            TraversalScriptHelper.compute("g.V().local(__.inE('knows').limit(2).outV).name", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().local(__.inE('knows').limit(2).outV).name");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, String>> get_g_V_localXmatchXproject__created_person__person_name_nameX_selectXname_projectX_by_byXnameX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", """g.V.local(match(
+                    __.as('project').in('created').as('person'),
+                    __.as('person').values('name').as('name'))).
+                     select('name', 'project').by.by('name')""")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyOptionalTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyOptionalTest.groovy
new file mode 100644
index 0000000..d3f04cc
--- /dev/null
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyOptionalTest.groovy
@@ -0,0 +1,55 @@
+/*
+ * 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.branch
+
+import org.apache.tinkerpop.gremlin.process.traversal.Path
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
+import org.apache.tinkerpop.gremlin.structure.Vertex
+
+/**
+ * @author Pieter Martin
+ */
+public abstract class GroovyOptionalTest {
+
+    public static class Traversals extends OptionalTest {
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_VX2X_optionalXoutXknowsXX(Object v2Id) {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v2Id).optional(out('knows'))", "v2Id", v2Id)
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_VX2X_optionalXinXknowsXX(Object v2Id) {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v2Id).optional(__.in('knows'))", "v2Id", v2Id)
+        }
+
+        @Override
+        public Traversal<Vertex, Path> get_g_V_hasLabelXpersonX_optionalXoutXknowsX_optionalXoutXcreatedXXX_path() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().hasLabel('person').optional(out('knows').optional(out('created'))).path()")
+        }
+
+        @Override
+        public Traversal<Vertex, Path> get_g_V_optionalXout_optionalXoutXX_path() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.optional(out().optional(out())).path")
+        }
+
+    }
+
+}
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
index 691732f..48feaa4 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
@@ -20,7 +20,7 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -32,57 +32,57 @@
 
         @Override
         public Traversal<Vertex, Path> get_g_V_repeatXoutX_timesX2X_emit_path() {
-            TraversalScriptHelper.compute("g.V.repeat(__.out).times(2).emit.path", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(__.out).times(2).emit.path")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_repeatXoutX_timesX2X_repeatXinX_timesX2X_name() {
-            TraversalScriptHelper.compute("g.V.repeat(__.out).times(2).repeat(__.in).times(2).name", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(__.out).times(2).repeat(__.in).times(2).name")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_repeatXoutX_timesX2X() {
-            TraversalScriptHelper.compute("g.V.repeat(__.out).times(2)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(__.out).times(2)")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_repeatXoutX_timesX2X_emit() {
-            TraversalScriptHelper.compute("g.V.repeat(__.out).times(2).emit", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(__.out).times(2).emit")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_timesX2X_repeatXoutX_name(Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).times(2).repeat(__.out).name", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).times(2).repeat(__.out).name", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_emit_repeatXoutX_timesX2X_path() {
-            TraversalScriptHelper.compute("g.V.emit.repeat(__.out).times(2).path", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.emit.repeat(__.out).times(2).path")
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_emit_timesX2X_repeatXoutX_path() {
-            TraversalScriptHelper.compute("g.V.emit.times(2).repeat(__.out).path", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.emit.times(2).repeat(__.out).path")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_emitXhasXlabel_personXX_repeatXoutX_name(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).emit(has(T.label, 'person')).repeat(__.out).name", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).emit(has(T.label, 'person')).repeat(__.out).name", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXgroupCountXmX_byXnameX_outX_timesX2X_capXmX() {
-            TraversalScriptHelper.compute("g.V.repeat(groupCount('m').by('name').out).times(2).cap('m')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(groupCount('m').by('name').out).times(2).cap('m')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_repeatXbothX_timesX10X_asXaX_out_asXbX_selectXa_bX() {
-            TraversalScriptHelper.compute("g.V.repeat(both()).times(10).as('a').out().as('b').select('a', 'b')", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(both()).times(10).as('a').out().as('b').select('a', 'b')");
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_repeatXoutX_untilXoutE_count_isX0XX_name(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).repeat(out()).until(__.outE.count.is(0)).name", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).repeat(out()).until(__.outE.count.is(0)).name", "v1Id", v1Id)
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyUnionTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyUnionTest.groovy
index a31b437..5627cdc 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyUnionTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyUnionTest.groovy
@@ -18,8 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.branch
 
-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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -29,24 +29,29 @@
 
     public static class Traversals extends UnionTest {
 
+        @Override
         public Traversal<Vertex, String> get_g_V_unionXout__inX_name() {
-            TraversalScriptHelper.compute("g.V.union(__.out, __.in).name", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.union(__.out, __.in).name")
         }
 
+        @Override
         public Traversal<Vertex, String> get_g_VX1X_unionXrepeatXoutX_timesX2X__outX_name(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).union(repeat(__.out).times(2), __.out).name", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).union(repeat(__.out).times(2), __.out).name", "v1Id", v1Id)
         }
 
+        @Override
         public Traversal<Vertex, String> get_g_V_chooseXlabel_is_person__unionX__out_lang__out_nameX__in_labelX() {
-            TraversalScriptHelper.compute("g.V.choose(__.label.is('person'), union(__.out.lang, __.out.name), __.in.label)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.choose(__.label.is('person'), union(__.out.lang, __.out.name), __.in.label)")
         }
 
+        @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_chooseXlabel_is_person__unionX__out_lang__out_nameX__in_labelX_groupCount() {
-            TraversalScriptHelper.compute("g.V.choose(__.label.is('person'), union(__.out.lang, __.out.name), __.in.label).groupCount", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.choose(__.label.is('person'), union(__.out.lang, __.out.name), __.in.label).groupCount")
         }
 
+        @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_unionXrepeatXunionXoutXcreatedX__inXcreatedXX_timesX2X__repeatXunionXinXcreatedX__outXcreatedXX_timesX2XX_label_groupCount() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
             g.V.union(
                     repeat(union(
                             out('created'),
@@ -54,13 +59,19 @@
                     repeat(union(
                             __.in('created'),
                             out('created'))).times(2)).label.groupCount()
-           """, g)
+           """)
         }
 
         @Override
         public Traversal<Vertex, Number> get_g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX(
                 final Object v1Id, final Object v2Id) {
-            TraversalScriptHelper.compute("g.V(v1Id, v2Id).union(outE().count, inE().count, outE().weight.sum)", g, "v1Id", v1Id, "v2Id", v2Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id, v2Id).union(outE().count, inE().count, outE().weight.sum)", "v1Id", v1Id, "v2Id", v2Id);
+        }
+
+        @Override
+        public Traversal<Vertex, Number> get_g_VX1_2X_localXunionXoutE_count__inE_count__outE_weight_sumXX(
+                final Object v1Id, final Object v2Id) {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id, v2Id).local(union(outE().count, inE().count, outE().weight.sum))", "v1Id", v1Id, "v2Id", v2Id);
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy
index af444a8..fb9d356 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy
@@ -19,7 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,22 +31,22 @@
 
         @Override
         public Traversal<Vertex, String> get_g_V_andXhasXage_gt_27X__outE_count_gte_2X_name() {
-            TraversalScriptHelper.compute("g.V.and(has('age',gt(27)), outE().count.is(gte(2l))).name", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.and(has('age',gt(27)), outE().count.is(gte(2l))).name")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_andXoutE__hasXlabel_personX_and_hasXage_gte_32XX_name() {
-            TraversalScriptHelper.compute("g.V.and(outE(), has(label, 'person') & has('age', gte(32))).name", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.and(outE(), has(label, 'person') & has('age',gte(32))).name")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_asXaX_outXknowsX_and_outXcreatedX_inXcreatedX_asXaX_name() {
-            TraversalScriptHelper.compute("g.V.as('a').out('knows') & out('created').in('created').as('a').name", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out('knows') & out('created').in('created').as('a').name")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_asXaX_andXselectXaX_selectXaXX() {
-            TraversalScriptHelper.compute("g.V().as('a').and(__.select('a'), __.select('a'))", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().as('a').and(__.select('a'), __.select('a'))");
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCoinTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCoinTest.groovy
index a8207c4..0bdd3f6 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCoinTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCoinTest.groovy
@@ -18,8 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -30,12 +30,12 @@
     public static class Traversals extends CoinTest {
         @Override
         public Traversal<Vertex, Vertex> get_g_V_coinX1X() {
-            TraversalScriptHelper.compute("g.V.coin(1.0f)", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.coin(1.0f)");
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_coinX0X() {
-            TraversalScriptHelper.compute("g.V.coin(0.0f)", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.coin(0.0f)");
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCyclicPathTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCyclicPathTest.groovy
index 5359db4..7479e21 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCyclicPathTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyCyclicPathTest.groovy
@@ -18,9 +18,9 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -32,12 +32,12 @@
 
         @Override
         Traversal<Vertex, Vertex> get_g_VX1X_outXcreatedX_inXcreatedX_cyclicPath(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out('created').in('created').cyclicPath", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out('created').in('created').cyclicPath", "v1Id", v1Id);
         }
 
         @Override
         Traversal<Vertex, Path> get_g_VX1X_outXcreatedX_inXcreatedX_cyclicPath_path(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out('created').in('created').cyclicPath().path()", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out('created').in('created').cyclicPath().path()", "v1Id", v1Id);
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
index f9a917d..86c3e15 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
@@ -20,7 +20,7 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -33,52 +33,57 @@
 
         @Override
         public Traversal<Vertex, String> get_g_V_both_dedup_name() {
-            TraversalScriptHelper.compute("g.V.both.dedup.name", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.both.dedup.name");
         }
 
         @Override
         public Traversal<Vertex, Map<String, List<Double>>> get_g_V_group_byXlabelX_byXbothE_weight_dedup_foldX() {
-            TraversalScriptHelper.compute("g.V.group.by(label).by(__.bothE.weight.dedup.fold)", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.group.by(label).by(__.bothE.weight.dedup.fold)");
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_both_hasXlabel_softwareX_dedup_byXlangX_name() {
-            TraversalScriptHelper.compute("g.V.both.has(label, 'software').dedup.by('lang').name", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.both.has(label, 'software').dedup.by('lang').name");
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_both_name_order_byXa_bX_dedup_value() {
-            TraversalScriptHelper.compute("g.V().both().properties('name').order.by { a, b -> a.value() <=> b.value() }.dedup.value", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().both().properties('name').order.by { a, b -> a.value() <=> b.value() }.dedup.value");
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_both_both_dedup() {
-            TraversalScriptHelper.compute("g.V.both.both.dedup", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.both.both.dedup")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_both_both_dedup_byXlabelX() {
-            TraversalScriptHelper.compute("g.V.both.both.dedup.by(label)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.both.both.dedup.by(label)")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_both_both_name_dedup() {
-            TraversalScriptHelper.compute("g.V.both.both.name.dedup", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.both.both.name.dedup")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_asXaX_both_asXbX_dedupXa_bX_byXlabelX_selectXa_bX() {
-            TraversalScriptHelper.compute("g.V.as('a').both.as('b').dedup('a', 'b').by(label).select('a','b')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').both.as('b').dedup('a', 'b').by(label).select('a','b')")
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_asXaX_outXcreatedX_asXbX_inXcreatedX_asXcX_dedupXa_bX_path() {
-            TraversalScriptHelper.compute("g.V.as('a').out('created').as('b').in('created').as('c').dedup('a','b').path", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out('created').as('b').in('created').as('c').dedup('a','b').path")
         }
 
         @Override
         Traversal<Vertex, String> get_g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_incrX_selectXvX_valuesXnameX_dedup() {
-            TraversalScriptHelper.compute("g.V.outE.as('e').inV.as('v').select('e').order.by('weight', incr).select('v').values('name').dedup", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.outE.as('e').inV.as('v').select('e').order.by('weight', incr).select('v').values('name').dedup")
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_both_both_dedup_byXoutE_countX_name() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.both.both.dedup.by(outE().count).name")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDropTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDropTest.groovy
index 1ff4a95..74bf3e4 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDropTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDropTest.groovy
@@ -19,6 +19,7 @@
 
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Edge
@@ -34,17 +35,17 @@
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_drop() {
-            TraversalScriptHelper.compute("g.V.drop", g)
+            new ScriptTraversal<>(g, "gremlin-groovy","g.V.drop")
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_outE_drop() {
-            TraversalScriptHelper.compute("g.V.outE.drop", g)
+            new ScriptTraversal<>(g, "gremlin-groovy","g.V.outE.drop")
         }
 
         @Override
         public Traversal<Vertex, VertexProperty> get_g_V_properties_drop() {
-            TraversalScriptHelper.compute("g.V.properties().drop", g)
+            new ScriptTraversal<>(g, "gremlin-groovy","g.V.properties().drop")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyFilterTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyFilterTest.groovy
index 11476bd..ec12486 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyFilterTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyFilterTest.groovy
@@ -18,8 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -32,42 +32,42 @@
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_filterXfalseX() {
-            TraversalScriptHelper.compute("g.V.filter { false }", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.filter { false }");
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_filterXtrueX() {
-            TraversalScriptHelper.compute("g.V.filter { true }", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.filter { true }");
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_filterXlang_eq_javaX() {
-            TraversalScriptHelper.compute("g.V.filter { it.property('lang').orElse('none') == 'java' }", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.filter { it.property('lang').orElse('none') == 'java' }");
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_filterXage_gt_30X(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).filter { it.age > 30 }", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).filter { it.age > 30 }", "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_filterXage_gt_30X(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out.filter { it.property('age').orElse(0) > 30 }", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out.filter { it.property('age').orElse(0) > 30 }", "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_filterXname_startsWith_m_OR_name_startsWith_pX() {
-            TraversalScriptHelper.compute("g.V.filter { it.name.startsWith('m') || it.name.startsWith('p') }", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.filter { it.name.startsWith('m') || it.name.startsWith('p') }");
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E_filterXfalseX() {
-            TraversalScriptHelper.compute("g.E.filter { false }", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.E.filter { false }");
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E_filterXtrueX() {
-            TraversalScriptHelper.compute("g.E.filter { true }", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.E.filter { true }");
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
index f5a5054..b9ccfd0 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
@@ -19,7 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,108 +31,128 @@
     public static class Traversals extends HasTest {
         @Override
         public Traversal<Edge, Edge> get_g_EX11X_outV_outE_hasXid_10X(final Object e11Id, final Object e8Id) {
-            TraversalScriptHelper.compute("g.E(e11Id).outV.outE.has(T.id, e8Id)", g, "e11Id", e11Id, "e8Id", e8Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.E(e11Id).outV.outE.has(T.id, e8Id)", "e11Id", e11Id, "e8Id", e8Id);
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_outXcreatedX_hasXname__mapXlengthX_isXgtX3XXX_name() {
-            TraversalScriptHelper.compute("g.V.out('created').has('name',map{it.length()}.is(gt(3))).name", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out('created').has('name',map{it.length()}.is(gt(3))).name");
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_hasXkeyX(final Object v1Id, final String key) {
-            TraversalScriptHelper.compute("g.V(v1Id).has(k)", g, "v1Id", v1Id, "k", key);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).has(k)", "v1Id", v1Id, "k", key);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_hasXname_markoX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).has('name', 'marko')", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).has('name', 'marko')", "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXname_markoX() {
-            TraversalScriptHelper.compute("g.V.has('name', 'marko')", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('name', 'marko')");
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXname_blahX() {
-            TraversalScriptHelper.compute("g.V.has('name', 'blah')", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('name', 'blah')");
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXblahX() {
-            TraversalScriptHelper.compute("g.V.has('blah')", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('blah')");
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_hasXage_gt_30X(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).has('age', gt(30))", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).has('age',gt(30))", "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VXv1X_hasXage_gt_30X(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(g.V(v1Id).next()).has('age', gt(30))", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(g.V(v1Id).next()).has('age',gt(30))", "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_hasIdX2X(final Object v1Id, final Object v2Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out.hasId(v2Id)", g, "v1Id", v1Id, "v2Id", v2Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out.hasId(v2Id)", "v1Id", v1Id, "v2Id", v2Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_hasIdX2_3X(
                 final Object v1Id, final Object v2Id, final Object v3Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out.hasId(v2Id, v3Id)", g, "v1Id", v1Id, "v2Id", v2Id, "v3Id", v3Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out.hasId(v2Id, v3Id)", "v1Id", v1Id, "v2Id", v2Id, "v3Id", v3Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_hasXid_lt_3X(final Object v1Id, final Object v3Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out().has(T.id, P.lt(v3Id))", g, "v1Id", v1Id, "v3Id", v3Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out().has(T.id, P.lt(v3Id))", "v1Id", v1Id, "v3Id", v3Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXage_gt_30X() {
-            TraversalScriptHelper.compute("g.V.has('age', gt(30))", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('age',gt(30))");
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXage_isXgt_30XX() {
-            TraversalScriptHelper.compute("g.V.has('age', __.is(gt(30)))", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('age', __.is(gt(30)))");
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_EX7X_hasLabelXknowsX(final Object e7Id) {
-            TraversalScriptHelper.compute("g.E(e7Id).hasLabel('knows')", g, "e7Id", e7Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.E(e7Id).hasLabel('knows')", "e7Id", e7Id);
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E_hasLabelXknowsX() {
-            TraversalScriptHelper.compute("g.E.hasLabel('knows')", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.E.hasLabel('knows')");
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E_hasLabelXuses_traversesX() {
-            TraversalScriptHelper.compute("g.E.hasLabel('uses', 'traverses')", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.E.hasLabel('uses', 'traverses')");
         }
 
         @Override
         Traversal<Vertex, Vertex> get_g_V_hasLabelXperson_software_blahX() {
-            TraversalScriptHelper.compute("g.V.hasLabel('person', 'software', 'blah')", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('person', 'software', 'blah')");
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_hasXperson_name_markoX_age() {
-            TraversalScriptHelper.compute("g.V.has('person', 'name', 'marko').age", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('person', 'name', 'marko').age");
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outE_hasXweight_inside_0_06X_inV(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).outE.has('weight', inside(0.0d, 0.6d)).inV", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).outE.has('weight', inside(0.0d, 0.6d)).inV", "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXlocationX() {
-            TraversalScriptHelper.compute("g.V.has('location')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('location')")
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_VX1X(final Object v1Id) {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id)", "v1Id", v1Id)
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_hasIdX1X(final Object v1Id) {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasId(v1Id)", "v1Id", v1Id)
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_VX1_2X(final Object v1Id, final Object v2Id) {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id, v2Id)", "v1Id", v1Id, "v2Id", v2Id)
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_hasIdX1_2X(final Object v1Id, final Object v2Id) {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasId(v1Id, v2Id)", "v1Id", v1Id, "v2Id", v2Id)
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy
index 258f1c4..6b70125 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy
@@ -18,8 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,27 +31,27 @@
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_valuesXageX_isX32X() {
-            TraversalScriptHelper.compute("g.V.age.is(32)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.age.is(32)")
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_valuesXageX_isXlte_30X() {
-            TraversalScriptHelper.compute("g.V.age.is(lte(30))", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.age.is(lte(30))")
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_valuesXageX_isXgte_29X_isXlt_34X() {
-            TraversalScriptHelper.compute("g.V.age.is(gte(29)).is(lt(34))", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.age.is(gte(29)).is(lt(34))")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_whereXinXcreatedX_count_isX1XX_valuesXnameX() {
-            TraversalScriptHelper.compute("g.V.where(__.in('created').count.is(1)).name", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.where(__.in('created').count.is(1)).name")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_whereXinXcreatedX_count_isXgte_2XX_valuesXnameX() {
-            TraversalScriptHelper.compute("g.V.where(__.in('created').count.is(gte(2l))).name", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.where(__.in('created').count.is(gte(2l))).name")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy
index 1356540..26b46bf 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy
@@ -18,8 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,17 +31,17 @@
 
         @Override
         public Traversal<Vertex, String> get_g_V_orXhasXage_gt_27X__outE_count_gte_2X_name() {
-            TraversalScriptHelper.compute("g.V.or(has('age', gt(27)), outE().count.is(gte(2l))).name", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.or(has('age',gt(27)), outE().count.is(gte(2l))).name")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_orXoutEXknowsX__hasXlabel_softwareX_or_hasXage_gte_35XX_name() {
-            TraversalScriptHelper.compute("g.V.or(outE('knows'), has(T.label, 'software') | has('age', gte(35))).name", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.or(outE('knows'), has(T.label, 'software') | has('age',gte(35))).name")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_asXaX_orXselectXaX_selectXaXX() {
-            TraversalScriptHelper.compute("g.V().as('a').or(__.select('a'), __.select('a'))", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().as('a').or(__.select('a'), __.select('a'))");
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy
index dbbd74a..498e399 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyRangeTest.groovy
@@ -19,7 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,82 +31,82 @@
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_limitX2X(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out.limit(2)", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out.limit(2)", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_localXoutE_limitX1X_inVX_limitX3X() {
-            TraversalScriptHelper.compute("g.V.local(__.outE.limit(3)).inV.limit(3)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.local(__.outE.limit(3)).inV.limit(3)")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXknowsX_outEXcreatedX_rangeX0_1X_inV(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out('knows').outE('created')[0].inV()", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out('knows').outE('created')[0].inV()", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXknowsX_outXcreatedX_rangeX0_1X(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out('knows').out('created')[0]", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out('knows').out('created')[0]", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXcreatedX_inXcreatedX_rangeX1_3X(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out('created').in('created')[1..3]", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out('created').in('created')[1..3]", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXcreatedX_inEXcreatedX_rangeX1_3X_outV(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out('created').inE('created')[1..3].outV", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out('created').inE('created')[1..3].outV", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_rangeX5_11X() {
-            TraversalScriptHelper.compute("g.V().repeat(__.both).times(3)[5..11]", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().repeat(__.both).times(3)[5..11]")
         }
 
         @Override
         public Traversal<Vertex, List<String>> get_g_V_asXaX_in_asXaX_in_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_limitXlocal_2X() {
-            TraversalScriptHelper.compute("g.V().as('a').in().as('a').in().as('a').select('a').by(unfold().values('name').fold).limit(local,2)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().as('a').in().as('a').in().as('a').select('a').by(unfold().values('name').fold).limit(local,2)")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_asXaX_in_asXaX_in_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_limitXlocal_1X() {
-            TraversalScriptHelper.compute("g.V().as('a').in().as('a').in().as('a').select('a').by(unfold().values('name').fold).limit(local,1)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().as('a').in().as('a').in().as('a').select('a').by(unfold().values('name').fold).limit(local,1)")
         }
 
         @Override
         public Traversal<Vertex, List<String>> get_g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_rangeXlocal_1_3X() {
-            TraversalScriptHelper.compute("g.V().as('a').out().as('a').out().as('a').select('a').by(unfold().values('name').fold).range(local,1,3)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().as('a').out().as('a').out().as('a').select('a').by(unfold().values('name').fold).range(local,1,3)")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_rangeXlocal_1_2X() {
-            TraversalScriptHelper.compute("g.V().as('a').out().as('a').out().as('a').select('a').by(unfold().values('name').fold).range(local,1,2)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().as('a').out().as('a').out().as('a').select('a').by(unfold().values('name').fold).range(local,1,2)")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_rangeXlocal_4_5X() {
-            TraversalScriptHelper.compute("g.V().as('a').out().as('a').out().as('a').select('a').by(unfold().values('name').fold).range(local,4,5)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().as('a').out().as('a').out().as('a').select('a').by(unfold().values('name').fold).range(local,4,5)")
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_in_asXbX_in_asXcX_selectXa_b_cX_byXnameX_limitXlocal_2X() {
-            TraversalScriptHelper.compute("g.V.as('a').in.as('b').in.as('c').select('a','b','c').by('name').limit(local,2)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').in.as('b').in.as('c').select('a','b','c').by('name').limit(local,2)")
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_in_asXbX_in_asXcX_selectXa_b_cX_byXnameX_limitXlocal_1X() {
-            TraversalScriptHelper.compute("g.V.as('a').in.as('b').in.as('c').select('a','b','c').by('name').limit(local,1)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').in.as('b').in.as('c').select('a','b','c').by('name').limit(local,1)")
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_rangeXlocal_1_3X() {
-            TraversalScriptHelper.compute("g.V.as('a').out.as('b').out.as('c').select('a','b','c').by('name').range(local,1,3)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out.as('b').out.as('c').select('a','b','c').by('name').range(local,1,3)")
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_rangeXlocal_1_2X() {
-            TraversalScriptHelper.compute("g.V.as('a').out.as('b').out.as('c').select('a','b','c').by('name').range(local,1,2)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out.as('b').out.as('c').select('a','b','c').by('name').range(local,1,2)")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySampleTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySampleTest.groovy
index 00083f8..73f88d7 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySampleTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySampleTest.groovy
@@ -18,8 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -32,27 +32,27 @@
 
         @Override
         public Traversal<Edge, Edge> get_g_E_sampleX1X() {
-            TraversalScriptHelper.compute("g.E.sample(1)",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.E.sample(1)")
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E_sampleX2X_byXweightX() {
-            TraversalScriptHelper.compute("g.E.sample(2).by('weight')",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.E.sample(2).by('weight')")
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_localXoutE_sampleX1X_byXweightXX() {
-            TraversalScriptHelper.compute("g.V.local(__.outE.sample(1).by('weight'))",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.local(__.outE.sample(1).by('weight'))")
         }
 
         @Override
         Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_weight_sampleX2X_foldX() {
-            TraversalScriptHelper.compute("g.V().group().by(T.label).by(bothE().weight.sample(2).fold)",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().group().by(T.label).by(bothE().weight.sample(2).fold)")
         }
 
         @Override
         Traversal<Vertex, Map<String, Collection<Double>>> get_g_V_group_byXlabelX_byXbothE_weight_fold_sampleXlocal_5XX() {
-            TraversalScriptHelper.compute("g.V().group().by(label).by(bothE().weight.fold().sample(local, 5))",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().group().by(label).by(bothE().weight.fold().sample(local, 5))")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySimplePathTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySimplePathTest.groovy
index 3a814a4..e1206df 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySimplePathTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovySimplePathTest.groovy
@@ -18,9 +18,9 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -32,12 +32,12 @@
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXcreatedX_inXcreatedX_simplePath(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out('created').in('created').simplePath", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out('created').in('created').simplePath", "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_repeatXboth_simplePathX_timesX3X_path() {
-            TraversalScriptHelper.compute("g.V.repeat(__.both.simplePath).times(3).path()", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(__.both.simplePath).times(3).path()");
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyTailTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyTailTest.groovy
index 50f4d96..41a7f39 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyTailTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyTailTest.groovy
@@ -19,19 +19,9 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
-import org.apache.tinkerpop.gremlin.structure.T
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import java.util.List
-import java.util.Map
-
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.both
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.limit
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.unfold
-import static org.apache.tinkerpop.gremlin.process.traversal.Scope.global
-import static org.apache.tinkerpop.gremlin.process.traversal.Scope.local
-
 /**
  * @author Matt Frantz (http://github.com/mhfrantz)
  */
@@ -41,57 +31,57 @@
 
         @Override
         public Traversal<Vertex, String> get_g_V_valuesXnameX_order_tailXglobal_2X() {
-            TraversalScriptHelper.compute("g.V.values('name').order.tail(global, 2)",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.values('name').order.tail(global, 2)")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_valuesXnameX_order_tailX2X() {
-            TraversalScriptHelper.compute("g.V.values('name').order.tail(2)",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.values('name').order.tail(2)")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_valuesXnameX_order_tail() {
-            TraversalScriptHelper.compute("g.V.values('name').order.tail",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.values('name').order.tail")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_valuesXnameX_order_tailX7X() {
-            TraversalScriptHelper.compute("g.V.values('name').order.tail(7)",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.values('name').order.tail(7)")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_tailX7X() {
-            TraversalScriptHelper.compute("g.V.repeat(both()).times(3).tail(7)",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(both()).times(3).tail(7)")
         }
 
         @Override
         public Traversal<Vertex, List<String>> get_g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocal_2X() {
-            TraversalScriptHelper.compute("g.V.as('a').out.as('a').out.as('a').select('a').by(unfold().values('name').fold).tail(local, 2)",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out.as('a').out.as('a').select('a').by(unfold().values('name').fold).tail(local, 2)")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocal_1X() {
-            TraversalScriptHelper.compute("g.V.as('a').out.as('a').out.as('a').select('a').by(unfold().values('name').fold).tail(local, 1)",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out.as('a').out.as('a').select('a').by(unfold().values('name').fold).tail(local, 1)")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocalX() {
-            TraversalScriptHelper.compute("g.V.as('a').out.as('a').out.as('a').select('a').by(unfold().values('name').fold).tail(local)",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out.as('a').out.as('a').select('a').by(unfold().values('name').fold).tail(local)")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXlimitXlocal_0XX_tailXlocal_1X() {
-            TraversalScriptHelper.compute("g.V.as('a').out.as('a').out.as('a').select('a').by(limit(local, 0)).tail(local, 1)",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out.as('a').out.as('a').select('a').by(limit(local, 0)).tail(local, 1)")
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_tailXlocal_2X() {
-            TraversalScriptHelper.compute("g.V.as('a').out.as('b').out.as('c').select('a','b','c').by('name').tail(local, 2)",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out.as('b').out.as('c').select('a','b','c').by('name').tail(local, 2)")
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_tailXlocal_1X() {
-            TraversalScriptHelper.compute("g.V.as('a').out.as('b').out.as('c').select('a','b','c').by('name').tail(local, 1)",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out.as('b').out.as('c').select('a','b','c').by('name').tail(local, 1)")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
index f449c29..83d9b6c 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
@@ -20,7 +20,7 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -34,22 +34,22 @@
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXa_eqXbXX() {
-            TraversalScriptHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select('a','b').where('a', eq('b'))", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('age').as('a').out.in.has('age').as('b').select('a','b').where('a', eq('b'))")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXa_neqXbXX() {
-            TraversalScriptHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select('a','b').where('a', neq('b'))", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('age').as('a').out.in.has('age').as('b').select('a','b').where('a', neq('b'))")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXb_hasXname_markoXX() {
-            TraversalScriptHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select('a','b').where(__.as('b').has('name', 'marko'))", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('age').as('a').out.in.has('age').as('b').select('a','b').where(__.as('b').has('name', 'marko'))")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXa_outXknowsX_bX() {
-            TraversalScriptHelper.compute("g.V().has('age').as('a').out.in.has('age').as('b').select('a','b').where(__.as('a').out('knows').as('b'))", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().has('age').as('a').out.in.has('age').as('b').select('a','b').where(__.as('a').out('knows').as('b'))")
         }
 
         /// where(global)
@@ -57,13 +57,13 @@
         @Override
         public Traversal<Vertex, String> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_asXbX_whereXa_neqXbXX_name(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('created').in('created').as('b').where('a', neq('b')).name", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).as('a').out('created').in('created').as('b').where('a', neq('b')).name", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Object> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_asXbX_whereXasXbX_outXcreatedX_hasXname_rippleXX_valuesXage_nameX(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('created').in('created').as('b').where(__.as('b').out('created').has('name','ripple')).values('age','name')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).as('a').out('created').in('created').as('b').where(__.as('b').out('created').has('name','ripple')).values('age','name')", "v1Id", v1Id)
         }
 
         // except/retain functionality
@@ -71,65 +71,65 @@
         @Override
         public Traversal<Vertex, String> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_whereXeqXaXX_name(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('created').in('created').where(eq('a')).name", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).as('a').out('created').in('created').where(eq('a')).name", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_asXaX_outXcreatedX_inXcreatedX_whereXneqXaXX_name(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('created').in('created').where(neq('a')).name", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).as('a').out('created').in('created').where(neq('a')).name", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_aggregateXxX_out_whereXnotXwithinXaXXX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out.aggregate('x').out.where(not(within('x')))", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out.aggregate('x').out.where(not(within('x')))", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_withSideEffectXa_graph_verticesX2XX_VX1X_out_whereXneqXaXX(
                 final Object v1Id, final Object v2Id) {
-            TraversalScriptHelper.compute("g.withSideEffect('a'){graph.vertices(v2Id).next()}.V(v1Id).out.where(neq('a'))", g, "graph", graph, "v1Id", v1Id, "v2Id", v2Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSideEffect('a'){g.V(v2Id).next()}.V(v1Id).out.where(neq('a'))", "graph", graph, "v1Id", v1Id, "v2Id", v2Id)
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_VX1X_repeatXbothEXcreatedX_whereXwithoutXeXX_aggregateXeX_otherVX_emit_path(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).repeat(__.bothE('created').where(without('e')).aggregate('e').otherV).emit.path", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).repeat(__.bothE('created').where(without('e')).aggregate('e').otherV).emit.path", "v1Id", v1Id)
         }
 
         // hasNot functionality
 
         @Override
         public Traversal<Vertex, String> get_g_V_whereXnotXoutXcreatedXXX_name() {
-            TraversalScriptHelper.compute("g.V.where(__.not(out('created'))).name", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.where(__.not(out('created'))).name");
         }
 
         // complex and/or functionality
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_asXaX_out_asXbX_whereXandXasXaX_outXknowsX_asXbX__orXasXbX_outXcreatedX_hasXname_rippleX__asXbX_inXknowsX_count_isXnotXeqX0XXXXX_selectXa_bX() {
-            TraversalScriptHelper.compute("g.V.as('a').out.as('b').where(and(__.as('a').out('knows').as('b'),or(__.as('b').out('created').has('name','ripple'),__.as('b').in('knows').count.is(not(eq(0)))))).select('a','b')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out.as('b').where(and(__.as('a').out('knows').as('b'),or(__.as('b').out('created').has('name','ripple'),__.as('b').in('knows').count.is(not(eq(0)))))).select('a','b')")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_whereXoutXcreatedX_and_outXknowsX_or_inXknowsXX_valuesXnameX() {
-            TraversalScriptHelper.compute("g.V.where(out('created').and.out('knows').or.in('knows')).name", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.where(out('created').and.out('knows').or.in('knows')).name")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_asXaX_outXcreatedX_asXbX_whereXandXasXbX_in__notXasXaX_outXcreatedX_hasXname_rippleXXX_selectXa_bX() {
-            TraversalScriptHelper.compute("g.V.as('a').out('created').as('b').where(and(__.as('b').in,__.not(__.as('a').out('created').has('name','ripple')))).select('a','b')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out('created').as('b').where(and(__.as('b').in,__.not(__.as('a').out('created').has('name','ripple')))).select('a','b')")
         }
 
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_asXaX_outXcreatedX_asXbX_inXcreatedX_asXcX_bothXknowsX_bothXknowsX_asXdX_whereXc__notXeqXaX_orXeqXdXXXX_selectXa_b_c_dX() {
-            TraversalScriptHelper.compute("g.V.as('a').out('created').as('b').in('created').as('c').both('knows').both('knows').as('d').where('c',not(eq('a').or(eq('d')))).select('a','b','c','d')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out('created').as('b').in('created').as('c').both('knows').both('knows').as('d').where('c',not(eq('a').or(eq('d')))).select('a','b','c','d')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_asXaX_out_asXbX_whereXin_count_isXeqX3XX_or_whereXoutXcreatedX_and_hasXlabel_personXXX_selectXa_bX() {
-            TraversalScriptHelper.compute("g.V.as('a').out.as('b').where(__.as('b').in.count.is(eq(3)).or.where(__.as('b').out('created').and.as('b').has(label,'person'))).select('a','b')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out.as('b').where(__.as('b').in.count.is(eq(3)).or.where(__.as('b').out('created').and.as('b').has(label,'person'))).select('a','b')")
         }
 
     }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy
index f76692f..b3d5f49 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddEdgeTest.groovy
@@ -19,7 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -32,54 +32,54 @@
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_asXaX_outXcreatedX_addEXcreatedByX_toXaX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('created').addE('createdBy').to('a')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).as('a').out('created').addE('createdBy').to('a')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_asXaX_outXcreatedX_addEXcreatedByX_toXaX_propertyXweight_2X(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('created').addE('createdBy').to('a').property('weight', 2.0d)", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).as('a').out('created').addE('createdBy').to('a').property('weight', 2.0d)", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_aggregateXxX_asXaX_selectXxX_unfold_addEXexistsWithX_toXaX_propertyXtime_nowX() {
-            TraversalScriptHelper.compute("g.V.aggregate('x').as('a').select('x').unfold.addE('existsWith').to('a').property('time', 'now')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.aggregate('x').as('a').select('x').unfold.addE('existsWith').to('a').property('time', 'now')");
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_asXaX_outXcreatedX_inXcreatedX_whereXneqXaXX_asXbX_addEXcodeveloperX_fromXaX_toXbX_propertyXyear_2009X() {
-            TraversalScriptHelper.compute("g.V.as('a').out('created').in('created').where(neq('a')).as('b').addE('codeveloper').from('a').to('b').property('year', 2009)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out('created').in('created').where(neq('a')).as('b').addE('codeveloper').from('a').to('b').property('year', 2009)");
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_asXaX_inXcreatedX_addEXcreatedByX_fromXaX_propertyXyear_2009X_propertyXacl_publicX() {
-            TraversalScriptHelper.compute("g.V.as('a').in('created').addE('createdBy').from('a').property('year', 2009).property('acl', 'public')", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').in('created').addE('createdBy').from('a').property('year', 2009).property('acl', 'public')");
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_asXaX_outXcreatedX_addOutEXcreatedBy_aX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('created').addOutE('createdBy', 'a')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).as('a').out('created').addOutE('createdBy', 'a')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_asXaX_outXcreatedX_addOutEXcreatedBy_a_weight_2X(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('created').addOutE('createdBy', 'a', 'weight', 2.0d)", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).as('a').out('created').addOutE('createdBy', 'a', 'weight', 2.0d)", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_withSideEffectXx__g_V_toListX_addOutEXexistsWith_x_time_nowX() {
-            TraversalScriptHelper.compute("g.withSideEffect('x',g.V.toList()).V.addOutE('existsWith', 'x', 'time', 'now')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSideEffect('x',g.V.toList()).V.addOutE('existsWith', 'x', 'time', 'now')");
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_asXaX_outXcreatedX_inXcreatedX_whereXneqXaXX_asXbX_selectXa_bX_addInEXa_codeveloper_b_year_2009X() {
-            TraversalScriptHelper.compute("g.V.as('a').out('created').in('created').where(neq('a')).as('b').select('a','b').addInE('a', 'codeveloper', 'b', 'year', 2009)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out('created').in('created').where(neq('a')).as('b').select('a','b').addInE('a', 'codeveloper', 'b', 'year', 2009)");
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_asXaX_inXcreatedX_addInEXcreatedBy_a_year_2009_acl_publicX() {
-            TraversalScriptHelper.compute("g.V.as('a').in('created').addInE('createdBy', 'a', 'year', 2009, 'acl', 'public')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').in('created').addInE('createdBy', 'a', 'year', 2009, 'acl', 'public')");
         }
     }
 }
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 40092f1..5ff3fb3 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
@@ -20,7 +20,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,60 +31,61 @@
     public static class Traversals extends AddVertexTest {
 
         @Override
-        public Traversal<Vertex, Vertex> get_g_VX1X_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);
+        public Traversal<Vertex, Vertex> get_g_VX1X_addVXanimalX_propertyXage_selectXaX_byXageXX_propertyXname_puppyX(
+                final Object v1Id) {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).as('a').addV('animal').property('age', select('a').by('age')).property('name', 'puppy')", "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_addVXanimalX_propertyXage_0X() {
-            TraversalScriptHelper.compute("g.V().addV('animal').property('age', 0)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().addV('animal').property('age', 0)")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_addVXpersonX_propertyXname_stephenX() {
-            TraversalScriptHelper.compute("g.addV(label, 'person', 'name', 'stephen')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.addV(label, 'person', 'name', 'stephen')")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_addVXpersonX_propertyXname_stephenX_propertyXname_stephenmX() {
-            TraversalScriptHelper.compute("g.addV('person').property('name', 'stephen').property('name', 'stephenm')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.addV('person').property('name', 'stephen').property('name', 'stephenm')")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_addVXpersonX_propertyXsingle_name_stephenX_propertyXsingle_name_stephenmX() {
-            TraversalScriptHelper.compute("g.addV('person').property(VertexProperty.Cardinality.single, 'name', 'stephen').property(VertexProperty.Cardinality.single, 'name', 'stephenm')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.addV('person').property(VertexProperty.Cardinality.single, 'name', 'stephen').property(VertexProperty.Cardinality.single, 'name', 'stephenm')")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_addVXpersonX_propertyXsingle_name_stephenX_propertyXsingle_name_stephenm_since_2010X() {
-            TraversalScriptHelper.compute("g.addV('person').property(VertexProperty.Cardinality.single, 'name', 'stephen').property(VertexProperty.Cardinality.single, 'name', 'stephenm', 'since', 2010)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.addV('person').property(VertexProperty.Cardinality.single, 'name', 'stephen').property(VertexProperty.Cardinality.single, 'name', 'stephenm', 'since', 2010)")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXname_markoX_propertyXfriendWeight_outEXknowsX_weight_sum__acl_privateX() {
-            TraversalScriptHelper.compute("g.V.has('name', 'marko').property('friendWeight', outE('knows').weight.sum(), 'acl', 'private')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('name', 'marko').property('friendWeight', outE('knows').weight.sum(), 'acl', 'private')")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_addVXanimalX_propertyXname_mateoX_propertyXname_gateoX_propertyXname_cateoX_propertyXage_5X() {
-            TraversalScriptHelper.compute("g.addV('animal').property('name', 'mateo').property('name', 'gateo').property('name', 'cateo').property('age', 5)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.addV('animal').property('name', 'mateo').property('name', 'gateo').property('name', 'cateo').property('age', 5)")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_addVXanimalX_propertyXname_valuesXnameXX_propertyXname_an_animalX_propertyXvaluesXnameX_labelX() {
-            TraversalScriptHelper.compute("g.V.addV('animal').property('name', values('name')).property('name', 'an animal').property(values('name'), label())", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.addV('animal').property('name', values('name')).property('name', 'an animal').property(values('name'), label())")
         }
 
         ///////// DEPRECATED BELOW
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_addVXlabel_animal_age_0X() {
-            TraversalScriptHelper.compute("g.V.addV(label, 'animal', 'age', 0)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.addV(label, 'animal', 'age', 0)")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_addVXlabel_person_name_stephenX() {
-            TraversalScriptHelper.compute("g.addV(label, 'person', 'name', 'stephen')", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.addV(label, 'person', 'name', 'stephen')")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCoalesceTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCoalesceTest.groovy
index b3005ff..e6765f5 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCoalesceTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCoalesceTest.groovy
@@ -18,9 +18,9 @@
  */
 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.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -33,27 +33,27 @@
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_coalesceXoutXfooX_outXbarXX() {
-            TraversalScriptHelper.compute("g.V().coalesce(out('foo'), out('bar'))", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().coalesce(out('foo'), out('bar'))")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_coalesceXoutXknowsX_outXcreatedXX_valuesXnameX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).coalesce(out('knows'), out('created')).values('name')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).coalesce(out('knows'), out('created')).values('name')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_coalesceXoutXcreatedX_outXknowsXX_valuesXnameX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).coalesce(out('created'), out('knows')).values('name')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).coalesce(out('created'), out('knows')).values('name')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_coalesceXoutXlikesX_outXknowsX_inXcreatedXX_groupCount_byXnameX() {
-            TraversalScriptHelper.compute("g.V().coalesce(out('likes'), out('knows'), out('created')).groupCount().by('name')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().coalesce(out('likes'), out('knows'), out('created')).groupCount().by('name')")
         }
 
         @Override
         Traversal<Vertex, Path> get_g_V_coalesceXoutEXknowsX_outEXcreatedXX_otherV_path_byXnameX_byXlabelX() {
-            TraversalScriptHelper.compute("g.V.coalesce(outE('knows'), outE('created')).otherV.path.by('name').by(T.label)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.coalesce(outE('knows'), outE('created')).otherV.path.by('name').by(T.label)")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyConstantTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyConstantTest.groovy
index 62ec828..1fa03c0 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyConstantTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyConstantTest.groovy
@@ -19,11 +19,9 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import java.util.List
-
 /**
  * @author Matt Frantz (http://github.com/mhfrantz)
  */
@@ -32,12 +30,12 @@
     public static class Traversals extends ConstantTest {
         @Override
         public Traversal<Vertex, Integer> get_g_V_constantX123X() {
-            TraversalScriptHelper.compute("g.V.constant(123)",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.constant(123)")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_chooseXhasLabelXpersonX_valuesXnameX_constantXinhumanXX() {
-            TraversalScriptHelper.compute("g.V.choose(hasLabel('person'), values('name'), constant('inhuman'))",g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.choose(hasLabel('person'), values('name'), constant('inhuman'))")
         }
 
     }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy
index 016749f..898f16c 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy
@@ -19,7 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -30,42 +30,42 @@
     public static class Traversals extends CountTest {
         @Override
         public Traversal<Vertex, Long> get_g_V_count() {
-            TraversalScriptHelper.compute("g.V.count()", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.count()")
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_out_count() {
-            TraversalScriptHelper.compute("g.V.out.count", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out.count")
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_both_both_count() {
-            TraversalScriptHelper.compute("g.V.both.both.count()", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.both.both.count()")
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_repeatXoutX_timesX3X_count() {
-            TraversalScriptHelper.compute("g.V().repeat(__.out).times(3).count()", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().repeat(__.out).times(3).count()")
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_repeatXoutX_timesX8X_count() {
-            TraversalScriptHelper.compute("g.V.repeat(__.out).times(8).count()", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(__.out).times(8).count()")
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_repeatXoutX_timesX5X_asXaX_outXwrittenByX_asXbX_selectXa_bX_count() {
-            TraversalScriptHelper.compute("g.V.repeat(out()).times(5).as('a').out('writtenBy').as('b').select('a', 'b').count()", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(out()).times(5).as('a').out('writtenBy').as('b').select('a', 'b').count()")
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_hasXnoX_count() {
-            TraversalScriptHelper.compute("g.V.has('no').count", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('no').count")
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_fold_countXlocalX() {
-            TraversalScriptHelper.compute("g.V.fold.count(local)", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.fold.count(local)")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFlatMapTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFlatMapTest.groovy
index 6b25682..712b9bf 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFlatMapTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFlatMapTest.groovy
@@ -18,12 +18,10 @@
  */
 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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.select;
-
 /**
  * @author Matt Frantz (http://github.com/mhfrantz)
  */
@@ -31,8 +29,8 @@
 
     public static class Traversals extends FlatMapTest {
         @Override
-        public Traversal<Vertex, Vertex> get_g_V_flatMapXselectXaXX() {
-            TraversalScriptHelper.compute("g.V.as('a').flatMap(select('a'))", g);
+        public Traversal<Vertex, Vertex> get_g_V_asXaX_flatMapXselectXaXX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').flatMap(select('a'))")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFoldTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFoldTest.groovy
index c5d7a0d..c8ee43d 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFoldTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyFoldTest.groovy
@@ -18,8 +18,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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -30,17 +30,17 @@
     public static class Traversals extends FoldTest {
         @Override
         public Traversal<Vertex, List<Vertex>> get_g_V_fold() {
-            TraversalScriptHelper.compute("g.V.fold", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.fold")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_fold_unfold() {
-            TraversalScriptHelper.compute("g.V.fold.unfold", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.fold.unfold")
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_age_foldX0_plusX() {
-            TraversalScriptHelper.compute("g.V.age.fold(0,sum)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.age.fold(0,sum)")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyGraphTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyGraphTest.groovy
index 44a891e..cff3e65 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyGraphTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyGraphTest.groovy
@@ -20,7 +20,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -33,18 +33,23 @@
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_V_valuesXnameX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).V.name", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).V.name", "v1Id", v1Id);
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_outXknowsX_V_name() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out('knows').V.name")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_hasXname_GarciaX_inXsungByX_asXsongX_V_hasXname_Willie_DixonX_inXwrittenByX_whereXeqXsongXX_name() {
-            TraversalScriptHelper.compute("g.V.has('name','Garcia').in('sungBy').as('song').V.has('name','Willie_Dixon').in('writtenBy').where(eq('song')).name", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('name','Garcia').in('sungBy').as('song').V.has('name','Willie_Dixon').in('writtenBy').where(eq('song')).name")
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_hasLabelXpersonX_asXpX_VXsoftwareX_addInEXuses_pX() {
             def software = g.V().hasLabel("software").toList()
-            TraversalScriptHelper.compute("g.V().hasLabel('person').as('p').V(software).addE('uses').from('p')", g, "software", software)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().hasLabel('person').as('p').V(software).addE('uses').from('p')", "software", software)
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyLoopsTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyLoopsTest.groovy
index 6704a51..58c9ca9 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyLoopsTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyLoopsTest.groovy
@@ -20,7 +20,7 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -33,24 +33,24 @@
         @Override
         Traversal<Vertex, Path> get_g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX3XX_hasXname_peterX_path_byXnameX(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).repeat(__.both.simplePath).until(has('name', 'peter').or.loops.is(3)).has('name', 'peter').path.by('name')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).repeat(__.both.simplePath).until(has('name', 'peter').or.loops.is(3)).has('name', 'peter').path.by('name')", "v1Id", v1Id)
         }
 
         @Override
         Traversal<Vertex, Path> get_g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX2XX_hasXname_peterX_path_byXnameX(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).repeat(__.both.simplePath).until(has('name', 'peter').or.loops.is(2)).has('name', 'peter').path.by('name')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).repeat(__.both.simplePath).until(has('name', 'peter').or.loops.is(2)).has('name', 'peter').path.by('name')", "v1Id", v1Id)
         }
 
         @Override
         Traversal<Vertex, Path> get_g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_and_loops_isX3XX_hasXname_peterX_path_byXnameX(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).repeat(__.both.simplePath).until(has('name', 'peter').and.loops.is(3)).has('name', 'peter').path.by('name')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).repeat(__.both.simplePath).until(has('name', 'peter').and.loops.is(3)).has('name', 'peter').path.by('name')", "v1Id", v1Id)
         }
 
         @Override
         Traversal<Vertex, String> get_g_V_emitXhasXname_markoX_or_loops_isX2XX_repeatXoutX_valuesXnameX() {
-            TraversalScriptHelper.compute("g.V.emit(has('name', 'marko').or.loops.is(2)).repeat(__.out).name", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.emit(has('name', 'marko').or.loops.is(2)).repeat(__.out).name")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapKeysTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapKeysTest.groovy
index 648ffab..1430147 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapKeysTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapKeysTest.groovy
@@ -19,7 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -32,12 +32,12 @@
 
         @Override
         public Traversal<Vertex, Double> get_g_V_outE_valuesXweightX_groupCount_mapKeys() {
-            TraversalScriptHelper.compute("g.V.outE().weight.groupCount().mapKeys()", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.outE().weight.groupCount().mapKeys()")
         }
 
         @Override
         public Traversal<Vertex, Double> get_g_V_outE_valuesXweightX_groupCount_unfold_mapKeys() {
-            TraversalScriptHelper.compute("g.V.outE().weight.groupCount().unfold().mapKeys()", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.outE().weight.groupCount().unfold().mapKeys()")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapTest.groovy
index 18c03be..59eb1ce 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapTest.groovy
@@ -18,12 +18,10 @@
  */
 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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.select;
-
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
@@ -33,32 +31,32 @@
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_mapXnameX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).map { v -> v.name }", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).map { v -> v.name }", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_VX1X_outE_label_mapXlengthX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).outE.label.map { l -> l.length() }", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).outE.label.map { l -> l.length() }", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_VX1X_out_mapXnameX_mapXlengthX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out.map { v -> v.name }.map { n -> n.length() }", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out.map { v -> v.name }.map { n -> n.length() }", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_withPath_V_asXaX_out_mapXa_nameX() {
-            TraversalScriptHelper.compute("g.withPath().V.as('a').out.map { v -> v.path('a').name }", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withPath().V.as('a').out.map { v -> v.path('a').name }")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_withPath_V_asXaX_out_out_mapXa_name_it_nameX() {
-            TraversalScriptHelper.compute("g.withPath().V().as('a').out.out().map { v -> v.path('a').name + v.name }", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withPath().V().as('a').out.out().map { v -> v.path('a').name + v.name }")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_mapXselectXaXX() {
-            TraversalScriptHelper.compute("g.V.as('a').map(select('a'))", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').map(select('a'))")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapValuesTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapValuesTest.groovy
index 4572b73..5adf0ee 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapValuesTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapValuesTest.groovy
@@ -19,7 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -32,17 +32,17 @@
 
         @Override
         public Traversal<Vertex, Long> get_g_V_outE_valuesXweightX_groupCount_mapValues() {
-            TraversalScriptHelper.compute("g.V.outE().weight.groupCount().mapValues()", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.outE().weight.groupCount().mapValues()")
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_outE_valuesXweightX_groupCount_unfold_mapValues() {
-            TraversalScriptHelper.compute("g.V.outE().weight.groupCount().unfold().mapValues()", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.outE().weight.groupCount().unfold().mapValues()")
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_outE_valuesXweightX_groupCount_mapValues_groupCount_mapValues() {
-            TraversalScriptHelper.compute("g.V.outE().weight.groupCount().mapValues().groupCount().mapValues()", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.outE().weight.groupCount().mapValues().groupCount().mapValues()")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
index c2f9d43..b35b763 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
@@ -20,7 +20,7 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.MatchAlgorithmStrategy
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 import org.junit.Before
 
@@ -49,119 +49,119 @@
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_matchXa_selectXnameX_bX() {
-            TraversalScriptHelper.compute("g.V.valueMap.match(__.as('a').select('name').as('b'))", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.valueMap.match(__.as('a').select('name').as('b'))")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_out_bX() {
-            TraversalScriptHelper.compute("g.V.match(__.as('a').out.as('b'))", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.match(__.as('a').out.as('b'))")
         }
 
         @Override
         public Traversal<Vertex, Object> get_g_V_matchXa_out_bX_selectXb_idX() {
-            TraversalScriptHelper.compute("g.V.match( __.as('a').out.as('b')).select('b').by(id)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.match( __.as('a').out.as('b')).select('b').by(id)")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__b_created_cX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     __.as('a').out('knows').as('b'),
                     __.as('b').out('created').as('c'))
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__a_created_cX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     __.as('a').out('knows').as('b'),
                     __.as('a').out('created').as('c'))
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXd_0knows_a__d_hasXname_vadasX__a_knows_b__b_created_cX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     __.as('d').in('knows').as('a'),
                     __.as('d').has('name', 'vadas'),
                     __.as('a').out('knows').as('b'),
                     __.as('b').out('created').as('c'))
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_created_b__a_repeatXoutX_timesX2XX_selectXa_bX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     __.as('a').out('created').as('b'),
                     __.as('a').repeat(__.out).times(2).as('b')).select('a', 'b')
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_lop_b__b_0created_29_c__c_whereXrepeatXoutX_timesX2XXX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     __.as('a').out('created').has('name', 'lop').as('b'),
                     __.as('b').in('created').has('age', 29).as('c'),
                     __.as('c').where(repeat(__.out).times(2)))
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_out_out_matchXa_0created_b__b_0knows_cX_selectXcX_outXcreatedX_name() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.out.out.match(
                     __.as('a').in('created').as('b'),
                     __.as('b').in('knows').as('c')).select('c').out('created').name
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_created_b__b_0created_aX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     __.as('a').out('created').as('b'),
                     __.as('b').in('created').as('a'))
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__c_knows_bX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V().match(
                     __.as('a').out('knows').as('b'),
                     __.as('c').out('knows').as('b'))
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__b_created_lop__b_matchXb_created_d__d_0created_cX_selectXcX_cX_selectXa_b_cX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     __.as("a").out("knows").as("b"),
                     __.as("b").out("created").has("name", "lop"),
                     __.as("b").match(
                             __.as("b").out("created").as("d"),
                             __.as("d").in("created").as("c")).select("c").as("c")).select('a','b','c')
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__a_0sungBy_bX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     __.as('a').has('name', 'Garcia'),
                     __.as('a').in('writtenBy').as('b'),
                     __.as('a').in('sungBy').as('b'));
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_0sungBy_b__a_0sungBy_c__b_writtenBy_d__c_writtenBy_e__d_hasXname_George_HarisonX__e_hasXname_Bob_MarleyXX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     __.as('a').in('sungBy').as('b'),
                     __.as('a').in('sungBy').as('c'),
@@ -169,76 +169,76 @@
                     __.as('c').out('writtenBy').as('e'),
                     __.as('d').has('name', 'George_Harrison'),
                     __.as('e').has('name', 'Bob_Marley'))
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     __.as('a').in('sungBy').as('b'),
                     __.as('a').in('writtenBy').as('c'),
                     __.as('b').out('writtenBy').as('d'),
                     __.as('c').out('sungBy').as('d'),
                     __.as('d').has('name', 'Garcia'))
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_dX_whereXc_sungBy_dX_whereXd_hasXname_GarciaXX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     __.as('a').in('sungBy').as('b'),
                     __.as('a').in('writtenBy').as('c'),
                     __.as('b').out('writtenBy').as('d'))
                     .where(__.as('c').out('sungBy').as('d'))
                     .where(__.as('d').has('name', 'Garcia'));
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_lop_b__b_0created_29_cX_whereXc_repeatXoutX_timesX2XX_selectXa_b_cX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     __.as("a").out("created").has("name", "lop").as("b"),
                     __.as("b").in("created").has("age", 29).as("c"))
                     .where(__.as("c").repeat(__.out).times(2))
                     .select('a','b','c')
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_created_b__b_0created_cX_whereXa_neq_cX_selectXa_cX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     __.as('a').out('created').as('b'),
                     __.as('b').in('created').as('c'))
                     .where('a', neq('c'))
                     .select('a', 'c')
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_b__c_created_bX_selectXa_b_cX_byXnameX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     __.as('a').out('created').as('b'),
                     __.as('c').out('created').as('b')).select('a','b','c').by('name')
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_out_asXcX_matchXb_knows_a__c_created_eX_selectXcX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V().out().as("c").match(
                     as("b").out("knows").as("a"),
                     as("c").out("created").as("e")).select("c")
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_matchXa_whereXa_neqXcXX__a_created_b__orXa_knows_vadas__a_0knows_and_a_hasXlabel_personXX__b_0created_c__b_0created_count_isXgtX1XXX_selectXa_b_cX_byXidX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     where('a', neq('c')),
                     __.as('a').out('created').as('b'),
@@ -249,31 +249,31 @@
                     __.as('b').in('created').as('c'),
                     __.as('b').in('created').count.is(gt(1)))
                     .select('a','b','c').by(id);
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_asXaX_out_asXbX_matchXa_out_count_c__b_in_count_cX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.as('a').out.as('b').match(__.as('a').out.count.as('c'), __.as('b').in.count.as('c'))
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__b_followedBy_c__c_writtenBy_d__whereXd_neqXaXXX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     __.as('a').has('name', 'Garcia'),
                     __.as('a').in('writtenBy').as('b'),
                     __.as('b').out('followedBy').as('c'),
                     __.as('c').out('writtenBy').as('d'),
                     where('d', neq('a')))
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_matchXa_knows_b__andXa_created_c__b_created_c__andXb_created_count_d__a_knows_count_dXXX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
                 g.V.match(
                     __.as('a').out('knows').as('b'),
                     and(
@@ -284,11 +284,11 @@
                                     __.as('a').out('knows').count.as('d')
                             )
                     ))
-            """, g)
+            """)
         }
 
         public Traversal<Vertex, Map<String, Object>> get_g_V_asXaX_out_asXbX_matchXa_out_count_c__orXa_knows_b__b_in_count_c__and__c_isXgtX2XXXX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
             g.V.as('a').out.as('b').
                     match(
                             __.as('a').out.count.as('c'),
@@ -297,46 +297,66 @@
                                     __.as('b').in.count.as('c').and.as('c').is(gt(2))
                             )
                     )
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_matchXa__a_out_b__notXa_created_bXX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
             g.V.match(
                     __.as('a').out.as('b'),
                     __.not(__.as('a').out('created').as('b')));
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_matchXwhereXandXa_created_b__b_0created_count_isXeqX3XXXX__a_both_b__whereXb_inXX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
              g.V.match(
                     where(and(
                             __.as('a').out('created').as('b'),
                             __.as('b').in('created').count.is(eq(3)))),
                     __.as('a').both.as('b'),
                     where(__.as('b').in()));
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa__a_both_b__b_both_cX_dedupXa_bX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
              g.V.match(
                     __.as('a').both.as('b'),
                     __.as('b').both.as('c')).dedup('a','b')
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_both_b__b_both_cX_dedupXa_bX_byXlabelX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
              g.V.match(
                     __.as('a').both.as('b'),
                     __.as('b').both.as('c')).dedup('a','b').by(label)
-            """, g)
+            """)
+        }
+
+        @Override
+        public Traversal<Vertex, Long> get_g_V_hasLabelXsongsX_matchXa_name_b__a_performances_cX_selectXb_cX_count() {
+            new ScriptTraversal<>(g, "gremlin-groovy", """
+             g.V.hasLabel('song').match(
+                    __.as('a').values('name').as('b'),
+                    __.as('a').values('performances').as('c')
+            ).select('b', 'c').count();
+            """)
+        }
+
+        @Override
+        public Traversal<Vertex, Long> get_g_V_matchXa_knows_count_bX_selectXbX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.match(__.as('a').out('knows').count.as('b')).select('b')")
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_matchXa_knows_b__b_created_c__a_created_cX_dedupXa_b_cX_selectXaX_byXnameX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.match(__.as('a').out('knows').as('b'), __.as('b').out('created').as('c'), __.as('a').out('created').as('c')).dedup('a', 'b', 'c').select('a').by('name')")
         }
     }
 }
\ No newline at end of file
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMaxTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMaxTest.groovy
index 76aebe9..ef7376b 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMaxTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMaxTest.groovy
@@ -18,8 +18,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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,17 +31,17 @@
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_age_max() {
-            TraversalScriptHelper.compute("g.V.age.max", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.age.max")
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_max() {
-            TraversalScriptHelper.compute("g.V.repeat(__.both).times(5).age.max", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(__.both).times(5).age.max")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_maxX() {
-            TraversalScriptHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().weight.max)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().hasLabel('software').group().by('name').by(bothE().weight.max)")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMeanTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMeanTest.groovy
index 089333b..6776287 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMeanTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMeanTest.groovy
@@ -18,8 +18,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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,12 +31,12 @@
 
         @Override
         public Traversal<Vertex, Double> get_g_V_age_mean() {
-            TraversalScriptHelper.compute("g.V.age.mean", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.age.mean")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_meanX() {
-            TraversalScriptHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().weight.mean)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().hasLabel('software').group().by('name').by(bothE().weight.mean)")
         }
     }
 }
\ No newline at end of file
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMinTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMinTest.groovy
index 4d12faf..f35b7ef 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMinTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMinTest.groovy
@@ -18,8 +18,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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,17 +31,17 @@
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_age_min() {
-            TraversalScriptHelper.compute("g.V.age.min", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.age.min")
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_repeatXbothX_timesX5X_age_min() {
-            TraversalScriptHelper.compute("g.V.repeat(__.both).times(5).age.min", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(__.both).times(5).age.min")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_minX() {
-            TraversalScriptHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().weight.min())", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().hasLabel('software').group().by('name').by(bothE().weight.min())")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy
index 5b7ccea..de33944 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyOrderTest.groovy
@@ -19,7 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,85 +31,110 @@
 
         @Override
         public Traversal<Vertex, String> get_g_V_name_order() {
-            TraversalScriptHelper.compute("g.V().name.order()", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().name.order()")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_name_order_byXa1_b1X_byXb2_a2X() {
-            TraversalScriptHelper.compute("g.V.name.order.by { a, b -> a[1] <=> b[1] }.by { a, b -> b[2] <=> a[2] }", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.name.order.by { a, b -> a[1] <=> b[1] }.by { a, b -> b[2] <=> a[2] }")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_order_byXname_incrX_name() {
-            TraversalScriptHelper.compute("g.V.order.by('name', incr).name", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.order.by('name', incr).name")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_order_byXnameX_name() {
-            TraversalScriptHelper.compute("g.V.order.by('name').name", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.order.by('name').name")
         }
 
         @Override
         public Traversal<Vertex, Double> get_g_V_outE_order_byXweight_decrX_weight() {
-            TraversalScriptHelper.compute("g.V.outE.order.by('weight', Order.decr).weight", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.outE.order.by('weight', Order.decr).weight")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_order_byXname_a1_b1X_byXname_b2_a2X_name() {
-            TraversalScriptHelper.compute("g.V.order.by('name', { a, b -> a[1].compareTo(b[1]) }).by('name', { a, b -> b[2].compareTo(a[2]) }).name", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.order.by('name', { a, b -> a[1].compareTo(b[1]) }).by('name', { a, b -> b[2].compareTo(a[2]) }).name")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_asXaX_outXcreatedX_asXbX_order_byXshuffleX_selectXa_bX() {
-            TraversalScriptHelper.compute("g.V.as('a').out('created').as('b').order.by(shuffle).select('a','b')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out('created').as('b').order.by(shuffle).select('a','b')")
         }
 
         @Override
         public Traversal<Vertex, Map<Integer, Integer>> get_g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalues_decrX_byXkeys_incrX(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("""g.V(v1Id).hasLabel("person").map {
+            new ScriptTraversal<>(g, "gremlin-groovy", """g.V(v1Id).hasLabel("person").map {
                 final Map map = [:];
                 map[1] = it.age;
                 map[2] = it.age * 2;
                 map[3] = it.age * 3;
                 map[4] = it.age;
                 return map;
-            }.order(local).by(values,decr).by(keys,incr)""", g, "v1Id", v1Id);
+            }.order(local).by(values,decr).by(keys,incr)""", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_order_byXoutE_count__decrX() {
-            TraversalScriptHelper.compute("g.V.order.by(__.outE.count, decr)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.order.by(__.outE.count, decr)")
         }
 
         @Override
-        public Traversal<Vertex, Map<String, List<Vertex>>> get_g_V_group_byXlabelX_byXnameX_byXorderXlocalX_byXdecrXX() {
-            TraversalScriptHelper.compute("g.V.group.by(label).by(values('name').order().by(decr).fold())", g)
+        public Traversal<Vertex, Map<String, List<Vertex>>> get_g_V_group_byXlabelX_byXname_order_byXdecrX_foldX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.group.by(label).by(values('name').order().by(decr).fold())")
         }
 
         @Override
         public Traversal<Vertex, List<Double>> get_g_V_localXbothE_weight_foldX_order_byXsumXlocalX_decrX() {
-            TraversalScriptHelper.compute("g.V.local(__.bothE.weight.fold).order.by(sum(local), decr)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.local(__.bothE.weight.fold).order.by(sum(local), decr)")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_decrX() {
-            TraversalScriptHelper.compute("g.V.as('v').map(__.bothE.weight.fold).sum(local).as('s').select('v', 's').order.by(select('s'),decr)", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('v').map(__.bothE.weight.fold).sum(local).as('s').select('v', 's').order.by(select('s'),decr)")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasLabelXpersonX_order_byXageX() {
-            TraversalScriptHelper.compute("g.V.hasLabel('person').order.by('age')", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('person').order.by('age')")
         }
 
         @Override
         public Traversal<Vertex, List<Vertex>> get_g_V_hasLabelXpersonX_fold_orderXlocalX_byXageX() {
-            TraversalScriptHelper.compute("g.V.hasLabel('person').fold.order(local).by('age')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('person').fold.order(local).by('age')")
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_hasLabelXpersonX_order_byXvalueXageX__decrX_name() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('person').order.by({it.age},decr).name")
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_properties_order_byXkey_decrX_key() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.properties().order.by(key, decr).key")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXsong_name_OHBOYX_outXfollowedByX_outXfollowedByX_order_byXperformancesX_byXsongType_incrX() {
-            TraversalScriptHelper.compute("g.V.has('song', 'name', 'OH BOY').out('followedBy').out('followedBy').order.by('performances').by('songType',decr)", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('song', 'name', 'OH BOY').out('followedBy').out('followedBy').order.by('performances').by('songType',decr)")
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_both_hasLabelXpersonX_order_byXage_decrX_limitX5X_name() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.both.hasLabel('person').order.by('age',decr).limit(5).name")
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_both_hasLabelXpersonX_order_byXage_decrX_name() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.both.hasLabel('person').order.by('age',decr).name")
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_hasLabelXsongX_order_byXperfomances_decrX_byXnameX_rangeX110_120X_name() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('song').order.by('performances',decr).by('name').range(110, 120).name")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPageRankTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPageRankTest.groovy
new file mode 100644
index 0000000..13787cc
--- /dev/null
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPageRankTest.groovy
@@ -0,0 +1,78 @@
+/*
+ * 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.map
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
+import org.apache.tinkerpop.gremlin.structure.Vertex
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public abstract class GroovyPageRankTest {
+
+    public static class Traversals extends PageRankTest {
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_pageRank() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.pageRank")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, List<Object>>> get_g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_valueMapXname_friendRankX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.pageRank.by(outE('knows')).by('friendRank').valueMap('name','friendRank')")
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_pageRank_order_byXpageRank_decrX_name() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.pageRank.order.by(PageRankVertexProgram.PAGE_RANK, decr).name")
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_pageRank_order_byXpageRank_decrX_name_limitX2X() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.pageRank.order.by(PageRankVertexProgram.PAGE_RANK, decr).name.limit(2)")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasLabelXpersonX_pageRank_byXpageRankX_order_byXpageRankX_valueMapXname_pageRankX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('person').pageRank.by('pageRank').order.by('pageRank').valueMap('name', 'pageRank')")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Object>> get_g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.pageRank.by('pageRank').as('a').out('knows').values('pageRank').as('b').select('a', 'b')")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_byXinEXcreatedXX_timesX1X_byXpriorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().hasLabel('software').has('name', 'ripple').pageRank(1.0).by(inE('created')).times(1).by('priors').in('created').union(identity(),both()).valueMap('name', 'priors')")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<Object, List<Vertex>>> get_g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_byXpageRankX_byXinEX_timesX1X_inXcreatedX_groupXmX_byXpageRankX_capXmX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out('created').group('m').by(label).pageRank(1.0).by('pageRank').by(inE()).times(1).in('created').group('m').by('pageRank').cap('m')")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, List<Object>>> get_g_V_outXcreatedX_pageRank_byXbothEX_byXprojectRankX_timesX0X_valueMapXname_projectRankX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out('created').pageRank().by(bothE()).by('projectRank').times(0).valueMap('name','projectRank')")
+        }
+    }
+}
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy
index fa0e2be..e696978 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPathTest.groovy
@@ -18,9 +18,9 @@
  */
 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.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -32,27 +32,27 @@
 
         @Override
         public Traversal<Vertex, Path> get_g_VX1X_name_path(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).name.path", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).name.path", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_VX1X_out_path_byXageX_byXnameX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out.path.by('age').by('name')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out.path.by('age').by('name')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_repeatXoutX_timesX2X_path_by_byXnameX_byXlangX() {
-            TraversalScriptHelper.compute("g.V.repeat(__.out).times(2).path.by.by('name').by('lang')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(__.out).times(2).path.by.by('name').by('lang')")
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_out_out_path_byXnameX_byXageX() {
-            TraversalScriptHelper.compute("g.V.out.out.path.by('name').by('age')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out.out.path.by('name').by('age')")
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_asXaX_hasXname_markoX_asXbX_hasXage_29X_asXcX_path() {
-            TraversalScriptHelper.compute("g.V.as('a').has('name', 'marko').as('b').has('age', 29).as('c').path", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').has('name', 'marko').as('b').has('age', 29).as('c').path")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPeerPressureTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPeerPressureTest.groovy
new file mode 100644
index 0000000..6ec0750
--- /dev/null
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPeerPressureTest.groovy
@@ -0,0 +1,48 @@
+/*
+ * 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.map
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
+import org.apache.tinkerpop.gremlin.structure.Vertex
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public abstract class GroovyPeerPressureTest {
+
+    public static class Traversals extends PeerPressureTest {
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_peerPressure() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.peerPressure")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<Object, Number>> get_g_V_peerPressure_byXclusterX_byXoutEXknowsXX_pageRankX1X_byXrankX_byXoutEXknowsXX_timesX2X_group_byXclusterX_byXrank_sumX_limitX100X() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.peerPressure.by('cluster').by(outE('knows')).pageRank(1.0).by('rank').by(outE('knows')).times(1).group.by('cluster').by(values('rank').sum).limit(100)")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_byXoutEX_byXclusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('name', 'ripple').in('created').peerPressure.by(outE()).by('cluster').repeat(union(identity(), both())).times(2).dedup.valueMap('name', 'cluster')")
+        }
+    }
+}
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyProfileTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyProfileTest.groovy
new file mode 100644
index 0000000..0987ee5
--- /dev/null
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyProfileTest.groovy
@@ -0,0 +1,89 @@
+/*
+ * 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.map
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics
+import org.apache.tinkerpop.gremlin.structure.Vertex
+
+/**
+ * @author Bob Briody (http://bobbriody.com
+ */
+public abstract class GroovyProfileTest {
+
+    public static class Traversals extends ProfileTest {
+
+        @Override
+        public Traversal<Vertex, TraversalMetrics> get_g_V_out_out_profile() {
+            g.V.out.out.profile() // locked traversal
+        }
+
+        @Override
+        public Traversal<Vertex, TraversalMetrics> get_g_V_repeatXbothX_timesX3X_profile() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(__.both()).times(3).profile()");
+        }
+
+        @Override
+        public Traversal<Vertex, TraversalMetrics> get_g_V_whereXinXcreatedX_count_isX1XX_name_profile() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().where(__.in('created').count().is(1l)).values('name').profile()");
+        }
+
+        @Override
+        public Traversal<Vertex, TraversalMetrics> get_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().sideEffect{Thread.sleep(10)}.sideEffect{Thread.sleep(5)}.profile()")
+        }
+
+        @Override
+        public Traversal<Vertex, TraversalMetrics> get_g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_profile() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.match(__.as('a').out('created').as('b'), __.as('b').in.count.is(eq(1))).select('a', 'b').profile()")
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_out_out_profileXmetricsX() {
+            g.V.out.out.profile('metrics') // locked traversal
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_profileXmetricsX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(__.both()).times(3).profile('metrics')");
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_whereXinXcreatedX_count_isX1XX_name_profileXmetricsX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().where(__.in('created').count().is(1l)).values('name').profile('metrics')");
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profileXmetricsX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().sideEffect{Thread.sleep(10)}.sideEffect{Thread.sleep(5)}.profile('metrics')")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_profileXmetricsX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.match(__.as('a').out('created').as('b'), __.as('b').in.count.is(eq(1))).select('a', 'b').profile('metrics')")
+        }
+
+        @Override
+        public Traversal<Vertex, TraversalMetrics> get_g_V_hasLabelXpersonX_pageRank_byXrankX_byXbothEX_rank_profile() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('person').pageRank.by('rank').by(bothE()).rank.profile()")
+        }
+    }
+}
+
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyProgramTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyProgramTest.groovy
new file mode 100644
index 0000000..7abe113
--- /dev/null
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyProgramTest.groovy
@@ -0,0 +1,50 @@
+/*
+ * 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.map
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
+import org.apache.tinkerpop.gremlin.structure.Vertex
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public abstract class GroovyProgramTest {
+
+    public static class Traversals extends ProgramTest {
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_programXpageRankX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.program(PageRankVertexProgram.build().create(graph))")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasLabelXpersonX_programXpageRank_rankX_order_byXrank_incrX_valueMapXname_rankX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('person').program(PageRankVertexProgram.build().property('rank').create(graph)).order.by('rank',incr).valueMap('name','rank')");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Object>> get_g_V_outXcreatedX_aggregateXxX_byXlangX_groupCount_programXTestProgramX_asXaX_selectXa_xX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out('created').aggregate('x').by('lang').groupCount.program(new ${ProgramTest.TestProgram.class.getCanonicalName()}()).as('a').select('a', 'x')");
+        }
+    }
+}
+
+
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyProjectTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyProjectTest.groovy
new file mode 100644
index 0000000..c20867c
--- /dev/null
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyProjectTest.groovy
@@ -0,0 +1,42 @@
+/*
+ * 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.map
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
+import org.apache.tinkerpop.gremlin.structure.Vertex
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public abstract class GroovyProjectTest {
+
+    public static class Traversals extends ProjectTest {
+        @Override
+        public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXpersonX_projectXa_bX_byXoutE_countX_byXageX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('person').project('a','b').by(outE().count).by('age')")
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_outXcreatedX_projectXa_bX_byXnameX_byXinXcreatedX_countX_order_byXselectXbX__decrX_selectXaX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out('created').project('a', 'b').by('name').by(__.in('created').count).order.by(select('b'),decr).select('a')")
+        }
+    }
+}
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy
index ec57cd3..eb161d7 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy
@@ -19,7 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 import org.apache.tinkerpop.gremlin.structure.VertexProperty
 
@@ -32,22 +32,22 @@
 
         @Override
         public Traversal<Vertex, Object> get_g_V_hasXageX_propertiesXname_ageX_value() {
-            TraversalScriptHelper.compute("g.V.has('age').properties('name', 'age').value", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('age').properties('name', 'age').value")
         }
 
         @Override
         public Traversal<Vertex, Object> get_g_V_hasXageX_propertiesXage_nameX_value() {
-            TraversalScriptHelper.compute("g.V.has('age').properties('age', 'name').value", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('age').properties('age', 'name').value")
         }
 
         @Override
         public Traversal<Vertex, Object> get_g_V_hasXageX_properties_hasXid_nameIdX_value(final Object nameId) {
-            TraversalScriptHelper.compute("g.V.has('age').properties().has(T.id, nameId).value()", g, "nameId", nameId)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('age').properties().has(T.id, nameId).value()", "nameId", nameId)
         }
 
         @Override
         public Traversal<Vertex, VertexProperty<String>> get_g_V_hasXageX_propertiesXnameX() {
-            TraversalScriptHelper.compute("g.V.has('age').properties('name')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('age').properties('name')")
         }
     }
 
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySelectTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySelectTest.groovy
index b910a99..789c36f 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySelectTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySelectTest.groovy
@@ -20,7 +20,7 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Pop
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -34,129 +34,129 @@
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_VX1X_asXaX_outXknowsX_asXbX_selectXa_bX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select('a','b')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).as('a').out('knows').as('b').select('a','b')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_VX1X_asXaX_outXknowsX_asXbX_selectXa_bX_byXnameX(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select('a','b').by('name')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).as('a').out('knows').as('b').select('a','b').by('name')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_asXaX_outXknowsX_asXbX_selectXaX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select('a')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).as('a').out('knows').as('b').select('a')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_asXaX_outXknowsX_asXbX_selectXaX_byXnameX(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).as('a').out('knows').as('b').select('a').by('name')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).as('a').out('knows').as('b').select('a').by('name')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_out_asXbX_selectXa_bX_byXnameX() {
-            TraversalScriptHelper.compute("g.V.as('a').out.as('b').select('a','b').by('name')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out.as('b').select('a','b').by('name')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_out_aggregateXxX_asXbX_selectXa_bX_byXnameX() {
-            TraversalScriptHelper.compute("g.V.as('a').out.aggregate('x').as('b').select('a','b').by('name')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out.aggregate('x').as('b').select('a','b').by('name')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_name_order_asXbX_selectXa_bX_byXnameX_by_XitX() {
-            TraversalScriptHelper.compute("g.V().as('a').name.order().as('b').select('a','b').by('name').by", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().as('a').name.order().as('b').select('a','b').by('name').by")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXname_gremlinX_inEXusesX_order_byXskill_incrX_asXaX_outV_asXbX_selectXa_bX_byXskillX_byXnameX() {
-            TraversalScriptHelper.compute("g.V.has('name', 'gremlin').inE('uses').order.by('skill', Order.incr).as('a').outV.as('b').select('a','b').by('skill').by('name')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('name', 'gremlin').inE('uses').order.by('skill', Order.incr).as('a').outV.as('b').select('a','b').by('skill').by('name')")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXname_isXmarkoXX_asXaX_selectXaX() {
-            TraversalScriptHelper.compute("g.V.has('name',__.is('marko')).as('a').select('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('name',__.is('marko')).as('a').select('a')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_label_groupCount_asXxX_selectXxX() {
-            TraversalScriptHelper.compute("g.V().label().groupCount().as('x').select('x')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().label().groupCount().as('x').select('x')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXpersonX_asXpX_mapXbothE_label_groupCountX_asXrX_selectXp_rX() {
-            TraversalScriptHelper.compute("g.V.hasLabel('person').as('p').map(__.bothE.label.groupCount()).as('r').select('p','r')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('person').as('p').map(__.bothE.label.groupCount()).as('r').select('p','r')")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_chooseXoutE_count_isX0X__asXaX__asXbXX_chooseXselectXaX__selectXaX__selectXbXX() {
-            TraversalScriptHelper.compute("g.V.choose(__.outE().count().is(0L), __.as('a'), __.as('b')).choose(select('a'),select('a'),select('b'))", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.choose(__.outE().count().is(0L), __.as('a'), __.as('b')).choose(select('a'),select('a'),select('b'))")
         }
 
         // below are original back()-tests
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_asXhereX_out_selectXhereX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).as('here').out.select('here')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).as('here').out.select('here')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX(final Object v4Id) {
-            TraversalScriptHelper.compute("g.V(v4Id).out.as('here').has('lang', 'java').select('here')", g, "v4Id", v4Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v4Id).out.as('here').has('lang', 'java').select('here')", "v4Id", v4Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX_name(
                 final Object v4Id) {
-            TraversalScriptHelper.compute("g.V(v4Id).out.as('here').has('lang', 'java').select('here').name", g, "v4Id", v4Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v4Id).out.as('here').has('lang', 'java').select('here').name", "v4Id", v4Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_outE_asXhereX_inV_hasXname_vadasX_selectXhereX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).outE.as('here').inV.has('name', 'vadas').select('here')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).outE.as('here').inV.has('name', 'vadas').select('here')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_selectXhereX(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).outE('knows').has('weight', 1.0d).as('here').inV.has('name', 'josh').select('here')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).outE('knows').has('weight', 1.0d).as('here').inV.has('name', 'josh').select('here')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_inV_hasXname_joshX_selectXhereX(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).outE('knows').as('here').has('weight', 1.0d).inV.has('name', 'josh').select('here')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).outE('knows').as('here').has('weight', 1.0d).inV.has('name', 'josh').select('here')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_selectXhereX(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).outE('knows').as('here').has('weight', 1.0d).as('fake').inV.has('name', 'josh').select('here')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).outE('knows').as('here').has('weight', 1.0d).as('fake').inV.has('name', 'josh').select('here')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_asXhereXout_name_selectXhereX() {
-            TraversalScriptHelper.compute("g.V().as('here').out.name.select('here')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().as('here').out.name.select('here')")
         }
 
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_selectXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_selectXprojectXX_groupCount_byXnameX() {
-            TraversalScriptHelper.compute("""g.V.out('created')
+            new ScriptTraversal<>(g, "gremlin-groovy", """g.V.out('created')
                     .union(__.as('project').in('created').has('name', 'marko').select('project'),
-                    __.as('project').in('created').in('knows').has('name', 'marko').select('project')).groupCount().by('name')""", g)
+                    __.as('project').in('created').in('knows').has('name', 'marko').select('project')).groupCount().by('name')""")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_asXaX_hasXname_markoX_asXbX_asXcX_selectXa_b_cX_by_byXnameX_byXageX() {
-            TraversalScriptHelper.compute("g.V.as('a').has('name', 'marko').as('b').as('c').select('a','b','c').by().by('name').by('age')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').has('name', 'marko').as('b').as('c').select('a','b','c').by().by('name').by('age')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXsoftwareX_asXnameX_asXlanguageX_asXcreatorsX_selectXname_language_creatorsX_byXnameX_byXlangX_byXinXcreatedX_name_fold_orderXlocalXX() {
-            TraversalScriptHelper.compute("""g.V.hasLabel('software').as('name').as('language').as('creators').select('name','language','creators').by('name').by('lang').
-                    by(__.in('created').values('name').fold().order(local))""", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", """g.V.hasLabel('software').as('name').as('language').as('creators').select('name','language','creators').by('name').by('lang').
+                    by(__.in('created').values('name').fold().order(local))""")
         }
 
         // TINKERPOP-619: select should not throw
@@ -164,74 +164,79 @@
         @Override
         public Traversal<Vertex, Object> get_g_V_selectXaX(final Pop pop) {
             final String root = "g.V."
-            TraversalScriptHelper.compute(root + (null == pop ? "select('a')" : "select(${pop}, 'a')"), g)
+            new ScriptTraversal<>(g, "gremlin-groovy", root + (null == pop ? "select('a')" : "select(${pop}, 'a')"))
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_selectXa_bX(final Pop pop) {
             final String root = "g.V."
-            TraversalScriptHelper.compute(root + (null == pop ? "select('a', 'b')" : "select(${pop}, 'a', 'b')"), g)
+            new ScriptTraversal<>(g, "gremlin-groovy", root + (null == pop ? "select('a', 'b')" : "select(${pop}, 'a', 'b')"))
         }
 
         @Override
         public Traversal<Vertex, Object> get_g_V_valueMap_selectXpop_aX(final Pop pop) {
             final String root = "g.V.valueMap."
-            TraversalScriptHelper.compute(root + (null == pop ? "select('a')" : "select(${pop}, 'a')"), g)
+            new ScriptTraversal<>(g, "gremlin-groovy", root + (null == pop ? "select('a')" : "select(${pop}, 'a')"))
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_selectXpop_a_bX(final Pop pop) {
             final String root = "g.V.valueMap."
-            TraversalScriptHelper.compute(root + (null == pop ? "select('a', 'b')" : "select(${pop}, 'a', 'b')"), g)
+            new ScriptTraversal<>(g, "gremlin-groovy", root + (null == pop ? "select('a', 'b')" : "select(${pop}, 'a', 'b')"))
         }
 
         // when labels don't exist
 
         @Override
         public Traversal<Vertex, String> get_g_V_untilXout_outX_repeatXin_asXaXX_selectXaX_byXtailXlocalX_nameX() {
-            TraversalScriptHelper.compute("g.V.until(__.out.out).repeat(__.in.as('a')).select('a').by(tail(local).name)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.until(__.out.out).repeat(__.in.as('a')).select('a').by(tail(local).name)")
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_untilXout_outX_repeatXin_asXaX_in_asXbXX_selectXa_bX_byXnameX() {
-            TraversalScriptHelper.compute("g.V.until(__.out.out).repeat(__.in.as('a').in.as('b')).select('a','b').by('name')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.until(__.out.out).repeat(__.in.as('a').in.as('b')).select('a','b').by('name')")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_asXaX_whereXoutXknowsXX_selectXaX() {
-            TraversalScriptHelper.compute("g.V().as('a').where(out('knows')).select('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().as('a').where(out('knows')).select('a')")
         }
 
         // select column tests
 
         @Override
         public Traversal<Vertex, Long> get_g_V_outE_weight_groupCount_selectXvaluesX_unfold() {
-            TraversalScriptHelper.compute("g.V.outE.weight.groupCount.select(values).unfold", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.outE.weight.groupCount.select(values).unfold")
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_outE_weight_groupCount_unfold_selectXvaluesX_unfold() {
-            TraversalScriptHelper.compute("g.V.outE.weight.groupCount.unfold.select(values).unfold", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.outE.weight.groupCount.unfold.select(values).unfold")
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_outE_weight_groupCount_selectXvaluesX_unfold_groupCount_selectXvaluesX_unfold() {
-            TraversalScriptHelper.compute("g.V.outE.weight.groupCount.select(values).unfold.groupCount.select(values).unfold", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.outE.weight.groupCount.select(values).unfold.groupCount.select(values).unfold")
         }
 
         @Override
         public Traversal<Vertex, Double> get_g_V_outE_weight_groupCount_selectXkeysX_unfold() {
-            TraversalScriptHelper.compute("g.V.outE.weight.groupCount.select(keys).unfold", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.outE.weight.groupCount.select(keys).unfold")
         }
 
         @Override
         public Traversal<Vertex, Double> get_g_V_outE_weight_groupCount_unfold_selectXkeysX_unfold() {
-            TraversalScriptHelper.compute("g.V.outE.weight.groupCount.unfold.select(keys).unfold", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.outE.weight.groupCount.unfold.select(keys).unfold")
         }
 
         @Override
         public Traversal<Vertex, Collection<Set<String>>> get_g_V_asXa_bX_out_asXcX_path_selectXkeysX() {
-            TraversalScriptHelper.compute("g.V.as('a','b').out.as('c').path.select(keys)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a','b').out.as('c').path.select(keys)")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_outXknowsX_asXbX_localXselectXa_bX_byXnameXX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').out('knows').as('b').local(select('a', 'b').by('name'))")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySumTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySumTest.groovy
index 9af7d09..f863398 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySumTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovySumTest.groovy
@@ -18,8 +18,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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,12 +31,12 @@
 
         @Override
         public Traversal<Vertex, Double> get_g_V_valuesXageX_sum() {
-            TraversalScriptHelper.compute("g.V.age.sum", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.age.sum")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_sumX() {
-            TraversalScriptHelper.compute("g.V().hasLabel('software').group().by('name').by(bothE().weight.sum)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().hasLabel('software').group().by('name').by(bothE().weight.sum)")
         }
     }
 }
\ No newline at end of file
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy
index 220951c..8f8058e 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy
@@ -19,7 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -32,17 +32,17 @@
 
         @Override
         public Traversal<Vertex, Edge> get_g_V_localXoutE_foldX_unfold() {
-            TraversalScriptHelper.compute("g.V.local(__.outE.fold).unfold", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.local(__.outE.fold).unfold")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_valueMap_unfold_mapXkeyX() {
-            TraversalScriptHelper.compute("g.V.valueMap.unfold.map { it.key }", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.valueMap.unfold.map { it.key }")
         }
 
         @Override
         Traversal<Vertex, String> get_g_VX1X_repeatXboth_simplePathX_untilXhasIdX6XX_path_byXnameX_unfold(Object v1Id, Object v6Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).repeat(__.both.simplePath).until(hasId(v6Id)).path.by('name').unfold", g, "v1Id", v1Id, "v6Id", v6Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).repeat(__.both.simplePath).until(hasId(v6Id)).path.by('name').unfold", "v1Id", v1Id, "v6Id", v6Id)
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyValueMapTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyValueMapTest.groovy
index 8b8f301..c3c20fa 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyValueMapTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyValueMapTest.groovy
@@ -18,8 +18,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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -30,17 +30,17 @@
     public static class Traversals extends ValueMapTest {
         @Override
         public Traversal<Vertex, Map<String, List>> get_g_V_valueMap() {
-            TraversalScriptHelper.compute("g.V.valueMap", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.valueMap");
         }
 
         @Override
         public Traversal<Vertex, Map<String, List>> get_g_V_valueMapXname_ageX() {
-            TraversalScriptHelper.compute("g.V.valueMap('name', 'age')", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.valueMap('name', 'age')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, List<String>>> get_g_VX1X_outXcreatedX_valueMap(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out('created').valueMap", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out('created').valueMap", "v1Id", v1Id)
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy
index 7b8974c..3c4f8b4 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy
@@ -19,7 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,150 +31,152 @@
     public static class Traversals extends VertexTest {
 
         @Override
-        public Traversal<Vertex, String> get_g_VXlistXv1_v2_v3XX_name() {
-            TraversalScriptHelper.compute("g.V(ids).name", g, "ids", [convertToVertex(graph, "marko"), convertToVertex(graph, "vadas"), convertToVertex(graph, "lop")])
+        public Traversal<Vertex, String> get_g_VXlistXv1_v2_v3XX_name(
+                final Vertex v1, final Vertex v2, final Vertex v3) {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(ids).name", "ids", [v1, v2, v3])
         }
 
         @Override
-        public Traversal<Vertex, String> get_g_VXlistX1_2_3XX_name() {
-            TraversalScriptHelper.compute("g.V(ids).name", g, "ids", [convertToVertexId(graph, "marko"), convertToVertexId(graph, "vadas"), convertToVertexId(graph, "lop")])
+        public Traversal<Vertex, String> get_g_VXlistX1_2_3XX_name(
+                final Object v1Id, final Object v2Id, final Object v3Id) {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(ids).name", "ids", [v1Id, v2Id, v3Id])
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V() {
-            TraversalScriptHelper.compute("g.V", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out", "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX2X_in(final Object v2Id) {
-            TraversalScriptHelper.compute("g.V(v2Id).in", g, "v2Id", v2Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v2Id).in", "v2Id", v2Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX4X_both(final Object v4Id) {
-            TraversalScriptHelper.compute("g.V(v4Id).both", g, "v4Id", v4Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v4Id).both", "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_E() {
-            TraversalScriptHelper.compute("g.E", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.E")
         }
 
         @Override
         public Traversal<Edge, Edge> get_g_EX11X(final Object e11Id) {
-            TraversalScriptHelper.compute("g.E(e11Id)", g, "e11Id", e11Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.E(e11Id)", "e11Id", e11Id)
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX1X_outE(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).outE", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).outE", "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX2X_inE(final Object v2Id) {
-            TraversalScriptHelper.compute("g.V(v2Id).inE", g, "v2Id", v2Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v2Id).inE", "v2Id", v2Id);
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX4X_bothE(final Object v4Id) {
-            TraversalScriptHelper.compute("g.V(v4Id).bothE", g, "v4Id", v4Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v4Id).bothE", "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, Edge> get_g_VX4X_bothEXcreatedX(final Object v4Id) {
-            TraversalScriptHelper.compute("g.V(v4Id).bothE('created')", g, "v4Id", v4Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v4Id).bothE('created')", "v4Id", v4Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outE_inV(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).outE.inV", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).outE.inV", "v1Id", v1Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX2X_inE_outV(final Object v2Id) {
-            TraversalScriptHelper.compute("g.V(v2Id).inE.outV", g, "v2Id", v2Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v2Id).inE.outV", "v2Id", v2Id);
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_outE_hasXweight_1X_outV() {
-            TraversalScriptHelper.compute("g.V.outE.has('weight', 1.0d).outV", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.outE.has('weight', 1.0d).outV")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_out_outE_inV_inE_inV_both_name() {
-            TraversalScriptHelper.compute("g.V.out.outE.inV.inE.inV.both.name", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out.outE.inV.inE.inV.both.name")
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_outEXknowsX_bothV_name(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).outE('knows').bothV.name", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).outE('knows').bothV.name", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXknowsX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out('knows')", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out('knows')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outXknows_createdX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out('knows', 'created')", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out('knows', 'created')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outEXknowsX_inV(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).outE('knows').inV()", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).outE('knows').inV()", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outEXknows_createdX_inV(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).outE('knows', 'created').inV", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).outE('knows', 'created').inV", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_out_out() {
-            TraversalScriptHelper.compute("g.V.out().out()", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out().out()")
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_out_out_out(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out.out.out", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out.out.out", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_out_name(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out.name", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out.name", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outE_otherV(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).outE.otherV", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).outE.otherV", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX4X_bothE_otherV(final Object v4Id) {
-            TraversalScriptHelper.compute("g.V(v4Id).bothE.otherV", g, "v4Id", v4Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v4Id).bothE.otherV", "v4Id", v4Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX4X_bothE_hasXweight_lt_1X_otherV(final Object v4Id) {
-            TraversalScriptHelper.compute("g.V(v4Id).bothE.has('weight', lt(1.0d)).otherV", g, "v4Id", v4Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v4Id).bothE.has('weight', lt(1.0d)).otherV", "v4Id", v4Id)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_to_XOUT_knowsX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).to(Direction.OUT, 'knows')", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).to(Direction.OUT, 'knows')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1_2_3_4X_name(
                 final Object v1Id, final Object v2Id, final Object v3Id, final Object v4Id) {
             g.V(v3Id).drop().iterate();
-            TraversalScriptHelper.compute("g.V(v1Id, v2Id, v4Id, v3Id).name", g, "v1Id", v1Id, "v2Id", v2Id, "v3Id", v3Id, "v4Id", v4Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id, v2Id, v4Id, v3Id).name", "v1Id", v1Id, "v2Id", v2Id, "v3Id", v3Id, "v4Id", v4Id)
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy
index 0211f05..d9d4a04 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyAggregateTest.groovy
@@ -20,7 +20,7 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -32,22 +32,22 @@
 
         @Override
         public Traversal<Vertex, List<String>> get_g_V_name_aggregateXxX_capXxX() {
-            TraversalScriptHelper.compute("g.V.name.aggregate('x').cap('x')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.name.aggregate('x').cap('x')")
         }
 
         @Override
         public Traversal<Vertex, List<String>> get_g_V_aggregateXxX_byXnameX_capXxX() {
-            TraversalScriptHelper.compute("g.V.aggregate('x').by('name').cap('x')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.aggregate('x').by('name').cap('x')")
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_V_out_aggregateXaX_path() {
-            TraversalScriptHelper.compute("g.V.out.aggregate('a').path", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out.aggregate('a').path")
         }
 
         @Override
         public Traversal<Vertex, Collection<Integer>> get_g_V_hasLabelXpersonX_aggregateXxX_byXageX_capXxX_asXyX_selectXyX() {
-            TraversalScriptHelper.compute("g.V.hasLabel('person').aggregate('x').by('age').cap('x').as('y').select('y')", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('person').aggregate('x').by('age').cap('x').as('y').select('y')")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyExplainTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyExplainTest.groovy
index 2f60161..c284e0f 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyExplainTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyExplainTest.groovy
@@ -29,7 +29,7 @@
     public static class Traversals extends ExplainTest {
 
         public TraversalExplanation get_g_V_outE_identity_inV_explain() {
-            g.V().outE().identity().inV().explain();
+            g.V().outE().identity().inV().explain()
         }
     }
 }
\ No newline at end of file
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupCountTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupCountTest.groovy
index fa90957..77ba1c1 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupCountTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupCountTest.groovy
@@ -19,7 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,56 +31,71 @@
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_groupCount_byXnameX() {
-            TraversalScriptHelper.compute("g.V.out('created').groupCount.by('name')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out('created').groupCount.by('name')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_groupCountXaX_byXnameX_capXaX() {
-            TraversalScriptHelper.compute("g.V.out('created').groupCount('a').by('name').cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out('created').groupCount('a').by('name').cap('a')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_name_groupCount() {
-            TraversalScriptHelper.compute("g.V.out('created').name.groupCount", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out('created').name.groupCount")
         }
 
         @Override
         public Traversal<Vertex, Map<Vertex, Long>> get_g_V_outXcreatedX_groupCountXxX_capXxX() {
-            TraversalScriptHelper.compute("g.V.out('created').groupCount('x').cap('x')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out('created').groupCount('x').cap('x')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_outXcreatedX_name_groupCountXaX_capXaX() {
-            TraversalScriptHelper.compute("g.V.out('created').name.groupCount('a').cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out('created').name.groupCount('a').cap('a')")
         }
 
         @Override
         public Traversal<Vertex, Map<Object, Long>> get_g_V_hasXnoX_groupCount() {
-            TraversalScriptHelper.compute("g.V.has('no').groupCount", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('no').groupCount")
         }
 
         @Override
         public Traversal<Vertex, Map<Object, Long>> get_g_V_hasXnoX_groupCountXaX_capXaX() {
-            TraversalScriptHelper.compute("g.V.has('no').groupCount('a').cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('no').groupCount('a').cap('a')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXout_groupCountXaX_byXnameXX_timesX2X_capXaX() {
-            TraversalScriptHelper.compute("g.V.repeat(__.out.groupCount('a').by('name')).times(2).cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(__.out.groupCount('a').by('name')).times(2).cap('a')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_unionXrepeatXoutX_timesX2X_groupCountXmX_byXlangXX__repeatXinX_timesX2X_groupCountXmX_byXnameXX_capXmX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
             g.V.union(
                     __.repeat(__.out).times(2).groupCount('m').by('lang'),
                     __.repeat(__.in).times(2).groupCount('m').by('name')).cap('m')
-            """, g)
+            """)
         }
 
         @Override
         public Traversal<Vertex, Map<Long, Long>> get_g_V_groupCount_byXbothE_countX() {
-            TraversalScriptHelper.compute("g.V.groupCount.by(bothE().count)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.groupCount.by(bothE().count)")
+        }
+
+        @Override
+        public Traversal<Vertex, Long> get_g_V_unionXoutXknowsX__outXcreatedX_inXcreatedXX_groupCount_selectXvaluesX_unfold_sum() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.union(out('knows'), out('created').in('created')).groupCount.select(values).unfold.sum")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<Vertex, Long>> get_g_V_both_groupCountXaX_out_capXaX_selectXkeysX_unfold_both_groupCountXaX_capXaX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.both.groupCount('a').out.cap('a').select(keys).unfold.both.groupCount('a').cap('a')")
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_both_groupCountXaX_byXlabelX_asXbX_barrier_whereXselectXaX_selectXsoftwareX_isXgtX2XXX_selectXbX_name() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.both.groupCount('a').by(label).as('b').barrier.where(select('a').select('software').is(gt(2))).select('b').name")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy
index 5a8a09e..13802b8 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTest.groovy
@@ -19,11 +19,9 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.constant
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
@@ -33,62 +31,92 @@
 
         @Override
         public Traversal<Vertex, Map<String, Collection<Vertex>>> get_g_V_group_byXnameX() {
-            TraversalScriptHelper.compute("g.V.group.by('name')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.group.by('name')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Collection<Vertex>>> get_g_V_group_byXnameX_by() {
-            TraversalScriptHelper.compute("g.V.group.by('name').by", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.group.by('name').by")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Collection<Vertex>>> get_g_V_groupXaX_byXnameX_capXaX() {
-            TraversalScriptHelper.compute("g.V.group('a').by('name').cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.group('a').by('name').cap('a')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Collection<String>>> get_g_V_hasXlangX_groupXaX_byXlangX_byXnameX_out_capXaX() {
-            TraversalScriptHelper.compute("g.V.has('lang').group('a').by('lang').by('name').out.cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('lang').group('a').by('lang').by('name').out.cap('a')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_hasXlangX_group_byXlangX_byXcountX() {
-            TraversalScriptHelper.compute("g.V.has('lang').group.by('lang').by(count())", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('lang').group.by('lang').by(count())")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXout_groupXaX_byXnameX_byXcountX_timesX2X_capXaX() {
-            TraversalScriptHelper.compute("g.V.repeat(__.out.group('a').by('name').by(count())).times(2).cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(__.out.group('a').by('name').by(count())).times(2).cap('a')")
         }
 
         @Override
         public Traversal<Vertex, Map<Long, Collection<String>>> get_g_V_group_byXoutE_countX_byXnameX() {
-            TraversalScriptHelper.compute("g.V.group.by(__.outE.count).by('name')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.group.by(__.outE.count).by('name')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Number>> get_g_V_groupXaX_byXlabelX_byXoutE_weight_sumX_capXaX() {
-            TraversalScriptHelper.compute("g.V.group('a').by(label).by(outE().weight.sum).cap('a')", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.group('a').by(label).by(outE().weight.sum).cap('a')");
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX() {
-            TraversalScriptHelper.compute("g.V.repeat(both('followedBy')).times(2).group.by('songType').by(count())", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(both('followedBy')).times(2).group.by('songType').by(count())")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX() {
-            TraversalScriptHelper.compute("g.V.repeat(both('followedBy')).times(2).group('a').by('songType').by(count()).cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(both('followedBy')).times(2).group('a').by('songType').by(count()).cap('a')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_group_byXname_substring_1X_byXconstantX1XX() {
-            TraversalScriptHelper.compute("g.V.group.by{it.name[0]}.by(constant(1l))", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.group.by{it.name[0]}.by(constant(1l))")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_groupXaX_byXname_substring_1X_byXconstantX1XX_capXaX() {
-            TraversalScriptHelper.compute("g.V.group('a').by{it.name[0]}.by(constant(1l)).cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.group('a').by{it.name[0]}.by(constant(1l)).cap('a')")
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_out_group_byXlabelX_selectXpersonX_unfold_outXcreatedX_name_limitX2X() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out.group.by(label).select('person').unfold.out('created').name.limit(2)")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Map<String, Long>>> get_g_V_hasLabelXsongX_group_byXnameX_byXproperties_groupCount_byXlabelXX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('song').group.by('name').by(__.properties().groupCount.by(label))")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Map<String, Long>>> get_g_V_hasLabelXsongX_groupXaX_byXnameX_byXproperties_groupCount_byXlabelXX_out_capXaX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.hasLabel('song').group('a').by('name').by(__.properties().groupCount.by(label)).out.cap('a')")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Map<Object, Object>>> get_g_V_repeatXunionXoutXknowsX_groupXaX_byXageX__outXcreatedX_groupXbX_byXnameX_byXcountXX_groupXaX_byXnameXX_timesX2X_capXa_bX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(union(out('knows').group('a').by('age'), out('created').group('b').by('name').by(count())).group('a').by('name')).times(2).cap('a', 'b')")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<Long, Map<String, List<Vertex>>>> get_g_V_group_byXbothE_countX_byXgroup_byXlabelXX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.group().by(bothE().count).by(group().by(label))")
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Map<String, Number>>> get_g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out('followedBy').group.by('songType').by(bothE().group.by(label).by(values('weight').sum))")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTestV3d0.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTestV3d0.groovy
index 61ba1a7..d8e9706 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTestV3d0.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyGroupTestV3d0.groovy
@@ -20,7 +20,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -33,42 +33,42 @@
 
         @Override
         public Traversal<Vertex, Map<String, Collection<Vertex>>> get_g_V_group_byXnameX() {
-            TraversalScriptHelper.compute("g.V.groupV3d0.by('name')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.groupV3d0.by('name')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Collection<Vertex>>> get_g_V_groupXaX_byXnameX_capXaX() {
-            TraversalScriptHelper.compute("g.V.groupV3d0('a').by('name').cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.groupV3d0('a').by('name').cap('a')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Collection<String>>> get_g_V_hasXlangX_groupXaX_byXlangX_byXnameX_out_capXaX() {
-            TraversalScriptHelper.compute("g.V.has('lang').groupV3d0('a').by('lang').by('name').out.cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('lang').groupV3d0('a').by('lang').by('name').out.cap('a')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_hasXlangX_group_byXlangX_byX1X_byXcountXlocalXX() {
-            TraversalScriptHelper.compute("g.V.has('lang').groupV3d0.by('lang').by(__.inject(1)).by(__.count(Scope.local))", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('lang').groupV3d0.by('lang').by(__.inject(1)).by(__.count(Scope.local))")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXout_groupXaX_byXnameX_by_byXcountXlocalXX_timesX2X_capXaX() {
-            TraversalScriptHelper.compute("g.V.repeat(__.out.groupV3d0('a').by('name').by.by(__.count(Scope.local))).times(2).cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(__.out.groupV3d0('a').by('name').by.by(__.count(Scope.local))).times(2).cap('a')")
         }
 
         @Override
         public Traversal<Vertex, Map<Long, Collection<String>>> get_g_V_group_byXoutE_countX_byXnameX() {
-            TraversalScriptHelper.compute("g.V.groupV3d0.by(__.outE.count).by('name')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.groupV3d0.by(__.outE.count).by('name')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byX1X_byXcountXlocalXX() {
-            TraversalScriptHelper.compute("g.V.repeat(both('followedBy')).times(2).groupV3d0.by('songType').by(inject(1)).by(count(local))", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(both('followedBy')).times(2).groupV3d0.by('songType').by(inject(1)).by(count(local))")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byX1X_byXcountXlocalXX_capXaX() {
-            TraversalScriptHelper.compute("g.V.repeat(both('followedBy')).times(2).groupV3d0('a').by('songType').by(inject(1)).by(count(local)).cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(both('followedBy')).times(2).groupV3d0('a').by('songType').by(inject(1)).by(count(local)).cap('a')")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyInjectTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyInjectTest.groovy
index bb7ddd3..fb8efb2 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyInjectTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyInjectTest.groovy
@@ -20,7 +20,7 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,12 +31,12 @@
     public static class Traversals extends InjectTest {
         @Override
         public Traversal<Vertex, String> get_g_VX1X_out_injectXv2X_name(final Object v1Id, final Object v2Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out.inject(g.V(v2Id).next()).name", g, "v1Id", v1Id, "v2Id", v2Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out.inject(g.V(v2Id).next()).name", "v1Id", v1Id, "v2Id", v2Id);
         }
 
         @Override
         public Traversal<Vertex, Path> get_g_VX1X_out_name_injectXdanielX_asXaX_mapXlengthX_path(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out().name.inject('daniel').as('a').map { it.length() }.path", g, "v1Id", v1Id);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out().name.inject('daniel').as('a').map { it.length() }.path", "v1Id", v1Id);
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy
deleted file mode 100644
index 1edbc54..0000000
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.sideEffect
-
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
-import org.apache.tinkerpop.gremlin.structure.Vertex
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public abstract class GroovyProfileTest {
-
-    public static class Traversals extends ProfileTest {
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_out_out_profile() {
-            g.V.out.out.profile() // locked traversals
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_profile() {
-            TraversalScriptHelper.compute("g.V.repeat(__.both()).times(3).profile()", g);
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_whereXinXcreatedX_count_isX1XX_valuesXnameX_profile() {
-            TraversalScriptHelper.compute("g.V().where(__.in('created').count().is(1l)).values('name').profile()", g);
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile() {
-            TraversalScriptHelper.compute("g.V().sideEffect{Thread.sleep(10)}.sideEffect{Thread.sleep(5)}.profile()", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_byXnameX_profile() {
-            TraversalScriptHelper.compute("g.V.match(__.as('a').out('created').as('b'), __.as('b').in.count.is(eq(1))).select('a', 'b').by('name').profile", g)
-        }
-    }
-}
-
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
index 828f664..d48416a 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySackTest.groovy
@@ -19,7 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,48 +31,48 @@
 
         @Override
         public Traversal<Vertex, String> get_g_withSackXhellowX_V_outE_sackXassignX_byXlabelX_inV_sack() {
-            TraversalScriptHelper.compute("g.withSack('hello').V.outE.sack(assign).by(label).inV.sack", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSack('hello').V.outE.sack(assign).by(label).inV.sack")
         }
 
         @Override
         public Traversal<Vertex, Double> get_g_withSackX0X_V_outE_sackXsumX_byXweightX_inV_sack_sum() {
-            TraversalScriptHelper.compute("g.withSack(0.0f).V.outE.sack(sum).by('weight').inV.sack.sum()", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSack(0.0f).V.outE.sack(sum).by('weight').inV.sack.sum()")
         }
 
         @Override
         public Traversal<Vertex, Double> get_g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack() {
-            TraversalScriptHelper.compute("g.withSack(0.0f).V.repeat(__.outE.sack(sum).by('weight').inV).times(2).sack()", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSack(0.0f).V.repeat(__.outE.sack(sum).by('weight').inV).times(2).sack()")
         }
 
         @Override
         public Traversal<Vertex, Double> get_g_withSackX0X_V_outE_sackXsum_weightX_inV_sack_sum() {
-            TraversalScriptHelper.compute("g.withSack(0.0f).V().outE.sack(sum, 'weight').inV.sack.sum()", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSack(0.0f).V().outE.sack(sum, 'weight').inV.sack.sum()")
         }
 
         @Override
         public Traversal<Vertex, Double> get_g_withSackX0X_V_repeatXoutE_sackXsum_weightX_inVX_timesX2X_sack() {
-            TraversalScriptHelper.compute("g.withSack(0.0f).V.repeat(__.outE.sack(sum, 'weight').inV).times(2).sack", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSack(0.0f).V.repeat(__.outE.sack(sum, 'weight').inV).times(2).sack")
         }
 
         @Override
         public Traversal<Vertex, Map> get_g_withSackXmap__map_cloneX_V_out_out_sackXmap_a_nameX_sack() {
-            TraversalScriptHelper.compute("g.withSack{[:]}{ it.clone() }.V.out().out().sack { m, v -> m['a'] = v.name; m }.sack()", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSack{[:]}{ it.clone() }.V.out().out().sack { m, v -> m['a'] = v.name; m }.sack()")
         }
 
         @Override
         public Traversal<Vertex, Double> get_g_withSackX1_sumX_VX1X_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.withSack(1.0d,sum).V(v1Id).local(out('knows').barrier(normSack)).in('knows').barrier.sack", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSack(1.0d,sum).V(v1Id).local(out('knows').barrier(normSack)).in('knows').barrier.sack", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_withBulkXfalseX_withSackX1_sumX_V_out_barrier_sack() {
-            TraversalScriptHelper.compute("g.withBulk(false).withSack(1, sum).V.out.barrier.sack", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withBulk(false).withSack(1, sum).V.out.barrier.sack")
         }
 
         @Override
         Traversal<Vertex, BigDecimal> get_g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack() {
-            TraversalScriptHelper.compute("g.withSack(BigInteger.TEN.pow(1000), assign).V.local(out('knows').barrier(normSack)).in('knows').barrier.sack", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSack(BigInteger.TEN.pow(1000), assign).V.local(out('knows').barrier(normSack)).in('knows').barrier.sack")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectCapTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectCapTest.groovy
index e45d711..ea69e2f 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectCapTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectCapTest.groovy
@@ -19,7 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -30,16 +30,16 @@
     public static class Traversals extends SideEffectCapTest {
         @Override
         public Traversal<Vertex, Map<String, Long>> get_g_V_hasXageX_groupCountXaX_byXnameX_out_capXaX() {
-            TraversalScriptHelper.compute("g.V.has('age').groupCount('a').by('name').out.cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.has('age').groupCount('a').by('name').out.cap('a')")
         }
 
         @Override
         public Traversal<Vertex, Map<String, Map<Object, Long>>> get_g_V_chooseXlabel_person__age_groupCountXaX__name_groupCountXbXX_capXa_bX() {
-            TraversalScriptHelper.compute("""
+            new ScriptTraversal<>(g, "gremlin-groovy", """
             g.V.choose(__.has(T.label, 'person'),
                     __.age.groupCount('a'),
                     __.values("name").groupCount('b')).cap('a', 'b')
-            """, g)
+            """)
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectTest.groovy
index f26b95f..03e1590 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySideEffectTest.groovy
@@ -18,8 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,24 +31,53 @@
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_sideEffectXstore_aX_name(final Object v1Id) {
-            TraversalScriptHelper.compute("""g.withSideEffect('a') { [] }.V(v1Id).sideEffect {
+            new ScriptTraversal<>(g, "gremlin-groovy", """g.withSideEffect('a') { [] }.V(v1Id).sideEffect {
                 it.sideEffects('a').clear();
                 it.sideEffects('a').add(it.get());
-            }.name""", g, "v1Id", v1Id)
+            }.name""", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_out_sideEffectXincr_cX_name(final Object v1Id) {
-            TraversalScriptHelper.compute("""g.withSideEffect('c') { [0] }.V(v1Id).out.sideEffect {
+            new ScriptTraversal<>(g, "gremlin-groovy", """g.withSideEffect('c') { [0] }.V(v1Id).out.sideEffect {
                 temp = it.sideEffects('c')[0];
                 it.sideEffects('c').clear();
                 it.sideEffects('c').add(temp + 1);
-            }.name""", g, "v1Id", v1Id)
+            }.name""", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_VX1X_out_sideEffectXX_name(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out().sideEffect {}.name", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out().sideEffect {}.name", "v1Id", v1Id)
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Long>> get_g_withSideEffectXa__linkedhashmapX_V_out_groupCountXaX_byXlabelX_out_out_capXaX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSideEffect('a'){[:] as LinkedHashMap}.V.out.groupCount('a').by(label).out.out.cap('a')");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Long>> get_g_withSideEffectsXa__linkedhashmapX_withSideEffectXb__arraylist__addAllX_withSideEffectXc__arrayList__addAllX_V_groupXaX_byXlabelX_byXcountX_sideEffectXb__1_2_3X_out_out_out_sideEffectXc__bob_danielX_capXaX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", """
+                   g.withSideEffect('a'){[:] as LinkedHashMap}
+                    .withSideEffect('b',{[:] as ArrayList},addAll)
+                    .withSideEffect('c',{[:] as ArrayList},addAll)
+                    .V.group('a').by(label).by(count())
+                    .sideEffect{it.sideEffects('b', [1,2,3] as LinkedList)}
+                    .out.out.out
+                    .sideEffect{it.sideEffect('c',['bob','daniel'] as LinkedList)}
+                    .cap('a');
+                """);
+        }
+
+        @Override
+        public Traversal<Vertex, Integer> get_g_withSideEffectXa_0_sumX_V_out_sideEffectXsideEffectsXa_bulkXX_capXaX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSideEffect('a', 0, sum).V.out.sideEffect{it.sideEffects('a', it.bulk() as int)}.cap('a')")
+        }
+
+        @Override
+        public Traversal<Vertex, Integer> get_g_withSideEffectXa_0X_V_out_sideEffectXsideEffectsXa_1XX_capXaX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSideEffect('a', 0).V.out.sideEffect{it.sideEffects('a', 1)}.cap('a')")
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyStoreTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyStoreTest.groovy
index 0a9270a..24bc1ea 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyStoreTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyStoreTest.groovy
@@ -18,8 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -31,23 +31,23 @@
 
         @Override
         public Traversal<Vertex, Collection> get_g_V_storeXaX_byXnameX_out_capXaX() {
-            TraversalScriptHelper.compute("g.V().store('a').by('name').out().cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V().store('a').by('name').out().cap('a')")
         }
 
         @Override
         public Traversal<Vertex, Collection> get_g_VX1X_storeXaX_byXnameX_out_storeXaX_byXnameX_name_capXaX(
                 final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).store('a').by('name').out().store('a').by('name').name.cap('a')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).store('a').by('name').out().store('a').by('name').name.cap('a')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Set<String>> get_g_V_withSideEffectXa_setX_both_name_storeXaX_capXaX() {
-            TraversalScriptHelper.compute("g.withSideEffect('a'){[] as Set}.V.both.name.store('a').cap('a')", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSideEffect('a'){[] as Set}.V.both.name.store('a').cap('a')");
         }
 
         @Override
         public Traversal<Vertex, Collection> get_g_V_storeXaX_byXoutEXcreatedX_countX_out_out_storeXaX_byXinEXcreatedX_weight_sumX_capXaX() {
-            TraversalScriptHelper.compute("g.V.store('a').by(__.outE('created').count).out.out.store('a').by(__.inE('created').weight.sum).cap('a')", g);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.store('a').by(__.outE('created').count).out.out.store('a').by(__.inE('created').weight.sum).cap('a')");
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySubgraphTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySubgraphTest.groovy
index c3ae74a..7e3765a 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySubgraphTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovySubgraphTest.groovy
@@ -18,8 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect
 
-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.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Graph
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -33,18 +33,18 @@
         @Override
         public Traversal<Vertex, Graph> get_g_V_withSideEffectXsgX_outEXknowsX_subgraphXsgX_name_capXsgX(
                 final Object v1Id, final Graph subgraph) {
-            TraversalScriptHelper.compute("g.withSideEffect('sg') { subgraph }.V(v1Id).outE('knows').subgraph('sg').name.cap('sg')", g, "v1Id", v1Id, "subgraph", subgraph)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSideEffect('sg') { subgraph }.V(v1Id).outE('knows').subgraph('sg').name.cap('sg')", "v1Id", v1Id, "subgraph", subgraph)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_withSideEffectXsgX_repeatXbothEXcreatedX_subgraphXsgX_outVX_timesX5X_name_dedup(
                 final Graph subgraph) {
-            TraversalScriptHelper.compute("g.withSideEffect('sg') { subgraph }.V.repeat(__.bothE('created').subgraph('sg').outV).times(5).name.dedup", g, "subgraph", subgraph)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSideEffect('sg') { subgraph }.V.repeat(__.bothE('created').subgraph('sg').outV).times(5).name.dedup", "subgraph", subgraph)
         }
 
         @Override
         public Traversal<Vertex, Vertex> get_g_withSideEffectXsgX_V_hasXname_danielX_outE_subgraphXsgX_inV(final Graph subgraph) {
-            TraversalScriptHelper.compute("g.withSideEffect('sg') { subgraph }.V.has('name','daniel').outE.subgraph('sg').inV", g, "subgraph", subgraph);
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSideEffect('sg') { subgraph }.V.has('name','daniel').outE.subgraph('sg').inV", "subgraph", subgraph)
         }
     }
 }
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyTreeTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyTreeTest.groovy
index 69146f3..f1a6f83 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyTreeTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyTreeTest.groovy
@@ -20,7 +20,7 @@
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -32,37 +32,37 @@
 
         @Override
         public Traversal<Vertex, Tree> get_g_V_out_out_tree_byXidX() {
-            TraversalScriptHelper.compute("g.V.out.out.tree.by(id)", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out.out.tree.by(id)")
         }
 
         @Override
         public Traversal<Vertex, Tree> get_g_V_out_out_treeXaX_byXidX_capXaX() {
-            TraversalScriptHelper.compute("g.V.out.out.tree('a').by(id).cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out.out.tree('a').by(id).cap('a')")
         }
 
         @Override
         public Traversal<Vertex, Tree> get_g_V_out_out_tree() {
-            TraversalScriptHelper.compute("g.V.out.out.tree()", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out.out.tree()")
         }
 
         @Override
         public Traversal<Vertex, Tree> get_g_V_out_out_treeXaX_capXaX() {
-            TraversalScriptHelper.compute("g.V.out.out.tree('a').cap('a')", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out.out.tree('a').cap('a')")
         }
 
         @Override
         public Traversal<Vertex, Tree> get_g_VX1X_out_out_treeXaX_byXnameX_both_both_capXaX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out.out.tree('a').by('name').both.both.cap('a')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out.out.tree('a').by('name').both.both.cap('a')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Tree> get_g_VX1X_out_out_tree_byXnameX(final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).out.out.tree.by('name')", g, "v1Id", v1Id)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V(v1Id).out.out.tree.by('name')", "v1Id", v1Id)
         }
 
         @Override
         public Traversal<Vertex, Tree> get_g_V_out_out_out_tree() {
-            TraversalScriptHelper.compute("g.V.out.out.out.tree", g)
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.out.out.out.tree")
         }
 
     }
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/GroovyEnvironmentPerformanceSuite.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/GroovyEnvironmentPerformanceSuite.java
index 81ffdb0..d6f62ed 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/GroovyEnvironmentPerformanceSuite.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/GroovyEnvironmentPerformanceSuite.java
@@ -48,7 +48,9 @@
  * For more information on the usage of this suite, please see {@link StructureStandardSuite}.
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.2.1, replaced by gremlin-benchmark.
  */
+@Deprecated
 public class GroovyEnvironmentPerformanceSuite extends AbstractGremlinSuite {
 
     /**
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorOverGraphTest.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorOverGraphTest.java
index 4ee3bf2..ca700a5 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorOverGraphTest.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorOverGraphTest.java
@@ -52,7 +52,7 @@
         final GremlinExecutor gremlinExecutor = GremlinExecutor.build()
                 .afterSuccess(b -> {
                     final GraphTraversalSource g = (GraphTraversalSource) b.get("g");
-                    if (g.getGraph().get().features().graph().supportsTransactions())
+                    if (g.getGraph().features().graph().supportsTransactions())
                         g.tx().commit();
                 })
                 .executorService(evalExecutor).create();
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorPerformanceTest.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorPerformanceTest.java
index 5dba9bb..c8517fb 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorPerformanceTest.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorPerformanceTest.java
@@ -43,10 +43,12 @@
 
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.2.1, replaced by gremlin-benchmark.
  */
 @AxisRange(min = 0, max = 1)
 @BenchmarkMethodChart(filePrefix = "gremlin-executor")
 @BenchmarkHistoryChart(labelWith = LabelType.CUSTOM_KEY, maxRuns = 20, filePrefix = "hx-gremlin-executor")
+@Deprecated
 public class GremlinExecutorPerformanceTest extends AbstractGremlinTest {
 
     private static final Random rand = new Random(9585834534l);
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
index 1f3f108..e411c1e 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
@@ -23,12 +23,9 @@
 import org.apache.tinkerpop.gremlin.groovy.loaders.SugarLoader;
 import org.apache.tinkerpop.gremlin.groovy.util.SugarTestHelper;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
-import org.apache.tinkerpop.gremlin.process.computer.bulkdumping.BulkDumperVertexProgramTest;
-import org.apache.tinkerpop.gremlin.process.computer.bulkloading.BulkLoaderVertexProgramTest;
-import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.PeerPressureVertexProgramTest;
-import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgramTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyBranchTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyChooseTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyOptionalTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyLocalTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyRepeatTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyUnionTest;
@@ -61,7 +58,12 @@
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMeanTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMinTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyOrderTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyPageRankTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyPathTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyPeerPressureTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyProfileTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyProgramTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyProjectTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyPropertiesTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovySelectTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovySumTest;
@@ -74,7 +76,6 @@
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTestV3d0;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyInjectTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyProfileTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovySackTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovySideEffectCapTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovySideEffectTest;
@@ -108,6 +109,7 @@
             //branch
             GroovyBranchTest.Traversals.class,
             GroovyChooseTest.Traversals.class,
+            GroovyOptionalTest.Traversals.class,
             GroovyLocalTest.Traversals.class,
             GroovyRepeatTest.Traversals.class,
             GroovyUnionTest.Traversals.class,
@@ -144,7 +146,12 @@
             GroovyMeanTest.Traversals.class,
             GroovyMinTest.Traversals.class,
             GroovyOrderTest.Traversals.class,
+            GroovyPageRankTest.Traversals.class,
             GroovyPathTest.Traversals.class,
+            GroovyPeerPressureTest.Traversals.class,
+            GroovyProfileTest.Traversals.class,
+            GroovyProjectTest.Traversals.class,
+            GroovyProgramTest.Traversals.class,
             GroovyPropertiesTest.Traversals.class,
             GroovySelectTest.Traversals.class,
             GroovySumTest.Traversals.class,
@@ -167,12 +174,6 @@
             GroovyStoreTest.Traversals.class,
             GroovySubgraphTest.Traversals.class,
             GroovyTreeTest.Traversals.class,
-
-            // algorithms
-            PageRankVertexProgramTest.class,
-            PeerPressureVertexProgramTest.class,
-            BulkLoaderVertexProgramTest.class,
-            BulkDumperVertexProgramTest.class,
     };
 
     public GroovyProcessComputerSuite(final Class<?> klass, final RunnerBuilder builder) throws InitializationError {
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
index e57c1c6..edd06f3 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
@@ -23,9 +23,9 @@
 import org.apache.tinkerpop.gremlin.groovy.loaders.SugarLoader;
 import org.apache.tinkerpop.gremlin.groovy.util.SugarTestHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.CoreTraversalTest;
-import org.apache.tinkerpop.gremlin.process.traversal.GroovyTraversalSideEffectsTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyBranchTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyChooseTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyOptionalTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyLocalTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyRepeatTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.GroovyUnionTest;
@@ -61,6 +61,8 @@
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMinTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyOrderTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyPathTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyProfileTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyProjectTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyPropertiesTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovySelectTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovySumTest;
@@ -73,7 +75,6 @@
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTestV3d0;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyInjectTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyProfileTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovySackTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovySideEffectCapTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovySideEffectTest;
@@ -104,6 +105,7 @@
             // branch
             GroovyBranchTest.Traversals.class,
             GroovyChooseTest.Traversals.class,
+            GroovyOptionalTest.Traversals.class,
             GroovyLocalTest.Traversals.class,
             GroovyRepeatTest.Traversals.class,
             GroovyUnionTest.Traversals.class,
@@ -141,6 +143,8 @@
             GroovyMeanTest.Traversals.class,
             GroovyMinTest.Traversals.class,
             GroovyOrderTest.Traversals.class,
+            GroovyProfileTest.Traversals.class,
+            GroovyProjectTest.Traversals.class,
             GroovyPathTest.Traversals.class,
             GroovyPropertiesTest.Traversals.class,
             GroovySelectTest.Traversals.class,
@@ -155,7 +159,6 @@
             GroovyGroupTestV3d0.Traversals.class,
             GroovyGroupCountTest.Traversals.class,
             GroovyInjectTest.Traversals.class,
-            GroovyProfileTest.Traversals.class,
             GroovySackTest.Traversals.class,
             GroovySideEffectCapTest.Traversals.class,
             GroovySideEffectTest.Traversals.class,
@@ -163,9 +166,6 @@
             GroovySubgraphTest.Traversals.class,
             GroovyTreeTest.Traversals.class,
 
-            // util
-            GroovyTraversalSideEffectsTest.Traversals.class,
-
             // compliance
             CoreTraversalTest.class,
     };
diff --git a/gremlin-groovy/pom.xml b/gremlin-groovy/pom.xml
index f5950ba..3e37e17 100644
--- a/gremlin-groovy/pom.xml
+++ b/gremlin-groovy/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.4-SNAPSHOT</version>
+        <version>3.2.2-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-groovy</artifactId>
     <name>Apache TinkerPop :: Gremlin Groovy</name>
diff --git a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/StepLoader.groovy b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/StepLoader.groovy
index 2b4d229..b1cd97f 100644
--- a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/StepLoader.groovy
+++ b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/StepLoader.groovy
@@ -18,9 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.groovy.loaders
 
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource
-import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier
 
 import java.util.function.BinaryOperator
 import java.util.function.Function
@@ -38,42 +37,31 @@
             return ((GraphTraversal) delegate).by(1 == closure.getMaximumNumberOfParameters() ? closure as Function : closure as Comparator);
         }
 
-        GraphTraversalSource.metaClass.withSideEffect = { final String key, final Object object ->
-            return ((GraphTraversalSource) delegate).withSideEffect(key, object instanceof Closure ? ((Closure) object) as Supplier : new ConstantSupplier<>(object));
+        TraversalSource.metaClass.withSideEffect = {
+            final String key, final Closure initialValue, final Closure reducer ->
+                return ((TraversalSource) delegate).withSideEffect(key, initialValue as Supplier, reducer as BinaryOperator);
         }
 
-        GraphTraversalSource.metaClass.withSack = { final Closure closure ->
-            return ((GraphTraversalSource) delegate).withSack(closure as Supplier);
+        TraversalSource.metaClass.withSideEffect = {
+            final String key, final Closure initialValue, final BinaryOperator reducer ->
+                return ((TraversalSource) delegate).withSideEffect(key, initialValue as Supplier, reducer);
         }
 
-        GraphTraversalSource.metaClass.withSack = { final Closure closure, final Closure splitOrMergeOperator ->
-            return ((GraphTraversalSource) delegate).withSack(closure as Supplier, splitOrMergeOperator.getMaximumNumberOfParameters() == 1 ? splitOrMergeOperator as UnaryOperator : splitOrMergeOperator as BinaryOperator);
+        TraversalSource.metaClass.withSideEffect = { final String key, final Closure object ->
+            return ((TraversalSource) delegate).withSideEffect(key, object as Supplier);
         }
 
-        GraphTraversalSource.metaClass.withSack = {
+        TraversalSource.metaClass.withSack = { final Closure closure ->
+            return ((TraversalSource) delegate).withSack(closure as Supplier);
+        }
+
+        TraversalSource.metaClass.withSack = { final Closure closure, final Closure splitOrMergeOperator ->
+            return ((TraversalSource) delegate).withSack(closure as Supplier, splitOrMergeOperator.getMaximumNumberOfParameters() == 1 ? splitOrMergeOperator as UnaryOperator : splitOrMergeOperator as BinaryOperator);
+        }
+
+        TraversalSource.metaClass.withSack = {
             final Closure closure, final Closure splitOperator, final Closure mergeOperator ->
-                return ((GraphTraversalSource) delegate).withSack(closure as Supplier, splitOperator as UnaryOperator, mergeOperator as BinaryOperator);
-        }
-
-        ///////////////////
-
-        GraphTraversalSource.GraphTraversalSourceStub.metaClass.withSideEffect = {
-            final String key, final Object object ->
-                return (((GraphTraversalSource.GraphTraversalSourceStub) delegate).withSideEffect(key, object instanceof Closure ? ((Closure) object) as Supplier : new ConstantSupplier<>(object)));
-        }
-
-        GraphTraversalSource.GraphTraversalSourceStub.metaClass.withSack = { final Closure closure ->
-            return ((GraphTraversalSource.GraphTraversalSourceStub) delegate).withSack(closure as Supplier);
-        }
-
-        GraphTraversalSource.GraphTraversalSourceStub.metaClass.withSack = {
-            final Closure closure, final Closure splitOrMergeOperator ->
-                return ((GraphTraversalSource.GraphTraversalSourceStub) delegate).withSack(closure as Supplier, splitOrMergeOperator.getMaximumNumberOfParameters() == 1 ? splitOrMergeOperator as UnaryOperator : splitOrMergeOperator as BinaryOperator);
-        }
-
-        GraphTraversalSource.GraphTraversalSourceStub.metaClass.withSack = {
-            final Closure closure, final Closure splitOperator, Closure mergeOperator ->
-                return ((GraphTraversalSource.GraphTraversalSourceStub) delegate).withSack(closure as Supplier, splitOperator as UnaryOperator, mergeOperator as BinaryOperator);
+                return ((TraversalSource) delegate).withSack(closure as Supplier, splitOperator as UnaryOperator, mergeOperator as BinaryOperator);
         }
     }
 }
diff --git a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoader.groovy b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoader.groovy
index 58e52ea..bfc877e 100644
--- a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoader.groovy
+++ b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoader.groovy
@@ -32,8 +32,6 @@
 class SugarLoader {
 
     private static final String NAME = "name";
-    //private static final String FROM = "from";
-    //private static final String SELECT = "select";
 
     public static void load() {
 
@@ -46,11 +44,9 @@
         Traverser.metaClass.methodMissing = { final String name, final def args ->
             ((Traverser) delegate).get()."$name"(*args);
         }
+
         // g.V.age
         GraphTraversal.metaClass.methodMissing = { final String name, final def args ->
-            //if (name.toLowerCase().equals(FROM))
-            //    return ((GraphTraversal.Admin) args[0]).addStep(((GraphTraversal.Admin) delegate).getSteps()[0]);
-            //else
             return ((GraphTraversal) delegate).values(name);
         }
 
@@ -58,10 +54,6 @@
             GraphTraversalSourceCategory.get((GraphTraversalSource) delegate, key);
         }
 
-        GraphTraversalSource.GraphTraversalSourceStub.metaClass.getProperty = { final String key ->
-            GraphTraversalSourceStubCategory.get((GraphTraversalSource.GraphTraversalSourceStub) delegate, key);
-        }
-
         // __.age and __.out
         __.metaClass.static.propertyMissing = { final String name ->
             return null != __.metaClass.getMetaMethod(name) ? __."$name"() : __.values(name);
@@ -78,15 +70,8 @@
                 return __."$name";
         }*/
 
-        // select x,y from ...
-        /*Object.metaClass.methodMissing = { final String name, final def args ->
-            if (name.toLowerCase().equals(SELECT)) return __.select(*args)
-            throw new MissingMethodException(name, delegate.getClass(), args);
-        }*/
-
         Traverser.metaClass.mixin(TraverserCategory.class);
         GraphTraversalSource.metaClass.mixin(GraphTraversalSourceCategory.class);
-        GraphTraversalSource.GraphTraversalSourceStub.metaClass.mixin(GraphTraversalSourceStubCategory.class);
         GraphTraversal.metaClass.mixin(GraphTraversalCategory.class);
         Vertex.metaClass.mixin(VertexCategory.class);
         Edge.metaClass.mixin(ElementCategory.class);
@@ -167,26 +152,6 @@
         }
     }
 
-    public static class GraphTraversalSourceStubCategory {
-
-        private static final String V = "V";
-        private static final String E = "E";
-
-        public static final get(
-                final GraphTraversalSource.GraphTraversalSourceStub graphTraversalSourceStub, final String key) {
-            if (key.equals(V))
-                return graphTraversalSourceStub.V();
-            else if (key.equals(E))
-                return graphTraversalSourceStub.E();
-            else
-                throw new UnsupportedOperationException("The provided key does not reference a known method: " + key);
-        }
-
-        /*public String toString() {
-            return StringFactory.traversalSourceString(this.metaClass.owner);
-        }*/
-    }
-
     public static class GraphTraversalCategory {
 
         public static final get(final GraphTraversal graphTraversal, final String key) {
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java
index f5bcde8..a6d3609 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java
@@ -23,13 +23,16 @@
 import org.apache.commons.configuration.Configuration;
 import org.apache.tinkerpop.gremlin.groovy.function.GFunction;
 import org.apache.tinkerpop.gremlin.groovy.loaders.GremlinLoader;
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.bulkdumping.BulkDumperVertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.bulkloading.BulkLoaderVertexProgram;
 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.structure.Column;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.GraphFilterStrategy;
+import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
 import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.process.traversal.P;
@@ -48,6 +51,7 @@
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IdentityRemovalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
+import org.apache.tinkerpop.gremlin.structure.Column;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.T;
@@ -87,6 +91,7 @@
         imports.add(Graph.class.getPackage().getName() + DOT_STAR);
         imports.add(GraphFactory.class.getPackage().getName() + DOT_STAR);
         imports.add(DetachedElement.class.getPackage().getName() + DOT_STAR);
+        imports.add(RemoteGraph.class.getPackage().getName() + DOT_STAR);
         staticImports.add(T.class.getCanonicalName() + DOT_STAR);
         staticImports.add(Direction.class.getCanonicalName() + DOT_STAR);
         staticImports.add(VertexProperty.Cardinality.class.getCanonicalName() + DOT_STAR);
@@ -100,6 +105,8 @@
         imports.add(IdentityRemovalStrategy.class.getPackage().getName() + DOT_STAR); // optimization strategies
         imports.add(ProfileStrategy.class.getPackage().getName() + DOT_STAR);         // finalization strategies
         imports.add(ReadOnlyStrategy.class.getPackage().getName() + DOT_STAR);        // verification strategies
+        imports.add(VertexProgramStrategy.class.getPackage().getName() + DOT_STAR);   // computer decoration strategies
+        imports.add(GraphFilterStrategy.class.getPackage().getName() + DOT_STAR);     // computer optimization strategies
         imports.add(Event.class.getPackage().getName() + DOT_STAR);                   // eventing
 
         staticImports.add(P.class.getCanonicalName() + DOT_STAR);
@@ -121,6 +128,7 @@
         imports.add(GFunction.class.getPackage().getName() + DOT_STAR);
         imports.add(TraversalMetrics.class.getPackage().getName() + DOT_STAR);
         staticImports.add(TimeUtil.class.getCanonicalName() + DOT_STAR);
+        staticImports.add(Computer.class.getCanonicalName() + DOT_STAR);
 
         // IO packages
         imports.add(GraphReader.class.getPackage().getName() + DOT_STAR);
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/ScriptEngines.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/ScriptEngines.java
index 1113eb5..3d54bea 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/ScriptEngines.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/ScriptEngines.java
@@ -23,6 +23,7 @@
 import org.apache.tinkerpop.gremlin.groovy.jsr223.DependencyManager;
 import org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine;
 import org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngineFactory;
+import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.ConfigurationCustomizerProvider;
 import org.apache.tinkerpop.gremlin.groovy.plugin.GremlinPlugin;
 import org.apache.tinkerpop.gremlin.groovy.plugin.IllegalEnvironmentException;
 import org.slf4j.Logger;
@@ -382,8 +383,17 @@
 
                         final Class<?>[] argClasses = new Class<?>[args.length];
                         Stream.of(args).map(a -> a.getClass()).collect(Collectors.toList()).toArray(argClasses);
-                        final Constructor constructor = providerClass.getConstructor(argClasses);
-                        providers.add((CompilerCustomizerProvider) constructor.newInstance(args));
+
+                        final Optional<Constructor> constructor = Stream.of(providerClass.getConstructors())
+                                .filter(c -> c.getParameterCount() == argClasses.length &&
+                                             allMatch(c.getParameterTypes(), argClasses))
+                                .findFirst();
+
+                        if (constructor.isPresent()) providers.add((CompilerCustomizerProvider)
+                                constructor.get().newInstance(args));
+                        else
+                            throw new IllegalStateException(String.format("Could not configure %s with the supplied options %s",
+                                    ConfigurationCustomizerProvider.class.getName(), Arrays.asList(args)));
                     } else {
                         providers.add((CompilerCustomizerProvider) providerClass.newInstance());
                     }
@@ -400,6 +410,20 @@
     }
 
     /**
+     * Determine if the constructor argument types match the arg types that are going to be passed in to that
+     * constructor.
+     */
+    private static boolean allMatch(final Class<?>[] constructorArgTypes, final Class<?>[] argTypes) {
+        for (int ix = 0; ix < constructorArgTypes.length; ix++) {
+            if (!constructorArgTypes[ix].isAssignableFrom(argTypes[ix])) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
      * Takes the bindings from a request for eval and merges them with the {@code ENGINE_SCOPE} bindings.
      */
     private static Bindings mergeBindings(final Bindings bindings, final ScriptEngine engine) {
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
index 23240cb..0069103 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
@@ -23,6 +23,7 @@
 import org.apache.tinkerpop.gremlin.groovy.EmptyImportCustomizerProvider;
 import org.apache.tinkerpop.gremlin.groovy.ImportCustomizerProvider;
 import org.apache.tinkerpop.gremlin.groovy.NoImportCustomizerProvider;
+import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.ConfigurationCustomizerProvider;
 import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.InterpreterModeCustomizerProvider;
 import org.apache.tinkerpop.gremlin.groovy.loaders.GremlinLoader;
 import org.apache.tinkerpop.gremlin.groovy.plugin.Artifact;
@@ -610,7 +611,12 @@
         final CompilerConfiguration conf = new CompilerConfiguration();
         conf.addCompilationCustomizers(this.importCustomizerProvider.create());
 
-        customizerProviders.forEach(p -> conf.addCompilationCustomizers(p.create()));
+        // ConfigurationCustomizerProvider is treated separately
+        customizerProviders.stream().filter(cp -> !(cp instanceof ConfigurationCustomizerProvider))
+                .forEach(p -> conf.addCompilationCustomizers(p.create()));
+
+        customizerProviders.stream().filter(cp -> cp instanceof ConfigurationCustomizerProvider).findFirst()
+                .ifPresent(cp -> ((ConfigurationCustomizerProvider) cp).applyCustomization(conf));
 
         this.loader = new GremlinGroovyClassLoader(getParentLoader(), conf);
     }
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/ScriptExecutor.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/ScriptExecutor.java
index 1d30a5d..8b0b7fd 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/ScriptExecutor.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/ScriptExecutor.java
@@ -33,7 +33,9 @@
  * @author Pavel A. Yaskevich
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.2.1, replaced by direct execution via gremlin.sh
  */
+@Deprecated
 public class ScriptExecutor {
     public static void main(final String[] arguments) throws IOException {
         if (arguments.length == 0) {
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/ConfigurationCustomizerProvider.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/ConfigurationCustomizerProvider.java
new file mode 100644
index 0000000..ba9855c
--- /dev/null
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/ConfigurationCustomizerProvider.java
@@ -0,0 +1,83 @@
+/*
+ * 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.groovy.jsr223.customizer;
+
+import org.apache.tinkerpop.gremlin.groovy.CompilerCustomizerProvider;
+import org.apache.tinkerpop.gremlin.structure.util.ElementHelper;
+import org.codehaus.groovy.control.CompilerConfiguration;
+import org.codehaus.groovy.control.customizers.CompilationCustomizer;
+
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Allows configurations to be directly supplied to a groovy {@code CompilerConfiguration} when a
+ * {@link org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine} is initialized, providing fine-grained
+ * control over its internals.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class ConfigurationCustomizerProvider implements CompilerCustomizerProvider {
+
+    private final Map<String,Object> properties;
+
+    /**
+     * Creates a new instance using configuration values specified
+     */
+    public ConfigurationCustomizerProvider(final Object... keyValues) {
+        if (null == keyValues || keyValues.length == 0)
+            throw new IllegalArgumentException("ConfigurationCustomizerProvider must have key/values specified");
+
+        if (keyValues.length % 2 != 0)
+            throw new IllegalArgumentException("The keyValues must have an even number of values");
+
+        properties = ElementHelper.asMap(keyValues);
+    }
+
+    /**
+     * Creates a new instance using configuration values specified
+     */
+    public ConfigurationCustomizerProvider(final Map<String,Object> keyValues) {
+        properties = keyValues;
+    }
+
+    public CompilerConfiguration applyCustomization(final CompilerConfiguration compilerConfiguration) {
+        final Class<CompilerConfiguration> clazz = CompilerConfiguration.class;
+        final List<Method> methods = Arrays.asList(clazz.getMethods());
+        for (Map.Entry<String,Object> entry : properties.entrySet()) {
+            final Method method = methods.stream().filter(m -> m.getName().equals("set" + entry.getKey())).findFirst()
+                   .orElseThrow(() -> new IllegalStateException("Invalid setting [" + entry.getKey() + "] for CompilerConfiguration"));
+
+            try {
+                method.invoke(compilerConfiguration, entry.getValue());
+            } catch (Exception ex) {
+                throw new IllegalStateException(ex);
+            }
+        }
+
+        return compilerConfiguration;
+    }
+
+    @Override
+    public CompilationCustomizer create() {
+        throw new UnsupportedOperationException("This is a marker implementation that does not create a CompilationCustomizer instance");
+    }
+}
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/BaseScriptForTesting.java
similarity index 73%
copy from gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
copy to gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/BaseScriptForTesting.java
index cb1aeec..98c8e8c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
+++ b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/BaseScriptForTesting.java
@@ -16,15 +16,15 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.process.traversal.step;
+package org.apache.tinkerpop.gremlin.groovy.jsr223;
 
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import groovy.lang.Script;
 
 /**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public interface EngineDependent {
-
-    public void onEngine(final TraversalEngine traversalEngine);
-
+public abstract class BaseScriptForTesting extends Script {
+    public String hello(final String name) {
+        return "hello, " + name;
+    }
 }
diff --git a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineConfigTest.java b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineConfigTest.java
new file mode 100644
index 0000000..d354ffa
--- /dev/null
+++ b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineConfigTest.java
@@ -0,0 +1,40 @@
+/*
+ * 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.groovy.jsr223;
+
+import org.apache.tinkerpop.gremlin.groovy.DefaultImportCustomizerProvider;
+import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.ConfigurationCustomizerProvider;
+import org.junit.Test;
+
+import javax.script.ScriptEngine;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class GremlinGroovyScriptEngineConfigTest {
+    @Test
+    public void shouldAddBaseScriptClass() throws Exception {
+        final ScriptEngine engine = new GremlinGroovyScriptEngine(
+                new ConfigurationCustomizerProvider("ScriptBaseClass", BaseScriptForTesting.class.getName()), new DefaultImportCustomizerProvider());
+
+        assertEquals("hello, stephen", engine.eval("hello('stephen')"));
+    }
+}
diff --git a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/ConfigurationCustomizerProviderTest.java b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/ConfigurationCustomizerProviderTest.java
new file mode 100644
index 0000000..54b55b1
--- /dev/null
+++ b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/customizer/ConfigurationCustomizerProviderTest.java
@@ -0,0 +1,78 @@
+/*
+ * 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.groovy.jsr223.customizer;
+
+import org.apache.commons.lang.exception.ExceptionUtils;
+import org.codehaus.groovy.control.CompilerConfiguration;
+import org.junit.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.IsInstanceOf.instanceOf;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class ConfigurationCustomizerProviderTest {
+    @Test(expected = IllegalArgumentException.class)
+    public void shouldThrowExceptionForNoSettings() {
+        new ConfigurationCustomizerProvider();
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void shouldThrowExceptionForInvalidSettings() {
+        new ConfigurationCustomizerProvider("only-one-arg");
+    }
+
+    @Test
+    public void shouldThrowExceptionForNotFoundSetting() {
+        final CompilerConfiguration configuration = new CompilerConfiguration();
+        try {
+            final ConfigurationCustomizerProvider provider = new ConfigurationCustomizerProvider(
+                    "Tolerance", 3,
+                    "NotRealSettingThatWouldEverOccur2", new java.util.Date());
+
+            provider.applyCustomization(configuration);
+        } catch (Exception ex) {
+            assertThat(ex, instanceOf(IllegalStateException.class));
+            assertEquals("Invalid setting [NotRealSettingThatWouldEverOccur2] for CompilerConfiguration", ex.getMessage());
+        }
+    }
+
+    @Test
+    public void shouldApplyConfigurationChanges() {
+        final CompilerConfiguration configuration = new CompilerConfiguration();
+
+        assertEquals(10, configuration.getTolerance());
+        assertNull(configuration.getScriptBaseClass());
+        assertEquals(false, configuration.getDebug());
+
+        final ConfigurationCustomizerProvider provider = new ConfigurationCustomizerProvider(
+                "Tolerance", 3,
+                "ScriptBaseClass", "Something",
+                "Debug", true);
+
+        provider.applyCustomization(configuration);
+
+        assertEquals(3, configuration.getTolerance());
+        assertEquals("Something", configuration.getScriptBaseClass());
+        assertEquals(true, configuration.getDebug());
+    }
+}
diff --git a/gremlin-server/conf/gremlin-server-classic.yaml b/gremlin-server/conf/gremlin-server-classic.yaml
index 6ec2a37..388a27e 100644
--- a/gremlin-server/conf/gremlin-server-classic.yaml
+++ b/gremlin-server/conf/gremlin-server-classic.yaml
@@ -20,7 +20,6 @@
 threadPoolWorker: 1
 gremlinPool: 8
 scriptEvaluationTimeout: 30000
-serializedResponseTimeout: 30000
 graphs: {
   graph: conf/tinkergraph-empty.properties}
 plugins:
@@ -32,6 +31,7 @@
     scripts: [scripts/complex-lifecycle.groovy]}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}       # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}   # application/vnd.gremlin-v1.0+gryo-stringd
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}
diff --git a/gremlin-server/conf/gremlin-server-min.yaml b/gremlin-server/conf/gremlin-server-min.yaml
index 042ee29..243c41e 100644
--- a/gremlin-server/conf/gremlin-server-min.yaml
+++ b/gremlin-server/conf/gremlin-server-min.yaml
@@ -20,7 +20,6 @@
 threadPoolWorker: 1
 gremlinPool: 8
 scriptEvaluationTimeout: 30000
-serializedResponseTimeout: 30000
 graphs: {
   graph: conf/tinkergraph-empty.properties}
 plugins:
diff --git a/gremlin-server/conf/gremlin-server-modern-readonly.yaml b/gremlin-server/conf/gremlin-server-modern-readonly.yaml
index 97ce6da..5214b50 100644
--- a/gremlin-server/conf/gremlin-server-modern-readonly.yaml
+++ b/gremlin-server/conf/gremlin-server-modern-readonly.yaml
@@ -20,7 +20,6 @@
 threadPoolWorker: 1
 gremlinPool: 8
 scriptEvaluationTimeout: 30000
-serializedResponseTimeout: 30000
 graphs: {
   graph: conf/tinkergraph-empty.properties}
 plugins:
@@ -32,6 +31,7 @@
     scripts: [scripts/generate-modern-readonly.groovy]}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}       # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}   # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}   # application/vnd.gremlin-v1.0+gryo-stringd
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}
diff --git a/gremlin-server/conf/gremlin-server-modern.yaml b/gremlin-server/conf/gremlin-server-modern.yaml
index 5744d29..cec7f81 100644
--- a/gremlin-server/conf/gremlin-server-modern.yaml
+++ b/gremlin-server/conf/gremlin-server-modern.yaml
@@ -20,7 +20,6 @@
 threadPoolWorker: 1
 gremlinPool: 8
 scriptEvaluationTimeout: 30000
-serializedResponseTimeout: 30000
 graphs: {
   graph: conf/tinkergraph-empty.properties}
 plugins:
@@ -32,6 +31,7 @@
     scripts: [scripts/generate-modern.groovy]}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}       # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}   # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}   # application/vnd.gremlin-v1.0+gryo-stringd
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}
diff --git a/gremlin-server/conf/gremlin-server-neo4j.yaml b/gremlin-server/conf/gremlin-server-neo4j.yaml
index ca2d99c..258dafb 100644
--- a/gremlin-server/conf/gremlin-server-neo4j.yaml
+++ b/gremlin-server/conf/gremlin-server-neo4j.yaml
@@ -30,7 +30,6 @@
 threadPoolWorker: 1
 gremlinPool: 8
 scriptEvaluationTimeout: 30000
-serializedResponseTimeout: 30000
 channelizer: org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer
 graphs: {
   graph: conf/neo4j-empty.properties}
@@ -46,6 +45,7 @@
       staticImports: [java.lang.Math.PI]}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}            # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
diff --git a/gremlin-server/conf/gremlin-server-rest-modern.yaml b/gremlin-server/conf/gremlin-server-rest-modern.yaml
index 62ad779..dbfb1bb 100644
--- a/gremlin-server/conf/gremlin-server-rest-modern.yaml
+++ b/gremlin-server/conf/gremlin-server-rest-modern.yaml
@@ -20,7 +20,6 @@
 threadPoolWorker: 1
 gremlinPool: 8
 scriptEvaluationTimeout: 30000
-serializedResponseTimeout: 30000
 channelizer: org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer
 graphs: {
   graph: conf/tinkergraph-empty.properties}
diff --git a/gremlin-server/conf/gremlin-server-rest-secure.yaml b/gremlin-server/conf/gremlin-server-rest-secure.yaml
index 7a337e0..55d00ae 100644
--- a/gremlin-server/conf/gremlin-server-rest-secure.yaml
+++ b/gremlin-server/conf/gremlin-server-rest-secure.yaml
@@ -28,7 +28,6 @@
 threadPoolWorker: 1
 gremlinPool: 8
 scriptEvaluationTimeout: 30000
-serializedResponseTimeout: 30000
 channelizer: org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer
 graphs: {
   graph: conf/tinkergraph-empty.properties}
@@ -45,8 +44,6 @@
               "org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.TimedInterruptCustomizerProvider":[10000],
               "org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.CompileStaticCustomizerProvider":["org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.SimpleSandboxExtension"]}}}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
 processors:
diff --git a/gremlin-server/conf/gremlin-server-secure.yaml b/gremlin-server/conf/gremlin-server-secure.yaml
index 91623b7..c61e59c 100644
--- a/gremlin-server/conf/gremlin-server-secure.yaml
+++ b/gremlin-server/conf/gremlin-server-secure.yaml
@@ -28,7 +28,6 @@
 threadPoolWorker: 1
 gremlinPool: 8
 scriptEvaluationTimeout: 30000
-serializedResponseTimeout: 30000
 channelizer: org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer
 graphs: {
   graph: conf/tinkergraph-empty.properties}
@@ -46,6 +45,7 @@
               "org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.CompileStaticCustomizerProvider":["org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.SimpleSandboxExtension"]}}}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}            # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
diff --git a/gremlin-server/conf/gremlin-server-spark.yaml b/gremlin-server/conf/gremlin-server-spark.yaml
index 804df73..d99cb87 100644
--- a/gremlin-server/conf/gremlin-server-spark.yaml
+++ b/gremlin-server/conf/gremlin-server-spark.yaml
@@ -43,7 +43,6 @@
 threadPoolWorker: 1
 gremlinPool: 8
 scriptEvaluationTimeout: 30000
-serializedResponseTimeout: 30000
 channelizer: org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer
 graphs: {
   graph: conf/hadoop-gryo.properties}
@@ -59,6 +58,7 @@
       staticImports: [java.lang.Math.PI]}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}            # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
diff --git a/gremlin-server/conf/gremlin-server.yaml b/gremlin-server/conf/gremlin-server.yaml
index fe11127..cf83ba7 100644
--- a/gremlin-server/conf/gremlin-server.yaml
+++ b/gremlin-server/conf/gremlin-server.yaml
@@ -20,7 +20,6 @@
 threadPoolWorker: 1
 gremlinPool: 8
 scriptEvaluationTimeout: 30000
-serializedResponseTimeout: 30000
 channelizer: org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer
 graphs: {
   graph: conf/tinkergraph-empty.properties}
@@ -36,6 +35,7 @@
       staticImports: [java.lang.Math.PI]}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}            # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
diff --git a/gremlin-server/pom.xml b/gremlin-server/pom.xml
index 0f54cca..e2b8016 100644
--- a/gremlin-server/pom.xml
+++ b/gremlin-server/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.4-SNAPSHOT</version>
+        <version>3.2.2-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-server</artifactId>
     <name>Apache TinkerPop :: Gremlin Server</name>
@@ -66,6 +66,12 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.apache.tinkerpop</groupId>
+            <artifactId>gremlin-groovy-test</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>com.carrotsearch</groupId>
             <artifactId>junit-benchmarks</artifactId>
             <version>0.7.2</version>
@@ -189,7 +195,7 @@
                 <dependency>
                     <groupId>org.neo4j</groupId>
                     <artifactId>neo4j-tinkerpop-api-impl</artifactId>
-                    <version>0.3-2.3.2</version>
+                    <version>0.3-2.3.3</version>
                     <scope>test</scope>
                     <exclusions>
                         <exclusion>
diff --git a/gremlin-server/scripts/generate-all.groovy b/gremlin-server/scripts/generate-all.groovy
new file mode 100644
index 0000000..2dac988
--- /dev/null
+++ b/gremlin-server/scripts/generate-all.groovy
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+
+// an init script that returns a Map allows explicit setting of global bindings.
+def globals = [:]
+
+// Generates the modern graph into an "empty" TinkerGraph via LifeCycleHook.
+// Note that the name of the key in the "global" map is unimportant.
+globals << [hook : [
+  onStartUp: { ctx ->
+    TinkerFactory.generateClassic(classic)
+    TinkerFactory.generateModern(modern)
+    TinkerFactory.generateTheCrew(crew)
+    grateful.io(gryo()).readGraph('../data/grateful-dead.kryo')
+
+    // a wild bit of trickery here. the process tests use an INTEGER id manager when LoadGraphWith is used. this
+    // closure provides a way to to manually override the various id managers for TinkerGraph - the graph on which
+    // all of these remote tests are executed - so that the tests will pass nicely. an alternative might have been
+    // to have a special test TinkerGraph config for setting up the id manager properly, but based on how we do
+    // things now, that test config would have been mixed in with release artifacts and there would have been ugly
+    // exclusions to make packaging work properly.
+    allowSetOfIdManager = { graph, idManagerFieldName ->
+        java.lang.reflect.Field idManagerField = graph.class.getDeclaredField(idManagerFieldName)
+        idManagerField.setAccessible(true)
+        java.lang.reflect.Field modifiersField = java.lang.reflect.Field.class.getDeclaredField("modifiers")
+        modifiersField.setAccessible(true)
+        modifiersField.setInt(idManagerField, modifiersField.getModifiers() & ~java.lang.reflect.Modifier.FINAL)
+
+        idManagerField.set(graph, TinkerGraph.DefaultIdManager.INTEGER)
+    }
+
+    [classic, modern, crew].each{
+      allowSetOfIdManager(it, "vertexIdManager")
+      allowSetOfIdManager(it, "edgeIdManager")
+      allowSetOfIdManager(it, "vertexPropertyIdManager")
+    }
+  }
+] as LifeCycleHook]
\ No newline at end of file
diff --git a/gremlin-server/src/assembly/distribution.xml b/gremlin-server/src/assembly/distribution.xml
index d336fe8..5210848 100644
--- a/gremlin-server/src/assembly/distribution.xml
+++ b/gremlin-server/src/assembly/distribution.xml
@@ -41,7 +41,8 @@
             <outputDirectory>data</outputDirectory>
         </fileSet>
         <fileSet>
-            <directory>scripts</directory>
+            <directory>target/apache-${project.artifactId}-${project.version}-standalone/scripts</directory>
+            <outputDirectory>scripts</outputDirectory>
         </fileSet>
         <fileSet>
             <directory>target/apache-${project.artifactId}-${project.version}-standalone/ext</directory>
diff --git a/gremlin-server/src/assembly/standalone.xml b/gremlin-server/src/assembly/standalone.xml
index f6a3641..cbb862e 100644
--- a/gremlin-server/src/assembly/standalone.xml
+++ b/gremlin-server/src/assembly/standalone.xml
@@ -38,6 +38,9 @@
         <fileSet>
             <directory>scripts</directory>
             <outputDirectory>/scripts</outputDirectory>
+            <excludes>
+                <exclude>generate-all.groovy</exclude>
+            </excludes>
         </fileSet>
         <fileSet>
             <directory>../target/docs/htmlsingle</directory>
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/GraphManager.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/GraphManager.java
index b28493e..3830efa 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/GraphManager.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/GraphManager.java
@@ -144,7 +144,7 @@
             if (graphs.containsKey(r))
                 graphsToCloseTxOn.add(graphs.get(r));
             else
-                graphsToCloseTxOn.add(traversalSources.get(r).getGraph().get());
+                graphsToCloseTxOn.add(traversalSources.get(r).getGraph());
         });
 
         graphsToCloseTxOn.forEach(graph -> {
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/Settings.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/Settings.java
index b5d69f0..112b43f 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/Settings.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/Settings.java
@@ -107,9 +107,12 @@
 
     /**
      * Time in milliseconds to wait while an evaluated script serializes its results. This value represents the
-     * total serialization time for the request.  Defaults to 30000.
+     * total serialization time allowed for the request.  Defaults to 0 which disables this setting.
+     *
+     * @deprecated As of release 3.2.1, replaced wholly by {@link #scriptEvaluationTimeout}.
      */
-    public long serializedResponseTimeout = 30000L;
+    @Deprecated
+    public long serializedResponseTimeout = 0L;
 
     /**
      * Number of items in a particular resultset to iterate and serialize prior to pushing the data down the wire
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
index 5b1a90b..114fa28 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractEvalOpProcessor.java
@@ -20,39 +20,32 @@
 
 import com.codahale.metrics.Meter;
 import com.codahale.metrics.Timer;
-import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
 import org.apache.tinkerpop.gremlin.driver.Tokens;
 import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
 import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
 import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
-import org.apache.tinkerpop.gremlin.driver.ser.MessageTextSerializer;
 import org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor;
 import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.TimedInterruptTimeoutException;
 import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.process.traversal.Pop;
 import org.apache.tinkerpop.gremlin.process.traversal.Scope;
-import org.apache.tinkerpop.gremlin.server.GraphManager;
-import org.apache.tinkerpop.gremlin.server.handler.Frame;
+import org.apache.tinkerpop.gremlin.server.OpProcessor;
 import org.apache.tinkerpop.gremlin.server.handler.GremlinResponseFrameEncoder;
-import org.apache.tinkerpop.gremlin.server.handler.StateKey;
 import org.apache.tinkerpop.gremlin.structure.Column;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.server.Context;
 import org.apache.tinkerpop.gremlin.server.GremlinServer;
-import org.apache.tinkerpop.gremlin.server.OpProcessor;
 import org.apache.tinkerpop.gremlin.server.Settings;
 import org.apache.tinkerpop.gremlin.server.util.MetricManager;
 import org.apache.tinkerpop.gremlin.util.function.ThrowingConsumer;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import io.netty.channel.ChannelHandlerContext;
-import org.apache.commons.lang.time.StopWatch;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.script.Bindings;
 import javax.script.SimpleBindings;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -61,11 +54,9 @@
 import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.function.Supplier;
 import java.util.regex.Pattern;
-import java.util.stream.Stream;
 
 import static com.codahale.metrics.MetricRegistry.name;
 
@@ -75,7 +66,7 @@
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public abstract class AbstractEvalOpProcessor implements OpProcessor {
+public abstract class AbstractEvalOpProcessor extends AbstractOpProcessor {
     private static final Logger logger = LoggerFactory.getLogger(AbstractEvalOpProcessor.class);
     public static final Timer evalOpTimer = MetricManager.INSTANCE.getTimer(name(GremlinServer.class, "op", "eval"));
 
@@ -139,10 +130,8 @@
         }
     }
 
-    protected final boolean manageTransactions;
-
     protected AbstractEvalOpProcessor(final boolean manageTransactions) {
-        this.manageTransactions = manageTransactions;
+        super(manageTransactions);
     }
 
     /**
@@ -305,213 +294,6 @@
         });
     }
 
-    /**
-     * Called by {@link #evalOpInternal} when iterating a result set. Implementers should respect the
-     * {@link Settings#serializedResponseTimeout} configuration and break the serialization process if
-     * it begins to take too long to do so, throwing a {@link java.util.concurrent.TimeoutException} in such
-     * cases.
-     *
-     * @param context The Gremlin Server {@link Context} object containing settings, request message, etc.
-     * @param itty The result to iterator
-     * @throws TimeoutException if the time taken to serialize the entire result set exceeds the allowable time.
-     */
-    protected void handleIterator(final Context context, final Iterator itty) throws TimeoutException, InterruptedException {
-        final ChannelHandlerContext ctx = context.getChannelHandlerContext();
-        final RequestMessage msg = context.getRequestMessage();
-        final Settings settings = context.getSettings();
-        final MessageSerializer serializer = ctx.channel().attr(StateKey.SERIALIZER).get();
-        final boolean useBinary = ctx.channel().attr(StateKey.USE_BINARY).get();
-        boolean warnOnce = false;
-
-        // sessionless requests are always transaction managed, but in-session requests are configurable.
-        final boolean managedTransactionsForRequest = manageTransactions ?
-                true : (Boolean) msg.getArgs().getOrDefault(Tokens.ARGS_MANAGE_TRANSACTION, false);
-
-        // we have an empty iterator - happens on stuff like: g.V().iterate()
-        if (!itty.hasNext()) {
-            // as there is nothing left to iterate if we are transaction managed then we should execute a
-            // commit here before we send back a NO_CONTENT which implies success
-            if (managedTransactionsForRequest) attemptCommit(msg, context.getGraphManager(), settings.strictTransactionManagement);
-            ctx.writeAndFlush(ResponseMessage.build(msg)
-                    .code(ResponseStatusCode.NO_CONTENT)
-                    .create());
-            return;
-        }
-
-        // timer for the total serialization time
-        final StopWatch stopWatch = new StopWatch();
-        stopWatch.start();
-
-        // the batch size can be overridden by the request
-        final int resultIterationBatchSize = (Integer) msg.optionalArgs(Tokens.ARGS_BATCH_SIZE)
-                .orElse(settings.resultIterationBatchSize);
-        List<Object> aggregate = new ArrayList<>(resultIterationBatchSize);
-
-        // use an external control to manage the loop as opposed to just checking hasNext() in the while.  this
-        // prevent situations where auto transactions create a new transaction after calls to commit() withing
-        // the loop on calls to hasNext().
-        boolean hasMore = itty.hasNext();
-
-        while (hasMore) {
-            if (Thread.interrupted()) throw new InterruptedException();
-
-            // have to check the aggregate size because it is possible that the channel is not writeable (below)
-            // so iterating next() if the message is not written and flushed would bump the aggregate size beyond
-            // the expected resultIterationBatchSize.  Total serialization time for the response remains in
-            // effect so if the client is "slow" it may simply timeout.
-            //
-            // there is a need to check hasNext() on the iterator because if the channel is not writeable the
-            // previous pass through the while loop will have next()'d the iterator and if it is "done" then a
-            // NoSuchElementException will raise its head.
-            //
-            // this could be placed inside the isWriteable() portion of the if-then below but it seems better to
-            // allow iteration to continue into a batch if that is possible rather than just doing nothing at all
-            // while waiting for the client to catch up
-            if (aggregate.size() < resultIterationBatchSize && itty.hasNext()) aggregate.add(itty.next());
-
-            // send back a page of results if batch size is met or if it's the end of the results being iterated.
-            // also check writeability of the channel to prevent OOME for slow clients.
-            if (ctx.channel().isWritable()) {
-
-                if (aggregate.size() == resultIterationBatchSize || !itty.hasNext()) {
-                    final ResponseStatusCode code = itty.hasNext() ? ResponseStatusCode.PARTIAL_CONTENT : ResponseStatusCode.SUCCESS;
-
-                    // serialize here because in sessionless requests the serialization must occur in the same
-                    // thread as the eval.  as eval occurs in the GremlinExecutor there's no way to get back to the
-                    // thread that processed the eval of the script so, we have to push serialization down into that
-                    Frame frame = null;
-                    try {
-                        frame = makeFrame(ctx, msg, serializer, useBinary, aggregate, code);
-                    } catch (Exception ex) {
-                        // a frame may use a Bytebuf which is a countable release - if it does not get written
-                        // downstream it needs to be released here
-                        if (frame != null) frame.tryRelease();
-
-                        // exception is handled in makeFrame() - serialization error gets written back to driver
-                        // at that point
-                        if (managedTransactionsForRequest) attemptRollback(msg, context.getGraphManager(), settings.strictTransactionManagement);
-                        break;
-                    }
-
-                    try {
-                        // only need to reset the aggregation list if there's more stuff to write
-                        if (itty.hasNext())
-                            aggregate = new ArrayList<>(resultIterationBatchSize);
-                        else {
-                            // iteration and serialization are both complete which means this finished successfully. note that
-                            // errors internal to script eval or timeout will rollback given GremlinServer's global configurations.
-                            // local errors will get rolledback below because the exceptions aren't thrown in those cases to be
-                            // caught by the GremlinExecutor for global rollback logic. this only needs to be committed if
-                            // there are no more items to iterate and serialization is complete
-                            if (managedTransactionsForRequest) attemptCommit(msg, context.getGraphManager(), settings.strictTransactionManagement);
-
-                            // exit the result iteration loop as there are no more results left.  using this external control
-                            // because of the above commit.  some graphs may open a new transaction on the call to
-                            // hasNext()
-                            hasMore = false;
-                        }
-                    } catch (Exception ex) {
-                        // a frame may use a Bytebuf which is a countable release - if it does not get written
-                        // downstream it needs to be released here
-                        if (frame != null) frame.tryRelease();
-                        throw ex;
-                    }
-
-                    // the flush is called after the commit has potentially occurred.  in this way, if a commit was
-                    // required then it will be 100% complete before the client receives it. the "frame" at this point
-                    // should have completely detached objects from the transaction (i.e. serialization has occurred)
-                    // so a new one should not be opened on the flush down the netty pipeline
-                    ctx.writeAndFlush(frame);
-                }
-            } else {
-                // don't keep triggering this warning over and over again for the same request
-                if (!warnOnce) {
-                    logger.warn("Pausing response writing as writeBufferHighWaterMark exceeded on {} - writing will continue once client has caught up", msg);
-                    warnOnce = true;
-                }
-
-                // since the client is lagging we can hold here for a period of time for the client to catch up.
-                // this isn't blocking the IO thread - just a worker.
-                TimeUnit.MILLISECONDS.sleep(10);
-            }
-
-            stopWatch.split();
-            if (stopWatch.getSplitTime() > settings.serializedResponseTimeout) {
-                final String timeoutMsg = String.format("Serialization of the entire response exceeded the 'serializeResponseTimeout' setting %s",
-                        warnOnce ? "[Gremlin Server paused writes to client as messages were not being consumed quickly enough]" : "");
-                throw new TimeoutException(timeoutMsg.trim());
-            }
-
-            stopWatch.unsplit();
-        }
-
-        stopWatch.stop();
-    }
-
-    private static Frame makeFrame(final ChannelHandlerContext ctx, final RequestMessage msg,
-                                   final MessageSerializer serializer, final boolean useBinary, List<Object> aggregate,
-                                   final ResponseStatusCode code) throws Exception {
-        try {
-            if (useBinary) {
-                return new Frame(serializer.serializeResponseAsBinary(ResponseMessage.build(msg)
-                                .code(code)
-                                .result(aggregate).create(), ctx.alloc()));
-            } else {
-                // the expectation is that the GremlinTextRequestDecoder will have placed a MessageTextSerializer
-                // instance on the channel.
-                final MessageTextSerializer textSerializer = (MessageTextSerializer) serializer;
-                return new Frame(textSerializer.serializeResponseAsString(ResponseMessage.build(msg)
-                                .code(code)
-                                .result(aggregate).create()));
-            }
-        } catch (Exception ex) {
-            logger.warn("The result [{}] in the request {} could not be serialized and returned.", aggregate, msg.getRequestId(), ex);
-            final String errorMessage = String.format("Error during serialization: %s",
-                    ex.getCause() != null ? ex.getCause().getMessage() : ex.getMessage());
-            final ResponseMessage error = ResponseMessage.build(msg.getRequestId())
-                    .statusMessage(errorMessage)
-                    .code(ResponseStatusCode.SERVER_ERROR_SERIALIZATION).create();
-            ctx.writeAndFlush(error);
-            throw ex;
-        }
-    }
-
-    private static void attemptCommit(final RequestMessage msg, final GraphManager graphManager, final boolean strict) {
-        if (strict) {
-            // validations should have already been performed in StandardOpProcessor, but a failure in bindings maker
-            // at the time of the eval might raise through here at which point the validation didn't yet happen. better
-            // to just check again
-            final boolean hasRebindings = msg.getArgs().containsKey(Tokens.ARGS_REBINDINGS);
-            final String rebindingOrAliasParameter = hasRebindings ? Tokens.ARGS_REBINDINGS : Tokens.ARGS_ALIASES;
-            if (msg.getArgs().containsKey(rebindingOrAliasParameter)) {
-                final Map<String, String> aliases = (Map<String, String>) msg.getArgs().get(rebindingOrAliasParameter);
-                graphManager.commit(new HashSet<>(aliases.values()));
-            } else {
-                graphManager.commitAll();
-            }
-        } else {
-            graphManager.commitAll();
-        }
-    }
-
-    private static void attemptRollback(final RequestMessage msg, final GraphManager graphManager, final boolean strict) {
-        if (strict) {
-            // validations should have already been performed in StandardOpProcessor, but a failure in bindings maker
-            // at the time of the eval might raise through here at which point the validation didn't yet happen. better
-            // to just check again
-            final boolean hasRebindings = msg.getArgs().containsKey(Tokens.ARGS_REBINDINGS);
-            final String rebindingOrAliasParameter = hasRebindings ? Tokens.ARGS_REBINDINGS : Tokens.ARGS_ALIASES;
-            if (msg.getArgs().containsKey(rebindingOrAliasParameter)) {
-                final Map<String, String> aliases = (Map<String, String>) msg.getArgs().get(rebindingOrAliasParameter);
-                graphManager.rollback(new HashSet<>(aliases.values()));
-            } else {
-                graphManager.rollbackAll();
-            }
-        } else {
-            graphManager.rollbackAll();
-        }
-    }
-
     @FunctionalInterface
     public interface BindingSupplier {
         public Bindings get() throws OpProcessorException;
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractOpProcessor.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractOpProcessor.java
new file mode 100644
index 0000000..3a090f1
--- /dev/null
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/AbstractOpProcessor.java
@@ -0,0 +1,264 @@
+/*
+ * 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.server.op;
+
+import io.netty.channel.ChannelHandlerContext;
+import org.apache.commons.lang.time.StopWatch;
+import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
+import org.apache.tinkerpop.gremlin.driver.Tokens;
+import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
+import org.apache.tinkerpop.gremlin.driver.ser.MessageTextSerializer;
+import org.apache.tinkerpop.gremlin.server.Context;
+import org.apache.tinkerpop.gremlin.server.GraphManager;
+import org.apache.tinkerpop.gremlin.server.OpProcessor;
+import org.apache.tinkerpop.gremlin.server.Settings;
+import org.apache.tinkerpop.gremlin.server.handler.Frame;
+import org.apache.tinkerpop.gremlin.server.handler.StateKey;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public abstract class AbstractOpProcessor implements OpProcessor {
+    private static final Logger logger = LoggerFactory.getLogger(AbstractEvalOpProcessor.class);
+
+    protected final boolean manageTransactions;
+
+    protected AbstractOpProcessor(final boolean manageTransactions) {
+        this.manageTransactions = manageTransactions;
+    }
+
+    /**
+     * Provides a generic way of iterating a result set back to the client. Implementers should respect the
+     * {@link Settings#serializedResponseTimeout} configuration and break the serialization process if
+     * it begins to take too long to do so, throwing a {@link java.util.concurrent.TimeoutException} in such
+     * cases.
+     *
+     * @param context The Gremlin Server {@link Context} object containing settings, request message, etc.
+     * @param itty The result to iterator
+     * @throws TimeoutException if the time taken to serialize the entire result set exceeds the allowable time.
+     */
+    protected void handleIterator(final Context context, final Iterator itty) throws TimeoutException, InterruptedException {
+        final ChannelHandlerContext ctx = context.getChannelHandlerContext();
+        final RequestMessage msg = context.getRequestMessage();
+        final Settings settings = context.getSettings();
+        final MessageSerializer serializer = ctx.channel().attr(StateKey.SERIALIZER).get();
+        final boolean useBinary = ctx.channel().attr(StateKey.USE_BINARY).get();
+        boolean warnOnce = false;
+
+        // sessionless requests are always transaction managed, but in-session requests are configurable.
+        final boolean managedTransactionsForRequest = manageTransactions ?
+                true : (Boolean) msg.getArgs().getOrDefault(Tokens.ARGS_MANAGE_TRANSACTION, false);
+
+        // we have an empty iterator - happens on stuff like: g.V().iterate()
+        if (!itty.hasNext()) {
+            // as there is nothing left to iterate if we are transaction managed then we should execute a
+            // commit here before we send back a NO_CONTENT which implies success
+            if (managedTransactionsForRequest) attemptCommit(msg, context.getGraphManager(), settings.strictTransactionManagement);
+            ctx.writeAndFlush(ResponseMessage.build(msg)
+                    .code(ResponseStatusCode.NO_CONTENT)
+                    .create());
+            return;
+        }
+
+        // timer for the total serialization time
+        final StopWatch stopWatch = new StopWatch();
+        stopWatch.start();
+
+        // the batch size can be overridden by the request
+        final int resultIterationBatchSize = (Integer) msg.optionalArgs(Tokens.ARGS_BATCH_SIZE)
+                .orElse(settings.resultIterationBatchSize);
+        List<Object> aggregate = new ArrayList<>(resultIterationBatchSize);
+
+        // use an external control to manage the loop as opposed to just checking hasNext() in the while.  this
+        // prevent situations where auto transactions create a new transaction after calls to commit() withing
+        // the loop on calls to hasNext().
+        boolean hasMore = itty.hasNext();
+
+        while (hasMore) {
+            if (Thread.interrupted()) throw new InterruptedException();
+
+            // have to check the aggregate size because it is possible that the channel is not writeable (below)
+            // so iterating next() if the message is not written and flushed would bump the aggregate size beyond
+            // the expected resultIterationBatchSize.  Total serialization time for the response remains in
+            // effect so if the client is "slow" it may simply timeout.
+            //
+            // there is a need to check hasNext() on the iterator because if the channel is not writeable the
+            // previous pass through the while loop will have next()'d the iterator and if it is "done" then a
+            // NoSuchElementException will raise its head.
+            //
+            // this could be placed inside the isWriteable() portion of the if-then below but it seems better to
+            // allow iteration to continue into a batch if that is possible rather than just doing nothing at all
+            // while waiting for the client to catch up
+            if (aggregate.size() < resultIterationBatchSize && itty.hasNext()) aggregate.add(itty.next());
+
+            // send back a page of results if batch size is met or if it's the end of the results being iterated.
+            // also check writeability of the channel to prevent OOME for slow clients.
+            if (ctx.channel().isWritable()) {
+                if (aggregate.size() == resultIterationBatchSize || !itty.hasNext()) {
+                    final ResponseStatusCode code = itty.hasNext() ? ResponseStatusCode.PARTIAL_CONTENT : ResponseStatusCode.SUCCESS;
+
+                    // serialize here because in sessionless requests the serialization must occur in the same
+                    // thread as the eval.  as eval occurs in the GremlinExecutor there's no way to get back to the
+                    // thread that processed the eval of the script so, we have to push serialization down into that
+                    Frame frame = null;
+                    try {
+                        frame = makeFrame(ctx, msg, serializer, useBinary, aggregate, code);
+                    } catch (Exception ex) {
+                        // a frame may use a Bytebuf which is a countable release - if it does not get written
+                        // downstream it needs to be released here
+                        if (frame != null) frame.tryRelease();
+
+                        // exception is handled in makeFrame() - serialization error gets written back to driver
+                        // at that point
+                        if (managedTransactionsForRequest) attemptRollback(msg, context.getGraphManager(), settings.strictTransactionManagement);
+                        break;
+                    }
+
+                    try {
+                        // only need to reset the aggregation list if there's more stuff to write
+                        if (itty.hasNext())
+                            aggregate = new ArrayList<>(resultIterationBatchSize);
+                        else {
+                            // iteration and serialization are both complete which means this finished successfully. note that
+                            // errors internal to script eval or timeout will rollback given GremlinServer's global configurations.
+                            // local errors will get rolledback below because the exceptions aren't thrown in those cases to be
+                            // caught by the GremlinExecutor for global rollback logic. this only needs to be committed if
+                            // there are no more items to iterate and serialization is complete
+                            if (managedTransactionsForRequest)
+                                attemptCommit(msg, context.getGraphManager(), settings.strictTransactionManagement);
+
+                            // exit the result iteration loop as there are no more results left.  using this external control
+                            // because of the above commit.  some graphs may open a new transaction on the call to
+                            // hasNext()
+                            hasMore = false;
+                        }
+                    } catch (Exception ex) {
+                        // a frame may use a Bytebuf which is a countable release - if it does not get written
+                        // downstream it needs to be released here
+                        if (frame != null) frame.tryRelease();
+                        throw ex;
+                    }
+
+                    // the flush is called after the commit has potentially occurred.  in this way, if a commit was
+                    // required then it will be 100% complete before the client receives it. the "frame" at this point
+                    // should have completely detached objects from the transaction (i.e. serialization has occurred)
+                    // so a new one should not be opened on the flush down the netty pipeline
+                    ctx.writeAndFlush(frame);
+                }
+            } else {
+                // don't keep triggering this warning over and over again for the same request
+                if (!warnOnce) {
+                    logger.warn("Pausing response writing as writeBufferHighWaterMark exceeded on {} - writing will continue once client has caught up", msg);
+                    warnOnce = true;
+                }
+
+                // since the client is lagging we can hold here for a period of time for the client to catch up.
+                // this isn't blocking the IO thread - just a worker.
+                TimeUnit.MILLISECONDS.sleep(10);
+            }
+
+            stopWatch.split();
+            if (settings.serializedResponseTimeout > 0 && stopWatch.getSplitTime() > settings.serializedResponseTimeout) {
+                final String timeoutMsg = String.format("Serialization of the entire response exceeded the 'serializeResponseTimeout' setting %s",
+                        warnOnce ? "[Gremlin Server paused writes to client as messages were not being consumed quickly enough]" : "");
+                throw new TimeoutException(timeoutMsg.trim());
+            }
+
+            stopWatch.unsplit();
+        }
+
+        stopWatch.stop();
+    }
+
+    protected static Frame makeFrame(final ChannelHandlerContext ctx, final RequestMessage msg,
+                                   final MessageSerializer serializer, final boolean useBinary, List<Object> aggregate,
+                                   final ResponseStatusCode code) throws Exception {
+        try {
+            if (useBinary) {
+                return new Frame(serializer.serializeResponseAsBinary(ResponseMessage.build(msg)
+                        .code(code)
+                        .result(aggregate).create(), ctx.alloc()));
+            } else {
+                // the expectation is that the GremlinTextRequestDecoder will have placed a MessageTextSerializer
+                // instance on the channel.
+                final MessageTextSerializer textSerializer = (MessageTextSerializer) serializer;
+                return new Frame(textSerializer.serializeResponseAsString(ResponseMessage.build(msg)
+                        .code(code)
+                        .result(aggregate).create()));
+            }
+        } catch (Exception ex) {
+            logger.warn("The result [{}] in the request {} could not be serialized and returned.", aggregate, msg.getRequestId(), ex);
+            final String errorMessage = String.format("Error during serialization: %s",
+                    ex.getCause() != null ? ex.getCause().getMessage() : ex.getMessage());
+            final ResponseMessage error = ResponseMessage.build(msg.getRequestId())
+                    .statusMessage(errorMessage)
+                    .code(ResponseStatusCode.SERVER_ERROR_SERIALIZATION).create();
+            ctx.writeAndFlush(error);
+            throw ex;
+        }
+    }
+
+    protected static void attemptCommit(final RequestMessage msg, final GraphManager graphManager, final boolean strict) {
+        if (strict) {
+            // validations should have already been performed in StandardOpProcessor, but a failure in bindings maker
+            // at the time of the eval might raise through here at which point the validation didn't yet happen. better
+            // to just check again
+            final boolean hasRebindings = msg.getArgs().containsKey(Tokens.ARGS_REBINDINGS);
+            final String rebindingOrAliasParameter = hasRebindings ? Tokens.ARGS_REBINDINGS : Tokens.ARGS_ALIASES;
+            if (msg.getArgs().containsKey(rebindingOrAliasParameter)) {
+                final Map<String, String> aliases = (Map<String, String>) msg.getArgs().get(rebindingOrAliasParameter);
+                graphManager.commit(new HashSet<>(aliases.values()));
+            } else {
+                graphManager.commitAll();
+            }
+        } else {
+            graphManager.commitAll();
+        }
+    }
+
+    protected static void attemptRollback(final RequestMessage msg, final GraphManager graphManager, final boolean strict) {
+        if (strict) {
+            // validations should have already been performed in StandardOpProcessor, but a failure in bindings maker
+            // at the time of the eval might raise through here at which point the validation didn't yet happen. better
+            // to just check again
+            final boolean hasRebindings = msg.getArgs().containsKey(Tokens.ARGS_REBINDINGS);
+            final String rebindingOrAliasParameter = hasRebindings ? Tokens.ARGS_REBINDINGS : Tokens.ARGS_ALIASES;
+            if (msg.getArgs().containsKey(rebindingOrAliasParameter)) {
+                final Map<String, String> aliases = (Map<String, String>) msg.getArgs().get(rebindingOrAliasParameter);
+                graphManager.rollback(new HashSet<>(aliases.values()));
+            } else {
+                graphManager.rollbackAll();
+            }
+        } else {
+            graphManager.rollbackAll();
+        }
+    }
+}
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java
new file mode 100644
index 0000000..8bff220
--- /dev/null
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/traversal/TraversalOpProcessor.java
@@ -0,0 +1,223 @@
+/*
+ * 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.server.op.traversal;
+
+import com.codahale.metrics.Timer;
+import io.netty.channel.ChannelHandlerContext;
+import org.apache.tinkerpop.gremlin.driver.Tokens;
+import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
+import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.HaltedTraverserStrategy;
+import org.apache.tinkerpop.gremlin.server.Context;
+import org.apache.tinkerpop.gremlin.server.GraphManager;
+import org.apache.tinkerpop.gremlin.server.GremlinServer;
+import org.apache.tinkerpop.gremlin.server.OpProcessor;
+import org.apache.tinkerpop.gremlin.server.op.AbstractOpProcessor;
+import org.apache.tinkerpop.gremlin.server.op.OpProcessorException;
+import org.apache.tinkerpop.gremlin.server.util.MetricManager;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.util.Serializer;
+import org.apache.tinkerpop.gremlin.util.function.ThrowingConsumer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.TimeoutException;
+
+import static com.codahale.metrics.MetricRegistry.name;
+
+/**
+ * Simple {@link OpProcessor} implementation that iterates remotely submitted serialized {@link Traversal} objects.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class TraversalOpProcessor extends AbstractOpProcessor {
+    private static final Logger logger = LoggerFactory.getLogger(TraversalOpProcessor.class);
+    public static final String OP_PROCESSOR_NAME = "traversal";
+    public static final Timer traversalOpTimer = MetricManager.INSTANCE.getTimer(name(GremlinServer.class, "op", "traversal"));
+
+    public TraversalOpProcessor() {
+        super(true);
+    }
+
+    @Override
+    public String getName() {
+        return OP_PROCESSOR_NAME;
+    }
+
+    @Override
+    public void close() throws Exception {
+        // do nothing = no resources to release
+    }
+
+    @Override
+    public ThrowingConsumer<Context> select(final Context ctx) throws OpProcessorException {
+        final RequestMessage message = ctx.getRequestMessage();
+        logger.debug("Selecting processor for RequestMessage {}", message);
+
+        final ThrowingConsumer<Context> op;
+        switch (message.getOp()) {
+            case Tokens.OPS_TRAVERSE:
+                if (!message.optionalArgs(Tokens.ARGS_GREMLIN).isPresent()) {
+                    final String msg = String.format("A message with an [%s] op code requires a [%s] argument.", Tokens.OPS_TRAVERSE, Tokens.ARGS_GREMLIN);
+                    throw new OpProcessorException(msg, ResponseMessage.build(message).code(ResponseStatusCode.REQUEST_ERROR_INVALID_REQUEST_ARGUMENTS).statusMessage(msg).create());
+                }
+
+                final Optional<Map<String, String>> aliases = message.optionalArgs(Tokens.ARGS_ALIASES);
+                if (!aliases.isPresent()) {
+                    final String msg = String.format("A message with an [%s] op code requires a [%s] argument.", Tokens.OPS_TRAVERSE, Tokens.ARGS_ALIASES);
+                    throw new OpProcessorException(msg, ResponseMessage.build(message).code(ResponseStatusCode.REQUEST_ERROR_INVALID_REQUEST_ARGUMENTS).statusMessage(msg).create());
+                }
+
+                if (aliases.get().size() != 1) {
+                    final String msg = String.format("A message with an [%s] op code requires the [%s] argument to be a Map containing one alias assignment.", Tokens.OPS_TRAVERSE, Tokens.ARGS_ALIASES);
+                    throw new OpProcessorException(msg, ResponseMessage.build(message).code(ResponseStatusCode.REQUEST_ERROR_INVALID_REQUEST_ARGUMENTS).statusMessage(msg).create());
+                }
+
+                final Map.Entry<String, String> kv = aliases.get().entrySet().iterator().next();
+                if (!ctx.getGraphManager().getGraphs().containsKey(kv.getValue())) {
+                    final String msg = String.format("The graph [%s] for alias [%s] is not configured on the server.", kv.getValue(), kv.getKey());
+                    throw new OpProcessorException(msg, ResponseMessage.build(message).code(ResponseStatusCode.REQUEST_ERROR_INVALID_REQUEST_ARGUMENTS).statusMessage(msg).create());
+                }
+
+                op = this::iterateOp;
+                break;
+            case Tokens.OPS_INVALID:
+                final String msgInvalid = String.format("Message could not be parsed.  Check the format of the request. [%s]", message);
+                throw new OpProcessorException(msgInvalid, ResponseMessage.build(message).code(ResponseStatusCode.REQUEST_ERROR_MALFORMED_REQUEST).statusMessage(msgInvalid).create());
+            default:
+                final String msgDefault = String.format("Message with op code [%s] is not recognized.", message.getOp());
+                throw new OpProcessorException(msgDefault, ResponseMessage.build(message).code(ResponseStatusCode.REQUEST_ERROR_MALFORMED_REQUEST).statusMessage(msgDefault).create());
+        }
+
+        return op;
+    }
+
+    private void iterateOp(final Context context) throws OpProcessorException {
+        final RequestMessage msg = context.getRequestMessage();
+        if (logger.isDebugEnabled())
+            logger.debug("Traversal request {} for in thread {}", msg.getRequestId(), Thread.currentThread().getName());
+
+        final byte[] serializedTraversal = (byte[]) msg.getArgs().get(Tokens.ARGS_GREMLIN);
+
+        // earlier validation in selection of this op method should free us to cast this without worry
+        final Map<String, String> aliases = (Map<String, String>) msg.optionalArgs(Tokens.ARGS_ALIASES).get();
+
+        final Traversal.Admin<?, ?> traversal;
+        try {
+            traversal = (Traversal.Admin) Serializer.deserializeObject(serializedTraversal);
+        } catch (Exception ex) {
+            throw new OpProcessorException("Could not deserialize the Traversal instance",
+                    ResponseMessage.build(msg).code(ResponseStatusCode.SERVER_ERROR_SERIALIZATION)
+                            .statusMessage(ex.getMessage()).create());
+        }
+
+        if (traversal.isLocked())
+            throw new OpProcessorException("Locked Traversals cannot be processed by the server",
+                    ResponseMessage.build(msg).code(ResponseStatusCode.SERVER_ERROR_SERIALIZATION)
+                            .statusMessage("Locked Traversals cannot be processed by the server").create());
+
+        final Timer.Context timerContext = traversalOpTimer.time();
+        try {
+            final ChannelHandlerContext ctx = context.getChannelHandlerContext();
+            final GraphManager graphManager = context.getGraphManager();
+            final String graphName = aliases.entrySet().iterator().next().getValue();
+            final Graph graph = graphManager.getGraphs().get(graphName);
+            final boolean supportsTransactions = graph.features().graph().supportsTransactions();
+
+            configureTraversal(traversal, graph);
+
+            context.getGremlinExecutor().getExecutorService().submit(() -> {
+                try {
+                    if (supportsTransactions && graph.tx().isOpen()) graph.tx().rollback();
+
+                    try {
+                        // compile the traversal - without it getEndStep() has nothing in it
+                        traversal.applyStrategies();
+                        handleIterator(context, new DetachingIterator<>(traversal));
+                    } catch (TimeoutException ex) {
+                        final String errorMessage = String.format("Response iteration exceeded the configured threshold for request [%s] - %s", msg.getRequestId(), ex.getMessage());
+                        logger.warn(errorMessage);
+                        ctx.writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SERVER_ERROR_TIMEOUT).statusMessage(errorMessage).create());
+                        if (supportsTransactions && graph.tx().isOpen()) graph.tx().rollback();
+                        return;
+                    } catch (Exception ex) {
+                        logger.warn(String.format("Exception processing a Traversal on iteration for request [%s].", msg.getRequestId()), ex);
+                        ctx.writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SERVER_ERROR).statusMessage(ex.getMessage()).create());
+                        if (supportsTransactions && graph.tx().isOpen()) graph.tx().rollback();
+                        return;
+                    }
+
+                    if (graph.features().graph().supportsTransactions()) graph.tx().commit();
+                } catch (Exception ex) {
+                    logger.warn(String.format("Exception processing a Traversal on request [%s].", msg.getRequestId()), ex);
+                    ctx.writeAndFlush(ResponseMessage.build(msg).code(ResponseStatusCode.SERVER_ERROR).statusMessage(ex.getMessage()).create());
+                    if (graph.features().graph().supportsTransactions() && graph.tx().isOpen()) graph.tx().rollback();
+                } finally {
+                    timerContext.stop();
+                }
+            });
+
+        } catch (Exception ex) {
+            timerContext.stop();
+            throw new OpProcessorException("Could not iterate the Traversal instance",
+                    ResponseMessage.build(msg).code(ResponseStatusCode.SERVER_ERROR).statusMessage(ex.getMessage()).create());
+        }
+    }
+
+    private static void configureTraversal(final Traversal.Admin<?, ?> traversal, final Graph graph) {
+        traversal.setGraph(graph);
+        final List<TraversalStrategy<?>> strategies = TraversalStrategies.GlobalCache.getStrategies(graph.getClass()).toList();
+        final TraversalStrategy[] arrayOfStrategies = new TraversalStrategy[strategies.size()];
+        strategies.toArray(arrayOfStrategies);
+        traversal.getStrategies().addStrategies(arrayOfStrategies);
+    }
+
+    static class DetachingIterator<E> implements Iterator<Traverser.Admin<E>> {
+
+        private Iterator<Traverser.Admin<E>> inner;
+        private HaltedTraverserStrategy haltedTraverserStrategy;
+
+        public DetachingIterator(final Traversal.Admin<?, E> traversal) {
+            this.inner = traversal.getEndStep();
+            this.haltedTraverserStrategy = (HaltedTraverserStrategy) traversal.getStrategies().toList().stream().filter(s -> s instanceof HaltedTraverserStrategy).findAny().orElse(
+                    Boolean.valueOf(System.getProperty("is.testing", "false")) ?
+                            HaltedTraverserStrategy.detached() :
+                            HaltedTraverserStrategy.reference());
+        }
+
+        @Override
+        public boolean hasNext() {
+            return this.inner.hasNext();
+        }
+
+        @Override
+        public Traverser.Admin<E> next() {
+            return this.haltedTraverserStrategy.halt(this.inner.next());
+        }
+    }
+}
diff --git a/gremlin-server/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.server.OpProcessor b/gremlin-server/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.server.OpProcessor
index 64ba6f3..315dd7b 100644
--- a/gremlin-server/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.server.OpProcessor
+++ b/gremlin-server/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.server.OpProcessor
@@ -1,3 +1,4 @@
 org.apache.tinkerpop.gremlin.server.op.standard.StandardOpProcessor
 org.apache.tinkerpop.gremlin.server.op.control.ControlOpProcessor
-org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor
\ No newline at end of file
+org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor
+org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor
\ No newline at end of file
diff --git a/gremlin-server/src/main/static/NOTICE b/gremlin-server/src/main/static/NOTICE
index 4833ad5..a08cae5 100644
--- a/gremlin-server/src/main/static/NOTICE
+++ b/gremlin-server/src/main/static/NOTICE
@@ -11,7 +11,7 @@
 under the Apache License 2.0 (see: StringUtils.containsWhitespace())
 
 ------------------------------------------------------------------------
-Apache Groovy 2.4.6 (AL ASF)
+Apache Groovy 2.4.7 (AL ASF)
 ------------------------------------------------------------------------
 This product includes/uses ANTLR (http://www.antlr2.org/)
 developed by Terence Parr 1989-2006
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/RemoteGraphComputerProvider.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/RemoteGraphComputerProvider.java
new file mode 100644
index 0000000..4319080
--- /dev/null
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/RemoteGraphComputerProvider.java
@@ -0,0 +1,54 @@
+/*
+ * 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.driver.remote;
+
+import org.apache.tinkerpop.gremlin.GraphProvider;
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
+import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerGraphComputer;
+
+import java.util.Random;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@GraphProvider.Descriptor(computer = TinkerGraphComputer.class)
+public class RemoteGraphComputerProvider extends RemoteGraphProvider {
+
+    private final Random RANDOM = new Random();
+
+    @Override
+    public GraphTraversalSource traversal(final Graph graph) {
+        assert graph instanceof RemoteGraph;
+        final int state = RANDOM.nextInt(3);
+        switch (state) {
+            case 0:
+                return graph.traversal().withComputer();
+            case 1:
+                return graph.traversal().withComputer(Computer.compute(TinkerGraphComputer.class));
+            case 2:
+                return graph.traversal().withComputer(Computer.compute(TinkerGraphComputer.class).workers(1));
+            default:
+                throw new IllegalStateException("This state should not have occurred: " + state);
+        }
+    }
+}
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/RemoteGraphProvider.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/RemoteGraphProvider.java
new file mode 100644
index 0000000..25cfe7a
--- /dev/null
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/remote/RemoteGraphProvider.java
@@ -0,0 +1,138 @@
+/*
+ * 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.driver.remote;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.AbstractGraphProvider;
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.driver.Client;
+import org.apache.tinkerpop.gremlin.driver.Cluster;
+import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
+import org.apache.tinkerpop.gremlin.server.GremlinServer;
+import org.apache.tinkerpop.gremlin.server.ServerTestHelper;
+import org.apache.tinkerpop.gremlin.server.Settings;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Supplier;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class RemoteGraphProvider extends AbstractGraphProvider {
+    private static final Set<Class> IMPLEMENTATION = new HashSet<Class>() {{
+        add(RemoteGraph.class);
+    }};
+
+    private static GremlinServer server;
+    private final Map<String,RemoteGraph> remoteCache = new HashMap<>();
+    private final Cluster cluster = Cluster.open();
+    private final Client client = cluster.connect();
+
+    static {
+        try {
+            startServer();
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+    }
+
+    @Override
+    public Graph openTestGraph(final Configuration config) {
+        final String serverGraphName = config.getString(DriverRemoteConnection.GREMLIN_REMOTE_GRAPH_DRIVER_GRAPHNAME);
+        return remoteCache.computeIfAbsent(serverGraphName,
+                k -> RemoteGraph.open(new DriverRemoteConnection(cluster, config)));
+    }
+
+    @Override
+    public Map<String, Object> getBaseConfiguration(final String graphName, Class<?> test, final String testMethodName,
+                                                    final LoadGraphWith.GraphData loadGraphWith) {
+        final String serverGraphName = getServerGraphName(loadGraphWith);
+
+        final Supplier<Graph> graphGetter = () -> server.getServerGremlinExecutor().getGraphManager().getGraphs().get(serverGraphName);
+        return new HashMap<String, Object>() {{
+            put(Graph.GRAPH, RemoteGraph.class.getName());
+            put(RemoteGraph.GREMLIN_REMOTE_GRAPH_REMOTE_CONNECTION_CLASS, DriverRemoteConnection.class.getName());
+            put(DriverRemoteConnection.GREMLIN_REMOTE_GRAPH_DRIVER_GRAPHNAME, serverGraphName);
+            put("hidden.for.testing.only", graphGetter);
+        }};
+    }
+
+    @Override
+    public void clear(final Graph graph, final Configuration configuration) throws Exception {
+        // doesn't bother to clear grateful because i don't believe that ever gets mutated - read-only
+        client.submit("classic.clear();modern.clear();crew.clear();graph.clear();" +
+                    "TinkerFactory.generateClassic(classic);" +
+                    "TinkerFactory.generateModern(modern);" +
+                    "TinkerFactory.generateTheCrew(crew);null").all().get();
+    }
+
+    @Override
+    public void loadGraphData(final Graph graph, final LoadGraphWith loadGraphWith, final Class testClass, final String testName) {
+        // server already loads with the all the graph instances for LoadGraphWith
+    }
+
+    @Override
+    public Set<Class> getImplementations() {
+        return IMPLEMENTATION;
+    }
+
+    public static void startServer() throws Exception {
+        final InputStream stream = RemoteGraphProvider.class.getResourceAsStream("gremlin-server-integration.yaml");
+        final Settings settings = Settings.read(stream);
+        ServerTestHelper.rewritePathsInGremlinServerSettings(settings);
+        server = new GremlinServer(settings);
+
+        server.start().join();
+    }
+
+    public static void stopServer() throws Exception {
+        server.stop().join();
+        server = null;
+    }
+
+    private static String getServerGraphName(final LoadGraphWith.GraphData loadGraphWith) {
+        final String serverGraphName;
+
+        if (null == loadGraphWith) return "graph";
+
+        switch (loadGraphWith) {
+            case CLASSIC:
+                serverGraphName = "classic";
+                break;
+            case MODERN:
+                serverGraphName = "modern";
+                break;
+            case GRATEFUL:
+                serverGraphName = "grateful";
+                break;
+            case CREW:
+                serverGraphName = "crew";
+                break;
+            default:
+                serverGraphName = "graph";
+                break;
+        }
+        return serverGraphName;
+    }
+}
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputerProcessIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/remote/process/RemoteGraphProcessComputerTest.java
similarity index 75%
copy from spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputerProcessIntegrateTest.java
copy to gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/remote/process/RemoteGraphProcessComputerTest.java
index f38dcf5..8012e3d 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputerProcessIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/remote/process/RemoteGraphProcessComputerTest.java
@@ -16,17 +16,19 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.spark.process.computer;
+
+package org.apache.tinkerpop.gremlin.remote.process;
 
 import org.apache.tinkerpop.gremlin.GraphProviderClass;
-import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
+import org.apache.tinkerpop.gremlin.driver.remote.RemoteGraphComputerProvider;
 import org.apache.tinkerpop.gremlin.process.ProcessComputerSuite;
+import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
 import org.junit.runner.RunWith;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 @RunWith(ProcessComputerSuite.class)
-@GraphProviderClass(provider = SparkHadoopGraphProvider.class, graph = HadoopGraph.class)
-public class SparkGraphComputerProcessIntegrateTest {
-}
+@GraphProviderClass(provider = RemoteGraphComputerProvider.class, graph = RemoteGraph.class)
+public class RemoteGraphProcessComputerTest {
+}
\ No newline at end of file
diff --git a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/process/HadoopGraphProcessStandardTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/remote/process/RemoteGraphProcessStandardTest.java
similarity index 72%
copy from hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/process/HadoopGraphProcessStandardTest.java
copy to gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/remote/process/RemoteGraphProcessStandardTest.java
index 2304aed..04ae48c 100644
--- a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/process/HadoopGraphProcessStandardTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/remote/process/RemoteGraphProcessStandardTest.java
@@ -16,19 +16,18 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.hadoop.process;
+package org.apache.tinkerpop.gremlin.remote.process;
 
 import org.apache.tinkerpop.gremlin.GraphProviderClass;
-import org.apache.tinkerpop.gremlin.hadoop.HadoopGraphProvider;
-import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.process.ProcessStandardSuite;
+import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
+import org.apache.tinkerpop.gremlin.driver.remote.RemoteGraphProvider;
 import org.junit.runner.RunWith;
 
 /**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 @RunWith(ProcessStandardSuite.class)
-@GraphProviderClass(provider = HadoopGraphProvider.class, graph = HadoopGraph.class)
-public class HadoopGraphProcessStandardTest {
-
-}
+@GraphProviderClass(provider = RemoteGraphProvider.class, graph = RemoteGraph.class)
+public class RemoteGraphProcessStandardTest {
+}
\ No newline at end of file
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/AbstractGremlinServerPerformanceTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/AbstractGremlinServerPerformanceTest.java
index f69bb06..7808c7e 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/AbstractGremlinServerPerformanceTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/AbstractGremlinServerPerformanceTest.java
@@ -31,7 +31,9 @@
  * Starts and stops one instance for all tests that extend from this class.
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.2.1, replaced by gremlin-benchmark.
  */
+@Deprecated
 public abstract class AbstractGremlinServerPerformanceTest {
     private static final Logger logger = LoggerFactory.getLogger(AbstractGremlinServerPerformanceTest.class);
 
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/BaseScriptForTesting.java
similarity index 73%
copy from gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
copy to gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/BaseScriptForTesting.java
index cb1aeec..ae4c713 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/EngineDependent.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/BaseScriptForTesting.java
@@ -16,15 +16,15 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.process.traversal.step;
+package org.apache.tinkerpop.gremlin.server;
 
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import groovy.lang.Script;
 
 /**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public interface EngineDependent {
-
-    public void onEngine(final TraversalEngine traversalEngine);
-
+public abstract class BaseScriptForTesting extends Script {
+    public String hello(final String name) {
+        return "hello, " + name;
+    }
 }
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinAdditionPerformanceTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinAdditionPerformanceTest.java
index d066c65..d2d9d97 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinAdditionPerformanceTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinAdditionPerformanceTest.java
@@ -44,7 +44,9 @@
  * Execute a simple script (1+1).
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.2.1, replaced by gremlin-benchmark.
  */
+@Deprecated
 @AxisRange(min = 0, max = 1)
 @BenchmarkMethodChart(filePrefix = "gremlin-addition")
 @BenchmarkHistoryChart(labelWith = LabelType.CUSTOM_KEY, maxRuns = 20, filePrefix = "hx-gremlin-addition")
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
index d8be42e..3a4ab27 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
@@ -24,7 +24,10 @@
 import org.apache.tinkerpop.gremlin.driver.Result;
 import org.apache.tinkerpop.gremlin.driver.ResultSet;
 import org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0;
+import org.apache.tinkerpop.gremlin.driver.ser.Serializers;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Property;
@@ -36,13 +39,16 @@
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedProperty;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+import org.hamcrest.CoreMatchers;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -65,7 +71,7 @@
 
     @Override
     public Settings overrideSettings(final Settings settings) {
-        settings.scriptEngines.get("gremlin-groovy").scripts = Arrays.asList("scripts/generate-modern.groovy");
+        settings.scriptEngines.get("gremlin-groovy").scripts = Collections.singletonList("scripts/generate-modern.groovy");
         return settings;
     }
 
@@ -73,8 +79,8 @@
     public void beforeTest() {
         final MessageSerializer serializer = new GryoMessageSerializerV1d0();
         final Map<String,Object> c = new HashMap<>();
-        c.put("ioRegistries", Arrays.asList(TinkerIoRegistry.class.getName()));
-        c.put("custom", Arrays.asList("groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer"));
+        c.put("ioRegistries", Collections.singletonList(TinkerIoRegistry.class.getName()));
+        c.put("custom", Collections.singletonList("groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer"));
 
         serializer.configure(c, null);
         cluster = Cluster.build().serializer(serializer).create();
@@ -87,6 +93,45 @@
     }
 
     @Test
+    public void shouldHandleVertexResultFromTraversal() throws Exception {
+        final Graph graph = TinkerGraph.open();
+        final GraphTraversalSource g = graph.traversal();
+        final Client aliased = client.alias("graph");
+        final ResultSet resultSet = aliased.submit(g.V().both().both());
+        final List<Result> results = resultSet.all().get();
+
+        assertThat(results.get(0).getObject(), CoreMatchers.instanceOf(Vertex.class));
+        assertEquals(30, results.size());
+    }
+
+    @Test
+    public void shouldHandleVertexResultFromTraversalAsTraversersUnrolled() throws Exception {
+        final Graph graph = TinkerGraph.open();
+        final GraphTraversalSource g = graph.traversal();
+        final Client aliased = client.alias("graph");
+        final ResultSet resultSetUnrolled = aliased.submit(g.V().both().barrier().both().barrier());
+        final List<Result> results = resultSetUnrolled.all().get();
+
+        assertThat(results.get(0).getObject(), CoreMatchers.instanceOf(Vertex.class));
+        assertEquals(30, results.size());
+    }
+
+    @Test
+    public void shouldHandleVertexResultFromTraversalAsTraversers() throws Exception {
+        final Graph graph = TinkerGraph.open();
+        final GraphTraversalSource g = graph.traversal();
+        final Client clientWithUnrolling = cluster.connect(Client.Settings.build().unrollTraversers(false).create());
+        final Client aliased = clientWithUnrolling.alias("graph");
+        final ResultSet resultSet = aliased.submit(g.V().both().barrier().both().barrier());
+        final List<Result> results = resultSet.all().get();
+
+        assertThat(results.get(0).getObject(), CoreMatchers.instanceOf(Traverser.class));
+        assertEquals(6, results.size());
+
+        aliased.close();
+    }
+
+    @Test
     public void shouldHandleNullResult() throws Exception {
         final ResultSet results = client.submit("g.V().drop().iterate();null");
         assertNull(results.all().get().get(0).getObject());
@@ -122,6 +167,19 @@
     }
 
     @Test
+    public void shouldHandleVertexResultWithLiteSerialization() throws Exception {
+        final Cluster cluster = Cluster.build().serializer(Serializers.GRYO_LITE_V1D0).create();
+        final Client clientLite = cluster.connect();
+        final ResultSet results = clientLite.submit("g.V(1).next()");
+        final Vertex v = results.all().get().get(0).getVertex();
+        assertThat(v, instanceOf(ReferenceVertex.class));
+
+        assertEquals(1L, v.id());
+        assertEquals("", v.label());
+        assertEquals(0, IteratorUtils.count(v.properties()));
+    }
+
+    @Test
     public void shouldHandleVertexPropertyResult() throws Exception {
         final ResultSet results = client.submit("g.V().properties('name').next()");
         final VertexProperty<String> v = results.all().get().get(0).getVertexProperty();
@@ -166,8 +224,8 @@
         final List<Result> resultList = results.all().get();
         final Map m = resultList.get(0).get(HashMap.class);
         assertEquals(2, m.size());
-        assertEquals(3l, m.get(1l));
-        assertEquals(3l, m.get(3l));
+        assertEquals(3L, m.get(1L));
+        assertEquals(3L, m.get(3L));
     }
 
     @Test
@@ -177,9 +235,9 @@
         assertEquals(2, resultList.size());
         final Map.Entry firstEntry = resultList.get(0).get(HashMap.Entry.class);
         final Map.Entry secondEntry = resultList.get(1).get(HashMap.Entry.class);
-        assertThat(firstEntry.getKey(), anyOf(is(3l), is(1l)));
-        assertThat(firstEntry.getValue(), is(3l));
-        assertThat(secondEntry.getKey(), anyOf(is(3l), is(1l)));
-        assertThat(secondEntry.getValue(), is(3l));
+        assertThat(firstEntry.getKey(), anyOf(is(3L), is(1L)));
+        assertThat(firstEntry.getValue(), is(3L));
+        assertThat(secondEntry.getKey(), anyOf(is(3L), is(1L)));
+        assertThat(secondEntry.getValue(), is(3L));
     }
 }
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
index 2f091d9..50ed066 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
@@ -41,6 +41,7 @@
 import org.apache.tinkerpop.gremlin.driver.simple.WebSocketClient;
 import org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine;
 import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.CompileStaticCustomizerProvider;
+import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.ConfigurationCustomizerProvider;
 import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.InterpreterModeCustomizerProvider;
 import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.SimpleSandboxExtension;
 import org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.TimedInterruptCustomizerProvider;
@@ -71,12 +72,16 @@
 
 import static org.hamcrest.CoreMatchers.containsString;
 import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.IsInstanceOf.instanceOf;
 import static org.hamcrest.core.IsNot.not;
 import static org.hamcrest.core.StringEndsWith.endsWith;
 import static org.hamcrest.core.StringStartsWith.startsWith;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeThat;
+import static org.junit.Assert.assertEquals;
 
 /**
  * Integration tests for server-side settings and processing.
@@ -160,6 +165,9 @@
             case "shouldReceiveFailureTimeOutOnScriptEvalOfOutOfControlLoop":
                 settings.scriptEngines.get("gremlin-groovy").config = getScriptEngineConfForTimedInterrupt();
                 break;
+            case "shouldUseBaseScript":
+                settings.scriptEngines.get("gremlin-groovy").config = getScriptEngineConfForBaseScript();
+                break;
         }
 
         return settings;
@@ -205,6 +213,30 @@
         return scriptEngineConf;
     }
 
+    private static Map<String, Object> getScriptEngineConfForBaseScript() {
+        final Map<String,Object> scriptEngineConf = new HashMap<>();
+        final Map<String,Object> compilerCustomizerProviderConf = new HashMap<>();
+        final List<Object> keyValues = new ArrayList<>();
+
+        final Map<String,Object> properties = new HashMap<>();
+        properties.put("ScriptBaseClass", BaseScriptForTesting.class.getName());
+        keyValues.add(properties);
+
+        compilerCustomizerProviderConf.put(ConfigurationCustomizerProvider.class.getName(), keyValues);
+        scriptEngineConf.put("compilerCustomizerProviders", compilerCustomizerProviderConf);
+        return scriptEngineConf;
+    }
+
+    @Test
+    public void shouldUseBaseScript() throws Exception {
+        final Cluster cluster = Cluster.open();
+        final Client client = cluster.connect(name.getMethodName());
+
+        assertEquals("hello, stephen", client.submit("hello('stephen')").all().get().get(0).getString());
+
+        cluster.close();
+    }
+
     @Test
     public void shouldUseInterpreterMode() throws Exception {
         final Cluster cluster = Cluster.open();
@@ -367,12 +399,12 @@
                 });
             });
 
-            assertTrue(latch.await(30000, TimeUnit.MILLISECONDS));
+            assertThat(latch.await(30000, TimeUnit.MILLISECONDS), is(true));
             assertEquals(0, latch.getCount());
-            assertFalse(faulty.get());
-            assertTrue(expected.get());
+            assertThat(faulty.get(), is(false));
+            assertThat(expected.get(), is(true));
 
-            assertTrue(recordingAppender.getMessages().stream().anyMatch(m -> m.contains("Pausing response writing as writeBufferHighWaterMark exceeded on")));
+            assertThat(recordingAppender.getMessages().stream().anyMatch(m -> m.contains("Pausing response writing as writeBufferHighWaterMark exceeded on")), is(true));
         } catch (Exception ex) {
             fail("Shouldn't have tossed an exception");
         } finally {
@@ -409,7 +441,7 @@
 
             if (!latch.await(3000, TimeUnit.MILLISECONDS))
                 fail("Request should have returned error, but instead timed out");
-            assertTrue(pass.get());
+            assertThat(pass.get(), is(true));
         }
 
         try (SimpleClient client = new WebSocketClient()) {
@@ -452,7 +484,7 @@
 
             if (!latch.await(3000, TimeUnit.MILLISECONDS))
                 fail("Request should have returned error, but instead timed out");
-            assertTrue(pass.get());
+            assertThat(pass.get(), is(true));
         }
     }
 
@@ -475,7 +507,7 @@
 
             if (!latch.await(3000, TimeUnit.MILLISECONDS))
                 fail("Request should have returned error, but instead timed out");
-            assertTrue(pass.get());
+            assertThat(pass.get(), is(true));
         }
     }
 
@@ -579,8 +611,12 @@
         }
     }
 
+    /**
+     * @deprecated As of release 3.2.1, replaced by tests covering {@link Settings#scriptEvaluationTimeout}.
+     */
     @Test
     @SuppressWarnings("unchecked")
+    @Deprecated
     public void shouldReceiveFailureTimeOutOnTotalSerialization() throws Exception {
         try (SimpleClient client = new WebSocketClient()){
             final List<ResponseMessage> responses = client.submit("(0..<100000)");
@@ -706,7 +742,7 @@
             client.submit("1+1").all().join();
             fail();
         } catch (RuntimeException re) {
-            assertTrue(re.getCause().getCause() instanceof ClosedChannelException);
+            assertThat(re.getCause().getCause() instanceof ClosedChannelException, is(true));
 
             //
             // should recover when the server comes back
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinTraversalPerformanceTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinTraversalPerformanceTest.java
index 27e3d39..9a80edd 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinTraversalPerformanceTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinTraversalPerformanceTest.java
@@ -44,7 +44,9 @@
  * Uses a single client across multiple threads to issue requests against the server.
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.2.1, replaced by gremlin-benchmark.
  */
+@Deprecated
 @AxisRange(min = 0, max = 1)
 @BenchmarkMethodChart(filePrefix = "gremlin-traversal")
 @BenchmarkHistoryChart(labelWith = LabelType.CUSTOM_KEY, maxRuns = 20, filePrefix = "hx-gremlin-traversal")
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/ServerTestHelper.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/ServerTestHelper.java
index 914efc3..e846673 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/ServerTestHelper.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/ServerTestHelper.java
@@ -31,7 +31,7 @@
      *  gremlin-server directory to get stuff to reference scripts properly from the file system from any directory.
      *  If an overriden path is determined to be absolute then the path is not re-written.
      */
-    static void rewritePathsInGremlinServerSettings(final Settings overridenSettings) {
+    public static void rewritePathsInGremlinServerSettings(final Settings overridenSettings) {
         final String buildDir = System.getProperty("build.dir");
         final String homeDir = buildDir.substring(0, buildDir.indexOf("gremlin-server") + "gremlin-server".length());
 
diff --git a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
new file mode 100644
index 0000000..86245b5
--- /dev/null
+++ b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
@@ -0,0 +1,63 @@
+# 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.
+
+host: localhost
+port: 8182
+threadPoolWorker: 1
+gremlinPool: 8
+scriptEvaluationTimeout: 30000
+graphs: {
+  graph: conf/tinkergraph-empty.properties,
+  classic: conf/tinkergraph-empty.properties,
+  modern: conf/tinkergraph-empty.properties,
+  crew: conf/tinkergraph-empty.properties,
+  grateful: conf/tinkergraph-empty.properties}
+plugins:
+  - tinkerpop.tinkergraph
+scriptEngines: {
+  gremlin-groovy: {
+    imports: [java.lang.Math],
+    staticImports: [java.lang.Math.PI],
+    scripts: [scripts/generate-all.groovy]},
+  nashorn: {
+      imports: [java.lang.Math],
+      staticImports: [java.lang.Math.PI]}}
+serializers:
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph, custom: [groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph, custom: [groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true}}
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }}
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}
+processors:
+  - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
+metrics: {
+  consoleReporter: {enabled: true, interval: 180000},
+  csvReporter: {enabled: true, interval: 180000, fileName: /tmp/gremlin-server-metrics.csv},
+  jmxReporter: {enabled: true},
+  slf4jReporter: {enabled: true, interval: 180000},
+  gangliaReporter: {enabled: false, interval: 180000, addressingMode: MULTICAST},
+  graphiteReporter: {enabled: false, interval: 180000}}
+strictTransactionManagement: false
+threadPoolBoss: 1
+maxInitialLineLength: 4096
+maxHeaderSize: 8192
+maxChunkSize: 8192
+maxContentLength: 65536
+maxAccumulationBufferComponents: 1024
+resultIterationBatchSize: 64
+writeBufferHighWaterMark: 32768
+writeBufferHighWaterMark: 65536
diff --git a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/generate-shouldRebindTraversalSourceVariables.groovy b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/generate-shouldRebindTraversalSourceVariables.groovy
index 909cd69..8497c80 100644
--- a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/generate-shouldRebindTraversalSourceVariables.groovy
+++ b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/generate-shouldRebindTraversalSourceVariables.groovy
@@ -18,5 +18,5 @@
  */
 
 def globals = [:]
-globals << [g : graph.traversal(GraphTraversalSource.build().with(ReadOnlyStrategy.instance()))]
+globals << [g : graph.traversal().withStrategies(ReadOnlyStrategy.instance())]
 globals << [g1 : graph.traversal()]
\ No newline at end of file
diff --git a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
index 88c95b7..42b2899 100644
--- a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
+++ b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
@@ -20,7 +20,6 @@
 threadPoolWorker: 1
 gremlinPool: 8
 scriptEvaluationTimeout: 30000
-serializedResponseTimeout: 30000
 graphs: {
   graph: conf/tinkergraph-empty.properties}
 plugins:
@@ -35,6 +34,7 @@
       staticImports: [java.lang.Math.PI]}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph, custom: [groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph, custom: [groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true}}
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }}
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}
diff --git a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
index ed7444c..177b55c 100644
--- a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
+++ b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
@@ -20,7 +20,6 @@
 threadPoolWorker: 1
 gremlinPool: 8
 scriptEvaluationTimeout: 30000
-serializedResponseTimeout: 30000
 graphs: {
   graph: conf/tinkergraph-empty.properties}
 plugins:
diff --git a/gremlin-shaded/pom.xml b/gremlin-shaded/pom.xml
index ecdad96..1dd16db 100644
--- a/gremlin-shaded/pom.xml
+++ b/gremlin-shaded/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.4-SNAPSHOT</version>
+        <version>3.2.2-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-shaded</artifactId>
     <name>Apache TinkerPop :: Gremlin Shaded</name>
diff --git a/gremlin-test/pom.xml b/gremlin-test/pom.xml
index a9c7323..09f3a3f 100644
--- a/gremlin-test/pom.xml
+++ b/gremlin-test/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.4-SNAPSHOT</version>
+        <version>3.2.2-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-test</artifactId>
     <name>Apache TinkerPop :: Gremlin Test</name>
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGremlinTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGremlinTest.java
index 2a97cd0..32c792c 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGremlinTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGremlinTest.java
@@ -19,7 +19,6 @@
 package org.apache.tinkerpop.gremlin;
 
 import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
@@ -32,6 +31,7 @@
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.rules.TestName;
 import org.slf4j.Logger;
@@ -42,7 +42,6 @@
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Optional;
 import java.util.Random;
 import java.util.Set;
 import java.util.function.Consumer;
@@ -50,7 +49,9 @@
 
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeThat;
 
 /**
@@ -62,7 +63,6 @@
     private static final Logger logger = LoggerFactory.getLogger(AbstractGremlinTest.class);
     protected Graph graph;
     protected GraphTraversalSource g;
-    protected Optional<Class<? extends GraphComputer>> graphComputerClass;
     protected Configuration config;
     protected GraphProvider graphProvider;
 
@@ -77,6 +77,7 @@
         final LoadGraphWith.GraphData loadGraphWithData = null == loadGraphWith ? null : loadGraphWith.value();
 
         graphProvider = GraphManager.getGraphProvider();
+        graphProvider.getTestListener().ifPresent(l -> l.onTestStart(this.getClass(), name.getMethodName()));
         config = graphProvider.standardGraphConfiguration(this.getClass(), name.getMethodName(), loadGraphWithData);
 
         // this should clear state from a previously unfinished test. since the graph does not yet exist,
@@ -85,7 +86,6 @@
 
         graph = graphProvider.openTestGraph(config);
         g = graphProvider.traversal(graph);
-        graphComputerClass = g.getGraphComputer().isPresent() ? Optional.of(g.getGraphComputer().get().getClass()) : Optional.empty();
 
         // get feature requirements on the test method and add them to the list of ones to check
         final FeatureRequirement[] featureRequirement = testMethod.getAnnotationsByType(FeatureRequirement.class);
@@ -132,6 +132,7 @@
     @After
     public void tearDown() throws Exception {
         if (null != graphProvider) {
+            graphProvider.getTestListener().ifPresent(l -> l.onTestEnd(this.getClass(), name.getMethodName()));
             graphProvider.clear(graph, config);
 
             // All GraphProvider objects should be an instance of ManagedGraphProvider, as this is handled by GraphManager
@@ -161,7 +162,7 @@
     /**
      * Looks up the identifier as generated by the current source graph being tested.
      *
-     * @param graph          the graph to get the element id from
+     * @param graph      the graph to get the element id from
      * @param vertexName a unique string that will identify a graph element within a graph
      * @return the id as generated by the graph
      */
@@ -254,10 +255,6 @@
         verifyUniqueStepIds(traversal.asAdmin());
     }
 
-    public boolean isComputerTest() {
-        return this.graphComputerClass.isPresent();
-    }
-
     public static void assertVertexEdgeCounts(final Graph graph, final int expectedVertexCount, final int expectedEdgeCount) {
         getAssertVertexEdgeCounts(expectedVertexCount, expectedEdgeCount).accept(graph);
     }
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphManager.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphManager.java
index 55ffcf8..571658d 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphManager.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphManager.java
@@ -19,6 +19,7 @@
 package org.apache.tinkerpop.gremlin;
 
 import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
@@ -31,6 +32,7 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
 
 /**
@@ -107,6 +109,11 @@
         }
 
         @Override
+        public GraphComputer getGraphComputer(final Graph graph) {
+            return innerGraphProvider.getGraphComputer(graph);
+        }
+
+        @Override
         public Graph standardTestGraph(final Class<?> test, final String testMethodName, final LoadGraphWith.GraphData loadGraphWith) {
             // call the ManagedGraphProvider.openTestGraph() so that the created Graph/Configuration instances
             // are tracked
@@ -165,6 +172,11 @@
         public Set<Class> getImplementations() {
             return innerGraphProvider.getImplementations();
         }
+
+        @Override
+        public Optional<TestListener> getTestListener() {
+            return innerGraphProvider.getTestListener();
+        }
     }
 
 }
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphProvider.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphProvider.java
index 4fa800b..c785cfc 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphProvider.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphProvider.java
@@ -21,14 +21,12 @@
 import org.apache.commons.configuration.Configuration;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_LP_O_P_S_SE_SL_Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_LP_O_S_SE_SL_Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_S_SE_SL_Traverser;
@@ -51,8 +49,8 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
-import java.util.stream.Stream;
 
 /**
  * Those developing Gremlin implementations must provide a GraphProvider implementation so that the
@@ -86,29 +84,35 @@
     }};
 
     /**
-     * Create a {@link GraphTraversalSource} from a {@link Graph} instance.  The default implementation uses the
-     * {@link StandardTraversalEngine} so providers should override as necessary if their implementation is testing
-     * something that requires a different engine type, like those tests for
-     * {@link org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine.Type}.
+     * Create a {@link GraphTraversalSource} from a {@link Graph} instance.  The default implementation does not
+     * use {@link GraphComputer} so providers should override as necessary if their implementation is testing
+     * something that requires a different engine type, like {@link GraphComputer}.
      */
     public default GraphTraversalSource traversal(final Graph graph) {
-        return GraphTraversalSource.standard().create(graph);
+        return graph.traversal();
     }
 
     /**
-     * Create a {@link GraphTraversalSource} from a {@link Graph} instance.  The default implementation uses the
-     * {@link StandardTraversalEngine} so providers should override as necessary if their implementation is testing
-     * something that requires a different engine type, like those tests for
-     * {@link org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine.Type}.
+     * Create a {@link GraphTraversalSource} from a {@link Graph} instance.  The default implementation does not use
+     * {@link GraphComputer} so providers should override as necessary if their implementation is testing
+     * something that requires a different engine type, like {@link GraphComputer}.
      * <p/>
      * Implementations should apply strategies as necessary to the
-     * {@link org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource.Builder} before calling
+     * {@link org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource} before calling
      * it's {@code create} method.
      */
     public default GraphTraversalSource traversal(final Graph graph, final TraversalStrategy... strategies) {
-        final GraphTraversalSource.Builder builder = GraphTraversalSource.build().engine(StandardTraversalEngine.build());
-        Stream.of(strategies).forEach(builder::with);
-        return builder.create(graph);
+        return this.traversal(graph).withStrategies(strategies);
+    }
+
+    /**
+     * Create a {@link GraphComputer} from the {@link Graph} instance. The default implementation simply calls {@code graph.compute()}.
+     *
+     * @param graph the graph to get the graph computer from
+     * @return a new graph computer
+     */
+    public default GraphComputer getGraphComputer(final Graph graph) {
+        return graph.compute();
     }
 
     /**
@@ -282,6 +286,14 @@
     }
 
     /**
+     * Returns a {@link TestListener} implementation that provides feedback to the {@link GraphProvider} implementation.
+     * By default, this returns an empty listener.
+     */
+    public default Optional<TestListener> getTestListener() {
+        return Optional.empty();
+    }
+
+    /**
      * An annotation to be applied to a {@code GraphProvider} implementation that provides additional information
      * about its intentions. The {@code Descriptor} is required by those {@code GraphProvider} implementations
      * that will be assigned to test suites that use
@@ -299,4 +311,14 @@
          */
         public Class<? extends GraphComputer> computer();
     }
+
+    public interface TestListener {
+        public default void onTestStart(final Class<?> test, final String testName) {
+            // do nothing
+        }
+
+        public default void onTestEnd(final Class<?> test, final String testName) {
+            // do nothing
+        }
+    }
 }
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/LoadGraphWith.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/LoadGraphWith.java
index 17893e5..071d579 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/LoadGraphWith.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/LoadGraphWith.java
@@ -52,7 +52,7 @@
  */
 @Inherited
 @Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.METHOD)
+@Target({ElementType.TYPE, ElementType.METHOD})
 public @interface LoadGraphWith {
 
     public enum GraphData {
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/AbstractGremlinProcessTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/AbstractGremlinProcessTest.java
index e694787..201822c 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/AbstractGremlinProcessTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/AbstractGremlinProcessTest.java
@@ -22,7 +22,9 @@
 import org.apache.tinkerpop.gremlin.GraphManager;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.MapHelper;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.junit.Before;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,9 +33,12 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 import java.util.stream.Collectors;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assume.assumeTrue;
 
 /**
@@ -67,18 +72,40 @@
 
         try {
             // ignore tests that aren't supported by a specific TraversalEngine
-            final IgnoreEngine ignoreEngine = this.getClass().getMethod(name.getMethodName()).getAnnotation(IgnoreEngine.class);
+            final String testName = name.getMethodName();
+
+            // tests that are parameterized have a square bracket with parameterized name appended to the actual
+            // test method name. have to strip that off so that reflection can find it
+            final String methodName = testName.contains("[") ? testName.substring(0, testName.indexOf('[')) : testName;
+            final IgnoreEngine ignoreEngine = this.getClass().getMethod(methodName).getAnnotation(IgnoreEngine.class);
             if (ignoreEngine != null)
                 assumeTrue(String.format("This test is ignored for %s", ignoreEngine.value()), !ignoreEngine.value().equals(GraphManager.getTraversalEngineType()));
         } catch (NoSuchMethodException nsme) {
+            // some tests are parameterized
             throw new RuntimeException(String.format("Could not find test method %s in test case %s", name.getMethodName(), this.getClass().getName()));
         }
     }
 
+    public static void checkSideEffects(final TraversalSideEffects sideEffects, final Object... keysClasses) {
+        int counter = 0;
+        for (int i = 0; i < keysClasses.length; i = i + 2) {
+            counter++;
+            final String key = (String) keysClasses[i];
+            final Class clazz = (Class) keysClasses[i + 1];
+            assertTrue(sideEffects.keys().contains(key));
+            assertTrue(sideEffects.exists(key));
+            assertEquals(clazz, sideEffects.get((String) keysClasses[i]).getClass());
+            assertFalse(sideEffects.exists(UUID.randomUUID().toString()));
+        }
+        assertEquals(sideEffects.keys().size(), counter);
+        assertFalse(sideEffects.keys().contains(UUID.randomUUID().toString()));
+        assertEquals(StringFactory.traversalSideEffectsString(sideEffects), sideEffects.toString());
+    }
+
     public static <T> void checkResults(final List<T> expectedResults, final Traversal<?, T> traversal) {
         final List<T> results = traversal.toList();
         assertFalse(traversal.hasNext());
-        if(expectedResults.size() != results.size()) {
+        if (expectedResults.size() != results.size()) {
             logger.error("Expected results: " + expectedResults);
             logger.error("Actual results:   " + results);
             assertEquals("Checking result size", expectedResults.size(), results.size());
@@ -124,9 +151,7 @@
         final List<Map.Entry<A, B>> actualList = actualMap.entrySet().stream().sorted((a, b) -> a.getKey().toString().compareTo(b.getKey().toString())).collect(Collectors.toList());
         final List<Map.Entry<A, B>> expectedList = expectedMap.entrySet().stream().sorted((a, b) -> a.getKey().toString().compareTo(b.getKey().toString())).collect(Collectors.toList());
 
-        if (expectedList.size() > actualList.size()) {
-            return false;
-        } else if (actualList.size() > expectedList.size()) {
+        if (expectedList.size() != actualList.size()) {
             return false;
         }
 
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/GremlinProcessRunner.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/GremlinProcessRunner.java
index c5d19b5..7149bf9 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/GremlinProcessRunner.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/GremlinProcessRunner.java
@@ -36,6 +36,7 @@
  */
 public class GremlinProcessRunner extends BlockJUnit4ClassRunner {
     private static final Logger logger = LoggerFactory.getLogger(GremlinProcessRunner.class);
+
     public GremlinProcessRunner(Class<?> klass) throws InitializationError {
         super(klass);
     }
@@ -74,6 +75,8 @@
                 return true;
             else if (ex instanceof NotSerializableException)
                 return true;
+            else if (ex.getClass().getSimpleName().contains("ResponseException"))
+                return true;
             ex = ex.getCause();
         }
         return false;
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
index fb57ebd..d8021eb 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
@@ -26,8 +26,10 @@
 import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.PeerPressureVertexProgramTest;
 import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgramTest;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionComputerTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.BranchTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.ChooseTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.OptionalTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.LocalTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.UnionTest;
@@ -60,7 +62,12 @@
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.MeanTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.MinTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PageRankTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PathTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PeerPressureTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProfileTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProgramTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProjectTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.SumTest;
@@ -73,7 +80,6 @@
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTestV3d0;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SackTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectCapTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectTest;
@@ -81,7 +87,6 @@
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SubgraphTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.TreeTest;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategyProcessTest;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.StructureStandardSuite;
@@ -112,6 +117,7 @@
             // branch
             BranchTest.Traversals.class,
             ChooseTest.Traversals.class,
+            OptionalTest.Traversals.class,
             LocalTest.Traversals.class,
             RepeatTest.Traversals.class,
             UnionTest.Traversals.class,
@@ -149,7 +155,12 @@
             MinTest.Traversals.class,
             SumTest.Traversals.class,
             OrderTest.Traversals.class,
+            PageRankTest.Traversals.class,
             PathTest.Traversals.class,
+            PeerPressureTest.Traversals.class,
+            ProfileTest.Traversals.class,
+            ProjectTest.Traversals.class,
+            ProgramTest.Traversals.class,
             PropertiesTest.Traversals.class,
             SelectTest.Traversals.class,
             UnfoldTest.Traversals.class,
@@ -172,15 +183,15 @@
             SubgraphTest.Traversals.class,
             TreeTest.Traversals.class,
 
+            // compliance
+            TraversalInterruptionComputerTest.class,
+
             // algorithms
             PageRankVertexProgramTest.class,
             PeerPressureVertexProgramTest.class,
             BulkLoaderVertexProgramTest.class,
             BulkDumperVertexProgramTest.class,
 
-            // strategy
-            ComputerVerificationStrategyProcessTest.ComputerTraversals.class,
-
             // decorations
             ReadOnlyStrategyProcessTest.class,
             SubgraphStrategyProcessTest.class
@@ -193,6 +204,7 @@
             // branch
             BranchTest.class,
             ChooseTest.class,
+            OptionalTest.class,
             LocalTest.class,
             RepeatTest.class,
             UnionTest.class,
@@ -225,7 +237,12 @@
             SumTest.class,
             MatchTest.class,
             OrderTest.class,
+            PageRankTest.class,
+            PeerPressureTest.class,
             PathTest.class,
+            ProfileTest.class,
+            ProjectTest.class,
+            ProgramTest.class,
             PropertiesTest.class,
             SelectTest.class,
             UnfoldTest.class,
@@ -238,7 +255,6 @@
             GroupTest.class,
             GroupCountTest.class,
             InjectTest.class,
-            ProfileTest.class,
             SackTest.class,
             SideEffectCapTest.class,
             SideEffectTest.class,
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessPerformanceSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessPerformanceSuite.java
index 90e2e6c..3d2b331 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessPerformanceSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessPerformanceSuite.java
@@ -36,7 +36,9 @@
  * For more information on the usage of this suite, please see {@link StructureStandardSuite}.
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated  As of release 3.2.0-incubating, replaced by gremlin-benchmark.
  */
+@Deprecated
 public class ProcessPerformanceSuite extends AbstractGremlinSuite {
 
     /**
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
index 7a9768c..5f83f33 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
@@ -21,9 +21,10 @@
 import org.apache.tinkerpop.gremlin.AbstractGremlinSuite;
 import org.apache.tinkerpop.gremlin.process.traversal.CoreTraversalTest;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffectsTest;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.BranchTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.ChooseTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.OptionalTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.LocalTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.UnionTest;
@@ -59,6 +60,8 @@
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.MinTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PathTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProfileTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProjectTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.SumTest;
@@ -71,7 +74,6 @@
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTestV3d0;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SackTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectCapTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectTest;
@@ -82,7 +84,6 @@
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategyProcessTest;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.StructureStandardSuite;
@@ -107,6 +108,7 @@
             // branch
             BranchTest.Traversals.class,
             ChooseTest.Traversals.class,
+            OptionalTest.Traversals.class,
             LocalTest.Traversals.class,
             RepeatTest.Traversals.class,
             UnionTest.Traversals.class,
@@ -148,6 +150,8 @@
             SumTest.Traversals.class,
             OrderTest.Traversals.class,
             PathTest.Traversals.class,
+            ProfileTest.Traversals.class,
+            ProjectTest.Traversals.class,
             PropertiesTest.Traversals.class,
             SelectTest.Traversals.class,
             VertexTest.Traversals.class,
@@ -161,7 +165,6 @@
             GroupTestV3d0.Traversals.class,
             GroupCountTest.Traversals.class,
             InjectTest.Traversals.class,
-            ProfileTest.Traversals.class,
             SackTest.Traversals.class,
             SideEffectCapTest.Traversals.class,
             SideEffectTest.Traversals.class,
@@ -169,17 +172,9 @@
             SubgraphTest.Traversals.class,
             TreeTest.Traversals.class,
 
-            // util
-            TraversalSideEffectsTest.Traversals.class,
-
             // compliance
             CoreTraversalTest.class,
-
-            // strategy
-            ComputerVerificationStrategyProcessTest.StandardTraversals.class,
-
-            // algorithms
-            // PageRankVertexProgramTest.class
+            TraversalInterruptionTest.class,
 
             // decorations
             ElementIdStrategyProcessTest.class,
@@ -196,6 +191,7 @@
             // branch
             BranchTest.class,
             ChooseTest.class,
+            OptionalTest.class,
             LocalTest.class,
             RepeatTest.class,
             UnionTest.class,
@@ -236,6 +232,8 @@
             OrderTest.class,
             PathTest.class,
             PropertiesTest.class,
+            ProfileTest.class,
+            ProjectTest.class,
             SelectTest.class,
             VertexTest.class,
             UnfoldTest.class,
@@ -246,16 +244,12 @@
             GroupTest.class,
             GroupCountTest.class,
             InjectTest.class,
-            ProfileTest.class,
             SackTest.class,
             SideEffectCapTest.class,
             SideEffectTest.class,
             StoreTest.class,
             SubgraphTest.class,
             TreeTest.class,
-
-            // util
-            TraversalSideEffectsTest.class
     };
 
     /**
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalPerformanceTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalPerformanceTest.java
index b78d4bf..c00fadc 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalPerformanceTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalPerformanceTest.java
@@ -36,10 +36,13 @@
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
  * @author Daniel Kuppitz (http://gremlin.guru)
+ *
+ * @deprecated  As of release 3.2.0, replaced by gremlin-benchmark.
  */
 @AxisRange(min = 0, max = 1)
 @BenchmarkMethodChart(filePrefix = "gremlin-traversal")
 @BenchmarkHistoryChart(labelWith = LabelType.CUSTOM_KEY, maxRuns = 20, filePrefix = "hx-gremlin-traversal")
+@Deprecated
 public class TraversalPerformanceTest extends AbstractGremlinTest {
 
     public final static int DEFAULT_BENCHMARK_ROUNDS = 10;
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 1af0830..761ae06 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
@@ -22,13 +22,24 @@
 import org.apache.tinkerpop.gremlin.ExceptionCoverage;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 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.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;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.junit.Test;
 
 import java.util.ArrayList;
@@ -38,6 +49,7 @@
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.ConcurrentSkipListSet;
@@ -64,7 +76,20 @@
         "adjacentVertexEdgesAndVerticesCanNotBeReadOrUpdated",
         "resultGraphPersistCombinationNotSupported",
         "vertexPropertiesCanNotBeUpdatedInMapReduce",
-        "computerRequiresMoreWorkersThanSupported"
+        "computerRequiresMoreWorkersThanSupported",
+        "vertexFilterAccessesIncidentEdges",
+        "edgeFilterAccessesAdjacentVertices",
+        "graphFilterNotSupported"
+})
+@ExceptionCoverage(exceptionClass = Memory.Exceptions.class, methods = {
+        "memoryKeyCanNotBeEmpty",
+        "memoryKeyCanNotBeNull",
+        "memoryValueCanNotBeNull",
+        "memoryIsCurrentlyImmutable",
+        "memoryDoesNotExist",
+        "memorySetOnlyDuringVertexProgramSetUpAndTerminate",
+        "memoryAddOnlyDuringVertexProgramExecute",
+        "adjacentVertexEdgesAndVerticesCanNotBeReadOrUpdated"
 })
 @ExceptionCoverage(exceptionClass = Graph.Exceptions.class, methods = {
         "graphDoesNotSupportProvidedGraphComputer"
@@ -75,7 +100,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldHaveStandardStringRepresentation() {
-        final GraphComputer computer = graph.compute(graphComputerClass.get());
+        final GraphComputer computer = graphProvider.getGraphComputer(graph);
         assertEquals(StringFactory.graphComputerString(computer), computer.toString());
     }
 
@@ -83,13 +108,14 @@
     @LoadGraphWith(MODERN)
     public void shouldNotAllowWithNoVertexProgramNorMapReducers() throws Exception {
         try {
-            graph.compute(graphComputerClass.get()).submit().get();
+            graphProvider.getGraphComputer(graph).submit().get();
             fail("Should throw an IllegalStateException when there is no vertex program nor map reducers");
         } catch (Exception ex) {
             validateException(GraphComputer.Exceptions.computerHasNoVertexProgramNorMapReducers(), ex);
         }
     }
 
+
     /////////////////////////////////////////////
     @Test
     @LoadGraphWith(MODERN)
@@ -100,6 +126,22 @@
         } catch (Exception ex) {
             validateException(Graph.Exceptions.graphDoesNotSupportProvidedGraphComputer(BadGraphComputer.class), ex);
         }
+        if (!new BadGraphComputer().features().supportsGraphFilter()) {
+            try {
+                new BadGraphComputer().vertices(__.hasLabel("software"));
+                fail("Should throw an unsupported operation exception");
+            } catch (final UnsupportedOperationException e) {
+                assertEquals(GraphComputer.Exceptions.graphFilterNotSupported().getMessage(), e.getMessage());
+            }
+            try {
+                new BadGraphComputer().edges(__.bothE());
+                fail("Should throw an unsupported operation exception");
+            } catch (final UnsupportedOperationException e) {
+                assertEquals(GraphComputer.Exceptions.graphFilterNotSupported().getMessage(), e.getMessage());
+            }
+        } else {
+            fail("Should not support graph filter: " + BadGraphComputer.class);
+        }
     }
 
     public static class BadGraphComputer implements GraphComputer {
@@ -130,6 +172,16 @@
         }
 
         @Override
+        public GraphComputer vertices(final Traversal<Vertex, Vertex> vertexFilter) {
+            throw GraphComputer.Exceptions.graphFilterNotSupported();
+        }
+
+        @Override
+        public GraphComputer edges(final Traversal<Vertex, Edge> edgeFilter) {
+            throw GraphComputer.Exceptions.graphFilterNotSupported();
+        }
+
+        @Override
         public GraphComputer configure(final String key, final Object value) {
             return null;
         }
@@ -139,6 +191,14 @@
             return null;
         }
 
+        public GraphComputer.Features features() {
+            return new Features() {
+                @Override
+                public boolean supportsGraphFilter() {
+                    return false;
+                }
+            };
+        }
     }
     /////////////////////////////////////////////
 
@@ -146,7 +206,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldHaveImmutableComputeResultMemory() throws Exception {
-        final ComputerResult results = graph.compute(graphComputerClass.get()).program(new VertexProgramB()).submit().get();
+        final ComputerResult results = graphProvider.getGraphComputer(graph).program(new VertexProgramB()).submit().get();
 
         try {
             results.memory().set("set", "test");
@@ -155,19 +215,19 @@
         }
 
         try {
-            results.memory().incr("incr", 1);
+            results.memory().add("incr", 1);
         } catch (Exception ex) {
             validateException(Memory.Exceptions.memoryIsCurrentlyImmutable(), ex);
         }
 
         try {
-            results.memory().and("and", true);
+            results.memory().add("and", true);
         } catch (Exception ex) {
             validateException(Memory.Exceptions.memoryIsCurrentlyImmutable(), ex);
         }
 
         try {
-            results.memory().or("or", false);
+            results.memory().add("or", false);
         } catch (Exception ex) {
             validateException(Memory.Exceptions.memoryIsCurrentlyImmutable(), ex);
         }
@@ -194,8 +254,12 @@
         }
 
         @Override
-        public Set<String> getMemoryComputeKeys() {
-            return new HashSet<>(Arrays.asList("set", "incr", "and", "or"));
+        public Set<MemoryComputeKey> getMemoryComputeKeys() {
+            return new HashSet<>(Arrays.asList(
+                    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
@@ -219,7 +283,7 @@
     @LoadGraphWith(MODERN)
     public void shouldNotAllowNullMemoryKeys() throws Exception {
         try {
-            graph.compute(graphComputerClass.get()).program(new VertexProgramC()).submit().get();
+            graphProvider.getGraphComputer(graph).program(new VertexProgramC()).submit().get();
             fail("Providing null memory key should fail");
         } catch (Exception ex) {
             // validateException(Memory.Exceptions.memoryKeyCanNotBeNull(), ex);
@@ -243,8 +307,8 @@
         }
 
         @Override
-        public Set<String> getMemoryComputeKeys() {
-            return new HashSet<>(Arrays.asList(null));
+        public Set<MemoryComputeKey> getMemoryComputeKeys() {
+            return Collections.singleton(MemoryComputeKey.of(null, Operator.or, true, false));
         }
 
         @Override
@@ -269,7 +333,7 @@
     @LoadGraphWith(MODERN)
     public void shouldNotAllowEmptyMemoryKeys() throws Exception {
         try {
-            graph.compute(graphComputerClass.get()).program(new VertexProgramD()).submit().get();
+            graphProvider.getGraphComputer(graph).program(new VertexProgramD()).submit().get();
             fail("Providing empty memory key should fail");
         } catch (Exception ex) {
             validateException(Memory.Exceptions.memoryKeyCanNotBeEmpty(), ex);
@@ -293,8 +357,8 @@
         }
 
         @Override
-        public Set<String> getMemoryComputeKeys() {
-            return new HashSet<>(Arrays.asList(""));
+        public Set<MemoryComputeKey> getMemoryComputeKeys() {
+            return Collections.singleton(MemoryComputeKey.of("", Operator.or, true, false));
         }
 
         @Override
@@ -317,32 +381,60 @@
     ////////////////////////////////////////////
     @Test
     @LoadGraphWith(MODERN)
-    public void shouldNotAllowSettingUndeclaredMemoryKeys() throws Exception {
-        graph.compute(graphComputerClass.get()).program(new VertexProgramE()).submit().get();
+    public void shouldHandleUndeclaredMemoryKeysCorrectly() throws Exception {
+        graphProvider.getGraphComputer(graph).program(new VertexProgramE()).submit().get();
     }
 
     public static class VertexProgramE extends StaticVertexProgram {
         @Override
         public void setup(final Memory memory) {
             try {
+                memory.get("a");
+                fail("The memory key does not exist and should fail");
+            } catch (Exception e) {
+                validateException(Memory.Exceptions.memoryDoesNotExist("a"), e);
+            }
+            try {
                 memory.set("a", true);
                 fail("Setting a memory key that wasn't declared should fail");
-            } catch (IllegalArgumentException e) {
-                assertEquals(GraphComputer.Exceptions.providedKeyIsNotAMemoryComputeKey("a").getMessage(), e.getMessage());
+            } catch (Exception e) {
+                validateException(GraphComputer.Exceptions.providedKeyIsNotAMemoryComputeKey("a"), e);
             }
         }
 
         @Override
         public void execute(final Vertex vertex, final Messenger messenger, final Memory memory) {
-
+            try {
+                memory.get("a");
+                fail("The memory key does not exist and should fail");
+            } catch (Exception e) {
+                validateException(Memory.Exceptions.memoryDoesNotExist("a"), e);
+            }
+            try {
+                memory.add("a", true);
+                fail("Setting a memory key that wasn't declared should fail");
+            } catch (Exception e) {
+                validateException(GraphComputer.Exceptions.providedKeyIsNotAMemoryComputeKey("a"), e);
+            }
         }
 
         @Override
         public boolean terminate(final Memory memory) {
+            try {
+                memory.get("a");
+                fail("The memory key does not exist and should fail");
+            } catch (Exception e) {
+                validateException(Memory.Exceptions.memoryDoesNotExist("a"), e);
+            }
+            try {
+                memory.set("a", true);
+                // fail("Setting a memory key that wasn't declared should fail");
+            } catch (Exception e) {
+                validateException(GraphComputer.Exceptions.providedKeyIsNotAMemoryComputeKey("a"), e);
+            }
             return true;
         }
 
-
         @Override
         public Set<MessageScope> getMessageScopes(final Memory memory) {
             return Collections.emptySet();
@@ -364,7 +456,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldNotAllowTheSameComputerToExecutedTwice() throws Exception {
-        final GraphComputer computer = graph.compute(graphComputerClass.get()).program(new VertexProgramA());
+        final GraphComputer computer = graphProvider.getGraphComputer(graph).program(new VertexProgramA());
         computer.submit().get(); // this should work as its the first run of the graph computer
 
         try {
@@ -425,7 +517,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldHaveConsistentMemoryVertexPropertiesAndExceptions() throws Exception {
-        ComputerResult results = graph.compute(graphComputerClass.get()).program(new VertexProgramF()).submit().get();
+        ComputerResult results = graphProvider.getGraphComputer(graph).program(new VertexProgramF()).submit().get();
         assertEquals(1, results.memory().getIteration());
         assertEquals(2, results.memory().asMap().size());
         assertEquals(2, results.memory().keys().size());
@@ -433,8 +525,8 @@
         assertTrue(results.memory().keys().contains("b"));
         assertTrue(results.memory().getRuntime() >= 0);
 
-        assertEquals(Long.valueOf(12), results.memory().<Long>get("a"));   // 2 iterations
-        assertEquals(Long.valueOf(28), results.memory().<Long>get("b"));
+        assertEquals(12, results.memory().<Integer>get("a").intValue());   // 2 iterations
+        assertEquals(28, results.memory().<Integer>get("b").intValue());
         try {
             results.memory().get("BAD");
             fail("Should throw an IllegalArgumentException");
@@ -467,10 +559,10 @@
                 fail("Should throw an IllegalArgumentException: " + e);
             }
 
-            memory.incr("a", 1);
+            memory.add("a", 1);
             if (memory.isInitialIteration()) {
                 vertex.property(VertexProperty.Cardinality.single, "nameLengthCounter", vertex.<String>value("name").length());
-                memory.incr("b", vertex.<String>value("name").length());
+                memory.add("b", vertex.<String>value("name").length());
             } else {
                 vertex.property(VertexProperty.Cardinality.single, "nameLengthCounter", vertex.<String>value("name").length() + vertex.<Integer>value("nameLengthCounter"));
             }
@@ -482,13 +574,15 @@
         }
 
         @Override
-        public Set<String> getElementComputeKeys() {
-            return new HashSet<>(Arrays.asList("nameLengthCounter"));
+        public Set<VertexComputeKey> getVertexComputeKeys() {
+            return Collections.singleton(VertexComputeKey.of("nameLengthCounter", false));
         }
 
         @Override
-        public Set<String> getMemoryComputeKeys() {
-            return new HashSet<>(Arrays.asList("a", "b"));
+        public Set<MemoryComputeKey> getMemoryComputeKeys() {
+            return new HashSet<>(Arrays.asList(
+                    MemoryComputeKey.of("a", Operator.sum, true, false),
+                    MemoryComputeKey.of("b", Operator.sum, true, false)));
         }
 
         @Override
@@ -512,7 +606,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldAndOrIncrCorrectlyThroughSubStages() throws Exception {
-        ComputerResult results = graph.compute(graphComputerClass.get()).program(new VertexProgramG()).submit().get();
+        ComputerResult results = graphProvider.getGraphComputer(graph).program(new VertexProgramG()).submit().get();
         assertEquals(2, results.memory().getIteration());
         assertEquals(6, results.memory().asMap().size());
         assertEquals(6, results.memory().keys().size());
@@ -541,10 +635,16 @@
             memory.set("d", false);
             memory.set("e", true);
             memory.set("f", memory.getIteration());
+            try {
+                memory.add("a", 0l);
+                fail("Should only allow Memory.set() during VertexProgram.setup()");
+            } catch (final Exception e) {
+                validateException(Memory.Exceptions.memoryAddOnlyDuringVertexProgramExecute("a"), e);
+            }
         }
 
         @Override
-        public void execute(Vertex vertex, Messenger messenger, Memory memory) {
+        public void execute(final Vertex vertex, final Messenger messenger, final Memory memory) {
             // test current step values
             assertEquals(Long.valueOf(6 * memory.getIteration()), memory.get("a"));
             assertEquals(Long.valueOf(0), memory.get("b"));
@@ -559,12 +659,12 @@
             assertEquals(memory.getIteration(), memory.<Integer>get("f").intValue());
 
             // update current step values
-            memory.incr("a", 1l);
-            memory.incr("b", 1l);
-            memory.and("c", false);
-            memory.or("d", true);
-            memory.and("e", false);
-            memory.set("f", memory.getIteration() + 1);
+            memory.add("a", 1l);
+            memory.add("b", 1l);
+            memory.add("c", false);
+            memory.add("d", true);
+            memory.add("e", false);
+            memory.add("f", memory.getIteration() + 1);
 
             // test current step values, should be the same as previous prior to update
             assertEquals(Long.valueOf(6 * memory.getIteration()), memory.get("a"));
@@ -578,6 +678,12 @@
             }
             assertTrue(memory.get("e"));
             assertEquals(memory.getIteration(), memory.<Integer>get("f").intValue());
+            try {
+                memory.set("a", 0l);
+                fail("Should only allow Memory.add() during VertexProgram.execute()");
+            } catch (final Exception e) {
+                validateException(Memory.Exceptions.memorySetOnlyDuringVertexProgramSetUpAndTerminate("a"), e);
+            }
         }
 
         @Override
@@ -590,17 +696,24 @@
             assertEquals(memory.getIteration() + 1, memory.<Integer>get("f").intValue());
             memory.set("b", 0l);
             memory.set("e", true);
+            try {
+                memory.add("a", 0l);
+                fail("Should only allow Memory.set() during VertexProgram.terminate()");
+            } catch (final Exception e) {
+                validateException(Memory.Exceptions.memoryAddOnlyDuringVertexProgramExecute("a"), e);
+            }
             return memory.getIteration() > 1;
         }
 
         @Override
-        public Set<String> getElementComputeKeys() {
-            return Collections.emptySet();
-        }
-
-        @Override
-        public Set<String> getMemoryComputeKeys() {
-            return new HashSet<>(Arrays.asList("a", "b", "c", "d", "e", "f"));
+        public Set<MemoryComputeKey> getMemoryComputeKeys() {
+            return new HashSet<>(Arrays.asList(
+                    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
@@ -624,7 +737,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldAllowMapReduceWithNoVertexProgram() throws Exception {
-        final ComputerResult results = graph.compute(graphComputerClass.get()).mapReduce(new MapReduceA()).submit().get();
+        final ComputerResult results = graphProvider.getGraphComputer(graph).mapReduce(new MapReduceA()).submit().get();
         assertEquals(123, results.memory().<Integer>get("ageSum").intValue());
     }
 
@@ -664,7 +777,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldSupportMultipleMapReduceJobs() throws Exception {
-        final ComputerResult results = graph.compute(graphComputerClass.get())
+        final ComputerResult results = graphProvider.getGraphComputer(graph)
                 .program(new VertexProgramH())
                 .mapReduce(new MapReduceH1())
                 .mapReduce(new MapReduceH2()).submit().get();
@@ -690,13 +803,8 @@
         }
 
         @Override
-        public Set<String> getElementComputeKeys() {
-            return new HashSet<>(Arrays.asList("counter"));
-        }
-
-        @Override
-        public Set<String> getMemoryComputeKeys() {
-            return Collections.emptySet();
+        public Set<VertexComputeKey> getVertexComputeKeys() {
+            return Collections.singleton(VertexComputeKey.of("counter", false));
         }
 
         @Override
@@ -785,7 +893,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldSortReduceOutput() throws Exception {
-        final ComputerResult results = graph.compute(graphComputerClass.get()).mapReduce(new MapReduceB()).submit().get();
+        final ComputerResult results = graphProvider.getGraphComputer(graph).mapReduce(new MapReduceB()).submit().get();
         final List<Integer> nameLengths = results.memory().get("nameLengths");
         assertEquals(6, nameLengths.size());
         for (int i = 1; i < nameLengths.size(); i++) {
@@ -832,7 +940,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldSortMapOutput() throws Exception {
-        final ComputerResult results = graph.compute(graphComputerClass.get()).mapReduce(new MapReduceBB()).submit().get();
+        final ComputerResult results = graphProvider.getGraphComputer(graph).mapReduce(new MapReduceBB()).submit().get();
         final List<Integer> nameLengths = results.memory().get("nameLengths");
         assertEquals(6, nameLengths.size());
         for (int i = 1; i < nameLengths.size(); i++) {
@@ -875,7 +983,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldOnlyAllowReadingVertexPropertiesInMapReduce() throws Exception {
-        graph.compute(graphComputerClass.get()).mapReduce(new MapReduceC()).submit().get();
+        graphProvider.getGraphComputer(graph).mapReduce(new MapReduceC()).submit().get();
     }
 
     public static class MapReduceC extends StaticMapReduce<MapReduce.NullObject, MapReduce.NullObject, MapReduce.NullObject, MapReduce.NullObject, MapReduce.NullObject> {
@@ -923,7 +1031,7 @@
 
         @Override
         public String getMemoryKey() {
-            return MapReduce.NullObject.instance().toString();
+            return "nothing";
         }
 
         @Override
@@ -937,7 +1045,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldOnlyAllowIDAccessOfAdjacentVertices() throws Exception {
-        graph.compute(graphComputerClass.get()).program(new VertexProgramI()).submit().get();
+        graphProvider.getGraphComputer(graph).program(new VertexProgramI()).submit().get();
     }
 
     public static class VertexProgramI extends StaticVertexProgram<MapReduce.NullObject> {
@@ -1049,7 +1157,7 @@
     public void shouldStartAndEndWorkersForVertexProgramAndMapReduce() throws Exception {
         MapReduceI.WORKER_START.clear();
         MapReduceI.WORKER_END.clear();
-        assertEquals(3, graph.compute(graphComputerClass.get()).program(new VertexProgramJ()).mapReduce(new MapReduceI()).submit().get().memory().<Integer>get("a").intValue());
+        assertEquals(3, graphProvider.getGraphComputer(graph).program(new VertexProgramJ()).mapReduce(new MapReduceI()).submit().get().memory().<Integer>get("a").intValue());
         if (MapReduceI.WORKER_START.size() == 2) {
             assertEquals(2, MapReduceI.WORKER_START.size());
             assertTrue(MapReduceI.WORKER_START.contains(MapReduce.Stage.MAP) && MapReduceI.WORKER_START.contains(MapReduce.Stage.REDUCE));
@@ -1076,9 +1184,9 @@
 
         @Override
         public void workerIterationStart(final Memory memory) {
-            assertEquals(memory.getIteration(), memory.<Integer>get("test").intValue());
+            assertEquals(memory.getIteration() * 6, memory.<Integer>get("test").intValue());
             try {
-                memory.set("test", memory.getIteration());
+                memory.add("test", memory.getIteration());
                 fail("Should throw an immutable memory exception");
             } catch (IllegalStateException e) {
                 assertEquals(Memory.Exceptions.memoryIsCurrentlyImmutable().getMessage(), e.getMessage());
@@ -1087,8 +1195,8 @@
 
         @Override
         public void execute(Vertex vertex, Messenger messenger, Memory memory) {
-            assertEquals(memory.getIteration(), memory.<Integer>get("test").intValue());
-            memory.set("test", memory.getIteration() + 1);
+            assertEquals(memory.getIteration() * 6, memory.<Integer>get("test").intValue());
+            memory.add("test", 1);
         }
 
         @Override
@@ -1098,7 +1206,7 @@
 
         @Override
         public void workerIterationEnd(final Memory memory) {
-            assertEquals(memory.getIteration(), memory.<Integer>get("test").intValue());
+            assertEquals(memory.getIteration() * 6, memory.<Integer>get("test").intValue());
             try {
                 memory.set("test", memory.getIteration());
                 fail("Should throw an immutable memory exception");
@@ -1108,8 +1216,8 @@
         }
 
         @Override
-        public Set<String> getMemoryComputeKeys() {
-            return new HashSet<>(Arrays.asList("test"));
+        public Set<MemoryComputeKey> getMemoryComputeKeys() {
+            return Collections.singleton(MemoryComputeKey.of("test", Operator.sum, true, false));
         }
 
         @Override
@@ -1201,7 +1309,7 @@
     public void shouldSupportPersistResultGraphPairsStatedInFeatures() throws Exception {
         for (final GraphComputer.ResultGraph resultGraph : GraphComputer.ResultGraph.values()) {
             for (final GraphComputer.Persist persist : GraphComputer.Persist.values()) {
-                final GraphComputer computer = graph.compute(graphComputerClass.get());
+                final GraphComputer computer = graphProvider.getGraphComputer(graph);
                 if (computer.features().supportsResultGraphPersistCombination(resultGraph, persist)) {
                     computer.program(new VertexProgramK()).result(resultGraph).persist(persist).submit().get();
                 } else {
@@ -1219,7 +1327,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldProcessResultGraphNewWithPersistNothing() throws Exception {
-        final GraphComputer computer = graph.compute(graphComputerClass.get());
+        final GraphComputer computer = graphProvider.getGraphComputer(graph);
         if (computer.features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.NEW, GraphComputer.Persist.NOTHING)) {
             final ComputerResult result = computer.program(new VertexProgramK()).result(GraphComputer.ResultGraph.NEW).persist(GraphComputer.Persist.NOTHING).submit().get();
             assertEquals(Long.valueOf(0l), result.graph().traversal().V().count().next());
@@ -1239,7 +1347,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldProcessResultGraphNewWithPersistVertexProperties() throws Exception {
-        final GraphComputer computer = graph.compute(graphComputerClass.get());
+        final GraphComputer computer = graphProvider.getGraphComputer(graph);
         if (computer.features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.NEW, GraphComputer.Persist.VERTEX_PROPERTIES)) {
             final ComputerResult result = computer.program(new VertexProgramK()).result(GraphComputer.ResultGraph.NEW).persist(GraphComputer.Persist.VERTEX_PROPERTIES).submit().get();
             assertEquals(Long.valueOf(6l), result.graph().traversal().V().count().next());
@@ -1259,7 +1367,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldProcessResultGraphNewWithPersistEdges() throws Exception {
-        final GraphComputer computer = graph.compute(graphComputerClass.get());
+        final GraphComputer computer = graphProvider.getGraphComputer(graph);
         if (computer.features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.NEW, GraphComputer.Persist.EDGES)) {
             final ComputerResult result = computer.program(new VertexProgramK()).result(GraphComputer.ResultGraph.NEW).persist(GraphComputer.Persist.EDGES).submit().get();
             assertEquals(Long.valueOf(6l), result.graph().traversal().V().count().next());
@@ -1279,7 +1387,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldProcessResultGraphOriginalWithPersistNothing() throws Exception {
-        final GraphComputer computer = graph.compute(graphComputerClass.get());
+        final GraphComputer computer = graphProvider.getGraphComputer(graph);
         if (computer.features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.ORIGINAL, GraphComputer.Persist.NOTHING)) {
             final ComputerResult result = computer.program(new VertexProgramK()).result(GraphComputer.ResultGraph.ORIGINAL).persist(GraphComputer.Persist.NOTHING).submit().get();
             assertEquals(Long.valueOf(6l), result.graph().traversal().V().count().next());
@@ -1299,7 +1407,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldProcessResultGraphOriginalWithPersistVertexProperties() throws Exception {
-        final GraphComputer computer = graph.compute(graphComputerClass.get());
+        final GraphComputer computer = graphProvider.getGraphComputer(graph);
         if (computer.features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.ORIGINAL, GraphComputer.Persist.VERTEX_PROPERTIES)) {
             final ComputerResult result = computer.program(new VertexProgramK()).result(GraphComputer.ResultGraph.ORIGINAL).persist(GraphComputer.Persist.VERTEX_PROPERTIES).submit().get();
             assertEquals(Long.valueOf(6l), result.graph().traversal().V().count().next());
@@ -1319,7 +1427,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldProcessResultGraphOriginalWithPersistEdges() throws Exception {
-        final GraphComputer computer = graph.compute(graphComputerClass.get());
+        final GraphComputer computer = graphProvider.getGraphComputer(graph);
         if (computer.features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.ORIGINAL, GraphComputer.Persist.EDGES)) {
             final ComputerResult result = computer.program(new VertexProgramK()).result(GraphComputer.ResultGraph.ORIGINAL).persist(GraphComputer.Persist.EDGES).submit().get();
             assertEquals(Long.valueOf(6l), result.graph().traversal().V().count().next());
@@ -1355,8 +1463,8 @@
         }
 
         @Override
-        public Set<String> getElementComputeKeys() {
-            return Collections.singleton("money");
+        public Set<VertexComputeKey> getVertexComputeKeys() {
+            return Collections.singleton(VertexComputeKey.of("money", false));
         }
 
         @Override
@@ -1380,11 +1488,11 @@
     @Test
     @LoadGraphWith(GRATEFUL)
     public void shouldSupportWorkerCount() throws Exception {
-        int maxWorkers = graph.compute(graphComputerClass.get()).features().getMaxWorkers();
+        int maxWorkers = graphProvider.getGraphComputer(graph).features().getMaxWorkers();
         if (maxWorkers != Integer.MAX_VALUE) {
             for (int i = maxWorkers + 1; i < maxWorkers + 10; i++) {
                 try {
-                    graph.compute(graphComputerClass.get()).program(new VertexProgramL()).workers(i).submit().get();
+                    graphProvider.getGraphComputer(graph).program(new VertexProgramL()).workers(i).submit().get();
                     fail("Should throw a GraphComputer.Exceptions.computerRequiresMoreWorkersThanSupported() exception");
                 } catch (final IllegalArgumentException e) {
                     assertTrue(e.getMessage().contains("computer requires more workers"));
@@ -1393,7 +1501,7 @@
         }
         if (maxWorkers > 25) maxWorkers = 25;
         for (int i = 1; i <= maxWorkers; i++) {
-            ComputerResult result = graph.compute(graphComputerClass.get()).program(new VertexProgramL()).workers(i).submit().get();
+            ComputerResult result = graphProvider.getGraphComputer(graph).program(new VertexProgramL()).workers(i).submit().get();
             assertEquals(Integer.valueOf(i).longValue(), (long) result.memory().get("workerCount"));
         }
     }
@@ -1415,7 +1523,7 @@
                 throw new IllegalStateException(e.getMessage(), e);
             }
             if (!this.announced) {
-                memory.incr("workerCount", 1l);
+                memory.add("workerCount", 1l);
                 this.announced = true;
             }
         }
@@ -1426,8 +1534,8 @@
         }
 
         @Override
-        public Set<String> getMemoryComputeKeys() {
-            return new HashSet<>(Arrays.asList("workerCount"));
+        public Set<MemoryComputeKey> getMemoryComputeKeys() {
+            return Collections.singleton(MemoryComputeKey.of("workerCount", Operator.sum, true, false));
         }
 
         /*public void workerIterationStart(final Memory memory) {
@@ -1466,4 +1574,757 @@
 
     }
 
+    /////////////////////////////////////////////
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void shouldSupportGraphFilter() throws Exception {
+        // if the graph computer does not support graph filter, then make sure its exception handling is correct
+        if (!graphProvider.getGraphComputer(graph).features().supportsGraphFilter()) {
+            try {
+                graphProvider.getGraphComputer(graph).vertices(__.hasLabel("software"));
+                fail("Should throw an unsupported operation exception");
+            } catch (final UnsupportedOperationException e) {
+                assertEquals(GraphComputer.Exceptions.graphFilterNotSupported().getMessage(), e.getMessage());
+            }
+            try {
+                graphProvider.getGraphComputer(graph).edges(__.<Vertex>outE().limit(10));
+                fail("Should throw an unsupported operation exception");
+            } catch (final UnsupportedOperationException e) {
+                assertEquals(GraphComputer.Exceptions.graphFilterNotSupported().getMessage(), e.getMessage());
+            }
+            return;
+        }
+        /// VERTEX PROGRAM
+        graphProvider.getGraphComputer(graph).vertices(__.hasLabel("software")).program(new VertexProgramM(VertexProgramM.SOFTWARE_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).program(new VertexProgramM(VertexProgramM.PEOPLE_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).edges(__.bothE("knows")).program(new VertexProgramM(VertexProgramM.KNOWS_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).edges(__.bothE("knows")).program(new VertexProgramM(VertexProgramM.PEOPLE_KNOWS_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).edges(__.<Vertex>bothE("knows").has("weight", P.gt(0.5f))).program(new VertexProgramM(VertexProgramM.PEOPLE_KNOWS_WELL_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).edges(__.<Vertex>bothE().limit(0)).program(new VertexProgramM(VertexProgramM.VERTICES_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).edges(__.<Vertex>outE().limit(1)).program(new VertexProgramM(VertexProgramM.ONE_OUT_EDGE_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).edges(__.outE()).program(new VertexProgramM(VertexProgramM.OUT_EDGES_ONLY)).submit().get();
+
+        /// VERTEX PROGRAM + MAP REDUCE
+        graphProvider.getGraphComputer(graph).vertices(__.hasLabel("software")).program(new VertexProgramM(VertexProgramM.SOFTWARE_ONLY)).mapReduce(new MapReduceJ(VertexProgramM.SOFTWARE_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).program(new VertexProgramM(VertexProgramM.PEOPLE_ONLY)).mapReduce(new MapReduceJ(VertexProgramM.PEOPLE_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).edges(__.bothE("knows")).program(new VertexProgramM(VertexProgramM.KNOWS_ONLY)).mapReduce(new MapReduceJ(VertexProgramM.KNOWS_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).edges(__.bothE("knows")).program(new VertexProgramM(VertexProgramM.PEOPLE_KNOWS_ONLY)).mapReduce(new MapReduceJ(VertexProgramM.PEOPLE_KNOWS_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).edges(__.<Vertex>bothE("knows").has("weight", P.gt(0.5f))).program(new VertexProgramM(VertexProgramM.PEOPLE_KNOWS_WELL_ONLY)).mapReduce(new MapReduceJ(VertexProgramM.PEOPLE_KNOWS_WELL_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).edges(__.<Vertex>bothE().limit(0)).program(new VertexProgramM(VertexProgramM.VERTICES_ONLY)).mapReduce(new MapReduceJ(VertexProgramM.VERTICES_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).edges(__.<Vertex>outE().limit(1)).program(new VertexProgramM(VertexProgramM.ONE_OUT_EDGE_ONLY)).mapReduce(new MapReduceJ(VertexProgramM.ONE_OUT_EDGE_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).edges(__.outE()).program(new VertexProgramM(VertexProgramM.OUT_EDGES_ONLY)).mapReduce(new MapReduceJ(VertexProgramM.OUT_EDGES_ONLY)).submit().get();
+
+        /// MAP REDUCE ONLY
+        graphProvider.getGraphComputer(graph).vertices(__.hasLabel("software")).mapReduce(new MapReduceJ(VertexProgramM.SOFTWARE_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).mapReduce(new MapReduceJ(VertexProgramM.PEOPLE_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).edges(__.bothE("knows")).mapReduce(new MapReduceJ(VertexProgramM.KNOWS_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).edges(__.bothE("knows")).mapReduce(new MapReduceJ(VertexProgramM.PEOPLE_KNOWS_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).vertices(__.hasLabel("person")).edges(__.<Vertex>bothE("knows").has("weight", P.gt(0.5f))).mapReduce(new MapReduceJ(VertexProgramM.PEOPLE_KNOWS_WELL_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).edges(__.<Vertex>bothE().limit(0)).mapReduce(new MapReduceJ(VertexProgramM.VERTICES_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).edges(__.<Vertex>outE().limit(1)).mapReduce(new MapReduceJ(VertexProgramM.ONE_OUT_EDGE_ONLY)).submit().get();
+        graphProvider.getGraphComputer(graph).edges(__.outE()).mapReduce(new MapReduceJ(VertexProgramM.OUT_EDGES_ONLY)).submit().get();
+
+        // EXCEPTION HANDLING
+        try {
+            graphProvider.getGraphComputer(graph).vertices(__.out());
+            fail();
+        } catch (final IllegalArgumentException e) {
+            assertEquals(e.getMessage(), GraphComputer.Exceptions.vertexFilterAccessesIncidentEdges(__.out()).getMessage());
+        }
+        try {
+            graphProvider.getGraphComputer(graph).edges(__.<Vertex>out().outE());
+            fail();
+        } catch (final IllegalArgumentException e) {
+            assertEquals(e.getMessage(), GraphComputer.Exceptions.edgeFilterAccessesAdjacentVertices(__.<Vertex>out().outE()).getMessage());
+        }
+    }
+
+    public static class VertexProgramM implements VertexProgram {
+
+        public static final String SOFTWARE_ONLY = "softwareOnly";
+        public static final String PEOPLE_ONLY = "peopleOnly";
+        public static final String KNOWS_ONLY = "knowsOnly";
+        public static final String PEOPLE_KNOWS_ONLY = "peopleKnowsOnly";
+        public static final String PEOPLE_KNOWS_WELL_ONLY = "peopleKnowsWellOnly";
+        public static final String VERTICES_ONLY = "verticesOnly";
+        public static final String ONE_OUT_EDGE_ONLY = "oneOutEdgeOnly";
+        public static final String OUT_EDGES_ONLY = "outEdgesOnly";
+
+        private String state;
+
+        public VertexProgramM() {
+
+        }
+
+        public VertexProgramM(final String state) {
+            this.state = state;
+        }
+
+        @Override
+        public void setup(final Memory memory) {
+
+        }
+
+        @Override
+        public void execute(final Vertex vertex, final Messenger messenger, final Memory memory) {
+            switch (this.state) {
+                case SOFTWARE_ONLY: {
+                    assertEquals("software", vertex.label());
+                    assertFalse(vertex.edges(Direction.OUT).hasNext());
+                    assertTrue(vertex.edges(Direction.IN).hasNext());
+                    assertTrue(vertex.edges(Direction.IN, "created").hasNext());
+                    assertFalse(vertex.edges(Direction.IN, "knows").hasNext());
+                    break;
+                }
+                case PEOPLE_ONLY: {
+                    assertEquals("person", vertex.label());
+                    assertFalse(vertex.edges(Direction.IN, "created").hasNext());
+                    assertTrue(IteratorUtils.count(vertex.edges(Direction.BOTH)) > 0);
+                    break;
+                }
+                case KNOWS_ONLY: {
+                    assertEquals(0, IteratorUtils.count(vertex.edges(Direction.BOTH, "created")));
+                    if (vertex.value("name").equals("marko"))
+                        assertEquals(2, IteratorUtils.count(vertex.edges(Direction.BOTH, "knows")));
+                    else if (vertex.value("name").equals("vadas"))
+                        assertEquals(1, IteratorUtils.count(vertex.edges(Direction.IN, "knows")));
+                    else if (vertex.value("name").equals("josh"))
+                        assertEquals(1, IteratorUtils.count(vertex.edges(Direction.IN, "knows")));
+                    else {
+                        assertEquals(0, IteratorUtils.count(vertex.edges(Direction.BOTH, "knows")));
+                        assertEquals(0, IteratorUtils.count(vertex.edges(Direction.BOTH)));
+                    }
+                    break;
+                }
+                case PEOPLE_KNOWS_ONLY: {
+                    assertEquals("person", vertex.label());
+                    assertEquals(0, IteratorUtils.count(vertex.edges(Direction.BOTH, "created")));
+                    if (vertex.value("name").equals("marko"))
+                        assertEquals(2, IteratorUtils.count(vertex.edges(Direction.BOTH, "knows")));
+                    else if (vertex.value("name").equals("vadas"))
+                        assertEquals(1, IteratorUtils.count(vertex.edges(Direction.IN, "knows")));
+                    else if (vertex.value("name").equals("josh"))
+                        assertEquals(1, IteratorUtils.count(vertex.edges(Direction.IN, "knows")));
+                    else {
+                        assertEquals(0, IteratorUtils.count(vertex.edges(Direction.BOTH, "knows")));
+                        assertEquals(0, IteratorUtils.count(vertex.edges(Direction.BOTH)));
+                    }
+                    break;
+                }
+                case PEOPLE_KNOWS_WELL_ONLY: {
+                    assertEquals("person", vertex.label());
+                    assertEquals(0, IteratorUtils.count(vertex.edges(Direction.BOTH, "created")));
+                    if (vertex.value("name").equals("marko")) {
+                        assertEquals(1, IteratorUtils.count(vertex.edges(Direction.BOTH, "knows")));
+                        assertEquals(1.0, vertex.edges(Direction.OUT, "knows").next().value("weight"), 0.001);
+                    } else if (vertex.value("name").equals("vadas"))
+                        assertEquals(0, IteratorUtils.count(vertex.edges(Direction.IN, "knows")));
+                    else if (vertex.value("name").equals("josh")) {
+                        assertEquals(1, IteratorUtils.count(vertex.edges(Direction.IN, "knows")));
+                        assertEquals(1.0, vertex.edges(Direction.IN, "knows").next().value("weight"), 0.001);
+                    } else {
+                        assertEquals(0, IteratorUtils.count(vertex.edges(Direction.BOTH, "knows")));
+                        assertEquals(0, IteratorUtils.count(vertex.edges(Direction.BOTH)));
+                    }
+                    break;
+                }
+                case VERTICES_ONLY: {
+                    assertEquals(0, IteratorUtils.count(vertex.edges(Direction.BOTH)));
+                    break;
+                }
+                case ONE_OUT_EDGE_ONLY: {
+                    if (vertex.label().equals("software") || vertex.value("name").equals("vadas"))
+                        assertEquals(0, IteratorUtils.count(vertex.edges(Direction.BOTH)));
+                    else {
+                        assertEquals(1, IteratorUtils.count(vertex.edges(Direction.OUT)));
+                        assertEquals(0, IteratorUtils.count(vertex.edges(Direction.IN)));
+                        assertEquals(1, IteratorUtils.count(vertex.edges(Direction.BOTH)));
+                    }
+                    break;
+                }
+                case OUT_EDGES_ONLY: {
+                    if (vertex.label().equals("software") || vertex.value("name").equals("vadas"))
+                        assertEquals(0, IteratorUtils.count(vertex.edges(Direction.BOTH)));
+                    else {
+                        assertTrue(IteratorUtils.count(vertex.edges(Direction.OUT)) > 0);
+                        assertEquals(0, IteratorUtils.count(vertex.edges(Direction.IN)));
+                        assertEquals(IteratorUtils.count(vertex.edges(Direction.OUT)), IteratorUtils.count(vertex.edges(Direction.BOTH)));
+                    }
+                    break;
+                }
+                default:
+                    throw new IllegalStateException("This is an illegal state for this test case: " + this.state);
+            }
+        }
+
+        @Override
+        public boolean terminate(final Memory memory) {
+            return true;
+        }
+
+        @Override
+        public Set<MessageScope> getMessageScopes(Memory memory) {
+            return Collections.emptySet();
+        }
+
+        @Override
+        public GraphComputer.ResultGraph getPreferredResultGraph() {
+            return GraphComputer.ResultGraph.NEW;
+        }
+
+        @Override
+        public GraphComputer.Persist getPreferredPersist() {
+            return GraphComputer.Persist.NOTHING;
+        }
+
+        @Override
+        @SuppressWarnings("CloneDoesntCallSuperClone,CloneDoesntDeclareCloneNotSupportedException")
+        public VertexProgramM clone() {
+            return new VertexProgramM(this.state);
+        }
+
+        @Override
+        public void loadState(final Graph graph, final Configuration configuration) {
+            this.state = configuration.getString("state");
+        }
+
+        @Override
+        public void storeState(final Configuration configuration) {
+            configuration.setProperty("state", this.state);
+            VertexProgram.super.storeState(configuration);
+        }
+
+    }
+
+    private static class MapReduceJ implements MapReduce<MapReduce.NullObject, Integer, MapReduce.NullObject, Integer, Integer> {
+
+        private String state;
+
+        public MapReduceJ() {
+        }
+
+        public MapReduceJ(final String state) {
+            this.state = state;
+        }
+
+        @Override
+        public void loadState(final Graph graph, final Configuration configuration) {
+            this.state = configuration.getString("state");
+        }
+
+        @Override
+        public void storeState(final Configuration configuration) {
+            configuration.setProperty("state", this.state);
+            MapReduce.super.storeState(configuration);
+        }
+
+        @Override
+        @SuppressWarnings("CloneDoesntCallSuperClone,CloneDoesntDeclareCloneNotSupportedException")
+        public MapReduceJ clone() {
+            return new MapReduceJ(this.state);
+        }
+
+        @Override
+        public boolean doStage(final Stage stage) {
+            return true;
+        }
+
+        @Override
+        public void map(final Vertex vertex, final MapEmitter<NullObject, Integer> emitter) {
+            emitter.emit(1);
+            switch (this.state) {
+                case VertexProgramM.SOFTWARE_ONLY: {
+                    assertEquals("software", vertex.label());
+                    break;
+                }
+                case VertexProgramM.PEOPLE_ONLY: {
+                    assertEquals("person", vertex.label());
+                    break;
+                }
+                case VertexProgramM.KNOWS_ONLY: {
+                    assertTrue(vertex.label().equals("person") || vertex.label().equals("software"));
+                    break;
+                }
+                case VertexProgramM.PEOPLE_KNOWS_ONLY: {
+                    assertEquals("person", vertex.label());
+                    break;
+                }
+                case VertexProgramM.PEOPLE_KNOWS_WELL_ONLY: {
+                    assertEquals("person", vertex.label());
+                    break;
+                }
+                case VertexProgramM.VERTICES_ONLY: {
+                    assertTrue(vertex.label().equals("person") || vertex.label().equals("software"));
+                    break;
+                }
+                case VertexProgramM.ONE_OUT_EDGE_ONLY: {
+                    assertTrue(vertex.label().equals("person") || vertex.label().equals("software"));
+                    break;
+                }
+                case VertexProgramM.OUT_EDGES_ONLY: {
+                    assertTrue(vertex.label().equals("person") || vertex.label().equals("software"));
+                    break;
+                }
+                default:
+                    throw new IllegalStateException("This is an illegal state for this test case: " + this.state);
+            }
+        }
+
+        @Override
+        public void combine(final NullObject key, final Iterator<Integer> values, final ReduceEmitter<NullObject, Integer> emitter) {
+            this.reduce(key, values, emitter);
+        }
+
+        @Override
+        public void reduce(final NullObject key, final Iterator<Integer> values, final ReduceEmitter<NullObject, Integer> emitter) {
+            int count = 0;
+            while (values.hasNext()) {
+                count = count + values.next();
+            }
+            emitter.emit(count);
+        }
+
+        @Override
+        public Integer generateFinalResult(final Iterator<KeyValue<NullObject, Integer>> keyValues) {
+            int counter = keyValues.next().getValue();
+            assertFalse(keyValues.hasNext());
+
+            switch (this.state) {
+                case VertexProgramM.SOFTWARE_ONLY: {
+                    assertEquals(2, counter);
+                    break;
+                }
+                case VertexProgramM.PEOPLE_ONLY: {
+                    assertEquals(4, counter);
+                    break;
+                }
+                case VertexProgramM.KNOWS_ONLY: {
+                    assertEquals(6, counter);
+                    break;
+                }
+                case VertexProgramM.PEOPLE_KNOWS_ONLY: {
+                    assertEquals(4, counter);
+                    break;
+                }
+                case VertexProgramM.PEOPLE_KNOWS_WELL_ONLY: {
+                    assertEquals(4, counter);
+                    break;
+                }
+                case VertexProgramM.VERTICES_ONLY: {
+                    assertEquals(6, counter);
+                    break;
+                }
+                case VertexProgramM.ONE_OUT_EDGE_ONLY: {
+                    assertEquals(6, counter);
+                    break;
+                }
+                case VertexProgramM.OUT_EDGES_ONLY: {
+                    assertEquals(6, counter);
+                    break;
+                }
+                default:
+                    throw new IllegalStateException("This is an illegal state for this test case: " + this.state);
+            }
+            return counter;
+        }
+
+        @Override
+        public String getMemoryKey() {
+            return "a";
+        }
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void shouldSupportJobChaining() throws Exception {
+        final ComputerResult result1 = graphProvider.getGraphComputer(graph)
+                .program(PageRankVertexProgram.build().iterations(5).create(graph)).persist(GraphComputer.Persist.EDGES).result(GraphComputer.ResultGraph.NEW).submit().get();
+        final Graph graph1 = result1.graph();
+        final Memory memory1 = result1.memory();
+        assertEquals(5, memory1.getIteration());
+        assertEquals(6, graph1.traversal().V().count().next().intValue());
+        assertEquals(6, graph1.traversal().E().count().next().intValue());
+        assertEquals(6, graph1.traversal().V().values(PageRankVertexProgram.PAGE_RANK).count().next().intValue());
+        assertEquals(18, graph1.traversal().V().values().count().next().intValue());
+        //
+        final ComputerResult result2 = graph1.compute(graphProvider.getGraphComputer(graph1).getClass())
+                .program(PeerPressureVertexProgram.build().maxIterations(4).create(graph1)).persist(GraphComputer.Persist.EDGES).result(GraphComputer.ResultGraph.NEW).submit().get();
+        final Graph graph2 = result2.graph();
+        final Memory memory2 = result2.memory();
+        assertTrue(memory2.getIteration() <= 4);
+        assertEquals(6, graph2.traversal().V().count().next().intValue());
+        assertEquals(6, graph2.traversal().E().count().next().intValue());
+        assertEquals(6, graph2.traversal().V().values(PeerPressureVertexProgram.CLUSTER).count().next().intValue());
+        assertEquals(6, graph2.traversal().V().values(PageRankVertexProgram.PAGE_RANK).count().next().intValue());
+        assertEquals(24, graph2.traversal().V().values().count().next().intValue());
+        //
+        final ComputerResult result3 = graph2.compute(graphProvider.getGraphComputer(graph2).getClass())
+                .program(TraversalVertexProgram.build().traversal(g.V().groupCount("m").by(__.values(PageRankVertexProgram.PAGE_RANK).count()).label().asAdmin()).create(graph2)).persist(GraphComputer.Persist.EDGES).result(GraphComputer.ResultGraph.NEW).submit().get();
+        final Graph graph3 = result3.graph();
+        final Memory memory3 = result3.memory();
+        assertTrue(memory3.keys().contains("m"));
+        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.<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());
+        assertEquals(6, graph3.traversal().V().count().next().intValue());
+        assertEquals(6, graph3.traversal().E().count().next().intValue());
+        assertEquals(0, graph3.traversal().V().values(TraversalVertexProgram.HALTED_TRAVERSERS).count().next().intValue());
+        assertEquals(6, graph3.traversal().V().values(PeerPressureVertexProgram.CLUSTER).count().next().intValue());
+        assertEquals(6, graph3.traversal().V().values(PageRankVertexProgram.PAGE_RANK).count().next().intValue());
+        assertEquals(24, graph3.traversal().V().values().count().next().intValue()); // no halted traversers
+
+        // TODO: add a test the shows DAG behavior -- splitting another TraversalVertexProgram off of the PeerPressureVertexProgram job.
+    }
+
+    ///////////////////////////////////
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void shouldSupportPreExistingComputeKeys() throws Exception {
+        final ComputerResult result = graphProvider.getGraphComputer(graph).program(new VertexProgramN()).submit().get();
+        result.graph().vertices().forEachRemaining(vertex -> {
+            if (vertex.label().equals("person")) {
+                if (vertex.value("name").equals("marko"))
+                    assertEquals(32, vertex.<Integer>value("age").intValue());
+                else if (vertex.value("name").equals("peter"))
+                    assertEquals(38, vertex.<Integer>value("age").intValue());
+                else if (vertex.value("name").equals("vadas"))
+                    assertEquals(30, vertex.<Integer>value("age").intValue());
+                else if (vertex.value("name").equals("josh"))
+                    assertEquals(35, vertex.<Integer>value("age").intValue());
+                else
+                    throw new IllegalStateException("This vertex should not have been accessed: " + vertex);
+            }
+        });
+    }
+
+    private static class VertexProgramN extends StaticVertexProgram {
+
+        @Override
+        public void setup(final Memory memory) {
+
+        }
+
+        @Override
+        public void execute(final Vertex vertex, final Messenger messenger, final Memory memory) {
+            if (vertex.label().equals("person"))
+                vertex.property(VertexProperty.Cardinality.single, "age", vertex.<Integer>value("age") + 1);
+        }
+
+        @Override
+        public boolean terminate(final Memory memory) {
+            return memory.getIteration() > 1;
+        }
+
+        @Override
+        public Set<MessageScope> getMessageScopes(final Memory memory) {
+            return Collections.emptySet();
+        }
+
+        @Override
+        public Set<VertexComputeKey> getVertexComputeKeys() {
+            return Collections.singleton(VertexComputeKey.of("age", false));
+        }
+
+        @Override
+        public GraphComputer.ResultGraph getPreferredResultGraph() {
+            return GraphComputer.ResultGraph.NEW;
+        }
+
+        @Override
+        public GraphComputer.Persist getPreferredPersist() {
+            return GraphComputer.Persist.VERTEX_PROPERTIES;
+        }
+    }
+
+    ///////////////////////////////////
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void shouldSupportTransientKeys() throws Exception {
+        final ComputerResult result = graphProvider.getGraphComputer(graph).program(new VertexProgramO()).mapReduce(new MapReduceK()).submit().get();
+        result.graph().vertices().forEachRemaining(vertex -> {
+            assertFalse(vertex.property("v1").isPresent());
+            assertFalse(vertex.property("v2").isPresent());
+            assertTrue(vertex.property("v3").isPresent());
+            assertEquals("shouldExist", vertex.value("v3"));
+            assertTrue(vertex.property("name").isPresent());
+            if (vertex.label().equals("software"))
+                assertTrue(vertex.property("lang").isPresent());
+            else
+                assertTrue(vertex.property("age").isPresent());
+            assertEquals(3, IteratorUtils.count(vertex.properties()));
+            assertEquals(0, IteratorUtils.count(vertex.properties("v1")));
+            assertEquals(0, IteratorUtils.count(vertex.properties("v2")));
+            assertEquals(1, IteratorUtils.count(vertex.properties("v3")));
+            assertEquals(1, IteratorUtils.count(vertex.properties("name")));
+        });
+        assertEquals(6l, result.graph().traversal().V().properties("name").count().next().longValue());
+        assertEquals(0l, result.graph().traversal().V().properties("v1").count().next().longValue());
+        assertEquals(0l, result.graph().traversal().V().properties("v2").count().next().longValue());
+        assertEquals(6l, result.graph().traversal().V().properties("v3").count().next().longValue());
+        assertEquals(6l, result.graph().traversal().V().<String>values("name").dedup().count().next().longValue());
+        assertEquals(1l, result.graph().traversal().V().<String>values("v3").dedup().count().next().longValue());
+        assertEquals("shouldExist", result.graph().traversal().V().<String>values("v3").dedup().next());
+        ///
+        assertFalse(result.memory().exists("m1"));
+        assertFalse(result.memory().exists("m2"));
+        assertTrue(result.memory().exists("m3"));
+        assertEquals(24l, result.memory().<Long>get("m3").longValue());
+        assertEquals(2, result.memory().keys().size());  // mapReduceK
+    }
+
+    private static class VertexProgramO extends StaticVertexProgram {
+
+        @Override
+        public void setup(final Memory memory) {
+            assertFalse(memory.exists("m1"));
+            assertFalse(memory.exists("m2"));
+            assertFalse(memory.exists("m3"));
+        }
+
+        @Override
+        public void execute(final Vertex vertex, final Messenger messenger, final Memory memory) {
+            if (memory.isInitialIteration()) {
+                assertFalse(vertex.property("v1").isPresent());
+                assertFalse(vertex.property("v2").isPresent());
+                assertFalse(vertex.property("v3").isPresent());
+                vertex.property("v1", "shouldNotExist");
+                vertex.property("v2", "shouldNotExist");
+                vertex.property("v3", "shouldExist");
+                assertTrue(vertex.property("v1").isPresent());
+                assertTrue(vertex.property("v2").isPresent());
+                assertTrue(vertex.property("v3").isPresent());
+                assertEquals("shouldNotExist", vertex.value("v1"));
+                assertEquals("shouldNotExist", vertex.value("v2"));
+                assertEquals("shouldExist", vertex.value("v3"));
+                //
+                assertFalse(memory.exists("m1"));
+                assertFalse(memory.exists("m2"));
+                assertFalse(memory.exists("m3"));
+                memory.add("m1", false);
+                memory.add("m2", true);
+                memory.add("m3", 2l);
+                // should still not exist as this pulls from the master memory
+                assertFalse(memory.exists("m1"));
+                assertFalse(memory.exists("m2"));
+                assertFalse(memory.exists("m3"));
+
+            } else {
+                assertTrue(vertex.property("v1").isPresent());
+                assertTrue(vertex.property("v2").isPresent());
+                assertTrue(vertex.property("v3").isPresent());
+                assertEquals("shouldNotExist", vertex.value("v1"));
+                assertEquals("shouldNotExist", vertex.value("v2"));
+                assertEquals("shouldExist", vertex.value("v3"));
+                //
+                assertTrue(memory.exists("m1"));
+                assertTrue(memory.exists("m2"));
+                assertTrue(memory.exists("m3"));
+                assertFalse(memory.get("m1"));
+                assertTrue(memory.get("m2"));
+                assertEquals(12l, memory.<Long>get("m3").longValue());
+                memory.add("m1", true);
+                memory.add("m2", true);
+                memory.add("m3", 2l);
+            }
+        }
+
+        @Override
+        public boolean terminate(final Memory memory) {
+            assertTrue(memory.exists("m1"));
+            assertTrue(memory.exists("m2"));
+            assertTrue(memory.exists("m3"));
+            if (memory.isInitialIteration()) {
+                assertFalse(memory.get("m1"));
+                assertTrue(memory.get("m2"));
+                assertEquals(12l, memory.<Long>get("m3").longValue());
+                return false;
+            } else {
+                assertTrue(memory.get("m1"));
+                assertTrue(memory.get("m2"));
+                assertEquals(24l, memory.<Long>get("m3").longValue());
+                return true;
+            }
+        }
+
+        @Override
+        public Set<MessageScope> getMessageScopes(final Memory memory) {
+            return Collections.emptySet();
+        }
+
+        @Override
+        public Set<MemoryComputeKey> getMemoryComputeKeys() {
+            return new HashSet<>(Arrays.asList(
+                    MemoryComputeKey.of("m1", Operator.or, true, true),
+                    MemoryComputeKey.of("m2", Operator.and, true, true),
+                    MemoryComputeKey.of("m3", Operator.sum, true, false)));
+        }
+
+        @Override
+        public Set<VertexComputeKey> getVertexComputeKeys() {
+            return new HashSet<>(Arrays.asList(
+                    VertexComputeKey.of("v1", true),
+                    VertexComputeKey.of("v2", true),
+                    VertexComputeKey.of("v3", false)));
+        }
+
+        @Override
+        public GraphComputer.ResultGraph getPreferredResultGraph() {
+            return GraphComputer.ResultGraph.NEW;
+        }
+
+        @Override
+        public GraphComputer.Persist getPreferredPersist() {
+            return GraphComputer.Persist.VERTEX_PROPERTIES;
+        }
+    }
+
+    public static class MapReduceK extends StaticMapReduce {
+
+        @Override
+        public boolean doStage(final Stage stage) {
+            return stage.equals(Stage.MAP);
+        }
+
+        @Override
+        public void map(final Vertex vertex, final MapEmitter emitter) {
+            assertFalse(vertex.property("v1").isPresent());
+            assertFalse(vertex.property("v2").isPresent());
+            assertTrue(vertex.property("v3").isPresent());
+            assertTrue(vertex.property("name").isPresent());
+            assertEquals(3, IteratorUtils.count(vertex.properties()));
+            assertEquals(3, IteratorUtils.count(vertex.values()));
+        }
+
+        @Override
+        public String getMemoryKey() {
+            return "mapReduceK";
+        }
+
+        @Override
+        public Object generateFinalResult(final Iterator keyValues) {
+            return "anObject";
+        }
+    }
+
+    ///////////////////////////////////
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void shouldSupportBroadcastKeys() throws Exception {
+        final ComputerResult result = graphProvider.getGraphComputer(graph).program(new VertexProgramP()).submit().get();
+        assertTrue(result.memory().exists("m1"));
+        assertFalse(result.memory().exists("m2"));
+        assertFalse(result.memory().exists("m3"));
+        assertTrue(result.memory().exists("m4"));
+        assertTrue(result.memory().get("m1"));
+        assertEquals(-18, result.memory().<Integer>get("m4").intValue());
+        assertEquals(2, result.memory().keys().size());
+    }
+
+    private static class VertexProgramP extends StaticVertexProgram {
+
+        @Override
+        public void setup(final Memory memory) {
+            assertFalse(memory.exists("m1"));  // or
+            assertFalse(memory.exists("m2"));  // and
+            assertFalse(memory.exists("m3"));  // long
+            assertFalse(memory.exists("m4"));  // int
+            memory.set("m1", false);
+            memory.set("m2", true);
+            memory.set("m3", 0l);
+            memory.set("m4", 0);
+        }
+
+        @Override
+        public void execute(final Vertex vertex, final Messenger messenger, final Memory memory) {
+            if (memory.isInitialIteration()) {
+                assertFalse(memory.exists("m1"));
+                assertTrue(memory.exists("m2"));
+                assertTrue(memory.get("m2"));
+                assertFalse(memory.exists("m3"));
+                assertTrue(memory.exists("m4"));
+                assertEquals(0, memory.<Integer>get("m4").intValue());
+                memory.add("m1", false);
+                memory.add("m2", true);
+                memory.add("m3", 1l);
+                memory.add("m4", -1);
+            } else {
+                assertFalse(memory.exists("m1")); // no broadcast
+                assertTrue(memory.exists("m2"));
+                assertFalse(memory.exists("m3")); // no broadcast
+                assertTrue(memory.exists("m4"));
+                try {
+                    assertFalse(memory.get("m1"));
+                    fail();
+                } catch (final Exception e) {
+                    validateException(Memory.Exceptions.memoryDoesNotExist("m1"), e);
+                }
+                assertTrue(memory.get("m2"));
+                try {
+                    assertEquals(6l, memory.<Long>get("m3").longValue());
+                    fail();
+                } catch (final Exception e) {
+                    validateException(Memory.Exceptions.memoryDoesNotExist("m3"), e);
+                }
+                assertEquals(-6l, memory.<Integer>get("m4").intValue());
+                ///
+                memory.add("m1", true);
+                memory.add("m2", true);
+                memory.add("m3", 2l);
+                memory.add("m4", -2);
+            }
+        }
+
+        @Override
+        public boolean terminate(final Memory memory) {
+            assertTrue(memory.exists("m1"));
+            assertTrue(memory.exists("m2"));
+            assertTrue(memory.exists("m3"));
+            assertTrue(memory.exists("m4"));
+            if (memory.isInitialIteration()) {
+                assertFalse(memory.get("m1"));
+                assertTrue(memory.get("m2"));
+                assertEquals(6l, memory.<Long>get("m3").longValue());
+                assertEquals(-6, memory.<Integer>get("m4").intValue());
+                return false;
+            } else {
+                assertTrue(memory.get("m1"));
+                assertTrue(memory.get("m2"));
+                assertEquals(18l, memory.<Long>get("m3").longValue());
+                assertEquals(-18, memory.<Integer>get("m4").intValue());
+                return true;
+            }
+        }
+
+        @Override
+        public Set<MessageScope> getMessageScopes(final Memory memory) {
+            return Collections.emptySet();
+        }
+
+        @Override
+        public Set<MemoryComputeKey> getMemoryComputeKeys() {
+            return new HashSet<>(Arrays.asList(
+                    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
+        public GraphComputer.ResultGraph getPreferredResultGraph() {
+            return GraphComputer.ResultGraph.NEW;
+        }
+
+        @Override
+        public GraphComputer.Persist getPreferredPersist() {
+            return GraphComputer.Persist.VERTEX_PROPERTIES;
+        }
+    }
 }
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkdumping/BulkDumperVertexProgramTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkdumping/BulkDumperVertexProgramTest.java
index f33e2cf..c55114e 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkdumping/BulkDumperVertexProgramTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkdumping/BulkDumperVertexProgramTest.java
@@ -38,8 +38,8 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldDumpWholeGraph() throws Exception {
-        if (g.getGraphComputer().get().features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.NEW, GraphComputer.Persist.EDGES)) {
-            final ComputerResult result = graph.compute(g.getGraphComputer().get().getClass()).program(BulkDumperVertexProgram.build().create(graph)).submit().get();
+        if (graphProvider.getGraphComputer(graph).features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.NEW, GraphComputer.Persist.EDGES)) {
+            final ComputerResult result = graphProvider.getGraphComputer(graph).program(BulkDumperVertexProgram.build().create(graph)).submit().get();
             result.graph().traversal().V().forEachRemaining(v -> {
                 assertEquals(2, v.keys().size());
                 assertTrue(v.keys().contains("name"));
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkloading/BulkLoaderVertexProgramTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkloading/BulkLoaderVertexProgramTest.java
index f66d1b5..d6db046 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkloading/BulkLoaderVertexProgramTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/bulkloading/BulkLoaderVertexProgramTest.java
@@ -95,7 +95,7 @@
                 .writeGraph(getWriteGraphConfiguration()).create(graph);
         final BulkLoader loader = getBulkLoader(blvp);
         assertFalse(loader.useUserSuppliedIds());
-        graph.compute(graphComputerClass.get()).workers(1).program(blvp).submit().get();
+        graphProvider.getGraphComputer(graph).workers(1).program(blvp).submit().get();
         assertGraphEquality(graph, getWriteGraph(), v -> v.value(loader.getVertexIdProperty()));
     }
 
@@ -107,7 +107,7 @@
                 .writeGraph(getWriteGraphConfiguration()).create(graph);
         final BulkLoader loader = getBulkLoader(blvp);
         assertTrue(loader.useUserSuppliedIds());
-        graph.compute(graphComputerClass.get()).workers(1).program(blvp).submit().get();
+        graphProvider.getGraphComputer(graph).workers(1).program(blvp).submit().get();
         assertGraphEquality(graph, getWriteGraph());
     }
 
@@ -117,8 +117,8 @@
         final BulkLoaderVertexProgram blvp = BulkLoaderVertexProgram.build()
                 .userSuppliedIds(true)
                 .writeGraph(getWriteGraphConfiguration()).create(graph);
-        graph.compute(graphComputerClass.get()).workers(1).program(blvp).submit().get(); // initial
-        graph.compute(graphComputerClass.get()).workers(1).program(blvp).submit().get(); // incremental
+        graphProvider.getGraphComputer(graph).workers(1).program(blvp).submit().get(); // initial
+        graphProvider.getGraphComputer(graph).workers(1).program(blvp).submit().get(); // incremental
         assertGraphEquality(graph, getWriteGraph());
     }
 
@@ -130,7 +130,7 @@
         final BulkLoaderVertexProgram blvp = BulkLoaderVertexProgram.build()
                 .userSuppliedIds(true)
                 .writeGraph(getWriteGraphConfiguration()).create(graph);
-        graph.compute(graphComputerClass.get()).workers(1).program(blvp).submit().get();
+        graphProvider.getGraphComputer(graph).workers(1).program(blvp).submit().get();
         assertGraphEquality(graph, getWriteGraph());
     }
 
@@ -143,7 +143,7 @@
                     .writeGraph(getWriteGraphConfiguration()).create(graph);
             final BulkLoader loader = getBulkLoader(blvp);
             assertTrue(loader instanceof OneTimeBulkLoader);
-            graph.compute(graphComputerClass.get()).workers(1).program(blvp).submit().get();
+            graphProvider.getGraphComputer(graph).workers(1).program(blvp).submit().get();
             final Graph result = getWriteGraph();
             assertEquals(6 * iteration, IteratorUtils.count(result.vertices()));
             assertEquals(6 * iteration, IteratorUtils.count(result.edges()));
@@ -160,7 +160,7 @@
                 .writeGraph(getWriteGraphConfiguration()).create(graph);
         final BulkLoader loader = getBulkLoader(blvp);
         assertTrue(loader instanceof OneTimeBulkLoader);
-        graph.compute(graphComputerClass.get()).workers(1).program(blvp).submit().get();
+        graphProvider.getGraphComputer(graph).workers(1).program(blvp).submit().get();
         final Graph result = getWriteGraph();
         assertEquals(6, IteratorUtils.count(result.vertices()));
         assertEquals(6, IteratorUtils.count(result.edges()));
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgramTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgramTest.java
index 82aefbb..1d840b0 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgramTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/peerpressure/PeerPressureVertexProgramTest.java
@@ -41,7 +41,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldExecutePeerPressure() throws Exception {
-        if (g.getGraphComputer().get().features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.NEW, GraphComputer.Persist.VERTEX_PROPERTIES)) {
+        /*if (g.getGraphComputer().get().features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.NEW, GraphComputer.Persist.VERTEX_PROPERTIES)) {
             final ComputerResult result = graph.compute(g.getGraphComputer().get().getClass()).program(PeerPressureVertexProgram.build().create(graph)).submit().get();
             final Set<Object> clusters = new HashSet<>();
             result.graph().traversal().V().forEachRemaining(v -> {
@@ -58,6 +58,6 @@
             //assertEquals(3, result.memory().getIteration());
             assertEquals(1, result.memory().asMap().size());
             assertTrue(result.memory().keys().contains("gremlin.peerPressureVertexProgram.voteToHalt"));  // this is private in PeerPressureVertexProgram (and that is okay)
-        }
+        }*/
     }
 }
\ No newline at end of file
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgramTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgramTest.java
index 1e52fd0..41dfaa0 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgramTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/computer/ranking/pagerank/PageRankVertexProgramTest.java
@@ -22,7 +22,6 @@
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
-import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.junit.Test;
 
@@ -38,12 +37,11 @@
     @Test
     @LoadGraphWith(MODERN)
     public void shouldExecutePageRank() throws Exception {
-        if (g.getGraphComputer().get().features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.NEW, GraphComputer.Persist.VERTEX_PROPERTIES)) {
-            final ComputerResult result = graph.compute(g.getGraphComputer().get().getClass()).program(PageRankVertexProgram.build().create(graph)).submit().get();
+        if (graphProvider.getGraphComputer(graph).features().supportsResultGraphPersistCombination(GraphComputer.ResultGraph.NEW, GraphComputer.Persist.VERTEX_PROPERTIES)) {
+            final ComputerResult result = graph.compute(graphProvider.getGraphComputer(graph).getClass()).program(PageRankVertexProgram.build().create(graph)).submit().get();
             result.graph().traversal().V().forEachRemaining(v -> {
-                assertEquals(4, v.keys().size()); // name, age/lang, edgeCount, pageRank
+                assertEquals(3, v.keys().size()); // name, age/lang, pageRank
                 assertTrue(v.keys().contains("name"));
-                assertTrue(v.keys().contains(PageRankVertexProgram.EDGE_COUNT));
                 assertTrue(v.keys().contains(PageRankVertexProgram.PAGE_RANK));
                 assertEquals(1, IteratorUtils.count(v.values("name")));
                 assertEquals(1, IteratorUtils.count(v.values(PageRankVertexProgram.PAGE_RANK)));
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalInterruptionComputerTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalInterruptionComputerTest.java
new file mode 100644
index 0000000..c3a1042
--- /dev/null
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalInterruptionComputerTest.java
@@ -0,0 +1,97 @@
+/*
+ * 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;
+
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalInterruptedException;
+import org.hamcrest.CoreMatchers;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.Arrays;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Function;
+import java.util.function.UnaryOperator;
+
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL;
+import static org.junit.Assert.assertThat;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+@RunWith(Parameterized.class)
+public class TraversalInterruptionComputerTest extends AbstractGremlinProcessTest {
+
+    @Parameterized.Parameters(name = "expectInterruption({0})")
+    public static Iterable<Object[]> data() {
+        return Arrays.asList(new Object[][]{
+                {"g_V", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.V()},
+                {"g_V_out", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.V().out()},
+                {"g_V_outE", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.V().outE()},
+                {"g_V_in", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.V().in()},
+                {"g_V_inE", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.V().inE()},
+                {"g_V_properties", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.V().properties()},
+                {"g_E", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.E()},
+                {"g_E_outV", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.E().outV()},
+                {"g_E_inV", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.E().inV()},
+                {"g_E_properties", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.E().properties()},
+        });
+    }
+
+    @Parameterized.Parameter(value = 0)
+    public String name;
+
+    @Parameterized.Parameter(value = 1)
+    public Function<GraphTraversalSource,GraphTraversal<?,?>> traversalMaker;
+
+    @Test
+    @LoadGraphWith(GRATEFUL)
+    public void shouldRespectThreadInterruptionInVertexStep() throws Exception {
+        final AtomicBoolean exceptionThrown = new AtomicBoolean(false);
+        final CountDownLatch startedIterating = new CountDownLatch(1);
+        final Thread t = new Thread(() -> {
+            try {
+                final Traversal traversal = traversalMaker.apply(g).sideEffect(traverser -> {
+                    startedIterating.countDown();
+                });
+                traversal.iterate();
+            } catch (Exception ex) {
+                exceptionThrown.set(ex instanceof TraversalInterruptedException);
+            }
+        }, name);
+
+        t.start();
+
+        // total time for test should not exceed 5 seconds - this prevents the test from just hanging and allows
+        // it to finish with failure
+        assertThat(startedIterating.await(5000, TimeUnit.MILLISECONDS), CoreMatchers.is(true));
+
+        t.interrupt();
+        t.join();
+
+        // ensure that some but not all of the traversal was iterated and that the right exception was tossed
+        assertThat(exceptionThrown.get(), CoreMatchers.is(true));
+    }
+}
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalInterruptionTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalInterruptionTest.java
new file mode 100644
index 0000000..b0da10e
--- /dev/null
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalInterruptionTest.java
@@ -0,0 +1,113 @@
+/*
+ * 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;
+
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalInterruptedException;
+import org.hamcrest.CoreMatchers;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.Arrays;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Function;
+import java.util.function.UnaryOperator;
+
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL;
+import static org.junit.Assert.assertThat;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+@RunWith(Parameterized.class)
+public class TraversalInterruptionTest extends AbstractGremlinProcessTest {
+
+    @Parameterized.Parameters(name = "expectInterruption({0})")
+    public static Iterable<Object[]> data() {
+        return Arrays.asList(new Object[][]{
+                {"g_V", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.V(), (UnaryOperator<GraphTraversal<?,?>>) t -> t},
+                {"g_V_out", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.V(), (UnaryOperator<GraphTraversal<?,?>>) t -> t.out()},
+                {"g_V_outE", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.V(), (UnaryOperator<GraphTraversal<?,?>>) t -> t.outE()},
+                {"g_V_in", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.V(), (UnaryOperator<GraphTraversal<?,?>>) t -> t.in()},
+                {"g_V_inE", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.V(), (UnaryOperator<GraphTraversal<?,?>>) t -> t.inE()},
+                {"g_V_properties", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.V(), (UnaryOperator<GraphTraversal<?,?>>) t -> t.properties()},
+                {"g_E", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.E(), (UnaryOperator<GraphTraversal<?,?>>) t -> t},
+                {"g_E_outV", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.E(), (UnaryOperator<GraphTraversal<?,?>>) t -> t.outV()},
+                {"g_E_inV", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.E(), (UnaryOperator<GraphTraversal<?,?>>) t -> t.inV()},
+                {"g_E_properties", (Function<GraphTraversalSource, GraphTraversal<?,?>>) g -> g.E(), (UnaryOperator<GraphTraversal<?,?>>) t -> t.properties()},
+        });
+    }
+
+    @Parameterized.Parameter(value = 0)
+    public String name;
+
+    @Parameterized.Parameter(value = 1)
+    public Function<GraphTraversalSource,GraphTraversal<?,?>> traversalBeforePause;
+
+    @Parameterized.Parameter(value = 2)
+    public UnaryOperator<GraphTraversal<?,?>> traversalAfterPause;
+
+    @Test
+    @LoadGraphWith(GRATEFUL)
+    public void shouldRespectThreadInterruptionInVertexStep() throws Exception {
+        final AtomicBoolean exceptionThrown = new AtomicBoolean(false);
+        final CountDownLatch startedIterating = new CountDownLatch(1);
+        final Thread t = new Thread(() -> {
+            try {
+                final Traversal traversal = traversalAfterPause.apply(traversalBeforePause.apply(g).sideEffect(traverser -> {
+                    // let the first iteration flow through
+                    if (startedIterating.getCount() == 0) {
+                        // ensure that the whole traversal doesn't iterate out before we get a chance to interrupt
+                        // the next iteration should stop so we can force the interrupt to be handled by VertexStep
+                        try {
+                            Thread.sleep(3000);
+                        } catch (Exception ignored) {
+                            // make sure that the interrupt propagates in case the interrupt occurs during sleep.
+                            // this should ensure VertexStep gets to try to throw the TraversalInterruptedException
+                            Thread.currentThread().interrupt();
+                        }
+                    }
+                })).sideEffect(traverser -> {
+                    startedIterating.countDown();
+                });
+                traversal.iterate();
+            } catch (Exception ex) {
+                exceptionThrown.set(ex instanceof TraversalInterruptedException);
+            }
+        }, name);
+
+        t.start();
+
+        // total time for test should not exceed 5 seconds - this prevents the test from just hanging and allows
+        // it to finish with failure
+        assertThat(startedIterating.await(5000, TimeUnit.MILLISECONDS), CoreMatchers.is(true));
+
+        t.interrupt();
+        t.join();
+
+        // ensure that some but not all of the traversal was iterated and that the right exception was tossed
+        assertThat(exceptionThrown.get(), CoreMatchers.is(true));
+    }
+}
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSideEffectsTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSideEffectsTest.java
deleted file mode 100644
index ff3312e..0000000
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalSideEffectsTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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;
-
-import org.apache.tinkerpop.gremlin.LoadGraphWith;
-import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
-import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
-import org.junit.Test;
-
-import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public abstract class TraversalSideEffectsTest extends AbstractGremlinProcessTest {
-    public abstract TraversalSideEffects get_g_V_asAdmin_getSideEffects();
-
-    @Test
-    @LoadGraphWith(MODERN)
-    public void g_V_sideEffects() {
-        final TraversalSideEffects sideEffects = get_g_V_asAdmin_getSideEffects();
-        assertFalse(sideEffects.get("a").isPresent());
-        assertEquals(StringFactory.traversalSideEffectsString(sideEffects), sideEffects.toString());
-    }
-
-    public static class Traversals extends TraversalSideEffectsTest {
-        @Override
-        public TraversalSideEffects get_g_V_asAdmin_getSideEffects() {
-            return g.V().asAdmin().getSideEffects();
-        }
-    }
-}
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalTest.java
index f1480fb..c202a9c 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/LocalTest.java
@@ -21,9 +21,10 @@
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.process.traversal.Order;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
@@ -34,8 +35,16 @@
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.CREW;
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
-import static org.junit.Assert.*;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.as;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.bothE;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.inE;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.properties;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 
 /**
@@ -64,6 +73,8 @@
 
     public abstract Traversal<Vertex, String> get_g_V_localXinEXknowsX_limitX2XX_outV_name();
 
+    public abstract Traversal<Vertex, Map<String, String>> get_g_V_localXmatchXproject__created_person__person_name_nameX_selectXname_projectX_by_byXnameX();
+
     @Test
     @LoadGraphWith(CREW)
     public void g_V_localXpropertiesXlocationX_order_byXvalueX_limitX2XX_value() {
@@ -197,6 +208,19 @@
         assertEquals(5, counter);
     }
 
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_localXmatchXproject__created_person__person_name_nameX_selectXname_projectX_by_byXnameX() {
+        final Traversal<Vertex, Map<String, String>> traversal = get_g_V_localXmatchXproject__created_person__person_name_nameX_selectXname_projectX_by_byXnameX();
+        printTraversalForm(traversal);
+        checkResults(makeMapList(2,
+                "name", "marko", "project", "lop",
+                "name", "josh", "project", "lop",
+                "name", "peter", "project", "lop",
+                "name", "josh", "project", "ripple"), traversal);
+        assertFalse(traversal.hasNext());
+    }
+
     public static class Traversals extends LocalTest {
 
         @Override
@@ -249,6 +273,12 @@
             return g.V().local(inE("knows").limit(2)).outV().values("name");
         }
 
-
+        @Override
+        public Traversal<Vertex, Map<String, String>> get_g_V_localXmatchXproject__created_person__person_name_nameX_selectXname_projectX_by_byXnameX() {
+            return g.V().local(__.match(
+                    as("project").in("created").as("person"),
+                    as("person").values("name").as("name")))
+                    .<String>select("name", "project").by().by("name");
+        }
     }
 }
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/OptionalTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/OptionalTest.java
new file mode 100644
index 0000000..660af6c
--- /dev/null
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/OptionalTest.java
@@ -0,0 +1,148 @@
+/*
+ * 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.branch;
+
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
+import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.function.Predicate;
+
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.in;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Pieter Martin
+ */
+@RunWith(GremlinProcessRunner.class)
+public abstract class OptionalTest extends AbstractGremlinProcessTest {
+
+    public abstract Traversal<Vertex, Vertex> get_g_VX2X_optionalXoutXknowsXX(Object v2Id);
+
+    public abstract Traversal<Vertex, Vertex> get_g_VX2X_optionalXinXknowsXX(Object v2Id);
+
+    public abstract Traversal<Vertex, Path> get_g_V_hasLabelXpersonX_optionalXoutXknowsX_optionalXoutXcreatedXXX_path();
+
+    public abstract Traversal<Vertex, Path> get_g_V_optionalXout_optionalXoutXX_path();
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_VX2X_optionalXoutXknowsXX() {
+        final Traversal<Vertex, Vertex> traversal = get_g_VX2X_optionalXoutXknowsXX(convertToVertexId(this.graph, "vadas"));
+        printTraversalForm(traversal);
+        assertTrue(traversal.hasNext());
+        assertEquals(convertToVertex(this.graph, "vadas"), traversal.next());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_VX2X_optionalXinXknowsXX() {
+        final Traversal<Vertex, Vertex> traversal = get_g_VX2X_optionalXinXknowsXX(convertToVertexId(this.graph, "vadas"));
+        printTraversalForm(traversal);
+        assertTrue(traversal.hasNext());
+        assertEquals(convertToVertex(this.graph, "marko"), traversal.next());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_hasLabelXpersonX_optionalXoutXknowsX_optionalXoutXcreatedXXX_path() {
+        final Traversal<Vertex, Path> traversal = get_g_V_hasLabelXpersonX_optionalXoutXknowsX_optionalXoutXcreatedXXX_path();
+        printTraversalForm(traversal);
+        List<Path> paths = traversal.toList();
+        assertEquals(6, paths.size());
+        List<Predicate<Path>> pathsToAssert = Arrays.asList(
+                p -> p.size() == 2 && p.get(0).equals(convertToVertex(this.graph, "marko")) && p.get(1).equals(convertToVertex(this.graph, "vadas")),
+                p -> p.size() == 3 && p.get(0).equals(convertToVertex(this.graph, "marko")) && p.get(1).equals(convertToVertex(this.graph, "josh")) && p.get(2).equals(convertToVertex(this.graph, "ripple")),
+                p -> p.size() == 3 && p.get(0).equals(convertToVertex(this.graph, "marko")) && p.get(1).equals(convertToVertex(this.graph, "josh")) && p.get(2).equals(convertToVertex(this.graph, "lop")),
+                p -> p.size() == 1 && p.get(0).equals(convertToVertex(this.graph, "vadas")),
+                p -> p.size() == 1 && p.get(0).equals(convertToVertex(this.graph, "josh")),
+                p -> p.size() == 1 && p.get(0).equals(convertToVertex(this.graph, "peter"))
+        );
+        for (Predicate<Path> pathPredicate : pathsToAssert) {
+            Optional<Path> path = paths.stream().filter(pathPredicate).findAny();
+            assertTrue(path.isPresent());
+            assertTrue(paths.remove(path.get()));
+        }
+        assertTrue(paths.isEmpty());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_optionalXout_optionalXoutXX_path() {
+        final Traversal<Vertex, Path> traversal = get_g_V_optionalXout_optionalXoutXX_path();
+        printTraversalForm(traversal);
+        List<Path> paths = traversal.toList();
+        assertEquals(10, paths.size());
+        List<Predicate<Path>> pathsToAssert = Arrays.asList(
+                p -> p.size() == 2 && p.get(0).equals(convertToVertex(this.graph, "marko")) && p.get(1).equals(convertToVertex(this.graph, "lop")),
+                p -> p.size() == 2 && p.get(0).equals(convertToVertex(this.graph, "marko")) && p.get(1).equals(convertToVertex(this.graph, "vadas")),
+                p -> p.size() == 3 && p.get(0).equals(convertToVertex(this.graph, "marko")) && p.get(1).equals(convertToVertex(this.graph, "josh")) && p.get(2).equals(convertToVertex(this.graph, "lop")),
+                p -> p.size() == 3 && p.get(0).equals(convertToVertex(this.graph, "marko")) && p.get(1).equals(convertToVertex(this.graph, "josh")) && p.get(2).equals(convertToVertex(this.graph, "ripple")),
+                p -> p.size() == 1 && p.get(0).equals(convertToVertex(this.graph, "vadas")),
+                p -> p.size() == 1 && p.get(0).equals(convertToVertex(this.graph, "lop")),
+                p -> p.size() == 2 && p.get(0).equals(convertToVertex(this.graph, "josh")) && p.get(1).equals(convertToVertex(this.graph, "lop")),
+                p -> p.size() == 2 && p.get(0).equals(convertToVertex(this.graph, "josh")) && p.get(1).equals(convertToVertex(this.graph, "ripple")),
+                p -> p.size() == 1 && p.get(0).equals(convertToVertex(this.graph, "ripple")),
+                p -> p.size() == 2 && p.get(0).equals(convertToVertex(this.graph, "peter")) && p.get(1).equals(convertToVertex(this.graph, "lop"))
+        );
+        for (Predicate<Path> pathPredicate : pathsToAssert) {
+            Optional<Path> path = paths.stream().filter(pathPredicate).findAny();
+            assertTrue(path.isPresent());
+            assertTrue(paths.remove(path.get()));
+        }
+        assertTrue(paths.isEmpty());
+    }
+
+    public static class Traversals extends OptionalTest {
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_VX2X_optionalXoutXknowsXX(Object v2Id) {
+            return this.g.V(v2Id).optional(out("knows"));
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_VX2X_optionalXinXknowsXX(Object v2Id) {
+            return this.g.V(v2Id).optional(in("knows"));
+        }
+
+        @Override
+        public Traversal<Vertex, Path> get_g_V_hasLabelXpersonX_optionalXoutXknowsX_optionalXoutXcreatedXXX_path() {
+            return this.g.V().hasLabel("person").optional(out("knows").optional(out("created"))).path();
+        }
+
+        @Override
+        public Traversal<Vertex, Path> get_g_V_optionalXout_optionalXoutXX_path() {
+            return this.g.V().optional(out().optional(out())).path();
+        }
+
+    }
+}
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/UnionTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/UnionTest.java
index 101be6c..df52f9b 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/UnionTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/UnionTest.java
@@ -22,17 +22,24 @@
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
-import static org.junit.Assert.*;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.in;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.inE;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.label;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.repeat;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.union;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -52,6 +59,8 @@
 
     public abstract Traversal<Vertex, Number> get_g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX(final Object v1Id, final Object v2Id);
 
+    public abstract Traversal<Vertex, Number> get_g_VX1_2X_localXunionXoutE_count__inE_count__outE_weight_sumXX(final Object v1Id, final Object v2Id);
+
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_unionXout__inX_name() {
@@ -127,29 +136,18 @@
 
     @Test
     @LoadGraphWith(MODERN)
-    // NEED TO DETERMINE IF TRAVERSAL IS LOCAL AND THEN ALLOW COUNT ON LOCALS
+    public void g_VX1_2X_localXunionXoutE_count__inE_count__outE_weight_sumXX() {
+        final Traversal<Vertex, Number> traversal = get_g_VX1_2X_localXunionXoutE_count__inE_count__outE_weight_sumXX(convertToVertexId("marko"), convertToVertexId("vadas"));
+        printTraversalForm(traversal);
+        checkResults(Arrays.asList(0l, 0l, 0, 3l, 1l, 1.9d), traversal);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
     public void g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX() {
         final Traversal<Vertex, Number> traversal = get_g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX(convertToVertexId("marko"), convertToVertexId("vadas"));
         printTraversalForm(traversal);
-        assertTrue(traversal.hasNext());
-        final Number startNumber = traversal.next();
-        assertTrue(traversal.hasNext());
-        if (startNumber.longValue() == 3l) {
-            assertEquals(0l, traversal.next().longValue());
-            assertEquals(1.9d, traversal.next().doubleValue(), 0.1d);
-            //
-            assertEquals(0l, traversal.next().longValue());
-            assertEquals(1l, traversal.next().longValue());
-            assertEquals(0.0d, traversal.next().doubleValue(), 0.1d);
-        } else {
-            assertEquals(1l, traversal.next().longValue());
-            assertEquals(0.0d, traversal.next().doubleValue(), 0.1d);
-            //
-            assertEquals(3l, traversal.next().longValue());
-            assertEquals(0l, traversal.next().longValue());
-            assertEquals(1.9d, traversal.next().doubleValue(), 0.1d);
-        }
-        assertFalse(traversal.hasNext());
+        checkResults(Arrays.asList(3l, 1.9d, 1l), traversal);
     }
 
     public static class Traversals extends UnionTest {
@@ -189,5 +187,10 @@
         public Traversal<Vertex, Number> get_g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX(final Object v1Id, final Object v2Id) {
             return g.V(v1Id, v2Id).union(outE().count(), inE().count(), (Traversal) outE().values("weight").sum());
         }
+
+        @Override
+        public Traversal<Vertex, Number> get_g_VX1_2X_localXunionXoutE_count__inE_count__outE_weight_sumXX(final Object v1Id, final Object v2Id) {
+            return g.V(v1Id, v2Id).local(union(outE().count(), inE().count(), (Traversal) outE().values("weight").sum()));
+        }
     }
 }
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
index 3a6c6ed..fe1db71 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
@@ -24,16 +24,24 @@
 import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import java.util.*;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.bothE;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -63,6 +71,8 @@
 
     public abstract Traversal<Vertex, String> get_g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_incrX_selectXvX_valuesXnameX_dedup();
 
+    public abstract Traversal<Vertex, String> get_g_V_both_both_dedup_byXoutE_countX_name();
+
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_both_dedup_name() {
@@ -215,6 +225,20 @@
         assertFalse(traversal.hasNext());
     }
 
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_both_both_dedup_byXoutE_countX_name() {
+        final Traversal<Vertex, String> traversal = get_g_V_both_both_dedup_byXoutE_countX_name();
+        printTraversalForm(traversal);
+        final List<String> names = traversal.toList();
+        assertEquals(4, names.size());
+        assertTrue(names.contains("josh"));
+        assertTrue(names.contains("peter"));
+        assertTrue(names.contains("marko"));
+        // the 4th is vadas, ripple, or lop
+        assertEquals(4, new HashSet<>(names).size());
+    }
+
     public static class Traversals extends DedupTest {
         @Override
         public Traversal<Vertex, String> get_g_V_both_dedup_name() {
@@ -265,5 +289,10 @@
         public Traversal<Vertex, String> get_g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_incrX_selectXvX_valuesXnameX_dedup() {
             return g.V().outE().as("e").inV().as("v").select("e").order().by("weight", Order.incr).select("v").<String>values("name").dedup();
         }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_both_both_dedup_byXoutE_countX_name() {
+            return g.V().both().both().dedup().by(__.outE().count()).values("name");
+        }
     }
 }
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropTest.java
index f6eebe8..f33997e 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropTest.java
@@ -55,8 +55,8 @@
         final Traversal<Vertex, Vertex> traversal = get_g_V_drop();
         printTraversalForm(traversal);
         assertFalse(traversal.hasNext());
-        assertEquals(0, IteratorUtils.count(graph.vertices()));
-        assertEquals(0, IteratorUtils.count(graph.edges()));
+        assertEquals(0, IteratorUtils.count(g.V()));
+        assertEquals(0, IteratorUtils.count(g.E()));
     }
 
     @Test
@@ -66,8 +66,8 @@
         final Traversal<Vertex, Edge> traversal = get_g_V_outE_drop();
         printTraversalForm(traversal);
         assertFalse(traversal.hasNext());
-        assertEquals(6, IteratorUtils.count(graph.vertices()));
-        assertEquals(0, IteratorUtils.count(graph.edges()));
+        assertEquals(6, IteratorUtils.count(g.V()));
+        assertEquals(0, IteratorUtils.count(g.E()));
     }
 
     @Test
@@ -77,9 +77,9 @@
         final Traversal<Vertex, VertexProperty> traversal = get_g_V_properties_drop();
         printTraversalForm(traversal);
         assertFalse(traversal.hasNext());
-        assertEquals(6, IteratorUtils.count(graph.vertices()));
-        assertEquals(6, IteratorUtils.count(graph.edges()));
-        graph.vertices().forEachRemaining(vertex -> assertEquals(0, IteratorUtils.count(vertex.properties())));
+        assertEquals(6, IteratorUtils.count(g.V()));
+        assertEquals(6, IteratorUtils.count(g.E()));
+        g.V().forEachRemaining(vertex -> assertEquals(0, IteratorUtils.count(vertex.properties())));
     }
 
 
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
index 67547f0..96ca39f 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
@@ -27,6 +27,7 @@
 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.process.traversal.step.map.GraphStep;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -37,6 +38,7 @@
 import org.junit.runner.RunWith;
 
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.CREW;
@@ -44,6 +46,7 @@
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
@@ -96,6 +99,14 @@
 
     public abstract Traversal<Vertex, Vertex> get_g_V_hasXlocationX();
 
+    public abstract Traversal<Vertex, Vertex> get_g_VX1X(final Object v1Id);
+
+    public abstract Traversal<Vertex, Vertex> get_g_V_hasIdX1X(final Object v1Id);
+
+    public abstract Traversal<Vertex, Vertex> get_g_VX1_2X(final Object v1Id, final Object v2Id);
+
+    public abstract Traversal<Vertex, Vertex> get_g_V_hasIdX1_2X(final Object v1Id, final Object v2Id);
+
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_outXcreatedX_hasXname__mapXlengthX_isXgtX3XXX_name() {
@@ -173,22 +184,21 @@
     @Test
     @LoadGraphWith(MODERN)
     public void g_VX1X_hasXage_gt_30X() {
-        final Traversal<Vertex,Vertex> traversalMarko = get_g_VX1X_hasXage_gt_30X(convertToVertexId("marko"));
+        final Traversal<Vertex, Vertex> traversalMarko = get_g_VX1X_hasXage_gt_30X(convertToVertexId("marko"));
         printTraversalForm(traversalMarko);
         assertFalse(traversalMarko.hasNext());
-        final Traversal<Vertex,Vertex> traversalJosh = get_g_VX1X_hasXage_gt_30X(convertToVertexId("josh"));
+        final Traversal<Vertex, Vertex> traversalJosh = get_g_VX1X_hasXage_gt_30X(convertToVertexId("josh"));
         printTraversalForm(traversalJosh);
         assertTrue(traversalJosh.hasNext());
     }
 
     @Test
     @LoadGraphWith(MODERN)
-    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_VXv1X_hasXage_gt_30X() {
-        final Traversal<Vertex,Vertex> traversalMarko = get_g_VXv1X_hasXage_gt_30X(convertToVertexId("marko"));
+        final Traversal<Vertex, Vertex> traversalMarko = get_g_VXv1X_hasXage_gt_30X(convertToVertexId("marko"));
         printTraversalForm(traversalMarko);
         assertFalse(traversalMarko.hasNext());
-        final Traversal<Vertex,Vertex> traversalJosh = get_g_VXv1X_hasXage_gt_30X(convertToVertexId("josh"));
+        final Traversal<Vertex, Vertex> traversalJosh = get_g_VXv1X_hasXage_gt_30X(convertToVertexId("josh"));
         printTraversalForm(traversalJosh);
         assertTrue(traversalJosh.hasNext());
     }
@@ -366,6 +376,34 @@
         checkResults(Arrays.asList(convertToVertex(graph, "marko"), convertToVertex(graph, "stephen"), convertToVertex(graph, "daniel"), convertToVertex(graph, "matthias")), traversal);
     }
 
+    @Test
+    @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER) // only validate for OLTP
+    public void g_V_hasId_compilationEquality() {
+        final Traversal<Vertex, Vertex> traversala1 = get_g_VX1X(convertToVertexId("marko"));
+        final Traversal<Vertex, Vertex> traversala2 = get_g_V_hasIdX1X(convertToVertexId("marko"));
+        final Traversal<Vertex, Vertex> traversalb1 = get_g_VX1_2X(convertToVertexId("marko"), convertToVertexId("vadas"));
+        final Traversal<Vertex, Vertex> traversalb2 = get_g_V_hasIdX1_2X(convertToVertexId("marko"), convertToVertexId("vadas"));
+        printTraversalForm(traversala1);
+        printTraversalForm(traversala2);
+        printTraversalForm(traversalb1);
+        printTraversalForm(traversalb2);
+        checkResults(Collections.singletonList(convertToVertex(graph, "marko")), traversala1);
+        checkResults(Collections.singletonList(convertToVertex(graph, "marko")), traversala2);
+        checkResults(Arrays.asList(convertToVertex(graph, "marko"), convertToVertex(graph, "vadas")), traversalb1);
+        checkResults(Arrays.asList(convertToVertex(graph, "marko"), convertToVertex(graph, "vadas")), traversalb2);
+        // if providers don't have their own custom GraphStep, then ignore validating compilation equality
+        if ((traversala1.asAdmin().getStartStep() instanceof GraphStep) &&
+                !traversala1.asAdmin().getStartStep().getClass().equals(GraphStep.class)) {
+            assertEquals(traversala1, traversala2);
+            assertEquals(traversalb1, traversalb2);
+            assertNotEquals(traversala1, traversalb1);
+            assertNotEquals(traversala1, traversalb2);
+            assertNotEquals(traversala2, traversalb1);
+            assertNotEquals(traversala2, traversalb2);
+        }
+    }
+
     private void assert_g_EX11X(final Object edgeId, final Traversal<Edge, Edge> traversal) {
         printTraversalForm(traversal);
         assertTrue(traversal.hasNext());
@@ -479,5 +517,25 @@
         public Traversal<Vertex, Vertex> get_g_V_hasXlocationX() {
             return g.V().has("location");
         }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_VX1X(final Object v1Id) {
+            return g.V(v1Id);
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_hasIdX1X(final Object v1Id) {
+            return g.V().hasId(v1Id);
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_VX1_2X(final Object v1Id, final Object v2Id) {
+            return g.V(v1Id, v2Id);
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_hasIdX1_2X(final Object v1Id, final Object v2Id) {
+            return g.V().hasId(v1Id, v2Id);
+        }
     }
 }
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeTest.java
index 50d5ac5..6de8da0 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/RangeTest.java
@@ -194,7 +194,7 @@
     public void g_V_asXaX_in_asXaX_in_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_limitXlocal_1X() {
         final Traversal<Vertex, String> traversal = get_g_V_asXaX_in_asXaX_in_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_limitXlocal_1X();
         printTraversalForm(traversal);
-        final Set<String> expected = new HashSet(Arrays.asList("ripple", "lop"));
+        final Set<String> expected = new HashSet<>(Arrays.asList("ripple", "lop"));
         final Set<List<String>> actual = new HashSet(traversal.toList());
         assertEquals(expected, actual);
     }
@@ -206,7 +206,7 @@
         final Traversal<Vertex, List<String>> traversal = get_g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_rangeXlocal_1_3X();
         printTraversalForm(traversal);
         final Set<List<String>> expected =
-            new HashSet(Arrays.asList(
+            new HashSet<>(Arrays.asList(
                             Arrays.asList("josh", "ripple"),
                             Arrays.asList("josh", "lop")));
         final Set<List<String>> actual = new HashSet(traversal.toList());
@@ -243,10 +243,10 @@
     public void g_V_asXaX_in_asXbX_in_asXcX_selectXa_b_cX_byXnameX_limitXlocal_2X() {
         final Traversal<Vertex, Map<String, String>> traversal = get_g_V_asXaX_in_asXbX_in_asXcX_selectXa_b_cX_byXnameX_limitXlocal_2X();
         printTraversalForm(traversal);
-        final Set<Map<String, String>> expected = new HashSet(makeMapList(2,
+        final Set<Map<String, String>> expected = new HashSet<>(makeMapList(2,
                 "a", "ripple", "b", "josh",
                 "a", "lop", "b", "josh"));
-        final Set<Map<String, String>> actual = new HashSet(traversal.toList());
+        final Set<Map<String, String>> actual = new HashSet<>(traversal.toList());
         assertEquals(expected, actual);
     }
 
@@ -256,10 +256,10 @@
     public void g_V_asXaX_in_asXbX_in_asXcX_selectXa_b_cX_byXnameX_limitXlocal_1X() {
         final Traversal<Vertex, Map<String, String>> traversal = get_g_V_asXaX_in_asXbX_in_asXcX_selectXa_b_cX_byXnameX_limitXlocal_1X();
         printTraversalForm(traversal);
-        final Set<Map<String, String>> expected = new HashSet(makeMapList(1,
+        final Set<Map<String, String>> expected = new HashSet<>(makeMapList(1,
                  "a", "ripple",
                  "a", "lop"));
-        final Set<Map<String, String>> actual = new HashSet(traversal.toList());
+        final Set<Map<String, String>> actual = new HashSet<>(traversal.toList());
         assertEquals(expected, actual);
     }
 
@@ -269,10 +269,10 @@
     public void g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_rangeXlocal_1_3X() {
         final Traversal<Vertex, Map<String, String>> traversal = get_g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_rangeXlocal_1_3X();
         printTraversalForm(traversal);
-        final Set<Map<String, String>> expected = new HashSet(makeMapList(2,
+        final Set<Map<String, String>> expected = new HashSet<>(makeMapList(2,
                  "b", "josh", "c", "ripple",
                  "b", "josh", "c", "lop"));
-        final Set<Map<String, String>> actual = new HashSet(traversal.toList());
+        final Set<Map<String, String>> actual = new HashSet<>(traversal.toList());
         assertEquals(expected, actual);
     }
 
@@ -283,8 +283,8 @@
         final Traversal<Vertex, Map<String, String>> traversal = get_g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_rangeXlocal_1_2X();
         printTraversalForm(traversal);
         // Since both of the tuples are identical, we count them.
-        final Set<Map<String, String>> expected = new HashSet(makeMapList(1, "b", "josh"));
-        final Set<Map<String, String>> actual = new HashSet();
+        final Set<Map<String, String>> expected = new HashSet<>(makeMapList(1, "b", "josh"));
+        final Set<Map<String, String>> actual = new HashSet<>();
         int counter = 0;
         while (traversal.hasNext()) {
             final Map<String, String> map = traversal.next();
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java
index 6045c93..a3ba0cc 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java
@@ -138,7 +138,6 @@
 
     @Test
     @LoadGraphWith(MODERN)
-    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXb_hasXname_markoXX() {
         final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXb_hasXname_markoXX();
         printTraversalForm(traversal);
@@ -163,7 +162,6 @@
 
     @Test
     @LoadGraphWith(MODERN)
-    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXa_outXknowsX_bX() {
         final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXa_outXknowsX_bX();
         printTraversalForm(traversal);
@@ -229,7 +227,6 @@
 
     @Test
     @LoadGraphWith(MODERN)
-    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_withSideEffectXa_g_VX2XX_VX1X_out_whereXneqXaXX() {
         final Traversal<Vertex, Vertex> traversal = get_g_withSideEffectXa_graph_verticesX2XX_VX1X_out_whereXneqXaXX(convertToVertexId("marko"), convertToVertexId("vadas"));
         printTraversalForm(traversal);
@@ -375,7 +372,7 @@
 
         @Override
         public Traversal<Vertex, Vertex> get_g_withSideEffectXa_graph_verticesX2XX_VX1X_out_whereXneqXaXX(final Object v1Id, final Object v2Id) {
-            return g.withSideEffect("a", graph.vertices(v2Id).next()).V(v1Id).out().where(neq("a"));
+            return g.withSideEffect("a", g.V(v2Id).next()).V(v1Id).out().where(neq("a"));
         }
 
         @Override
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java
index 85bdd21..f6c42b4 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeTest.java
@@ -87,8 +87,8 @@
 
         }
         assertEquals(1, count);
-        assertEquals(7, IteratorUtils.count(graph.edges()));
-        assertEquals(6, IteratorUtils.count(graph.vertices()));
+        assertEquals(7, IteratorUtils.count(g.E()));
+        assertEquals(6, IteratorUtils.count(g.V()));
     }
 
     @Test
@@ -106,8 +106,8 @@
 
         }
         assertEquals(1, count);
-        assertEquals(7, IteratorUtils.count(graph.edges()));
-        assertEquals(6, IteratorUtils.count(graph.vertices()));
+        assertEquals(7, IteratorUtils.count(g.E()));
+        assertEquals(6, IteratorUtils.count(g.V()));
     }
 
     @Test
@@ -128,8 +128,8 @@
 
         }
         assertEquals(1, count);
-        assertEquals(7, IteratorUtils.count(graph.edges()));
-        assertEquals(6, IteratorUtils.count(graph.vertices()));
+        assertEquals(7, IteratorUtils.count(g.E()));
+        assertEquals(6, IteratorUtils.count(g.V()));
     }
 
     @Test
@@ -149,8 +149,8 @@
 
         }
         assertEquals(1, count);
-        assertEquals(7, IteratorUtils.count(graph.edges()));
-        assertEquals(6, IteratorUtils.count(graph.vertices()));
+        assertEquals(7, IteratorUtils.count(g.E()));
+        assertEquals(6, IteratorUtils.count(g.V()));
     }
 
     @Test
@@ -169,12 +169,12 @@
             count++;
         }
         assertEquals(36, count);
-        assertEquals(42, IteratorUtils.count(graph.edges()));
-        for (final Vertex vertex : IteratorUtils.list(graph.vertices())) {
+        assertEquals(42, IteratorUtils.count(g.E()));
+        for (final Vertex vertex : IteratorUtils.list(g.V())) {
             assertEquals(6, IteratorUtils.count(vertex.edges(Direction.OUT, "existsWith")));
             assertEquals(6, IteratorUtils.count(vertex.edges(Direction.IN, "existsWith")));
         }
-        assertEquals(6, IteratorUtils.count(graph.vertices()));
+        assertEquals(6, IteratorUtils.count(g.V()));
     }
 
     @Test
@@ -192,12 +192,12 @@
             count++;
         }
         assertEquals(36, count);
-        assertEquals(42, IteratorUtils.count(graph.edges()));
-        for (final Vertex vertex : IteratorUtils.list(graph.vertices())) {
+        assertEquals(42, IteratorUtils.count(g.E()));
+        for (final Vertex vertex : IteratorUtils.list(g.V())) {
             assertEquals(6, IteratorUtils.count(vertex.edges(Direction.OUT, "existsWith")));
             assertEquals(6, IteratorUtils.count(vertex.edges(Direction.IN, "existsWith")));
         }
-        assertEquals(6, IteratorUtils.count(graph.vertices()));
+        assertEquals(6, IteratorUtils.count(g.V()));
     }
 
     @Test
@@ -222,8 +222,8 @@
 
         }
         assertEquals(6, count);
-        assertEquals(12, IteratorUtils.count(graph.edges()));
-        assertEquals(6, IteratorUtils.count(graph.vertices()));
+        assertEquals(12, IteratorUtils.count(g.E()));
+        assertEquals(6, IteratorUtils.count(g.V()));
     }
 
     @Test
@@ -247,8 +247,8 @@
 
         }
         assertEquals(6, count);
-        assertEquals(12, IteratorUtils.count(graph.edges()));
-        assertEquals(6, IteratorUtils.count(graph.vertices()));
+        assertEquals(12, IteratorUtils.count(g.E()));
+        assertEquals(6, IteratorUtils.count(g.V()));
     }
 
     @Test
@@ -273,8 +273,8 @@
 
         }
         assertEquals(4, count);
-        assertEquals(10, IteratorUtils.count(graph.edges()));
-        assertEquals(6, IteratorUtils.count(graph.vertices()));
+        assertEquals(10, IteratorUtils.count(g.E()));
+        assertEquals(6, IteratorUtils.count(g.V()));
     }
 
     @Test
@@ -298,8 +298,8 @@
 
         }
         assertEquals(4, count);
-        assertEquals(10, IteratorUtils.count(graph.edges()));
-        assertEquals(6, IteratorUtils.count(graph.vertices()));
+        assertEquals(10, IteratorUtils.count(g.E()));
+        assertEquals(6, IteratorUtils.count(g.V()));
     }
 
     public static class Traversals extends AddEdgeTest {
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 5a616f8..4387eb7 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
@@ -81,7 +81,7 @@
         assertEquals(29, vertex.<Integer>value("age").intValue());
         assertEquals("puppy", vertex.<String>value("name"));
         assertFalse(traversal.hasNext());
-        assertEquals(7, IteratorUtils.count(graph.vertices()));
+        assertEquals(7, IteratorUtils.count(g.V()));
     }
 
 
@@ -100,7 +100,7 @@
             count++;
         }
         assertEquals(6, count);
-        assertEquals(12, IteratorUtils.count(graph.vertices()));
+        assertEquals(12, IteratorUtils.count(g.V()));
 
     }
 
@@ -116,7 +116,7 @@
         assertEquals("person", stephen.label());
         assertEquals("stephen", stephen.value("name"));
         assertEquals(1, IteratorUtils.count(stephen.properties()));
-        assertEquals(7, IteratorUtils.count(graph.vertices()));
+        assertEquals(7, IteratorUtils.count(g.V()));
     }
 
     @Test
@@ -132,7 +132,7 @@
         assertEquals("person", stephen.label());
         assertThat((List<String>) IteratorUtils.asList(stephen.values("name")), containsInAnyOrder("stephen", "stephenm"));
         assertEquals(2, IteratorUtils.count(stephen.properties()));
-        assertEquals(7, IteratorUtils.count(graph.vertices()));
+        assertEquals(7, IteratorUtils.count(g.V()));
     }
 
     @Test
@@ -147,7 +147,7 @@
         assertEquals("person", stephen.label());
         assertEquals("stephenm", stephen.value("name"));
         assertEquals(1, IteratorUtils.count(stephen.properties()));
-        assertEquals(7, IteratorUtils.count(graph.vertices()));
+        assertEquals(7, IteratorUtils.count(g.V()));
     }
 
     @Test
@@ -165,7 +165,7 @@
         assertEquals(2010, Integer.parseInt(stephen.property("name").value("since").toString()));
         assertEquals(1, IteratorUtils.count(stephen.property("name").properties()));
         assertEquals(1, IteratorUtils.count(stephen.properties()));
-        assertEquals(7, IteratorUtils.count(graph.vertices()));
+        assertEquals(7, IteratorUtils.count(g.V()));
     }
 
     @Test
@@ -255,7 +255,7 @@
             count++;
         }
         assertEquals(6, count);
-        assertEquals(12, IteratorUtils.count(graph.vertices()));
+        assertEquals(12, IteratorUtils.count(g.V()));
 
     }
 
@@ -271,7 +271,7 @@
         assertEquals("person", stephen.label());
         assertEquals("stephen", stephen.value("name"));
         assertEquals(1, IteratorUtils.count(stephen.properties()));
-        assertEquals(7, IteratorUtils.count(graph.vertices()));
+        assertEquals(7, IteratorUtils.count(g.V()));
     }
 
 
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CountTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CountTest.java
index dd88ac6..be53b5e 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CountTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CountTest.java
@@ -21,22 +21,17 @@
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
-import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.process.traversal.Scope;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import java.util.List;
-
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL;
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FlatMapTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FlatMapTest.java
index e1d46f6..21e7541 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FlatMapTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/FlatMapTest.java
@@ -21,15 +21,11 @@
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
-import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import java.util.List;
-
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.select;
 import static org.junit.Assert.*;
@@ -40,13 +36,13 @@
 @RunWith(GremlinProcessRunner.class)
 public abstract class FlatMapTest extends AbstractGremlinProcessTest {
 
-    public abstract Traversal<Vertex, Vertex> get_g_V_flatMapXselectXaXX();
+    public abstract Traversal<Vertex, Vertex> get_g_V_asXaX_flatMapXselectXaXX();
 
     /** TINKERPOP-782 */
     @Test
     @LoadGraphWith(MODERN)
-    public void g_V_flatMapXselectXaXX() {
-        final Traversal<Vertex, Vertex> traversal = get_g_V_flatMapXselectXaXX();
+    public void g_V_asXaX_flatMapXselectXaXX() {
+        final Traversal<Vertex, Vertex> traversal = get_g_V_asXaX_flatMapXselectXaXX();
         printTraversalForm(traversal);
         int counter = 0;
         while (traversal.hasNext()) {
@@ -58,7 +54,7 @@
 
     public static class Traversals extends FlatMapTest {
         @Override
-        public Traversal<Vertex, Vertex> get_g_V_flatMapXselectXaXX() {
+        public Traversal<Vertex, Vertex> get_g_V_asXaX_flatMapXselectXaXX() {
             return g.V().as("a").flatMap(select("a"));
         }
     }
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphTest.java
index 4153125..31ad3e8 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphTest.java
@@ -52,6 +52,8 @@
 
     public abstract Traversal<Vertex, Edge> get_g_V_hasLabelXpersonX_asXpX_VXsoftwareX_addInEXuses_pX();
 
+    public abstract Traversal<Vertex, String> get_g_V_outXknowsX_V_name();
+
     @Test
     @LoadGraphWith(MODERN)
     public void g_VX1X_V_valuesXnameX() {
@@ -62,7 +64,6 @@
 
     @Test
     @LoadGraphWith(GRATEFUL)
-    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_hasXname_GarciaX_inXsungByX_asXsongX_V_hasXname_Willie_DixonX_inXwrittenByX_whereXeqXsongXX_name() {
         final Traversal<Vertex, String> traversal = get_g_V_hasXname_GarciaX_inXsungByX_asXsongX_V_hasXname_Willie_DixonX_inXwrittenByX_whereXeqXsongXX_name();
         printTraversalForm(traversal);
@@ -71,7 +72,6 @@
 
     @Test
     @LoadGraphWith(MODERN)
-    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
     public void g_V_hasLabelXpersonX_asXpX_VXsoftwareX_addInEXuses_pX() {
         final Traversal<Vertex, Edge> traversal = get_g_V_hasLabelXpersonX_asXpX_VXsoftwareX_addInEXuses_pX();
@@ -87,6 +87,14 @@
         assertEquals(8, counter);
     }
 
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_outXknowsX_V_name() {
+        final Traversal<Vertex, String> traversal = get_g_V_outXknowsX_V_name();
+        printTraversalForm(traversal);
+        checkResults(Arrays.asList("marko", "marko", "josh", "josh", "vadas", "vadas", "peter", "peter", "lop", "lop", "ripple", "ripple"), traversal);
+    }
+
     public static class Traversals extends GraphTest {
 
         @Override
@@ -95,6 +103,11 @@
         }
 
         @Override
+        public Traversal<Vertex, String> get_g_V_outXknowsX_V_name() {
+            return g.V().out("knows").V().values("name");
+        }
+
+        @Override
         public Traversal<Vertex, String> get_g_V_hasXname_GarciaX_inXsungByX_asXsongX_V_hasXname_Willie_DixonX_inXwrittenByX_whereXeqXsongXX_name() {
             return g.V().has("artist", "name", "Garcia").in("sungBy").as("song")
                     .V().has("artist", "name", "Willie_Dixon").in("writtenBy").where(P.eq("song")).values("name");
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapValuesTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapValuesTest.java
index 46457b1..ddf7fde 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapValuesTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapValuesTest.java
@@ -23,6 +23,7 @@
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
index 5d2ed95..508968a 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
+import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
@@ -43,8 +44,19 @@
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
 import static org.apache.tinkerpop.gremlin.process.traversal.P.eq;
 import static org.apache.tinkerpop.gremlin.process.traversal.P.neq;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
-import static org.junit.Assert.*;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.and;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.as;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.not;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.or;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.repeat;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.where;
+import static org.hamcrest.core.StringStartsWith.startsWith;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 /**
  * @author Joshua Shinavier (http://fortytwo.net)
@@ -134,6 +146,14 @@
     // distinct values with by()-modulation
     public abstract Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_both_b__b_both_cX_dedupXa_bX_byXlabelX();
 
+    public abstract Traversal<Vertex, Long> get_g_V_hasLabelXsongsX_matchXa_name_b__a_performances_cX_selectXb_cX_count();
+
+    // reducing barrier on lazy standard shouldn't yield an empty barrier
+    public abstract Traversal<Vertex, Long> get_g_V_matchXa_knows_count_bX_selectXbX();
+
+    // verifying keep labels and dedup labels interactions
+    public abstract Traversal<Vertex, String> get_g_V_matchXa_knows_b__b_created_c__a_created_cX_dedupXa_b_cX_selectXaX_byXnameX();
+
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_valueMap_matchXa_selectXnameX_bX() {
@@ -144,7 +164,7 @@
             counter++;
             final Map<String, Object> map = traversal.next();
             assertTrue(Map.class.isAssignableFrom(map.get("a").getClass()));
-            final String name = ((Map<String,List<String>>) map.get("a")).get("name").get(0);
+            final String name = ((Map<String, List<String>>) map.get("a")).get("name").get(0);
             assertEquals(name, ((List<String>) map.get("b")).get(0));
         }
         assertEquals(6, counter);
@@ -156,12 +176,12 @@
         final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_out_bX();
         printTraversalForm(traversal);
         checkResults(makeMapList(2,
-                        "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "lop"),
-                        "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "josh"),
-                        "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "vadas"),
-                        "a", convertToVertex(graph, "josh"), "b", convertToVertex(graph, "ripple"),
-                        "a", convertToVertex(graph, "josh"), "b", convertToVertex(graph, "lop"),
-                        "a", convertToVertex(graph, "peter"), "b", convertToVertex(graph, "lop")),
+                "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "lop"),
+                "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "josh"),
+                "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "vadas"),
+                "a", convertToVertex(graph, "josh"), "b", convertToVertex(graph, "ripple"),
+                "a", convertToVertex(graph, "josh"), "b", convertToVertex(graph, "lop"),
+                "a", convertToVertex(graph, "peter"), "b", convertToVertex(graph, "lop")),
                 traversal);
     }
 
@@ -266,21 +286,26 @@
         final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_created_b__b_0created_aX();
         printTraversalForm(traversal);
         checkResults(makeMapList(2,
-                        "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "lop"),
-                        "a", convertToVertex(graph, "josh"), "b", convertToVertex(graph, "lop"),
-                        "a", convertToVertex(graph, "peter"), "b", convertToVertex(graph, "lop"),
-                        "a", convertToVertex(graph, "josh"), "b", convertToVertex(graph, "ripple")),
+                "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "lop"),
+                "a", convertToVertex(graph, "josh"), "b", convertToVertex(graph, "lop"),
+                "a", convertToVertex(graph, "peter"), "b", convertToVertex(graph, "lop"),
+                "a", convertToVertex(graph, "josh"), "b", convertToVertex(graph, "ripple")),
                 traversal);
 
     }
 
     // TODO: this test requires Traversal.reverse()
-    @Test(expected = IllegalStateException.class)
     @LoadGraphWith(MODERN)
     public void g_V_matchXa_knows_b__c_knows_bX() {
         final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_knows_b__c_knows_bX();
-        printTraversalForm(traversal);
-        traversal.iterate();
+        try {
+            printTraversalForm(traversal);
+            traversal.iterate();
+            fail("Should have tossed an exception because match pattern is not solvable");
+        } catch (Exception ex) {
+            final Throwable root = ExceptionUtils.getRootCause(ex);
+            assertThat(root.getMessage(), startsWith("The provided match pattern is unsolvable:"));
+        }
     }
 
     @Test
@@ -296,20 +321,30 @@
     }
 
     // TODO: this test requires Traversal.reverse()
-    @Test(expected = IllegalStateException.class)
     @LoadGraphWith(MODERN)
     public void g_V_matchXa_created_b__c_created_bX_selectXa_b_cX_byXnameX() throws Exception {
         final Traversal<Vertex, Map<String, String>> traversal = get_g_V_matchXa_created_b__c_created_bX_selectXa_b_cX_byXnameX();
-        printTraversalForm(traversal);
-        traversal.iterate();
+        try {
+            printTraversalForm(traversal);
+            traversal.iterate();
+            fail("Should have tossed an exception because match pattern is not solvable");
+        } catch (Exception ex) {
+            final Throwable root = ExceptionUtils.getRootCause(ex);
+            assertThat(root.getMessage(), startsWith("The provided match pattern is unsolvable:"));
+        }
     }
 
-    @Test(expected = IllegalStateException.class)
     @LoadGraphWith(MODERN)
     public void g_V_out_asXcX_matchXb_knows_a__c_created_eX_selectXcX() throws Exception {
         final Traversal<Vertex, String> traversal = get_g_V_out_asXcX_matchXb_knows_a__c_created_eX_selectXcX();
-        printTraversalForm(traversal);
-        traversal.iterate();
+        try {
+            printTraversalForm(traversal);
+            traversal.iterate();
+            fail("Should have tossed an exception because match pattern is not solvable");
+        } catch (Exception ex) {
+            final Throwable root = ExceptionUtils.getRootCause(ex);
+            assertThat(root.getMessage(), startsWith("The provided match pattern is unsolvable:"));
+        }
     }
 
     @Test
@@ -368,12 +403,12 @@
 
     private void assertCommon(Traversal<Vertex, Map<String, Vertex>> traversal) {
         checkResults(makeMapList(4,
-                    "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CREAM PUFF WAR"), "c", convertToVertex(graph, "CREAM PUFF WAR"), "d", convertToVertex(graph, "Garcia"),
-                    "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CREAM PUFF WAR"), "c", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "d", convertToVertex(graph, "Garcia"),
-                    "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "c", convertToVertex(graph, "CREAM PUFF WAR"), "d", convertToVertex(graph, "Garcia"),
-                    "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "c", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "d", convertToVertex(graph, "Garcia"),
-                    "a", convertToVertex(graph, "Grateful_Dead"), "b", convertToVertex(graph, "CANT COME DOWN"), "c", convertToVertex(graph, "DOWN SO LONG"), "d", convertToVertex(graph, "Garcia"),
-                    "a", convertToVertex(graph, "Grateful_Dead"), "b", convertToVertex(graph, "THE ONLY TIME IS NOW"), "c", convertToVertex(graph, "DOWN SO LONG"), "d", convertToVertex(graph, "Garcia")), traversal);
+                "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CREAM PUFF WAR"), "c", convertToVertex(graph, "CREAM PUFF WAR"), "d", convertToVertex(graph, "Garcia"),
+                "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CREAM PUFF WAR"), "c", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "d", convertToVertex(graph, "Garcia"),
+                "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "c", convertToVertex(graph, "CREAM PUFF WAR"), "d", convertToVertex(graph, "Garcia"),
+                "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "c", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "d", convertToVertex(graph, "Garcia"),
+                "a", convertToVertex(graph, "Grateful_Dead"), "b", convertToVertex(graph, "CANT COME DOWN"), "c", convertToVertex(graph, "DOWN SO LONG"), "d", convertToVertex(graph, "Garcia"),
+                "a", convertToVertex(graph, "Grateful_Dead"), "b", convertToVertex(graph, "THE ONLY TIME IS NOW"), "c", convertToVertex(graph, "DOWN SO LONG"), "d", convertToVertex(graph, "Garcia")), traversal);
     }
 
     @Test
@@ -483,6 +518,34 @@
         assertEquals(results.size(), counter);
     }
 
+    @Test
+    @LoadGraphWith(GRATEFUL)
+    public void g_V_hasLabelXsongsX_matchXa_name_b__a_performances_cX_selectXb_cX_count() {
+        final Traversal<Vertex, Long> traversal = get_g_V_hasLabelXsongsX_matchXa_name_b__a_performances_cX_selectXb_cX_count();
+        printTraversalForm(traversal);
+        assertEquals(584, traversal.next().longValue());
+        assertFalse(traversal.hasNext());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_matchXa_knows_count_bX_selectXbX() {
+        final Traversal<Vertex, Long> traversal = get_g_V_matchXa_knows_count_bX_selectXbX();
+        printTraversalForm(traversal);
+        checkResults(Arrays.asList(0L, 0L, 0L, 0L, 0L, 2L), traversal);
+        assertFalse(traversal.hasNext());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_matchXa_knows_b__b_created_c__a_created_cX_dedupXa_b_cX_selectXaX_byXnameX() {
+        final Traversal<Vertex, String> traversal = get_g_V_matchXa_knows_b__b_created_c__a_created_cX_dedupXa_b_cX_selectXaX_byXnameX();
+        printTraversalForm(traversal);
+        assertEquals("marko", traversal.next());
+        assertFalse(traversal.hasNext());
+    }
+
+
     public static class GreedyMatchTraversals extends Traversals {
         @Before
         public void setupTest() {
@@ -739,5 +802,26 @@
                     as("a").both().as("b"),
                     as("b").both().as("c")).dedup("a", "b").by(T.label);
         }
+
+        @Override
+        public Traversal<Vertex, Long> get_g_V_hasLabelXsongsX_matchXa_name_b__a_performances_cX_selectXb_cX_count() {
+            return g.V().hasLabel("song").match(
+                    __.as("a").values("name").as("b"),
+                    __.as("a").values("performances").as("c")
+            ).select("b", "c").count();
+        }
+
+        @Override
+        public Traversal<Vertex, Long> get_g_V_matchXa_knows_count_bX_selectXbX() {
+            return g.V().match(as("a").out("knows").count().as("b")).select("b");
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_matchXa_knows_b__b_created_c__a_created_cX_dedupXa_b_cX_selectXaX_byXnameX() {
+            return g.V().match(
+                    as("a").out("knows").as("b"),
+                    as("b").out("created").as("c"),
+                    as("a").out("created").as("c")).dedup("a", "b", "c").<String>select("a").by("name");
+        }
     }
 }
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
index ea7ffe1..453a663 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
@@ -27,6 +27,7 @@
 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.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.structure.Column;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
@@ -73,7 +74,7 @@
 
     public abstract Traversal<Vertex, Vertex> get_g_V_order_byXoutE_count__decrX();
 
-    public abstract Traversal<Vertex, Map<String, List<Vertex>>> get_g_V_group_byXlabelX_byXnameX_byXorderXlocalX_byXdecrXX();
+    public abstract Traversal<Vertex, Map<String, List<Vertex>>> get_g_V_group_byXlabelX_byXname_order_byXdecrX_foldX();
 
     public abstract Traversal<Vertex, List<Double>> get_g_V_localXbothE_weight_foldX_order_byXsumXlocalX_decrX();
 
@@ -83,8 +84,18 @@
 
     public abstract Traversal<Vertex, List<Vertex>> get_g_V_hasLabelXpersonX_fold_orderXlocalX_byXageX();
 
+    public abstract Traversal<Vertex, String> get_g_V_hasLabelXpersonX_order_byXvalueXageX__decrX_name();
+
+    public abstract Traversal<Vertex, String> get_g_V_properties_order_byXkey_decrX_key();
+
     public abstract Traversal<Vertex, Vertex> get_g_V_hasXsong_name_OHBOYX_outXfollowedByX_outXfollowedByX_order_byXperformancesX_byXsongType_incrX();
 
+    public abstract Traversal<Vertex, String> get_g_V_both_hasLabelXpersonX_order_byXage_decrX_limitX5X_name();
+
+    public abstract Traversal<Vertex, String> get_g_V_both_hasLabelXpersonX_order_byXage_decrX_name();
+
+    public abstract Traversal<Vertex, String> get_g_V_hasLabelXsongX_order_byXperfomances_decrX_byXnameX_rangeX110_120X_name();
+
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_name_order() {
@@ -95,7 +106,6 @@
 
     @Test
     @LoadGraphWith(MODERN)
-    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_name_order_byXa1_b1X_byXb2_a2X() {
         final Traversal<Vertex, String> traversal = get_g_V_name_order_byXa1_b1X_byXb2_a2X();
         printTraversalForm(traversal);
@@ -243,8 +253,8 @@
 
     @Test
     @LoadGraphWith(MODERN)
-    public void g_V_group_byXlabelX_byXnameX_byXorderXlocalX_byXdecrXX() {
-        final Traversal<Vertex, Map<String, List<Vertex>>> traversal = get_g_V_group_byXlabelX_byXnameX_byXorderXlocalX_byXdecrXX();
+    public void g_V_group_byXlabelX_byXname_order_byXdecrX_foldX() {
+        final Traversal<Vertex, Map<String, List<Vertex>>> traversal = get_g_V_group_byXlabelX_byXname_order_byXdecrX_foldX();
         printTraversalForm(traversal);
         final Map<String, List<Vertex>> map = traversal.next();
         assertFalse(traversal.hasNext());
@@ -323,9 +333,42 @@
     }
 
     @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_hasLabelXpersonX_order_byXvalueXageX__decrX_name() {
+        final Traversal<Vertex, String> traversal = get_g_V_hasLabelXpersonX_order_byXvalueXageX__decrX_name();
+        printTraversalForm(traversal);
+        assertEquals("peter", traversal.next());
+        assertEquals("josh", traversal.next());
+        assertEquals("marko", traversal.next());
+        assertEquals("vadas", traversal.next());
+        assertFalse(traversal.hasNext());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_properties_order_byXkey_decrX_key() {
+        final Traversal<Vertex, String> traversal = get_g_V_properties_order_byXkey_decrX_key();
+        printTraversalForm(traversal);
+        assertEquals("name", traversal.next());
+        assertEquals("name", traversal.next());
+        assertEquals("name", traversal.next());
+        assertEquals("name", traversal.next());
+        assertEquals("name", traversal.next());
+        assertEquals("name", traversal.next());
+        assertEquals("lang", traversal.next());
+        assertEquals("lang", traversal.next());
+        assertEquals("age", traversal.next());
+        assertEquals("age", traversal.next());
+        assertEquals("age", traversal.next());
+        assertEquals("age", traversal.next());
+        assertFalse(traversal.hasNext());
+    }
+
+    @Test
     @LoadGraphWith(GRATEFUL)
     public void g_V_hasXsong_name_OHBOYX_outXfollowedByX_outXfollowedByX_order_byXperformancesX_byXsongType_incrX() {
         final Traversal<Vertex, Vertex> traversal = get_g_V_hasXsong_name_OHBOYX_outXfollowedByX_outXfollowedByX_order_byXperformancesX_byXsongType_incrX();
+        printTraversalForm(traversal);
         int counter = 0;
         String lastSongType = "a";
         int lastPerformances = Integer.MIN_VALUE;
@@ -343,6 +386,56 @@
         assertEquals(144, counter);
     }
 
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_both_hasLabelXpersonX_order_byXage_decrX_limitX5X_name() {
+        final Traversal<Vertex, String> traversal = get_g_V_both_hasLabelXpersonX_order_byXage_decrX_limitX5X_name();
+        printTraversalForm(traversal);
+        final List<String> results = traversal.toList();
+        assertEquals(5, results.size());
+        assertFalse(traversal.hasNext());
+        assertEquals("peter", results.get(0));
+        assertEquals("josh", results.get(1));
+        assertEquals("josh", results.get(2));
+        assertEquals("josh", results.get(3));
+        assertEquals("marko", results.get(4));
+    }
+
+    @Test
+    @IgnoreEngine(TraversalEngine.Type.STANDARD) // validating the internal sort/limit works in GraphComputer
+    @LoadGraphWith(MODERN)
+    public void g_V_both_hasLabelXpersonX_order_byXage_decrX_name() {
+        final Traversal<Vertex, String> traversal = get_g_V_both_hasLabelXpersonX_order_byXage_decrX_name();
+        traversal.asAdmin().applyStrategies();
+        if (!TraversalHelper.getFirstStepOfAssignableClass(OrderGlobalStep.class, traversal.asAdmin()).isPresent())
+            return; // total hack to avoid providers that don't compile to OrderGlobalStep
+        TraversalHelper.getFirstStepOfAssignableClass(OrderGlobalStep.class, traversal.asAdmin()).get().setLimit(1);
+        printTraversalForm(traversal);
+        final List<String> results = traversal.toList();
+        assertTrue(results.size() < 8);
+        assertFalse(traversal.hasNext());
+    }
+
+    @Test
+    @LoadGraphWith(GRATEFUL)
+    public void g_V_hasLabelXsongX_order_byXperfomances_decrX_byXnameX_rangeX110_120X_name() {
+        final Traversal<Vertex, String> traversal = get_g_V_hasLabelXsongX_order_byXperfomances_decrX_byXnameX_rangeX110_120X_name();
+        printTraversalForm(traversal);
+        final List<String> results = traversal.toList();
+        assertEquals(10, results.size());
+        assertEquals("WANG DANG DOODLE", results.get(0));
+        assertEquals("THE ELEVEN", results.get(1));
+        assertEquals("WAY TO GO HOME", results.get(2));
+        assertEquals("FOOLISH HEART", results.get(3));
+        assertEquals("GIMME SOME LOVING", results.get(4));
+        assertEquals("DUPREES DIAMOND BLUES", results.get(5));
+        assertEquals("CORRINA", results.get(6));
+        assertEquals("PICASSO MOON", results.get(7));
+        assertEquals("KNOCKING ON HEAVENS DOOR", results.get(8));
+        assertEquals("MEMPHIS BLUES", results.get(9));
+        assertFalse(traversal.hasNext());
+    }
+
     public static class Traversals extends OrderTest {
 
         @Override
@@ -400,7 +493,7 @@
         }
 
         @Override
-        public Traversal<Vertex, Map<String, List<Vertex>>> get_g_V_group_byXlabelX_byXnameX_byXorderXlocalX_byXdecrXX() {
+        public Traversal<Vertex, Map<String, List<Vertex>>> get_g_V_group_byXlabelX_byXname_order_byXdecrX_foldX() {
             return g.V().<String, List<Vertex>>group().by(T.label).by(__.values("name").order().by(Order.decr).fold());
         }
 
@@ -425,8 +518,33 @@
         }
 
         @Override
+        public Traversal<Vertex, String> get_g_V_hasLabelXpersonX_order_byXvalueXageX__decrX_name() {
+            return g.V().hasLabel("person").order().<Vertex>by(v -> v.value("age"), Order.decr).values("name");
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_properties_order_byXkey_decrX_key() {
+            return g.V().properties().order().by(T.key, Order.decr).key();
+        }
+
+        @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXsong_name_OHBOYX_outXfollowedByX_outXfollowedByX_order_byXperformancesX_byXsongType_incrX() {
             return g.V().has("song", "name", "OH BOY").out("followedBy").out("followedBy").order().by("performances").by("songType", Order.decr);
         }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_both_hasLabelXpersonX_order_byXage_decrX_limitX5X_name() {
+            return g.V().both().hasLabel("person").order().by("age", Order.decr).limit(5).values("name");
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_both_hasLabelXpersonX_order_byXage_decrX_name() {
+            return g.V().both().hasLabel("person").order().by("age", Order.decr).values("name");
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_hasLabelXsongX_order_byXperfomances_decrX_byXnameX_rangeX110_120X_name() {
+            return g.V().hasLabel("song").order().by("performances", Order.decr).by("name").range(110, 120).values("name");
+        }
     }
 }
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java
new file mode 100644
index 0000000..57a3b3f
--- /dev/null
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java
@@ -0,0 +1,288 @@
+/*
+ * 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.map;
+
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
+import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram;
+import org.apache.tinkerpop.gremlin.process.traversal.Order;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.structure.T;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(GremlinProcessRunner.class)
+public abstract class PageRankTest extends AbstractGremlinProcessTest {
+
+    public abstract Traversal<Vertex, Vertex> get_g_V_pageRank();
+
+    public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_outXcreatedX_pageRank_byXbothEX_byXprojectRankX_timesX0X_valueMapXname_projectRankX();
+
+    public abstract Traversal<Vertex, String> get_g_V_pageRank_order_byXpageRank_decrX_name();
+
+    public abstract Traversal<Vertex, String> get_g_V_pageRank_order_byXpageRank_decrX_name_limitX2X();
+
+    public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_valueMapXname_friendRankX();
+
+    public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasLabelXpersonX_pageRank_byXpageRankX_order_byXpageRankX_valueMapXname_pageRankX();
+
+    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX();
+
+    public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_byXinEXcreatedXX_timesX1X_byXpriorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX();
+
+    public abstract Traversal<Vertex, Map<Object, List<Vertex>>> get_g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_byXpageRankX_byXinEX_timesX1X_inXcreatedX_groupXmX_byXpageRankX_capXmX();
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_pageRank() {
+        final Traversal<Vertex, Vertex> traversal = get_g_V_pageRank();
+        printTraversalForm(traversal);
+        int counter = 0;
+        while (traversal.hasNext()) {
+            final Vertex vertex = traversal.next();
+            counter++;
+            assertTrue(vertex.property(PageRankVertexProgram.PAGE_RANK).isPresent());
+        }
+        assertEquals(6, counter);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_outXcreatedX_pageRank_byXbothEX_byXprojectRankX_valueMapXname_projectRankX() {
+        final Traversal<Vertex, Map<String, List<Object>>> traversal = get_g_V_outXcreatedX_pageRank_byXbothEX_byXprojectRankX_timesX0X_valueMapXname_projectRankX();
+        printTraversalForm(traversal);
+        final List<Map<String, List<Object>>> result = traversal.toList();
+        assertEquals(4, result.size());
+        final Map<String, Double> map = new HashMap<>();
+        result.forEach(m -> map.put((String) m.get("name").get(0), (Double) m.get("projectRank").get(0)));
+        assertEquals(2, map.size());
+        assertTrue(map.containsKey("lop"));
+        assertTrue(map.containsKey("ripple"));
+        assertTrue(map.get("lop") > map.get("ripple"));
+        assertEquals(3.0d, map.get("lop"), 0.001d);
+        assertEquals(1.0d, map.get("ripple"), 0.001d);
+        assertFalse(traversal.hasNext());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_pageRank_order_byXpageRank_decrX_name() {
+        final Traversal<Vertex, String> traversal = get_g_V_pageRank_order_byXpageRank_decrX_name();
+        printTraversalForm(traversal);
+        final List<String> names = traversal.toList();
+        assertEquals(6, names.size());
+        assertEquals("lop", names.get(0));
+        assertEquals("ripple", names.get(1));
+        assertTrue(names.get(2).equals("josh") || names.get(2).equals("vadas"));
+        assertTrue(names.get(3).equals("josh") || names.get(3).equals("vadas"));
+        assertTrue(names.get(4).equals("marko") || names.get(4).equals("peter"));
+        assertTrue(names.get(5).equals("marko") || names.get(5).equals("peter"));
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_valueMapXname_friendRankX() {
+        final Traversal<Vertex, Map<String, List<Object>>> traversal = get_g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_valueMapXname_friendRankX();
+        printTraversalForm(traversal);
+        int counter = 0;
+        while (traversal.hasNext()) {
+            final Map<String, List<Object>> map = traversal.next();
+            assertEquals(2, map.size());
+            assertEquals(1, map.get("name").size());
+            assertEquals(1, map.get("friendRank").size());
+            String name = (String) map.get("name").get(0);
+            Double friendRank = (Double) map.get("friendRank").get(0);
+            if (name.equals("lop") || name.equals("ripple") || name.equals("peter") || name.equals("marko"))
+                assertEquals(0.15, friendRank, 0.01);
+            else
+                assertEquals(0.21375, friendRank, 0.01);
+
+            counter++;
+        }
+        assertEquals(6, counter);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_pageRank_order_byXpageRank_decrX_name_limitX2X() {
+        final Traversal<Vertex, String> traversal = get_g_V_pageRank_order_byXpageRank_decrX_name_limitX2X();
+        printTraversalForm(traversal);
+        final List<String> names = traversal.toList();
+        assertEquals(2, names.size());
+        assertEquals("lop", names.get(0));
+        assertEquals("ripple", names.get(1));
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_hasLabelXpersonX_pageRank_byXpageRankX_order_byXpageRankX_valueMapXname_pageRankX() {
+        final Traversal<Vertex, Map<String, List<Object>>> traversal = get_g_V_hasLabelXpersonX_pageRank_byXpageRankX_order_byXpageRankX_valueMapXname_pageRankX();
+        printTraversalForm(traversal);
+        int counter = 0;
+        double lastPageRank = Double.MIN_VALUE;
+        while (traversal.hasNext()) {
+            final Map<String, List<Object>> map = traversal.next();
+            assertEquals(2, map.size());
+            assertEquals(1, map.get("name").size());
+            assertEquals(1, map.get("pageRank").size());
+            String name = (String) map.get("name").get(0);
+            double pageRank = (Double) map.get("pageRank").get(0);
+            assertTrue(pageRank >= lastPageRank);
+            lastPageRank = pageRank;
+            assertFalse(name.equals("lop") || name.equals("ripple"));
+            counter++;
+        }
+        assertEquals(4, counter);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX() {
+        final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX();
+        printTraversalForm(traversal);
+        int counter = 0;
+        while (traversal.hasNext()) {
+            final Map<String, Object> map = traversal.next();
+            assertEquals(2, map.size());
+            Vertex vertex = (Vertex) map.get("a");
+            double pageRank = (Double) map.get("b");
+            assertEquals(convertToVertexId("marko"), vertex.id());
+            assertTrue(pageRank > 0.15d);
+            counter++;
+        }
+        assertEquals(2, counter);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_byXinEXcreatedXX_timesX1X_byXpriorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX() {
+        final Traversal<Vertex, Map<String, List<Object>>> traversal = get_g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_byXinEXcreatedXX_timesX1X_byXpriorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX();
+        printTraversalForm(traversal);
+        int counter = 0;
+        while (traversal.hasNext()) {
+            final Map<String, List<Object>> map = traversal.next();
+            assertEquals(2, map.size());
+            String name = (String) map.get("name").get(0);
+            double pageRank = (Double) map.get("priors").get(0);
+            assertEquals(name.equals("josh") ? 1.0d : 0.0d, pageRank, 0.0001d);
+            if (name.equals("peter") || name.equals("vadas"))
+                fail("Peter or Vadas should not have been accessed");
+            counter++;
+        }
+        assertEquals(4, counter);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_byXpageRankX_byXinEX_timesX1X_inXcreatedX_groupXmX_byXpageRankX_capXmX() {
+        // [{2.0=[v[4], v[4], v[4], v[4]], 1.0=[v[6], v[6], v[6], v[1], v[1], v[1]], software=[v[5], v[3], v[3], v[3]]}]
+        final Traversal<Vertex, Map<Object, List<Vertex>>> traversal = get_g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_byXpageRankX_byXinEX_timesX1X_inXcreatedX_groupXmX_byXpageRankX_capXmX();
+        printTraversalForm(traversal);
+        final Map<Object, List<Vertex>> map = traversal.next();
+        assertFalse(traversal.hasNext());
+        assertEquals(3, map.size());
+        assertTrue(map.containsKey("software"));
+        map.forEach((k, v) -> {
+            boolean found = false;
+            if (!k.equals("software") && v.size() == 4) {
+                assertEquals(2.0d, ((Number) k).doubleValue(), 0.01d);
+                assertEquals(4, v.stream().filter(vertex -> vertex.id().equals(convertToVertexId(graph, "josh"))).count());
+                found = true;
+            } else if (v.size() == 6) {
+                assertEquals(1.0d, ((Number) k).doubleValue(), 0.01d);
+                assertEquals(3, v.stream().filter(vertex -> vertex.id().equals(convertToVertexId(graph, "peter"))).count());
+                assertEquals(3, v.stream().filter(vertex -> vertex.id().equals(convertToVertexId(graph, "marko"))).count());
+                found = true;
+            } else if (v.size() == 4) {
+                assertEquals("software", k);
+                assertEquals(3, v.stream().filter(vertex -> vertex.id().equals(convertToVertexId(graph, "lop"))).count());
+                assertEquals(1, v.stream().filter(vertex -> vertex.id().equals(convertToVertexId(graph, "ripple"))).count());
+                found = true;
+            }
+
+            if (!found)
+                fail("There are too many key/values: " + k + "--" + v);
+        });
+    }
+
+    public static class Traversals extends PageRankTest {
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_pageRank() {
+            return g.V().pageRank();
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, List<Object>>> get_g_V_outXcreatedX_pageRank_byXbothEX_byXprojectRankX_timesX0X_valueMapXname_projectRankX() {
+            return g.V().out("created").pageRank().by(__.bothE()).by("projectRank").times(0).valueMap("name", "projectRank");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, List<Object>>> get_g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_valueMapXname_friendRankX() {
+            return g.V().pageRank().by(__.outE("knows")).by("friendRank").valueMap("name", "friendRank");
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_pageRank_order_byXpageRank_decrX_name() {
+            return g.V().pageRank().order().by(PageRankVertexProgram.PAGE_RANK, Order.decr).values("name");
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_pageRank_order_byXpageRank_decrX_name_limitX2X() {
+            return g.V().pageRank().order().by(PageRankVertexProgram.PAGE_RANK, Order.decr).<String>values("name").limit(2);
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasLabelXpersonX_pageRank_byXpageRankX_order_byXpageRankX_valueMapXname_pageRankX() {
+            return g.V().hasLabel("person").pageRank().by("pageRank").order().by("pageRank").valueMap("name", "pageRank");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Object>> get_g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX() {
+            return g.V().pageRank().by("pageRank").as("a").out("knows").values("pageRank").as("b").select("a", "b");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_byXinEXcreatedXX_timesX1X_byXpriorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX() {
+            return g.V().hasLabel("software").has("name", "ripple").pageRank(1.0).by(__.inE("created")).times(1).by("priors").in("created").union(__.both(), __.identity()).valueMap("name", "priors");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<Object, List<Vertex>>> get_g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_byXpageRankX_byXinEX_timesX1X_inXcreatedX_groupXmX_byXpageRankX_capXmX() {
+            return g.V().out("created").group("m").by(T.label).pageRank(1.0).by("pageRank").by(__.inE()).times(1).in("created").group("m").by("pageRank").cap("m");
+        }
+    }
+}
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java
new file mode 100644
index 0000000..5a2477c
--- /dev/null
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java
@@ -0,0 +1,119 @@
+/*
+ * 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.map;
+
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.PeerPressureVertexProgram;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public abstract class PeerPressureTest extends AbstractGremlinProcessTest {
+
+    public abstract Traversal<Vertex, Vertex> get_g_V_peerPressure();
+
+    public abstract Traversal<Vertex, Map<Object, Number>> get_g_V_peerPressure_byXclusterX_byXoutEXknowsXX_pageRankX1X_byXrankX_byXoutEXknowsXX_timesX2X_group_byXclusterX_byXrank_sumX_limitX100X();
+
+    public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_byXoutEX_byXclusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX();
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_peerPressure() {
+        final Traversal<Vertex, Vertex> traversal = get_g_V_peerPressure();
+        printTraversalForm(traversal);
+        int counter = 0;
+        while (traversal.hasNext()) {
+            final Vertex vertex = traversal.next();
+            counter++;
+            assertTrue(vertex.property(PeerPressureVertexProgram.CLUSTER).isPresent());
+        }
+        assertEquals(6, counter);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_peerPressure_byXclusterX_byXoutEXknowsXX_pageRankX1X_byXrankX_byXoutEXknowsXX_timesX2X_group_byXclusterX_byXrank_sumX() {
+        final Traversal<Vertex, Map<Object, Number>> traversal = get_g_V_peerPressure_byXclusterX_byXoutEXknowsXX_pageRankX1X_byXrankX_byXoutEXknowsXX_timesX2X_group_byXclusterX_byXrank_sumX_limitX100X();
+        printTraversalForm(traversal);
+        final Map<Object, Number> map = traversal.next();
+        assertFalse(traversal.hasNext());
+        assertEquals(4, map.size());
+        assertEquals(1.0d, (double) map.get(convertToVertexId("marko")), 0.001d);
+        assertEquals(0.0d, (double) map.get(convertToVertexId("lop")), 0.001d);
+        assertEquals(0.0d, (double) map.get(convertToVertexId("ripple")), 0.001d);
+        assertEquals(0.0d, (double) map.get(convertToVertexId("peter")), 0.001d);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_hasXname_rippleX_inXcreatedX_peerPressure_byXoutEX_byXclusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX() {
+        final Traversal<Vertex, Map<String, List<Object>>> traversal = get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_byXoutEX_byXclusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX();
+        printTraversalForm(traversal);
+        final List<Map<String, List<Object>>> results = traversal.toList();
+        assertEquals(6, results.size());
+        final Map<String, Object> clusters = new HashMap<>();
+        results.forEach(m -> clusters.put((String) m.get("name").get(0), m.get("cluster").get(0)));
+        assertEquals(2, results.get(0).size());
+        assertEquals(6, clusters.size());
+        assertEquals(clusters.get("josh"), clusters.get("ripple"));
+        assertEquals(clusters.get("josh"), clusters.get("lop"));
+        final Set<Object> ids = new HashSet<>(clusters.values());
+        assertEquals(4, ids.size());
+        assertTrue(ids.contains(convertToVertexId("marko")));
+        assertTrue(ids.contains(convertToVertexId("vadas")));
+        assertTrue(ids.contains(convertToVertexId("josh")));
+        assertTrue(ids.contains(convertToVertexId("peter")));
+    }
+
+
+    public static class Traversals extends PeerPressureTest {
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_peerPressure() {
+            return g.V().peerPressure();
+        }
+
+        @Override
+        public Traversal<Vertex, Map<Object, Number>> get_g_V_peerPressure_byXclusterX_byXoutEXknowsXX_pageRankX1X_byXrankX_byXoutEXknowsXX_timesX2X_group_byXclusterX_byXrank_sumX_limitX100X() {
+            return g.V().peerPressure().by("cluster").by(__.outE("knows")).pageRank(1.0d).by("rank").by(__.outE("knows")).times(1).<Object, Number>group().by("cluster").by(__.values("rank").sum()).limit(100);
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_byXoutEX_byXclusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX() {
+            return g.V().has("name", "ripple").in("created").peerPressure().by(__.outE()).by("cluster").repeat(__.union(__.identity(), __.both())).times(2).dedup().valueMap("name", "cluster");
+        }
+    }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java
new file mode 100644
index 0000000..548e7ab
--- /dev/null
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java
@@ -0,0 +1,500 @@
+/*
+ * 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.map;
+
+import org.apache.commons.lang.exception.ExceptionUtils;
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
+import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Profiling;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ProfileStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.RangeByIsCountStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.RepeatUnrollStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.VerificationException;
+import org.apache.tinkerpop.gremlin.process.traversal.util.Metrics;
+import org.apache.tinkerpop.gremlin.process.traversal.util.MutableMetrics;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL;
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.both;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * @author Bob Briody (http://bobbriody.com)
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(GremlinProcessRunner.class)
+public abstract class ProfileTest extends AbstractGremlinProcessTest {
+    private static final String METRICS_KEY = "metrics";
+
+    public abstract Traversal<Vertex, TraversalMetrics> get_g_V_out_out_profile();
+
+    public abstract Traversal<Vertex, TraversalMetrics> get_g_V_repeatXbothX_timesX3X_profile();
+
+    public abstract Traversal<Vertex, TraversalMetrics> get_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile();
+
+    public abstract Traversal<Vertex, TraversalMetrics> get_g_V_whereXinXcreatedX_count_isX1XX_name_profile();
+
+    public abstract Traversal<Vertex, TraversalMetrics> get_g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_profile();
+
+    public abstract Traversal<Vertex, Vertex> get_g_V_out_out_profileXmetricsX();
+
+    public abstract Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_profileXmetricsX();
+
+    public abstract Traversal<Vertex, Vertex> get_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profileXmetricsX();
+
+    public abstract Traversal<Vertex, String> get_g_V_whereXinXcreatedX_count_isX1XX_name_profileXmetricsX();
+
+    public abstract Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_profileXmetricsX();
+
+    public abstract Traversal<Vertex, TraversalMetrics> get_g_V_hasLabelXpersonX_pageRank_byXrankX_byXbothEX_rank_profile();
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void modern_V_out_out_profile() {
+        final Traversal<Vertex, TraversalMetrics> traversal = get_g_V_out_out_profile();
+        printTraversalForm(traversal);
+        validate_g_V_out_out_profile_modern(traversal, traversal.next());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void modern_V_out_out_profileXmetricsX() {
+        final Traversal<Vertex, Vertex> traversal = get_g_V_out_out_profileXmetricsX();
+        printTraversalForm(traversal);
+        traversal.iterate();
+        validate_g_V_out_out_profile_modern(traversal, traversal.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY));
+    }
+
+    private void validate_g_V_out_out_profile_modern(final Traversal traversal, final TraversalMetrics traversalMetrics) {
+        traversalMetrics.toString(); // ensure no exceptions are thrown
+
+        Metrics metrics = traversalMetrics.getMetrics(0);
+        assertEquals(6, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
+        assertEquals(6, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
+
+        metrics = traversalMetrics.getMetrics(1);
+        assertEquals(6, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
+        assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
+
+        metrics = traversalMetrics.getMetrics(2);
+        assertEquals(2, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
+        assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
+
+        if (!onGraphComputer(traversal.asAdmin())) {
+            // Every other step should be a Profile step
+            List<Step> steps = traversal.asAdmin().getSteps();
+            for (int ii = 1; ii <= 6; ii += 2) {
+                assertEquals("Every other Step should be a ProfileStep.", ProfileStep.class, steps.get(ii).getClass());
+            }
+        }
+    }
+
+    ////////////////////
+
+    @Test
+    @LoadGraphWith(GRATEFUL)
+    public void grateful_V_out_out_profile() {
+        final Traversal<Vertex, TraversalMetrics> traversal = get_g_V_out_out_profile();
+        printTraversalForm(traversal);
+        final TraversalMetrics traversalMetrics = traversal.next();
+        validate_g_V_out_out_profile_grateful(traversalMetrics);
+    }
+
+    @Test
+    @LoadGraphWith(GRATEFUL)
+    public void grateful_V_out_out_profileXmetricsX() {
+        final Traversal<Vertex, Vertex> traversal = get_g_V_out_out_profileXmetricsX();
+        printTraversalForm(traversal);
+        traversal.iterate();
+        final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY);
+        validate_g_V_out_out_profile_grateful(traversalMetrics);
+    }
+
+    private void validate_g_V_out_out_profile_grateful(TraversalMetrics traversalMetrics) {
+        traversalMetrics.toString(); // ensure no exceptions are thrown
+
+        Metrics metrics = traversalMetrics.getMetrics(0);
+        assertEquals(808, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
+        assertEquals(808, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
+        assertTrue("Percent duration should be positive.", (Double) metrics.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY) >= 0);
+        assertTrue("Times should be positive.", metrics.getDuration(TimeUnit.MICROSECONDS) >= 0);
+
+        metrics = traversalMetrics.getMetrics(1);
+        assertEquals(8049, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
+        assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
+        assertTrue("Percent duration should be positive.", (Double) metrics.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY) >= 0);
+        assertTrue("Times should be positive.", metrics.getDuration(TimeUnit.MICROSECONDS) >= 0);
+
+        metrics = traversalMetrics.getMetrics(2);
+        assertEquals(327370, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
+        assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
+        assertTrue("Percent duration should be positive.", (Double) metrics.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY) >= 0);
+        assertTrue("Times should be positive.", metrics.getDuration(TimeUnit.MICROSECONDS) >= 0);
+
+        double totalPercentDuration = 0;
+        for (Metrics m : traversalMetrics.getMetrics()) {
+            totalPercentDuration += (Double) m.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY);
+        }
+        assertEquals(100, totalPercentDuration, 0.000001);
+    }
+
+    ///////////////////
+
+    @Test
+    @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
+    public void g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile() {
+        final Traversal<Vertex, TraversalMetrics> traversal = get_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile();
+        printTraversalForm(traversal);
+        TraversalMetrics traversalMetrics = traversal.next();
+        assertEquals("There should be 8 steps in this traversal (counting injected profile steps).", 8, traversal.asAdmin().getSteps().size());
+        validate_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile(traversalMetrics);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
+    public void g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profileXmetricsX() {
+        final Traversal<Vertex, Vertex> traversal = get_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profileXmetricsX();
+        printTraversalForm(traversal);
+        traversal.iterate();
+        assertEquals("There should be 7 steps in this traversal (counting injected profile steps).", 7, traversal.asAdmin().getSteps().size());
+        TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY);
+        validate_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile(traversalMetrics);
+    }
+
+    private void validate_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile(TraversalMetrics traversalMetrics) {
+        traversalMetrics.toString(); // ensure no exceptions are thrown
+
+        // Grab the second (sideEffect{sleep}) step and check the times.
+        Metrics metrics = traversalMetrics.getMetrics(1);
+        // 6 elements w/ a 10ms sleep each = 60ms with 10ms for other computation.
+        assertTrue("Duration should be at least the length of the sleep (59ms): " + metrics.getDuration(TimeUnit.MILLISECONDS),
+                metrics.getDuration(TimeUnit.MILLISECONDS) >= 59);
+
+        // 6 elements w/ a 5ms sleep each = 30ms plus 20ms for other computation
+        metrics = traversalMetrics.getMetrics(2);
+        assertTrue("Duration should be at least the length of the sleep (29ms): " + metrics.getDuration(TimeUnit.MILLISECONDS),
+                metrics.getDuration(TimeUnit.MILLISECONDS) >= 29);
+
+        double totalPercentDuration = 0;
+        for (Metrics m : traversalMetrics.getMetrics()) {
+            totalPercentDuration += (Double) m.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY);
+        }
+        assertEquals(100, totalPercentDuration, 0.000001);
+    }
+
+    ///////////////////
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_repeat_both_profile() {
+        final Traversal<Vertex, TraversalMetrics> traversal = get_g_V_repeatXbothX_timesX3X_profile();
+        printTraversalForm(traversal);
+
+        final TraversalMetrics traversalMetrics = traversal.next();
+        validate_g_V_repeat_both_modern_profile(traversalMetrics,
+                traversal.asAdmin().getStrategies().toList().contains(RepeatUnrollStrategy.instance()) &&
+                        !traversal.asAdmin().getStrategies().toList().contains(ComputerVerificationStrategy.instance()));
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_repeat_both_profileXmetricsX() {
+        final Traversal<Vertex, Vertex> traversal = get_g_V_repeatXbothX_timesX3X_profileXmetricsX();
+        printTraversalForm(traversal);
+        traversal.iterate();
+        final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY);
+        validate_g_V_repeat_both_modern_profile(traversalMetrics,
+                traversal.asAdmin().getStrategies().toList().contains(RepeatUnrollStrategy.instance()) &&
+                        !traversal.asAdmin().getStrategies().toList().contains(ComputerVerificationStrategy.instance()));
+    }
+
+    private void validate_g_V_repeat_both_modern_profile(TraversalMetrics traversalMetrics, boolean withRepeatUnrollStrategy) {
+        traversalMetrics.toString(); // ensure no exceptions are thrown
+
+        Metrics metrics = traversalMetrics.getMetrics(0);
+        assertEquals(6, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
+        assertEquals(6, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
+
+        metrics = traversalMetrics.getMetrics(1);
+        assertEquals(withRepeatUnrollStrategy ? 12 : 72, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
+        assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
+        if (!withRepeatUnrollStrategy)
+            assertTrue("Count should be greater than traversers.", metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID) > metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
+        assertTrue("Percent duration should be positive.", (Double) metrics.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY) >= 0);
+        assertTrue("Times should be positive.", metrics.getDuration(TimeUnit.MICROSECONDS) >= 0);
+
+        // Test the nested global metrics of the repeat step
+        if (!withRepeatUnrollStrategy) {
+            final Metrics vertexStepNestedInRepeat = (Metrics) metrics.getNested().toArray()[0];
+            assertEquals(114, vertexStepNestedInRepeat.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
+            assertNotEquals(0, vertexStepNestedInRepeat.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
+            assertTrue("Count should be greater than traversers.", vertexStepNestedInRepeat.getCount(TraversalMetrics.ELEMENT_COUNT_ID) > vertexStepNestedInRepeat.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
+            assertTrue("Times should be positive.", vertexStepNestedInRepeat.getDuration(TimeUnit.MICROSECONDS) >= 0);
+        }
+
+        double totalPercentDuration = 0;
+        for (Metrics m : traversalMetrics.getMetrics()) {
+            totalPercentDuration += (Double) m.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY);
+        }
+        assertEquals(100, totalPercentDuration, 0.000001);
+    }
+
+    /////////////
+
+    private void validate_g_V_whereXinXcreatedX_count_isX1XX_name_profile(Traversal traversal, TraversalMetrics traversalMetrics) {
+        traversalMetrics.toString(); // ensure no exceptions are thrown
+
+        assertEquals("There should be 3 top-level metrics.", 3, traversalMetrics.getMetrics().size());
+
+        Metrics metrics = traversalMetrics.getMetrics(0);
+        assertEquals(6, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
+        assertEquals(6, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
+
+        metrics = traversalMetrics.getMetrics(1);
+        assertEquals(1, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
+        assertEquals(1, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
+
+        if (traversal.asAdmin().getStrategies().toList().stream().anyMatch(s -> s instanceof RangeByIsCountStrategy)) {
+            assertEquals("Metrics 1 should have 4 nested metrics.", 4, metrics.getNested().size());
+        } else {
+            assertEquals("Metrics 1 should have 3 nested metrics.", 3, metrics.getNested().size());
+        }
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_whereXinXcreatedX_count_isX1XX_name_profile() {
+        final Traversal<Vertex, TraversalMetrics> traversal = get_g_V_whereXinXcreatedX_count_isX1XX_name_profile();
+        printTraversalForm(traversal);
+        final TraversalMetrics traversalMetrics = traversal.next();
+        validate_g_V_whereXinXcreatedX_count_isX1XX_name_profile(traversal, traversalMetrics);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_whereXinXcreatedX_count_isX1XX_name_profileXmetricsX() {
+        final Traversal<Vertex, String> traversal = get_g_V_whereXinXcreatedX_count_isX1XX_name_profileXmetricsX();
+        printTraversalForm(traversal);
+        traversal.iterate();
+        final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY);
+        validate_g_V_whereXinXcreatedX_count_isX1XX_name_profile(traversal, traversalMetrics);
+    }
+
+    /**
+     * ProfileStrategy callback test. Goal: ensure that a step that implements Profileable gets a callback to setMetrics
+     */
+
+    // Setup a "mock" step to test the strategy
+    static public class MockStep extends FlatMapStep<Vertex, Vertex> implements Profiling {
+        public static boolean callbackCalled = false;
+
+        public MockStep(final Traversal.Admin traversal) {
+            super(traversal);
+        }
+
+        @Override
+        protected Iterator<Vertex> flatMap(final Traverser.Admin<Vertex> traverser) {
+            List<Vertex> l = new ArrayList<>();
+            l.add(traverser.get());
+            return l.iterator();
+        }
+
+        @Override
+        public void setMetrics(final MutableMetrics parentMetrics) {
+            if (parentMetrics != null) {
+                callbackCalled = true;
+                parentMetrics.setCount("bogusCount", 100);
+            }
+        }
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void testProfileStrategyCallback() {
+        final Traversal<Vertex, TraversalMetrics> t = get_g_V_out_out_profile();
+        MockStep mockStep = new MockStep(t.asAdmin());
+        t.asAdmin().addStep(3, mockStep);
+        TraversalMetrics traversalMetrics = t.next();
+        assertTrue(mockStep.callbackCalled);
+
+        if (!onGraphComputer(t.asAdmin())) {
+            assertEquals(100, traversalMetrics.getMetrics(3).getCount("bogusCount").longValue());
+        }
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void testProfileStrategyCallbackSideEffect() {
+        final Traversal<Vertex, Vertex> t = get_g_V_out_out_profileXmetricsX();
+        MockStep mockStep = new MockStep(t.asAdmin());
+        t.asAdmin().addStep(3, mockStep);
+        t.iterate();
+        assertTrue(mockStep.callbackCalled);
+
+        if (!onGraphComputer(t.asAdmin())) {
+            final TraversalMetrics traversalMetrics = t.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY);
+            assertEquals(100, traversalMetrics.getMetrics(3).getCount("bogusCount").longValue());
+        }
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_profile() {
+        final Traversal<Vertex, TraversalMetrics> traversal = get_g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_profile();
+        printTraversalForm(traversal);
+        traversal.iterate();
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_profileXmetricsX() {
+        final Traversal<Vertex, Map<String, String>> traversal = get_g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_profileXmetricsX();
+        printTraversalForm(traversal);
+        traversal.iterate();
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.STANDARD)
+    public void g_V_hasLabelXpersonX_pageRank_byXrankX_byXbothEX_rank_profile() {
+        final Traversal<Vertex, TraversalMetrics> traversal = get_g_V_hasLabelXpersonX_pageRank_byXrankX_byXbothEX_rank_profile();
+        //printTraversalForm(traversal);
+        try {
+            traversal.iterate();
+            fail("Should have tossed an exception because multi-OLAP is unsolvable");
+        } catch (Exception ex) {
+            assertTrue(ex instanceof VerificationException || ExceptionUtils.getRootCause(ex) instanceof VerificationException);
+        }
+    }
+
+    private static boolean onGraphComputer(final Traversal.Admin<?, ?> traversal) {
+        return !TraversalHelper.getStepsOfClass(TraversalVertexProgramStep.class, TraversalHelper.getRootTraversal(traversal)).isEmpty();
+    }
+
+    /**
+     * Traversals
+     */
+    public static class Traversals extends ProfileTest {
+
+        @Override
+        public Traversal<Vertex, TraversalMetrics> get_g_V_out_out_profile() {
+            return g.V().out().out().profile();
+        }
+
+        @Override
+        public Traversal<Vertex, TraversalMetrics> get_g_V_repeatXbothX_timesX3X_profile() {
+            return g.V().repeat(both()).times(3).profile();
+        }
+
+        @Override
+        public Traversal<Vertex, TraversalMetrics> get_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile() {
+            return g.V().sideEffect(v -> {
+                try {
+                    Thread.sleep(10);
+                } catch (final InterruptedException e) {
+                    e.printStackTrace();
+                }
+            }).sideEffect(v -> {
+                try {
+                    Thread.sleep(5);
+                } catch (final InterruptedException e) {
+                    e.printStackTrace();
+                }
+            }).profile();
+        }
+
+        @Override
+        public Traversal<Vertex, TraversalMetrics> get_g_V_whereXinXcreatedX_count_isX1XX_name_profile() {
+            return g.V().where(__.in("created").count().is(1l)).<String>values("name").profile();
+        }
+
+        @Override
+        public Traversal<Vertex, TraversalMetrics> get_g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_profile() {
+            return g.V().match(__.as("a").out("created").as("b"), __.as("b").in().count().is(P.eq(1))).<String>select("a", "b").profile();
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_out_out_profileXmetricsX() {
+            return g.V().out().out().profile(METRICS_KEY);
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_profileXmetricsX() {
+            return g.V().repeat(both()).times(3).profile(METRICS_KEY);
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profileXmetricsX() {
+            return g.V().sideEffect(v -> {
+                try {
+                    Thread.sleep(10);
+                } catch (final InterruptedException e) {
+                    e.printStackTrace();
+                }
+            }).sideEffect(v -> {
+                try {
+                    Thread.sleep(5);
+                } catch (final InterruptedException e) {
+                    e.printStackTrace();
+                }
+            }).profile(METRICS_KEY);
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_whereXinXcreatedX_count_isX1XX_name_profileXmetricsX() {
+            return g.V().where(__.in("created").count().is(1l)).<String>values("name").profile(METRICS_KEY);
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_profileXmetricsX() {
+            return g.V().match(__.as("a").out("created").as("b"), __.as("b").in().count().is(P.eq(1))).<String>select("a", "b").profile(METRICS_KEY);
+        }
+
+        @Override
+        public Traversal<Vertex, TraversalMetrics> get_g_V_hasLabelXpersonX_pageRank_byXrankX_byXbothEX_rank_profile() {
+            return g.V().hasLabel("person").pageRank().by("rank").by(__.bothE()).values("rank").profile();
+        }
+    }
+}
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProgramTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProgramTest.java
new file mode 100644
index 0000000..5f548da
--- /dev/null
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProgramTest.java
@@ -0,0 +1,321 @@
+/*
+ * 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.map;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
+import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
+import org.apache.tinkerpop.gremlin.process.computer.Messenger;
+import org.apache.tinkerpop.gremlin.process.computer.ProgramPhase;
+import org.apache.tinkerpop.gremlin.process.computer.VertexComputeKey;
+import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.MemoryTraversalSideEffects;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ProgramVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.VertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
+import org.apache.tinkerpop.gremlin.process.traversal.Order;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
+import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
+import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMatrix;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.junit.Test;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public abstract class ProgramTest extends AbstractGremlinProcessTest {
+
+    public abstract Traversal<Vertex, Vertex> get_g_V_programXpageRankX();
+
+    public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasLabelXpersonX_programXpageRank_rankX_order_byXrank_incrX_valueMapXname_rankX();
+
+    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_outXcreatedX_aggregateXxX_byXlangX_groupCount_programXTestProgramX_asXaX_selectXa_xX();
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_programXpageRankX() {
+        final Traversal<Vertex, Vertex> traversal = get_g_V_programXpageRankX();
+        printTraversalForm(traversal);
+        int counter = 0;
+        while (traversal.hasNext()) {
+            final Vertex vertex = traversal.next();
+            counter++;
+            assertTrue(vertex.property(PageRankVertexProgram.PAGE_RANK).isPresent());
+        }
+        assertEquals(6, counter);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_hasLabelXpersonX_programXpageRank_rankX_order_byXrank_decrX_valueMapXname_rankX() {
+        final Traversal<Vertex, Map<String, List<Object>>> traversal = get_g_V_hasLabelXpersonX_programXpageRank_rankX_order_byXrank_incrX_valueMapXname_rankX();
+        printTraversalForm(traversal);
+        int counter = 0;
+        double lastRank = Double.MIN_VALUE;
+        while (traversal.hasNext()) {
+            final Map<String, List<Object>> map = traversal.next();
+            assertEquals(2, map.size());
+            assertEquals(1, map.get("name").size());
+            assertEquals(1, map.get("rank").size());
+            String name = (String) map.get("name").get(0);
+            double rank = (Double) map.get("rank").get(0);
+            assertTrue(rank >= lastRank);
+            lastRank = rank;
+            assertFalse(name.equals("lop") || name.equals("ripple"));
+            counter++;
+        }
+        assertEquals(4, counter);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_outXcreatedX_aggregateXxX_byXlangX_groupCount_programXTestProgramX_asXaX_selectXa_xX() {
+        final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_outXcreatedX_aggregateXxX_byXlangX_groupCount_programXTestProgramX_asXaX_selectXa_xX();
+        final List<Map<String, Object>> results = traversal.toList();
+        assertFalse(traversal.hasNext());
+        assertEquals(6, results.size());
+        final BulkSet<String> bulkSet = new BulkSet<>();
+        bulkSet.add("java", 4);
+        for (int i = 0; i < 4; i++) {
+            assertEquals(bulkSet, results.get(i).get("x"));
+        }
+        final Set<String> strings = new HashSet<>();
+        strings.add((String) results.get(0).get("a"));
+        strings.add((String) results.get(1).get("a"));
+        strings.add((String) results.get(2).get("a"));
+        strings.add((String) results.get(3).get("a"));
+        strings.add((String) results.get(4).get("a"));
+        strings.add((String) results.get(5).get("a"));
+        assertEquals(6, strings.size());
+        assertTrue(strings.contains("hello"));
+        assertTrue(strings.contains("gremlin"));
+        assertTrue(strings.contains("lop"));
+        assertTrue(strings.contains("ripple"));
+        assertTrue(strings.contains("marko-is-my-name"));
+        assertTrue(strings.contains("the-v-o-double-g"));
+    }
+
+
+    public static class Traversals extends ProgramTest {
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_programXpageRankX() {
+            return g.V().program(PageRankVertexProgram.build().create(graph));
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasLabelXpersonX_programXpageRank_rankX_order_byXrank_incrX_valueMapXname_rankX() {
+            return g.V().hasLabel("person").program(PageRankVertexProgram.build().property("rank").create(graph)).order().by("rank", Order.incr).valueMap("name", "rank");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Object>> get_g_V_outXcreatedX_aggregateXxX_byXlangX_groupCount_programXTestProgramX_asXaX_selectXa_xX() {
+            return g.V().out("created").aggregate("x").by("lang").groupCount().program(new TestProgram()).as("a").select("a", "x");
+        }
+    }
+
+    /////////////////////
+
+    public static class TestProgram implements VertexProgram {
+
+        private PureTraversal<?, ?> traversal = new PureTraversal<>(EmptyTraversal.instance());
+        private TraverserSet<Object> haltedTraversers;
+        private Step programStep = EmptyStep.instance();
+
+        private final Set<MemoryComputeKey> memoryComputeKeys = new HashSet<>();
+
+        @Override
+        public void loadState(final Graph graph, final Configuration configuration) {
+            VertexProgram.super.loadState(graph, configuration);
+            this.traversal = PureTraversal.loadState(configuration, VertexProgramStep.ROOT_TRAVERSAL, graph);
+            this.haltedTraversers = TraversalVertexProgram.loadHaltedTraversers(configuration);
+            this.programStep = new TraversalMatrix<>(this.traversal.get()).getStepById(configuration.getString(ProgramVertexProgramStep.STEP_ID));
+            this.memoryComputeKeys.addAll(MemoryTraversalSideEffects.getMemoryComputeKeys(this.traversal.get()));
+            this.memoryComputeKeys.add(MemoryComputeKey.of(TraversalVertexProgram.HALTED_TRAVERSERS, Operator.addAll, false, false));
+            this.memoryComputeKeys.add(MemoryComputeKey.of(TraversalVertexProgram.ACTIVE_TRAVERSERS, Operator.addAll, true, true));
+        }
+
+        @Override
+        public void storeState(final Configuration configuration) {
+            VertexProgram.super.storeState(configuration);
+            this.traversal.storeState(configuration, VertexProgramStep.ROOT_TRAVERSAL);
+            TraversalVertexProgram.storeHaltedTraversers(configuration, this.haltedTraversers);
+            configuration.setProperty(ProgramVertexProgramStep.STEP_ID, this.programStep.getId());
+        }
+
+        @Override
+        public void setup(final Memory memory) {
+            MemoryTraversalSideEffects.setMemorySideEffects(this.traversal.get(), memory, ProgramPhase.SETUP);
+            final Map<Vertex, Long> map = (Map<Vertex, Long>) this.haltedTraversers.iterator().next().get();
+            assertEquals(2, map.size());
+            assertTrue(map.values().contains(3l));
+            assertTrue(map.values().contains(1l));
+            final TraverserSet<Object> activeTraversers = new TraverserSet<>();
+            map.keySet().forEach(vertex -> activeTraversers.add(this.haltedTraversers.peek().split(vertex, EmptyStep.instance())));
+            this.haltedTraversers.clear();
+            this.checkSideEffects();
+            memory.set(TraversalVertexProgram.ACTIVE_TRAVERSERS, activeTraversers);
+
+
+        }
+
+        @Override
+        public void execute(final Vertex vertex, final Messenger messenger, final Memory memory) {
+            assertFalse(memory.exists(TraversalVertexProgram.HALTED_TRAVERSERS));
+            final TraverserGenerator generator = this.traversal.get().getTraverserGenerator();
+            MemoryTraversalSideEffects.setMemorySideEffects(this.traversal.get(), memory, ProgramPhase.EXECUTE);
+            this.checkSideEffects();
+            final TraverserSet<Vertex> activeTraversers = memory.get(TraversalVertexProgram.ACTIVE_TRAVERSERS);
+            if (vertex.label().equals("software")) {
+                assertEquals(1, activeTraversers.stream().filter(v -> v.get().equals(vertex)).count());
+                if (memory.isInitialIteration()) {
+                    assertFalse(vertex.property(TraversalVertexProgram.HALTED_TRAVERSERS).isPresent());
+                    vertex.property(
+                            TraversalVertexProgram.HALTED_TRAVERSERS,
+                            new TraverserSet<>(generator.generate(vertex.value("name"), this.programStep, 1l)));
+                } else {
+                    assertTrue(vertex.property(TraversalVertexProgram.HALTED_TRAVERSERS).isPresent());
+                }
+            } else {
+                assertFalse(vertex.property(TraversalVertexProgram.HALTED_TRAVERSERS).isPresent());
+                assertEquals(0, activeTraversers.stream().filter(v -> v.get().equals(vertex)).count());
+                if (!memory.isInitialIteration()) {
+                    if (vertex.value("name").equals("marko"))
+                        memory.add(TraversalVertexProgram.HALTED_TRAVERSERS, new TraverserSet<>(generator.generate("marko-is-my-name", this.programStep, 1l)));
+                    else if (vertex.value("name").equals("vadas"))
+                        this.traversal.get().getSideEffects().add(TraversalVertexProgram.HALTED_TRAVERSERS, new TraverserSet<>(generator.generate("the-v-o-double-g", this.programStep, 1l)));
+                }
+            }
+        }
+
+        @Override
+        public boolean terminate(final Memory memory) {
+            final TraverserGenerator generator = this.traversal.get().getTraverserGenerator();
+            MemoryTraversalSideEffects.setMemorySideEffects(this.traversal.get(), memory, ProgramPhase.TERMINATE);
+            checkSideEffects();
+            if (memory.isInitialIteration()) {
+                assertFalse(memory.exists(TraversalVertexProgram.HALTED_TRAVERSERS));
+                return false;
+            } else {
+                ///
+                assertTrue(memory.exists(TraversalVertexProgram.HALTED_TRAVERSERS));
+                final TraverserSet<String> haltedTraversers = memory.get(TraversalVertexProgram.HALTED_TRAVERSERS);
+                haltedTraversers.add(generator.generate("hello", this.programStep, 1l));
+                haltedTraversers.add(generator.generate("gremlin", this.programStep, 1l));
+                memory.set(TraversalVertexProgram.HALTED_TRAVERSERS, haltedTraversers);
+                return true;
+            }
+        }
+
+        @Override
+        public void workerIterationStart(final Memory memory) {
+            assertNotNull(this.haltedTraversers);
+            this.haltedTraversers.clear();
+            assertFalse(memory.exists(TraversalVertexProgram.HALTED_TRAVERSERS));
+            MemoryTraversalSideEffects.setMemorySideEffects(this.traversal.get(), memory, ProgramPhase.WORKER_ITERATION_START);
+            checkSideEffects();
+        }
+
+        @Override
+        public void workerIterationEnd(final Memory memory) {
+            assertFalse(memory.exists(TraversalVertexProgram.HALTED_TRAVERSERS));
+            MemoryTraversalSideEffects.setMemorySideEffects(this.traversal.get(), memory, ProgramPhase.WORKER_ITERATION_END);
+            checkSideEffects();
+        }
+
+        @Override
+        public Set<VertexComputeKey> getVertexComputeKeys() {
+            return Collections.singleton(VertexComputeKey.of(TraversalVertexProgram.HALTED_TRAVERSERS, false));
+        }
+
+        @Override
+        public Set<MemoryComputeKey> getMemoryComputeKeys() {
+            return this.memoryComputeKeys;
+        }
+
+        @Override
+        public Set<MessageScope> getMessageScopes(Memory memory) {
+            return Collections.emptySet();
+        }
+
+        @Override
+        public TestProgram clone() {
+            try {
+                final TestProgram clone = (TestProgram) super.clone();
+                clone.traversal = this.traversal.clone();
+                clone.programStep = new TraversalMatrix<>(clone.traversal.get()).getStepById(this.programStep.getId());
+                return clone;
+            } catch (final CloneNotSupportedException e) {
+                throw new IllegalStateException(e.getMessage(), e);
+            }
+        }
+
+        @Override
+        public GraphComputer.ResultGraph getPreferredResultGraph() {
+            return GraphComputer.ResultGraph.NEW;
+        }
+
+        @Override
+        public GraphComputer.Persist getPreferredPersist() {
+            return GraphComputer.Persist.EDGES;
+        }
+
+        ////////
+
+        private void checkSideEffects() {
+            assertEquals(0, this.haltedTraversers.size());
+            assertTrue(this.haltedTraversers.isEmpty());
+            final TraversalSideEffects sideEffects = this.traversal.get().getSideEffects();
+            assertTrue(sideEffects instanceof MemoryTraversalSideEffects);
+            assertEquals(1, sideEffects.keys().size());
+            assertFalse(sideEffects.exists(TraversalVertexProgram.HALTED_TRAVERSERS));
+            assertTrue(sideEffects.exists("x"));
+            final BulkSet<String> bulkSet = sideEffects.get("x");
+            assertEquals(4, bulkSet.size());
+            assertEquals(4, bulkSet.get("java"));
+        }
+    }
+}
\ No newline at end of file
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProjectTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProjectTest.java
new file mode 100644
index 0000000..3fd7ad3
--- /dev/null
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProjectTest.java
@@ -0,0 +1,82 @@
+/*
+ * 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.map;
+
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.traversal.Order;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.junit.Test;
+
+import java.util.List;
+import java.util.Map;
+
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public abstract class ProjectTest extends AbstractGremlinProcessTest {
+
+    public abstract Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXpersonX_projectXa_bX_byXoutE_countX_byXageX();
+
+    public abstract Traversal<Vertex, String> get_g_V_outXcreatedX_projectXa_bX_byXnameX_byXinXcreatedX_countX_order_byXselectXbX__decrX_selectXaX();
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_hasLabelXpersonX_projectXa_bX_byXoutE_countX_byXageX() {
+        final Traversal<Vertex, Map<String, Number>> traversal = get_g_V_hasLabelXpersonX_projectXa_bX_byXoutE_countX_byXageX();
+        printTraversalForm(traversal);
+        checkResults(makeMapList(2,
+                "a", 3l, "b", 29,
+                "a", 0l, "b", 27,
+                "a", 2l, "b", 32,
+                "a", 1l, "b", 35), traversal);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_outXcreatedX_projectXa_bX_byXnameX_byXinXcreatedX_countX_order_byXselectXbX__decrX_selectXaX() {
+        final Traversal<Vertex, String> traversal = get_g_V_outXcreatedX_projectXa_bX_byXnameX_byXinXcreatedX_countX_order_byXselectXbX__decrX_selectXaX();
+        printTraversalForm(traversal);
+        final List<String> names = traversal.toList();
+        assertEquals(4, names.size());
+        assertEquals("lop", names.get(0));
+        assertEquals("lop", names.get(1));
+        assertEquals("lop", names.get(2));
+        assertEquals("ripple", names.get(3));
+    }
+
+    public static class Traversals extends ProjectTest {
+
+        @Override
+        public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXpersonX_projectXa_bX_byXoutE_countX_byXageX() {
+            return g.V().hasLabel("person").<Number>project("a", "b").by(__.outE().count()).by("age");
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_outXcreatedX_projectXa_bX_byXnameX_byXinXcreatedX_countX_order_byXselectXbX__decrX_selectXaX() {
+            return g.V().out("created").project("a", "b").by("name").by(__.in("created").count()).order().by(__.select("b"), Order.decr).select("a");
+        }
+    }
+}
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectTest.java
index 10974ba..f75b0f4 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectTest.java
@@ -42,11 +42,14 @@
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.CREW;
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.apache.tinkerpop.gremlin.structure.Column.keys;
-import static org.apache.tinkerpop.gremlin.structure.Column.values;
 import static org.apache.tinkerpop.gremlin.process.traversal.Scope.local;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.as;
-import static org.junit.Assert.*;
+import static org.apache.tinkerpop.gremlin.structure.Column.keys;
+import static org.apache.tinkerpop.gremlin.structure.Column.values;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -136,6 +139,8 @@
 
     public abstract Traversal<Vertex, Collection<Set<String>>> get_g_V_asXa_bX_out_asXcX_path_selectXkeysX();
 
+    public abstract Traversal<Vertex, Map<String, String>> get_g_V_asXaX_outXknowsX_asXbX_localXselectXa_bX_byXnameXX();
+
     // Useful for permuting Pop use cases
     protected final static List<Pop> POPS = Arrays.asList(null, Pop.first, Pop.last, Pop.all);
 
@@ -625,6 +630,22 @@
         assertFalse(traversal.hasNext());
     }
 
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_asXaX_outXknowsX_asXbX_localXselectXa_bX_byXnameXX() {
+        final Traversal<Vertex, Map<String, String>> traversal = get_g_V_asXaX_outXknowsX_asXbX_localXselectXa_bX_byXnameXX();
+        final Map<String, String> map = traversal.next();
+        assertTrue(traversal.hasNext());
+        if (map.get("b").equals("josh")) {
+            assertEquals("marko", map.get("a"));
+            assertEquals("vadas", traversal.next().get("b"));
+        } else {
+            assertEquals("marko", map.get("a"));
+            assertEquals("josh", traversal.next().get("b"));
+        }
+        assertFalse(traversal.hasNext());
+    }
+
     public static class Traversals extends SelectTest {
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_VX1X_asXaX_outXknowsX_asXbX_selectXa_bX(final Object v1Id) {
@@ -820,5 +841,10 @@
         public Traversal<Vertex, Collection<Set<String>>> get_g_V_asXa_bX_out_asXcX_path_selectXkeysX() {
             return g.V().as("a", "b").out().as("c").path().select(keys);
         }
+
+        @Override
+        public Traversal<Vertex, Map<String, String>> get_g_V_asXaX_outXknowsX_asXbX_localXselectXa_bX_byXnameXX() {
+            return g.V().as("a").out("knows").as("b").local(__.<Vertex, String>select("a", "b").by("name"));
+        }
     }
 }
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
index 063af97..f5ca088 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
@@ -53,9 +53,9 @@
 @RunWith(GremlinProcessRunner.class)
 public abstract class VertexTest extends AbstractGremlinProcessTest {
 
-    public abstract Traversal<Vertex, String> get_g_VXlistXv1_v2_v3XX_name();
+    public abstract Traversal<Vertex, String> get_g_VXlistXv1_v2_v3XX_name(final Vertex v1, final Vertex v2, final Vertex v3);
 
-    public abstract Traversal<Vertex, String> get_g_VXlistX1_2_3XX_name();
+    public abstract Traversal<Vertex, String> get_g_VXlistX1_2_3XX_name(final Object v1Id, final Object v2Id, final Object v3Id);
 
     public abstract Traversal<Vertex, Vertex> get_g_V();
 
@@ -116,7 +116,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void g_VXlistX1_2_3XX_name() {
-        final Traversal<Vertex, String> traversal = get_g_VXlistX1_2_3XX_name();
+        final Traversal<Vertex,String> traversal = get_g_VXlistX1_2_3XX_name(convertToVertexId(graph, "marko"), convertToVertexId(graph, "vadas"), convertToVertexId(graph, "lop"));
         printTraversalForm(traversal);
         checkResults(Arrays.asList("marko", "vadas", "lop"), traversal);
     }
@@ -124,7 +124,7 @@
     @Test
     @LoadGraphWith(MODERN)
     public void g_VXlistXv1_v2_v3XX_name() {
-        final Traversal<Vertex, String> traversal = get_g_VXlistXv1_v2_v3XX_name();
+        final Traversal<Vertex,String> traversal = get_g_VXlistXv1_v2_v3XX_name(convertToVertex(graph, "marko"), convertToVertex(graph, "vadas"), convertToVertex(graph, "lop"));
         printTraversalForm(traversal);
         checkResults(Arrays.asList("marko", "vadas", "lop"), traversal);
     }
@@ -561,13 +561,13 @@
     public static class Traversals extends VertexTest {
 
         @Override
-        public Traversal<Vertex, String> get_g_VXlistXv1_v2_v3XX_name() {
-            return g.V(Arrays.asList(convertToVertex(graph, "marko"), convertToVertex(graph, "vadas"), convertToVertex(graph, "lop"))).values("name");
+        public Traversal<Vertex, String> get_g_VXlistXv1_v2_v3XX_name(final Vertex v1, final Vertex v2, final Vertex v3) {
+            return g.V(Arrays.asList(v1, v2, v3)).values("name");
         }
 
         @Override
-        public Traversal<Vertex, String> get_g_VXlistX1_2_3XX_name() {
-            return g.V(Arrays.asList(convertToVertexId(graph, "marko"), convertToVertexId(graph, "vadas"), convertToVertexId(graph, "lop"))).values("name");
+        public Traversal<Vertex, String> get_g_VXlistX1_2_3XX_name(final Object v1Id, final Object v2Id, final Object v3Id) {
+            return g.V(Arrays.asList(v1Id, v2Id, v3Id)).values("name");
         }
 
         @Override
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ExplainTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ExplainTest.java
index 8585bbb..35f4820 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ExplainTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ExplainTest.java
@@ -22,7 +22,9 @@
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
+import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeVertexStep;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IdentityRemovalStrategy;
@@ -47,6 +49,7 @@
 
     @Test
     @LoadGraphWith(MODERN)
+    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_outE_identity_inV_explain() {
         final TraversalExplanation explanation = get_g_V_outE_identity_inV_explain();
         if (explanation.getStrategyTraversals().stream().map(Pair::getValue0).filter(s -> s instanceof IdentityRemovalStrategy || s instanceof IncidentToAdjacentStrategy).count() == 2) {
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountTest.java
index a8ccb19..ec5b758 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupCountTest.java
@@ -22,16 +22,26 @@
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.structure.Column;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
-import static org.junit.Assert.*;
+import static org.apache.tinkerpop.gremlin.process.traversal.P.gt;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.bothE;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.in;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.repeat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -60,12 +70,19 @@
 
     public abstract Traversal<Vertex, Map<Long, Long>> get_g_V_groupCount_byXbothE_countX();
 
+    public abstract Traversal<Vertex, Long> get_g_V_unionXoutXknowsX__outXcreatedX_inXcreatedXX_groupCount_selectXvaluesX_unfold_sum();
+
+    public abstract Traversal<Vertex, Map<Vertex, Long>> get_g_V_both_groupCountXaX_out_capXaX_selectXkeysX_unfold_both_groupCountXaX_capXaX();
+
+    public abstract Traversal<Vertex, String> get_g_V_both_groupCountXaX_byXlabelX_asXbX_barrier_whereXselectXaX_selectXsoftwareX_isXgtX2XXX_selectXbX_name();
+
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_outXcreatedX_groupCount_byXnameX() {
         final Traversal<Vertex, Map<String, Long>> traversal = get_g_V_outXcreatedX_groupCount_byXnameX();
         printTraversalForm(traversal);
         assertCommonA(traversal);
+        checkSideEffects(traversal.asAdmin().getSideEffects());
     }
 
     @Test
@@ -74,6 +91,7 @@
         final Traversal<Vertex, Map<String, Long>> traversal = get_g_V_outXcreatedX_groupCountXaX_byXnameX_capXaX();
         printTraversalForm(traversal);
         assertCommonA(traversal);
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", HashMap.class);
     }
 
     private static void assertCommonA(Traversal<Vertex, Map<String, Long>> traversal) {
@@ -110,6 +128,7 @@
         assertTrue(hasRipple);
         assertFalse(hasSomethingElse);
         assertFalse(traversal.hasNext());
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "x", HashMap.class);
     }
 
     @Test
@@ -118,6 +137,7 @@
         final Traversal<Vertex, Map<String, Long>> traversal = get_g_V_outXcreatedX_name_groupCount();
         printTraversalForm(traversal);
         assertCommonB(traversal);
+        checkSideEffects(traversal.asAdmin().getSideEffects());
     }
 
     @Test
@@ -126,6 +146,7 @@
         final Traversal<Vertex, Map<String, Long>> traversal = get_g_V_outXcreatedX_name_groupCountXaX_capXaX();
         printTraversalForm(traversal);
         assertCommonB(traversal);
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", HashMap.class);
     }
 
     private static void assertCommonB(final Traversal<Vertex, Map<String, Long>> traversal) {
@@ -142,6 +163,7 @@
         final Traversal<Vertex, Map<Object, Long>> traversal = get_g_V_hasXnoX_groupCount();
         printTraversalForm(traversal);
         assertCommonC(traversal);
+        checkSideEffects(traversal.asAdmin().getSideEffects());
     }
 
     @Test
@@ -150,6 +172,7 @@
         final Traversal<Vertex, Map<Object, Long>> traversal = get_g_V_hasXnoX_groupCountXaX_capXaX();
         printTraversalForm(traversal);
         assertCommonC(traversal);
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", HashMap.class);
     }
 
     private static void assertCommonC(final Traversal<Vertex, Map<Object, Long>> traversal) {
@@ -170,6 +193,7 @@
         assertEquals(2l, map.get("ripple").longValue());
         assertEquals(1l, map.get("josh").longValue());
         assertEquals(1l, map.get("vadas").longValue());
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", HashMap.class);
     }
 
     @Test
@@ -182,6 +206,7 @@
         assertEquals(2, map.size());
         assertEquals(2, map.get("marko").longValue());
         assertEquals(2, map.get("java").longValue());
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "m", HashMap.class);
     }
 
     @Test
@@ -193,6 +218,44 @@
             put(1l, 3l);
             put(3l, 3l);
         }}, traversal.next());
+        checkSideEffects(traversal.asAdmin().getSideEffects());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_unionXoutXknowsX__outXcreatedX_inXcreatedXX_groupCount_selectXvaluesX_unfold_sum() {
+        final Traversal<Vertex, Long> traversal = get_g_V_unionXoutXknowsX__outXcreatedX_inXcreatedXX_groupCount_selectXvaluesX_unfold_sum();
+        printTraversalForm(traversal);
+        assertEquals(12l, traversal.next().longValue());
+        assertFalse(traversal.hasNext());
+        checkSideEffects(traversal.asAdmin().getSideEffects());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_both_groupCountXaX_out_capXaX_selectXkeysX_unfold_both_groupCountXaX_capXaX() {
+        final Traversal<Vertex, Map<Vertex, Long>> traversal = get_g_V_both_groupCountXaX_out_capXaX_selectXkeysX_unfold_both_groupCountXaX_capXaX();
+        printTraversalForm(traversal);
+        //  [{v[1]=6, v[2]=2, v[3]=6, v[4]=6, v[5]=2, v[6]=2}]
+        final Map<Vertex, Long> map = traversal.next();
+        assertFalse(traversal.hasNext());
+        assertEquals(6, map.size());
+        assertEquals(6l, map.get(convertToVertex(graph, "marko")).longValue());
+        assertEquals(2l, map.get(convertToVertex(graph, "vadas")).longValue());
+        assertEquals(6l, map.get(convertToVertex(graph, "lop")).longValue());
+        assertEquals(6l, map.get(convertToVertex(graph, "josh")).longValue());
+        assertEquals(2l, map.get(convertToVertex(graph, "ripple")).longValue());
+        assertEquals(6l, map.get(convertToVertex(graph, "marko")).longValue());
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", HashMap.class);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_both_groupCountXaX_byXlabelX_asXbX_barrier_whereXselectXaX_selectXsoftwareX_isXgtX2XXX_selectXbX_name() {
+        final Traversal<Vertex, String> traversal = get_g_V_both_groupCountXaX_byXlabelX_asXbX_barrier_whereXselectXaX_selectXsoftwareX_isXgtX2XXX_selectXbX_name();
+        printTraversalForm(traversal);
+        checkResults(Arrays.asList("lop", "lop", "lop", "peter", "marko", "marko", "marko", "ripple", "vadas", "josh", "josh", "josh"), traversal);
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", HashMap.class);
     }
 
     public static class Traversals extends GroupCountTest {
@@ -248,5 +311,20 @@
         public Traversal<Vertex, Map<Long, Long>> get_g_V_groupCount_byXbothE_countX() {
             return g.V().<Long>groupCount().by(bothE().count());
         }
+
+        @Override
+        public Traversal<Vertex, Long> get_g_V_unionXoutXknowsX__outXcreatedX_inXcreatedXX_groupCount_selectXvaluesX_unfold_sum() {
+            return g.V().union(out("knows"), out("created").in("created")).groupCount().select(Column.values).unfold().sum();
+        }
+
+        @Override
+        public Traversal<Vertex, Map<Vertex, Long>> get_g_V_both_groupCountXaX_out_capXaX_selectXkeysX_unfold_both_groupCountXaX_capXaX() {
+            return g.V().both().groupCount("a").out().cap("a").select(Column.keys).unfold().both().groupCount("a").cap("a");
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_both_groupCountXaX_byXlabelX_asXbX_barrier_whereXselectXaX_selectXsoftwareX_isXgtX2XXX_selectXbX_name() {
+            return g.V().both().groupCount("a").by(T.label).as("b").barrier().where(__.select("a").select("software").is(gt(2))).select("b").values("name");
+        }
     }
 }
\ No newline at end of file
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java
index b2298be..356eb58 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java
@@ -22,13 +22,16 @@
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL;
@@ -73,12 +76,25 @@
 
     public abstract Traversal<Vertex, Map<String, Long>> get_g_V_groupXaX_byXname_substring_1X_byXconstantX1XX_capXaX();
 
+    public abstract Traversal<Vertex, String> get_g_V_out_group_byXlabelX_selectXpersonX_unfold_outXcreatedX_name_limitX2X();
+
+    public abstract Traversal<Vertex, Map<String, Map<String, Long>>> get_g_V_hasLabelXsongX_group_byXnameX_byXproperties_groupCount_byXlabelXX();
+
+    public abstract Traversal<Vertex, Map<String, Map<String, Long>>> get_g_V_hasLabelXsongX_groupXaX_byXnameX_byXproperties_groupCount_byXlabelXX_out_capXaX();
+
+    public abstract Traversal<Vertex, Map<String, Map<Object, Object>>> get_g_V_repeatXunionXoutXknowsX_groupXaX_byXageX__outXcreatedX_groupXbX_byXnameX_byXcountXX_groupXaX_byXnameXX_timesX2X_capXa_bX();
+
+    public abstract Traversal<Vertex, Map<Long, Map<String, List<Vertex>>>> get_g_V_group_byXbothE_countX_byXgroup_byXlabelXX();
+
+    public abstract Traversal<Vertex, Map<String, Map<String, Number>>> get_g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX();
+
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_group_byXnameX() {
         final Traversal<Vertex, Map<String, Collection<Vertex>>> traversal = get_g_V_group_byXnameX();
         printTraversalForm(traversal);
         assertCommonA(traversal);
+        checkSideEffects(traversal.asAdmin().getSideEffects());
     }
 
 
@@ -88,6 +104,7 @@
         final Traversal<Vertex, Map<String, Collection<Vertex>>> traversal = get_g_V_group_byXnameX_by();
         printTraversalForm(traversal);
         assertCommonA(traversal);
+        checkSideEffects(traversal.asAdmin().getSideEffects());
     }
 
     @Test
@@ -96,6 +113,7 @@
         final Traversal<Vertex, Map<String, Collection<Vertex>>> traversal = get_g_V_groupXaX_byXnameX_capXaX();
         printTraversalForm(traversal);
         assertCommonA(traversal);
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", HashMap.class);
     }
 
     private void assertCommonA(Traversal<Vertex, Map<String, Collection<Vertex>>> traversal) {
@@ -120,6 +138,7 @@
         assertEquals(2, map.get("java").size());
         assertTrue(map.get("java").contains("ripple"));
         assertTrue(map.get("java").contains("lop"));
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", HashMap.class);
     }
 
     @Test
@@ -132,6 +151,7 @@
         assertTrue(map.containsKey("java"));
         assertEquals(Long.valueOf(2), map.get("java"));
         assertFalse(traversal.hasNext());
+        checkSideEffects(traversal.asAdmin().getSideEffects());
     }
 
     @Test
@@ -150,6 +170,7 @@
         assertEquals(Long.valueOf(4), map.get("lop"));
         assertTrue(map.containsKey("ripple"));
         assertEquals(Long.valueOf(2), map.get("ripple"));
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", HashMap.class);
     }
 
     @Test
@@ -175,6 +196,7 @@
         assertTrue(map.get(1l).contains("peter"));
         assertTrue(map.get(2l).contains("josh"));
         assertTrue(map.get(3l).contains("marko"));
+        checkSideEffects(traversal.asAdmin().getSideEffects());
     }
 
     @Test
@@ -188,36 +210,42 @@
         assertEquals(2, map.size());
         assertEquals(0, map.get("software"));
         assertEquals(3.5d, (double) map.get("person"), 0.01d);
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", HashMap.class);
     }
 
     @Test
     @LoadGraphWith(GRATEFUL)
     public void g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX() {
         final Traversal<Vertex, Map<String, Long>> traversal = get_g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX();
+        printTraversalForm(traversal);
         checkMap(new HashMap<String, Long>() {{
             put("original", 771317l);
             put("", 160968l);
             put("cover", 368579l);
         }}, traversal.next());
         assertFalse(traversal.hasNext());
+        checkSideEffects(traversal.asAdmin().getSideEffects());
     }
 
     @Test
     @LoadGraphWith(GRATEFUL)
     public void g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX() {
         final Traversal<Vertex, Map<String, Long>> traversal = get_g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX();
+        printTraversalForm(traversal);
         checkMap(new HashMap<String, Long>() {{
             put("original", 771317l);
             put("", 160968l);
             put("cover", 368579l);
         }}, traversal.next());
         assertFalse(traversal.hasNext());
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", HashMap.class);
     }
 
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_group_byXname_substring_1X_byXconstantX1XX() {
         final Traversal<Vertex, Map<String, Long>> traversal = get_g_V_group_byXname_substring_1X_byXconstantX1XX();
+        printTraversalForm(traversal);
         checkMap(new HashMap<String, Long>() {{
             put("m", 1l);
             put("v", 1l);
@@ -227,12 +255,14 @@
             put("j", 1l);
         }}, traversal.next());
         assertFalse(traversal.hasNext());
+        checkSideEffects(traversal.asAdmin().getSideEffects());
     }
 
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_groupXaX_byXname_substring_1X_byXconstantX1XX_capXaX() {
         final Traversal<Vertex, Map<String, Long>> traversal = get_g_V_groupXaX_byXname_substring_1X_byXconstantX1XX_capXaX();
+        printTraversalForm(traversal);
         checkMap(new HashMap<String, Long>() {{
             put("m", 1l);
             put("v", 1l);
@@ -242,8 +272,156 @@
             put("j", 1l);
         }}, traversal.next());
         assertFalse(traversal.hasNext());
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", HashMap.class);
     }
 
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_out_group_byXlabelX_selectXpersonX_unfold_outXcreatedX_name_limitX2X() {
+        final Traversal<Vertex, String> traversal = get_g_V_out_group_byXlabelX_selectXpersonX_unfold_outXcreatedX_name_limitX2X();
+        printTraversalForm(traversal);
+        checkResults(Arrays.asList("ripple", "lop"), traversal);
+        checkSideEffects(traversal.asAdmin().getSideEffects());
+    }
+
+    @Test
+    @LoadGraphWith(GRATEFUL)
+    public void g_V_hasLabelXsongX_group_byXnameX_byXproperties_groupCount_byXlabelXX() {
+        final Traversal<Vertex, Map<String, Map<String, Long>>> traversal = get_g_V_hasLabelXsongX_group_byXnameX_byXproperties_groupCount_byXlabelXX();
+        printTraversalForm(traversal);
+        final Map<String, Map<String, Long>> map = traversal.next();
+        assertEquals(584, map.size());
+        for (final Map.Entry<String, Map<String, Long>> entry : map.entrySet()) {
+            assertEquals(entry.getKey().toUpperCase(), entry.getKey());
+            final Map<String, Long> countMap = entry.getValue();
+            assertEquals(3, countMap.size());
+            assertEquals(1l, countMap.get("name").longValue());
+            assertEquals(1l, countMap.get("songType").longValue());
+            assertEquals(1l, countMap.get("performances").longValue());
+        }
+        assertFalse(traversal.hasNext());
+    }
+
+    @Test
+    @LoadGraphWith(GRATEFUL)
+    public void g_V_hasLabelXsongX_groupXaX_byXnameX_byXproperties_groupCount_byXlabelXX_out_capXaX() {
+        final Traversal<Vertex, Map<String, Map<String, Long>>> traversal = get_g_V_hasLabelXsongX_groupXaX_byXnameX_byXproperties_groupCount_byXlabelXX_out_capXaX();
+        printTraversalForm(traversal);
+        final Map<String, Map<String, Long>> map = traversal.next();
+        assertEquals(584, map.size());
+        for (final Map.Entry<String, Map<String, Long>> entry : map.entrySet()) {
+            assertEquals(entry.getKey().toUpperCase(), entry.getKey());
+            final Map<String, Long> countMap = entry.getValue();
+            assertEquals(3, countMap.size());
+            assertEquals(1l, countMap.get("name").longValue());
+            assertEquals(1l, countMap.get("songType").longValue());
+            assertEquals(1l, countMap.get("performances").longValue());
+        }
+        assertFalse(traversal.hasNext());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_repeatXunionXoutXknowsX_groupXaX_byXageX__outXcreatedX_groupXbX_byXnameX_byXcountXX_groupXaX_byXnameXX_timesX2X_capXa_bX() {
+        //[{a={32=[v[4]], ripple=[v[5], v[5]], vadas=[v[2]], 27=[v[2]], josh=[v[4]], lop=[v[3], v[3], v[3], v[3]]}, b={ripple=2, lop=4}}]
+        final Traversal<Vertex, Map<String, Map<Object, Object>>> traversal = get_g_V_repeatXunionXoutXknowsX_groupXaX_byXageX__outXcreatedX_groupXbX_byXnameX_byXcountXX_groupXaX_byXnameXX_timesX2X_capXa_bX();
+        printTraversalForm(traversal);
+        assertTrue(traversal.hasNext());
+        final Map<String, Map<Object, Object>> map = traversal.next();
+        assertFalse(traversal.hasNext());
+        assertEquals(2, map.size());
+        assertTrue(map.containsKey("a"));
+        assertTrue(map.containsKey("b"));
+        //
+        final Map<Object, List<Vertex>> mapA = (Map) map.get("a");
+        assertEquals(6, mapA.size());
+        assertEquals(1, mapA.get(32).size());
+        assertEquals(convertToVertex(graph, "josh"), mapA.get(32).get(0));
+        assertEquals(1, mapA.get(27).size());
+        assertEquals(convertToVertex(graph, "vadas"), mapA.get(27).get(0));
+        assertEquals(2, mapA.get("ripple").size());
+        assertEquals(convertToVertex(graph, "ripple"), mapA.get("ripple").get(0));
+        assertEquals(convertToVertex(graph, "ripple"), mapA.get("ripple").get(1));
+        assertEquals(1, mapA.get("vadas").size());
+        assertEquals(convertToVertex(graph, "vadas"), mapA.get("vadas").get(0));
+        assertEquals(1, mapA.get("josh").size());
+        assertEquals(convertToVertex(graph, "josh"), mapA.get("josh").get(0));
+        assertEquals(4, mapA.get("lop").size());
+        assertEquals(convertToVertex(graph, "lop"), mapA.get("lop").get(0));
+        assertEquals(convertToVertex(graph, "lop"), mapA.get("lop").get(1));
+        assertEquals(convertToVertex(graph, "lop"), mapA.get("lop").get(2));
+        assertEquals(convertToVertex(graph, "lop"), mapA.get("lop").get(3));
+        //
+        final Map<String, Long> mapB = (Map) map.get("b");
+        assertEquals(2, mapB.size());
+        assertEquals(2l, mapB.get("ripple").longValue());
+        assertEquals(4l, mapB.get("lop").longValue());
+        //
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", HashMap.class, "b", HashMap.class);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_group_byXbothE_countX_byXgroup_byXlabelXX() {
+        final Traversal<Vertex, Map<Long, Map<String, List<Vertex>>>> traversal = get_g_V_group_byXbothE_countX_byXgroup_byXlabelXX();
+        final Map<Long, Map<String, List<Vertex>>> map = traversal.next();
+        assertFalse(traversal.hasNext());
+        assertEquals(2, map.size());
+        assertTrue(map.containsKey(1l));
+        assertTrue(map.containsKey(3l));
+        //
+        Map<String, List<Vertex>> submap = map.get(1l);
+        assertEquals(2, submap.size());
+        assertTrue(submap.containsKey("software"));
+        assertTrue(submap.containsKey("person"));
+        List<Vertex> list = submap.get("software");
+        assertEquals(1, list.size());
+        assertEquals(convertToVertex(graph, "ripple"), list.get(0));
+        list = submap.get("person");
+        assertEquals(2, list.size());
+        assertTrue(list.contains(convertToVertex(graph, "vadas")));
+        assertTrue(list.contains(convertToVertex(graph, "peter")));
+        //
+        submap = map.get(3l);
+        assertEquals(2, submap.size());
+        assertTrue(submap.containsKey("software"));
+        assertTrue(submap.containsKey("person"));
+        list = submap.get("software");
+        assertEquals(1, list.size());
+        assertEquals(convertToVertex(graph, "lop"), list.get(0));
+        list = submap.get("person");
+        assertEquals(2, list.size());
+        assertTrue(list.contains(convertToVertex(graph, "marko")));
+        assertTrue(list.contains(convertToVertex(graph, "josh")));
+    }
+
+    @Test
+    @LoadGraphWith(GRATEFUL)
+    public void g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX() {
+        final Traversal<Vertex, Map<String, Map<String, Number>>> traversal = get_g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX();
+        final Map<String, Map<String, Number>> map = traversal.next();
+        assertFalse(traversal.hasNext());
+        assertEquals(3, map.size());
+        assertTrue(map.containsKey(""));
+        assertTrue(map.containsKey("original"));
+        assertTrue(map.containsKey("cover"));
+        //
+        Map<String, Number> subMap = map.get("");
+        assertEquals(1, subMap.size());
+        assertEquals(179350, subMap.get("followedBy").intValue());
+        //
+        subMap = map.get("original");
+        assertEquals(3, subMap.size());
+        assertEquals(2185613, subMap.get("followedBy").intValue());
+        assertEquals(0, subMap.get("writtenBy").intValue());
+        assertEquals(0, subMap.get("sungBy").intValue());
+        //
+        subMap = map.get("cover");
+        assertEquals(3, subMap.size());
+        assertEquals(777982, subMap.get("followedBy").intValue());
+        assertEquals(0, subMap.get("writtenBy").intValue());
+        assertEquals(0, subMap.get("sungBy").intValue());
+    }
 
     public static class Traversals extends GroupTest {
 
@@ -306,5 +484,35 @@
         public Traversal<Vertex, Map<String, Long>> get_g_V_groupXaX_byXname_substring_1X_byXconstantX1XX_capXaX() {
             return g.V().<String, Long>group("a").<Vertex>by(v -> v.<String>value("name").substring(0, 1)).by(constant(1l)).cap("a");
         }
+
+        @Override
+        public Traversal<Vertex, String> get_g_V_out_group_byXlabelX_selectXpersonX_unfold_outXcreatedX_name_limitX2X() {
+            return g.V().out().<String, Vertex>group().by(T.label).select("person").unfold().out("created").<String>values("name").limit(2);
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Map<String, Long>>> get_g_V_hasLabelXsongX_group_byXnameX_byXproperties_groupCount_byXlabelXX() {
+            return g.V().hasLabel("song").<String, Map<String, Long>>group().by("name").by(__.properties().groupCount().by(T.label));
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Map<String, Long>>> get_g_V_hasLabelXsongX_groupXaX_byXnameX_byXproperties_groupCount_byXlabelXX_out_capXaX() {
+            return g.V().hasLabel("song").group("a").by("name").by(__.properties().groupCount().by(T.label)).out().cap("a");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Map<Object, Object>>> get_g_V_repeatXunionXoutXknowsX_groupXaX_byXageX__outXcreatedX_groupXbX_byXnameX_byXcountXX_groupXaX_byXnameXX_timesX2X_capXa_bX() {
+            return g.V().repeat(__.union(__.out("knows").group("a").by("age"), __.out("created").group("b").by("name").by(count())).group("a").by("name")).times(2).cap("a", "b");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<Long, Map<String, List<Vertex>>>> get_g_V_group_byXbothE_countX_byXgroup_byXlabelXX() {
+            return g.V().<Long, Map<String, List<Vertex>>>group().by(__.bothE().count()).by(__.group().by(T.label));
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Map<String, Number>>> get_g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX() {
+            return g.V().out("followedBy").<String, Map<String, Number>>group().by("songType").by(__.bothE().group().by(T.label).by(__.values("weight").sum()));
+        }
     }
 }
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTestV3d0.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTestV3d0.java
index 599ffc9..9b82484 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTestV3d0.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTestV3d0.java
@@ -34,8 +34,14 @@
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL;
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
-import static org.junit.Assert.*;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.both;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.count;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.inject;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileTest.java
deleted file mode 100644
index 7e26642..0000000
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileTest.java
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
- * 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.sideEffect;
-
-import org.apache.tinkerpop.gremlin.LoadGraphWith;
-import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
-import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
-import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.P;
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-import org.apache.tinkerpop.gremlin.process.traversal.step.Profiling;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.FlatMapStep;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.RangeByIsCountStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.util.Metrics;
-import org.apache.tinkerpop.gremlin.process.traversal.util.MutableMetrics;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL;
-import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.both;
-import static org.junit.Assert.*;
-
-/**
- * @author Bob Briody (http://bobbriody.com)
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-@RunWith(GremlinProcessRunner.class)
-public abstract class ProfileTest extends AbstractGremlinProcessTest {
-    public abstract Traversal<Vertex, Vertex> get_g_V_out_out_profile();
-
-    public abstract Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_profile();
-
-    public abstract Traversal<Vertex, Vertex> get_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile();
-
-    public abstract Traversal<Vertex, String> get_g_V_whereXinXcreatedX_count_isX1XX_valuesXnameX_profile();
-
-    public abstract Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_byXnameX_profile();
-
-    /**
-     * Many of the tests in this class are coupled to not-totally-generic vendor behavior. However, this test is intended to provide
-     * fully generic validation.
-     */
-    @Test
-    @LoadGraphWith(MODERN)
-    public void g_V_out_out_profile_simple() {
-        final Traversal<Vertex, Vertex> traversal = get_g_V_out_out_profile();
-        printTraversalForm(traversal);
-
-        traversal.iterate();
-
-        final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(TraversalMetrics.METRICS_KEY).get();
-        traversalMetrics.toString(); // ensure no exceptions are thrown
-
-        // Every other step should be a Profile step
-        List<Step> steps = traversal.asAdmin().getSteps();
-        for (int ii = 1; ii < steps.size(); ii += 2) {
-            assertEquals("Every other Step should be a ProfileStep.", ProfileStep.class, steps.get(ii).getClass());
-        }
-
-        // Validate the last Metrics only, which must be consistent across providers.
-        Metrics metrics = traversalMetrics.getMetrics(traversalMetrics.getMetrics().size() - 1);
-        assertEquals(2, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
-        assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
-    }
-
-
-    @Test
-    @LoadGraphWith(MODERN)
-    public void g_V_out_out_profile_modern() {
-        final Traversal<Vertex, Vertex> traversal = get_g_V_out_out_profile();
-        printTraversalForm(traversal);
-
-        traversal.iterate();
-
-        final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(TraversalMetrics.METRICS_KEY).get();
-        traversalMetrics.toString(); // ensure no exceptions are thrown
-
-        Metrics metrics = traversalMetrics.getMetrics(0);
-        assertEquals(6, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
-        assertEquals(6, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
-
-        metrics = traversalMetrics.getMetrics(1);
-        assertEquals(6, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
-        assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
-
-        metrics = traversalMetrics.getMetrics(2);
-        assertEquals(2, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
-        assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
-    }
-
-
-    @Test
-    @LoadGraphWith(GRATEFUL)
-    public void g_V_out_out_profile_grateful() {
-        final Traversal<Vertex, Vertex> traversal = get_g_V_out_out_profile();
-        printTraversalForm(traversal);
-
-        traversal.iterate();
-        final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(TraversalMetrics.METRICS_KEY).get();
-        traversalMetrics.toString(); // ensure no exceptions are thrown
-
-        Metrics metrics = traversalMetrics.getMetrics(0);
-        assertEquals(808, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
-        assertEquals(808, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
-        assertTrue("Percent duration should be positive.", (Double) metrics.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY) >= 0);
-        assertTrue("Times should be positive.", metrics.getDuration(TimeUnit.MICROSECONDS) >= 0);
-
-        metrics = traversalMetrics.getMetrics(1);
-        assertEquals(8049, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
-        assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
-        assertTrue("Percent duration should be positive.", (Double) metrics.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY) >= 0);
-        assertTrue("Times should be positive.", metrics.getDuration(TimeUnit.MICROSECONDS) >= 0);
-
-        metrics = traversalMetrics.getMetrics(2);
-        assertEquals(327370, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
-        assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
-        assertTrue("Percent duration should be positive.", (Double) metrics.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY) >= 0);
-        assertTrue("Times should be positive.", metrics.getDuration(TimeUnit.MICROSECONDS) >= 0);
-
-        double totalPercentDuration = 0;
-        for (Metrics m : traversalMetrics.getMetrics()) {
-            totalPercentDuration += (Double) m.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY);
-        }
-        assertEquals(100, totalPercentDuration, 0.000001);
-    }
-
-    @Test
-    @LoadGraphWith(MODERN)
-    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
-    public void g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile() {
-        final Traversal<Vertex, Vertex> traversal = get_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile();
-        printTraversalForm(traversal);
-
-        traversal.iterate();
-
-        assertEquals("There should be 6 steps in this traversal (counting injected profile steps).", 6, traversal.asAdmin().getSteps().size());
-
-        TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(TraversalMetrics.METRICS_KEY).get();
-        traversalMetrics.toString(); // ensure no exceptions are thrown
-
-        // Grab the second (sideEffect{sleep}) step and check the times.
-        Metrics metrics = traversalMetrics.getMetrics(1);
-        // 6 elements w/ a 10ms sleep each = 60ms with 10ms for other computation.
-        assertTrue("Duration should be at least the length of the sleep (59ms): " + metrics.getDuration(TimeUnit.MILLISECONDS),
-                metrics.getDuration(TimeUnit.MILLISECONDS) >= 59);
-
-        // 6 elements w/ a 5ms sleep each = 30ms plus 20ms for other computation
-        metrics = traversalMetrics.getMetrics(2);
-        assertTrue("Duration should be at least the length of the sleep (29ms): " + metrics.getDuration(TimeUnit.MILLISECONDS),
-                metrics.getDuration(TimeUnit.MILLISECONDS) >= 29);
-
-        double totalPercentDuration = 0;
-        for (Metrics m : traversalMetrics.getMetrics()) {
-            totalPercentDuration += (Double) m.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY);
-        }
-        assertEquals(100, totalPercentDuration, 0.000001);
-    }
-
-    @Test
-    @LoadGraphWith(MODERN)
-    @IgnoreEngine(TraversalEngine.Type.COMPUTER)
-    public void g_V_repeat_both_modern_profile() {
-        final Traversal<Vertex, Vertex> traversal = get_g_V_repeatXbothX_timesX3X_profile();
-        printTraversalForm(traversal);
-
-        traversal.iterate();
-
-        final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(TraversalMetrics.METRICS_KEY).get();
-        traversalMetrics.toString(); // ensure no exceptions are thrown
-
-        Metrics metrics = traversalMetrics.getMetrics(0);
-        assertEquals(6, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
-        assertEquals(6, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
-
-        metrics = traversalMetrics.getMetrics(1);
-        assertEquals(72, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
-        assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
-        assertTrue("Count should be greater than traversers.", metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID) > metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
-        assertTrue("Percent duration should be positive.", (Double) metrics.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY) >= 0);
-        assertTrue("Times should be positive.", metrics.getDuration(TimeUnit.MICROSECONDS) >= 0);
-
-        // Test the nested global metrics of the repeat step
-        final Metrics vertexStepNestedInRepeat = (Metrics) metrics.getNested().toArray()[0];
-        assertEquals(114, vertexStepNestedInRepeat.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
-        assertNotEquals(0, vertexStepNestedInRepeat.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
-        assertTrue("Count should be greater than traversers.", vertexStepNestedInRepeat.getCount(TraversalMetrics.ELEMENT_COUNT_ID) > vertexStepNestedInRepeat.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
-        assertTrue("Times should be positive.", vertexStepNestedInRepeat.getDuration(TimeUnit.MICROSECONDS) >= 0);
-
-        final Metrics repeatEndStepNestedInRepeat = (Metrics) metrics.getNested().toArray()[1];
-        assertEquals(72, repeatEndStepNestedInRepeat.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
-        assertNotEquals(0, repeatEndStepNestedInRepeat.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
-        assertTrue("Count should be greater than traversers.", repeatEndStepNestedInRepeat.getCount(TraversalMetrics.ELEMENT_COUNT_ID) > repeatEndStepNestedInRepeat.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
-        assertTrue("Times should be positive.", repeatEndStepNestedInRepeat.getDuration(TimeUnit.MICROSECONDS) >= 0);
-
-
-        double totalPercentDuration = 0;
-        for (Metrics m : traversalMetrics.getMetrics()) {
-            totalPercentDuration += (Double) m.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY);
-        }
-        assertEquals(100, totalPercentDuration, 0.000001);
-    }
-
-    @Test
-    @LoadGraphWith(MODERN)
-    public void g_V_hasXinXcreatedX_count_isX1XX_valuesXnameX_profile() {
-        final Traversal<Vertex, String> traversal = get_g_V_whereXinXcreatedX_count_isX1XX_valuesXnameX_profile();
-        printTraversalForm(traversal);
-
-        traversal.iterate();
-
-        final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(TraversalMetrics.METRICS_KEY).get();
-        traversalMetrics.toString(); // ensure no exceptions are thrown
-
-        assertEquals("There should be 3 top-level metrics.", 3, traversalMetrics.getMetrics().size());
-
-        Metrics metrics = traversalMetrics.getMetrics(0);
-        assertEquals(6, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
-        assertEquals(6, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
-
-        metrics = traversalMetrics.getMetrics(1);
-        assertEquals(1, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
-        assertEquals(1, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
-
-        if (traversal.asAdmin().getStrategies().toList().stream().anyMatch(s -> s instanceof RangeByIsCountStrategy)) {
-            assertEquals("Metrics 1 should have 4 nested metrics.", 4, metrics.getNested().size());
-        } else {
-            assertEquals("Metrics 1 should have 3 nested metrics.", 3, metrics.getNested().size());
-        }
-    }
-
-    /**
-     * ProfileStrategy callback test. Goal: ensure that a step that implements Profileable gets a callback to setMetrics
-     */
-
-    // Setup a "mock" step to test the strategy
-    static public class MockStep extends FlatMapStep<Vertex, Vertex> implements Profiling {
-        public static boolean callbackCalled = false;
-
-        public MockStep(final Traversal.Admin traversal) {
-            super(traversal);
-        }
-
-        @Override
-        protected Iterator<Vertex> flatMap(final Traverser.Admin<Vertex> traverser) {
-            List<Vertex> l = new ArrayList<>();
-            l.add(traverser.get());
-            return l.iterator();
-        }
-
-        @Override
-        public void setMetrics(final MutableMetrics parentMetrics) {
-            if (parentMetrics != null) {
-                callbackCalled = true;
-                parentMetrics.setCount("bogusCount", 100);
-            }
-        }
-    }
-
-    @Test
-    @LoadGraphWith(MODERN)
-    public void testProfileStrategyCallback() {
-        final Traversal<Vertex, Vertex> t = get_g_V_out_out_profile();
-        MockStep mockStep = new MockStep(t.asAdmin());
-        t.asAdmin().addStep(3, mockStep);
-        t.iterate();
-        assertTrue(mockStep.callbackCalled);
-
-        if (t.asAdmin().getEngine().isStandard()) {
-            final TraversalMetrics traversalMetrics = t.asAdmin().getSideEffects().<TraversalMetrics>get(TraversalMetrics.METRICS_KEY).get();
-            assertEquals(100, traversalMetrics.getMetrics(3).getCount("bogusCount").longValue());
-        }
-    }
-
-    @Test
-    @LoadGraphWith(MODERN)
-    public void g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_byXnameX_profile() {
-        final Traversal<Vertex, Map<String, String>> traversal = get_g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_byXnameX_profile();
-        printTraversalForm(traversal);
-        traversal.iterate();
-    }
-
-    /**
-     * Traversals
-     */
-    public static class Traversals extends ProfileTest {
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_out_out_profile() {
-            return g.V().out().out().profile();
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_profile() {
-            return g.V().repeat(both()).times(3).profile();
-        }
-
-        @Override
-        public Traversal<Vertex, Vertex> get_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile() {
-            return g.V().sideEffect(v -> {
-                try {
-                    Thread.sleep(10);
-                } catch (final InterruptedException e) {
-                    e.printStackTrace();
-                }
-            }).sideEffect(v -> {
-                try {
-                    Thread.sleep(5);
-                } catch (final InterruptedException e) {
-                    e.printStackTrace();
-                }
-            }).profile();
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_whereXinXcreatedX_count_isX1XX_valuesXnameX_profile() {
-            return g.V().where(__.in("created").count().is(1l)).<String>values("name").profile();
-        }
-
-        @Override
-        public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_b__b_in_count_isXeqX1XXX_selectXa_bX_byXnameX_profile() {
-            return g.V().match(__.as("a").out("created").as("b"), __.as("b").in().count().is(P.eq(1))).<String>select("a", "b").by("name").profile();
-        }
-    }
-}
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectTest.java
index bc34e9b..68bdbf9 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SideEffectTest.java
@@ -22,18 +22,30 @@
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
 import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSideEffects;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.util.function.ArrayListSupplier;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
+import java.util.function.Supplier;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -48,6 +60,14 @@
 
     public abstract Traversal<Vertex, String> get_g_VX1X_out_sideEffectXX_name(final Object v1Id);
 
+    public abstract Traversal<Vertex, Map<String, Long>> get_g_withSideEffectXa__linkedhashmapX_V_out_groupCountXaX_byXlabelX_out_out_capXaX();
+
+    public abstract Traversal<Vertex, Map<String, Long>> get_g_withSideEffectsXa__linkedhashmapX_withSideEffectXb__arraylist__addAllX_withSideEffectXc__arrayList__addAllX_V_groupXaX_byXlabelX_byXcountX_sideEffectXb__1_2_3X_out_out_out_sideEffectXc__bob_danielX_capXaX();
+
+    public abstract Traversal<Vertex, Integer> get_g_withSideEffectXa_0_sumX_V_out_sideEffectXsideEffectsXa_bulkXX_capXaX();
+
+    public abstract Traversal<Vertex, Integer> get_g_withSideEffectXa_0X_V_out_sideEffectXsideEffectsXa_1XX_capXaX();
+
     @Test
     @LoadGraphWith(MODERN)
     @IgnoreEngine(TraversalEngine.Type.COMPUTER)
@@ -56,7 +76,8 @@
         printTraversalForm(traversal);
         assertEquals(traversal.next(), "marko");
         assertFalse(traversal.hasNext());
-        assertEquals(convertToVertexId("marko"), traversal.asAdmin().getSideEffects().<List<Vertex>>get("a").get().get(0).id());
+        assertEquals(convertToVertexId("marko"), traversal.asAdmin().getSideEffects().<List<Vertex>>get("a").get(0).id());
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", ArrayList.class);
     }
 
     @Test
@@ -66,7 +87,8 @@
         final Traversal<Vertex, String> traversal = get_g_VX1X_out_sideEffectXincr_cX_name(convertToVertexId("marko"));
         printTraversalForm(traversal);
         assert_g_v1_out_sideEffectXincr_cX_valueXnameX(traversal);
-        assertEquals(new Integer(3), traversal.asAdmin().getSideEffects().<List<Integer>>get("c").get().get(0));
+        assertEquals(new Integer(3), traversal.asAdmin().getSideEffects().<List<Integer>>get("c").get(0));
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "c", ArrayList.class);
     }
 
     private void assert_g_v1_out_sideEffectXincr_cX_valueXnameX(final Iterator<String> traversal) {
@@ -88,6 +110,87 @@
         assert_g_v1_out_sideEffectXincr_cX_valueXnameX(traversal);
     }
 
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_withSideEffectXa__linkedhashmapX_V_out_groupCountXaX_byXlabelX_out_out_capXaX() {
+        final Traversal<Vertex, Map<String, Long>> traversal = get_g_withSideEffectXa__linkedhashmapX_V_out_groupCountXaX_byXlabelX_out_out_capXaX();
+        printTraversalForm(traversal);
+        Map<String, Long> map = traversal.next();
+        assertFalse(traversal.hasNext());
+        assertEquals(2, map.size());
+        assertEquals(4l, map.get("software").longValue());
+        assertEquals(2l, map.get("person").longValue());
+        final TraversalSideEffects sideEffects = traversal.asAdmin().getSideEffects();
+        map = sideEffects.get("a");
+        assertEquals(2, map.size());
+        assertEquals(4l, map.get("software").longValue());
+        assertEquals(2l, map.get("person").longValue());
+        ///
+        assertEquals(1, sideEffects.keys().size());
+        assertTrue(sideEffects.keys().contains("a"));
+        assertTrue(sideEffects.exists("a"));
+        assertTrue(sideEffects.get("a") instanceof LinkedHashMap);
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", LinkedHashMap.class);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_withSideEffectsXa__linkedhashmapX_withSideEffectXb__arraylist__addAllX_withSideEffectXc__arrayList__addAllX_V_groupXaX_byXlabelX_byXcountX_sideEffectXb__1_2_3X_out_out_out_sideEffectXc__bob_danielX_capXaX() {
+        final Traversal<Vertex, Map<String, Long>> traversal = get_g_withSideEffectsXa__linkedhashmapX_withSideEffectXb__arraylist__addAllX_withSideEffectXc__arrayList__addAllX_V_groupXaX_byXlabelX_byXcountX_sideEffectXb__1_2_3X_out_out_out_sideEffectXc__bob_danielX_capXaX();
+        printTraversalForm(traversal);
+        Map<String, Long> map = traversal.next();
+        assertFalse(traversal.hasNext());
+        assertEquals(2, map.size());
+        assertEquals(2l, map.get("software").longValue());
+        assertEquals(4l, map.get("person").longValue());
+        final TraversalSideEffects sideEffects = traversal.asAdmin().getSideEffects();
+        map = sideEffects.get("a");
+        assertEquals(2, map.size());
+        assertEquals(2l, map.get("software").longValue());
+        assertEquals(4l, map.get("person").longValue());
+        ///
+        assertEquals(3, sideEffects.keys().size());
+        assertTrue(sideEffects.keys().contains("a"));
+        assertTrue(sideEffects.exists("a"));
+        assertTrue(sideEffects.get("a") instanceof LinkedHashMap);
+        //
+        assertTrue(sideEffects.keys().contains("b"));
+        assertTrue(sideEffects.exists("b"));
+        assertTrue(sideEffects.get("b") instanceof ArrayList);
+        assertEquals(18, sideEffects.<List<Integer>>get("b").size());
+        assertEquals(6l, sideEffects.<List<Integer>>get("b").stream().filter(t -> t == 1).count());
+        assertEquals(6l, sideEffects.<List<Integer>>get("b").stream().filter(t -> t == 2).count());
+        assertEquals(6l, sideEffects.<List<Integer>>get("b").stream().filter(t -> t == 3).count());
+        //
+        assertTrue(sideEffects.keys().contains("c"));
+        assertTrue(sideEffects.exists("c"));
+        assertTrue(sideEffects.get("c") instanceof ArrayList);
+        assertEquals(0, sideEffects.<List>get("c").size());
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", LinkedHashMap.class, "b", ArrayList.class, "c", ArrayList.class);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_withSideEffectXa_0_sumX_V_out_sideEffectXsideEffectsXa_bulkXX_capXaX() {
+        final Traversal<Vertex, Integer> traversal = get_g_withSideEffectXa_0_sumX_V_out_sideEffectXsideEffectsXa_bulkXX_capXaX();
+        assertEquals(6, traversal.next().intValue());
+        assertFalse(traversal.hasNext());
+        assertEquals(6, traversal.asAdmin().getSideEffects().<Integer>get("a").intValue());
+        assertEquals(1, traversal.asAdmin().getSideEffects().keys().size());
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", Integer.class);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_withSideEffectXa_0X_V_out_sideEffectXsideEffectsXa_1XX_capXaX() {
+        final Traversal<Vertex, Integer> traversal = get_g_withSideEffectXa_0X_V_out_sideEffectXsideEffectsXa_1XX_capXaX();
+        assertEquals(1, traversal.next().intValue());
+        assertFalse(traversal.hasNext());
+        assertEquals(1, traversal.asAdmin().getSideEffects().<Integer>get("a").intValue());
+        assertEquals(1, traversal.asAdmin().getSideEffects().keys().size());
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "a", Integer.class);
+    }
+
     public static class Traversals extends SideEffectTest {
 
         @Override
@@ -116,5 +219,41 @@
             return g.V(v1Id).out().sideEffect(traverser -> {
             }).values("name");
         }
+
+        @Override
+        public Traversal<Vertex, Map<String, Long>> get_g_withSideEffectXa__linkedhashmapX_V_out_groupCountXaX_byXlabelX_out_out_capXaX() {
+            return g.withSideEffect("a", new LinkedHashMapSupplier()).V().out().groupCount("a").by(T.label).out().out().cap("a");
+        }
+
+        @Override
+        public Traversal<Vertex, Map<String, Long>> get_g_withSideEffectsXa__linkedhashmapX_withSideEffectXb__arraylist__addAllX_withSideEffectXc__arrayList__addAllX_V_groupXaX_byXlabelX_byXcountX_sideEffectXb__1_2_3X_out_out_out_sideEffectXc__bob_danielX_capXaX() {
+            return g.withSideEffect("a", new LinkedHashMapSupplier())
+                    .withSideEffect("b", ArrayListSupplier.instance(), Operator.addAll)
+                    .withSideEffect("c", ArrayListSupplier.instance(), Operator.addAll)
+                    .V().group("a").by(T.label).by(__.count())
+                    .sideEffect(t -> t.sideEffects("b", new LinkedList<>(Arrays.asList(1, 2, 3))))
+                    .out().out().out()
+                    .sideEffect(t -> t.sideEffects("c", new LinkedList<>(Arrays.asList("bob", "daniel"))))
+                    .cap("a");
+        }
+
+        @Override
+        public Traversal<Vertex, Integer> get_g_withSideEffectXa_0_sumX_V_out_sideEffectXsideEffectsXa_bulkXX_capXaX() {
+            return g.withSideEffect("a", 0, Operator.sum).V().out().sideEffect(t -> t.sideEffects("a", (int) t.bulk())).cap("a");
+        }
+
+        @Override
+        public Traversal<Vertex, Integer> get_g_withSideEffectXa_0X_V_out_sideEffectXsideEffectsXa_1XX_capXaX() {
+            return g.withSideEffect("a", 0).V().out().sideEffect(t -> t.sideEffects("a", 1)).cap("a");
+        }
+    }
+
+    private static class LinkedHashMapSupplier implements Supplier<LinkedHashMap> {
+
+        @Override
+        public LinkedHashMap get() {
+            return new LinkedHashMap();
+        }
+
     }
 }
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreTest.java
index 8abfa75..32c294b 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StoreTest.java
@@ -22,7 +22,6 @@
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.util.function.HashSetSupplier;
@@ -35,7 +34,9 @@
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.inE;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SubgraphTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SubgraphTest.java
index dc55685..9f2a662 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SubgraphTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SubgraphTest.java
@@ -100,7 +100,7 @@
         final Traversal<Vertex, String> traversal = get_g_V_withSideEffectXsgX_repeatXbothEXcreatedX_subgraphXsgX_outVX_timesX5X_name_dedup(subgraph);
         printTraversalForm(traversal);
         checkResults(Arrays.asList("marko", "josh", "peter"), traversal);
-        subgraph = traversal.asAdmin().getSideEffects().<Graph>get("sg").get();
+        subgraph = traversal.asAdmin().getSideEffects().<Graph>get("sg");
         assertVertexEdgeCounts(subgraph, 5, 4);
 
         graphProvider.clear(subgraph, config);
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 747ff65..79fd859 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
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration;
 
+import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.tinkerpop.gremlin.FeatureRequirement;
 import org.apache.tinkerpop.gremlin.FeatureRequirementSet;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
@@ -31,10 +32,13 @@
 import org.junit.Test;
 
 import java.util.List;
+import java.util.NoSuchElementException;
 import java.util.stream.Collectors;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.Matchers.containsInAnyOrder;
+import static org.hamcrest.core.IsInstanceOf.instanceOf;
+import static org.hamcrest.core.StringStartsWith.startsWith;
 import static org.junit.Assert.*;
 
 /**
@@ -165,7 +169,7 @@
         assertThat(gOverAB.V(v).valueMap().next().containsKey(partition), is(false));
     }
 
-    @Test(expected = IllegalStateException.class)
+    @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_META_PROPERTIES)
     public void shouldHidePartitionKeyForValues() {
@@ -174,7 +178,13 @@
                 .partitionKey(partition).writePartition("A").addReadPartition("A").create());
         final Vertex v = gOverA.addV().property("any", "thing").next();
 
-        gOverA.V(v).values(partition).next();
+        try {
+            gOverA.V(v).values(partition).next();
+            fail("Should have thrown exception");
+        } catch (Exception ex) {
+            assertThat(ex.getMessage(), startsWith("Cannot explicitly request the partitionKey in the traversal"));
+        }
+
     }
 
     @Test
@@ -190,7 +200,7 @@
         assertEquals("thing", gOverA.V(v).values().next());
     }
 
-    @Test(expected = IllegalStateException.class)
+    @Test
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_META_PROPERTIES)
     public void shouldHidePartitionKeyForProperties() {
@@ -199,7 +209,12 @@
                 .partitionKey(partition).writePartition("A").addReadPartition("A").create());
         final Vertex v = gOverA.addV().property("any", "thing").next();
 
-        gOverA.V(v).properties(partition).next();
+        try {
+            gOverA.V(v).properties(partition).next();
+            fail("Should have thrown exception");
+        } catch (Exception ex) {
+            assertThat(ex.getMessage(), startsWith("Cannot explicitly request the partitionKey in the traversal"));
+        }
     }
 
     @Test
@@ -240,7 +255,6 @@
         assertEquals("thing", ((List<VertexProperty>) gOverA.V(v).propertyMap().next().get("any")).get(0).value());
     }
 
-    @Test(expected = IllegalStateException.class)
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_META_PROPERTIES)
     public void shouldHidePartitionKeyForValueMap() {
@@ -249,7 +263,13 @@
                 .partitionKey(partition).writePartition("A").addReadPartition("A").create());
         final Vertex v = gOverA.addV().property("any", "thing").next();
 
-        gOverA.V(v).valueMap(partition).next();
+        try {
+            gOverA.V(v).valueMap(partition).next();
+            fail("Should have thrown exception");
+        } catch (Exception ex) {
+            final Throwable root = ExceptionUtils.getRootCause(ex);
+            assertThat(root.getMessage(), startsWith("Cannot explicitly request the partitionKey in the traversal"));
+        }
     }
 
     @Test
@@ -344,8 +364,7 @@
             sourceA.V(vA.id()).next();
             fail("Vertex should not be in this partition");
         } catch (Exception ex) {
-            final Exception expected = FastNoSuchElementException.instance();
-            assertEquals(expected.getClass(), ex.getClass());
+            assertThat(ex, instanceOf(NoSuchElementException.class));
         }
     }
 
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyProcessTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyProcessTest.java
deleted file mode 100644
index f6ded69..0000000
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ComputerVerificationStrategyProcessTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * 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.strategy.verification;
-
-import org.apache.tinkerpop.gremlin.LoadGraphWith;
-import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
-import org.junit.Test;
-
-import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.apache.tinkerpop.gremlin.process.traversal.NumberHelper.mul;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public abstract class ComputerVerificationStrategyProcessTest extends AbstractGremlinProcessTest {
-
-    public static class StandardTraversals extends ComputerVerificationStrategyProcessTest {
-        @Test
-        @LoadGraphWith(MODERN)
-        public void shouldAllowNestedGlobalTraversalToHaveBarriers() {
-            try {
-                g.V().values("age").union(max(), min(), sum()).iterate();
-            } catch (IllegalStateException e) {
-                fail("Nested global traversals can have barrier steps on STANDARD:" + e.getMessage());
-            }
-        }
-
-        @Test
-        @LoadGraphWith(MODERN)
-        public void shouldAllowMidTraversalBarriersOnComputer() {
-            try {
-                g.V().count().sum().iterate();
-            } catch (IllegalStateException e) {
-                fail("Mid-traversal barrier steps are OK on STANDARD: " + e.getMessage());
-            }
-        }
-
-        @Test
-        @LoadGraphWith(MODERN)
-        public void shouldAllowLocalTraversalsToLeaveTheStarGraphOnComputer() {
-            try {
-                g.V().local(out().out()).iterate();
-            } catch (IllegalStateException e) {
-                fail("Local traversals leaving the star-graph are OK on STANDARD: " + e.getMessage());
-            }
-        }
-    }
-
-    public static class ComputerTraversals extends ComputerVerificationStrategyProcessTest {
-
-        @Test
-        @LoadGraphWith(MODERN)
-        public void shouldNotAllowNestedGlobalTraversalToHaveBarriers() {
-            try {
-                final GraphTraversal t = g.V().values("age").union(max(), min(), sum()).iterate();
-                fail("Nested global traversals should not be allowed to contain barriers (COMPUTER): " + t);
-            } catch (IllegalStateException e) {
-               assertTrue(true);
-            }
-        }
-
-        @Test
-        @LoadGraphWith(MODERN)
-        public void shouldNotAllowMidTraversalBarriersOnComputer() {
-            try {
-                final GraphTraversal t = g.V().count().sum().iterate();
-                fail("Mid-traversal barrier steps are not allowed (COMPUTER): " + t);
-            } catch (IllegalStateException e) {
-                assertTrue(true);
-            }
-
-            try {
-                final GraphTraversal t = g.V().count().sum().map(x -> mul(x.get(), 19)).iterate();
-                fail("Mid-traversal barrier steps are not allowed (COMPUTER): " + t);
-            } catch (IllegalStateException e) {
-                assertTrue(true);
-            }
-        }
-
-        @Test
-        @LoadGraphWith(MODERN)
-        public void shouldNotAllowLocalTraversalsToLeaveTheStarGraphOnComputer() {
-            try {
-                final GraphTraversal t = g.V().local(out().out()).iterate();
-                fail("Local traversals should not be allowed to leave the star-graph (COMPUTER): " + t);
-            } catch (IllegalStateException e) {
-                assertTrue(true);
-            }
-
-            try {
-                final GraphTraversal t = g.V().local(out().values("name")).iterate();
-                fail("Local traversals should not be allowed to leave the star-graph (COMPUTER): " + t);
-            } catch (IllegalStateException e) {
-                assertTrue(true);
-            }
-
-            try {
-                g.V().local(outE().values("weight")).iterate();
-                g.V().local(out().id()).iterate();
-                g.V().local(outE().inV()).iterate();
-            } catch (IllegalStateException e) {
-                fail("Local traversals on the star-graph are OK on COMPUTER: " + e.getMessage());
-            }
-        }
-    }
-}
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategyProcessTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategyProcessTest.java
index 9da620c..d9c266f 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategyProcessTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/ReadOnlyStrategyProcessTest.java
@@ -20,11 +20,13 @@
 
 import org.apache.tinkerpop.gremlin.FeatureRequirement;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.remote.RemoteGraph;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.junit.Test;
 
+import static org.hamcrest.CoreMatchers.containsString;
 import static org.hamcrest.core.StringStartsWith.startsWith;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.fail;
@@ -100,15 +102,21 @@
 
     private void assertTraversal(final Traversal t, final boolean expectMutatingStep) {
         try {
-            t.asAdmin().applyStrategies();
+            // not sure why i need a special hook here for RemoteGraph. It only triggers these exceptions on a
+            // call to hasNext() and not on applyStrategies()
+            if (graph instanceof RemoteGraph)
+                t.hasNext();
+            else
+                t.asAdmin().applyStrategies();
+
             if (expectMutatingStep) fail("The strategy should have found a mutating step.");
-        } catch (final IllegalStateException ise) {
+        } catch (final Exception ise) {
             if (!expectMutatingStep)
                 fail("The traversal should not have failed as there is no mutating step.");
             else {
                 // TraversalVerificationStrategy fails before this as mutating operations are not allowed in OLAP
-                if (!hasGraphComputerRequirement())
-                    assertThat(ise.getMessage(), startsWith("The provided traversal has a mutating step and thus is not read only"));
+                if (!(ise instanceof VerificationException))
+                    assertThat(ise.getMessage(), containsString("The provided traversal has a mutating step and thus is not read only"));
             }
         }
     }
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalTest.java
deleted file mode 100644
index 4068c71..0000000
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.util;
-
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
-import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class DefaultTraversalTest {
-
-    @Test
-    public void shouldCloneTraversalCorrectly() throws CloneNotSupportedException {
-        final DefaultGraphTraversal<?, ?> original = new DefaultGraphTraversal<>();
-        original.out().groupCount("m").values("name").count();
-        final DefaultTraversal<?, ?> clone = (DefaultTraversal) original.clone();
-        assertNotEquals(original.hashCode(), clone.hashCode());
-        assertEquals(original.getSteps().size(), clone.getSteps().size());
-
-        for (int i = 0; i < original.steps.size(); i++) {
-            assertNotEquals(original.getSteps().get(i), clone.getSteps().get(i));
-        }
-        assertNotEquals(original.sideEffects, clone.sideEffects);
-
-    }
-}
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphReadPerformanceTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphReadPerformanceTest.java
index 164c944..3bf3a1e 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphReadPerformanceTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphReadPerformanceTest.java
@@ -45,8 +45,10 @@
 
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.2.1, replaced by gremlin-benchmark.
  */
 @RunWith(Enclosed.class)
+@Deprecated
 public class GraphReadPerformanceTest {
     @AxisRange(min = 0, max = 1)
     @BenchmarkMethodChart(filePrefix = "gremlin-read")
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphWritePerformanceTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphWritePerformanceTest.java
index 0d1eb48..c541cdb 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphWritePerformanceTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphWritePerformanceTest.java
@@ -42,8 +42,10 @@
 
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.2.1, replaced by gremlin-benchmark.
  */
 @RunWith(Enclosed.class)
+@Deprecated
 public class GraphWritePerformanceTest {
 
     @AxisRange(min = 0, max = 1)
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
index 8d02c72..4dacf48 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
@@ -213,7 +213,7 @@
             final GryoWriter gryoWriter = gryoIo.writer().create();
             final GryoReader gryoReader = gryoIo.reader().create();
 
-            final TraversalMetrics before = (TraversalMetrics) g.V().both().profile().cap(TraversalMetrics.METRICS_KEY).next();
+            final TraversalMetrics before = (TraversalMetrics) g.V().both().profile().next();
             final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
             gryoWriter.writeObject(outputStream, before);
 
@@ -355,7 +355,7 @@
         @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
         public void shouldSerializeTraversalMetrics() throws Exception {
             final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().create().createMapper();
-            final TraversalMetrics tm = (TraversalMetrics) g.V().both().profile().cap(TraversalMetrics.METRICS_KEY).next();
+            final TraversalMetrics tm = (TraversalMetrics) g.V().both().profile().next();
             final String json = mapper.writeValueAsString(tm);
             final Map<String, Object> m = mapper.readValue(json, mapTypeReference);
 
@@ -363,7 +363,7 @@
             assertTrue(m.containsKey(GraphSONTokens.METRICS));
 
             final List<Map<String, Object>> metrics = (List<Map<String, Object>>) m.get(GraphSONTokens.METRICS);
-            assertEquals(3, metrics.size());
+            assertEquals(2, metrics.size());
 
             final Map<String, Object> metrics0 = metrics.get(0);
             assertTrue(metrics0.containsKey(GraphSONTokens.ID));
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/StructurePerformanceSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/StructurePerformanceSuite.java
index bd1ee8d..1dbd4b9 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/StructurePerformanceSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/StructurePerformanceSuite.java
@@ -32,7 +32,9 @@
  * For more information on the usage of this suite, please see {@link StructureStandardSuite}.
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.2.1, replaced by gremlin-benchmark.
  */
+@Deprecated
 public class StructurePerformanceSuite extends AbstractGremlinSuite {
 
     /**
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/TransactionTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/TransactionTest.java
index a16dd09..9ec7e04 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/TransactionTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/TransactionTest.java
@@ -41,6 +41,8 @@
 import static org.apache.tinkerpop.gremlin.structure.Graph.Features.GraphFeatures.FEATURE_TRANSACTIONS;
 import static org.apache.tinkerpop.gremlin.structure.Graph.Features.VertexPropertyFeatures.FEATURE_DOUBLE_VALUES;
 import static org.apache.tinkerpop.gremlin.structure.Graph.Features.VertexPropertyFeatures.FEATURE_INTEGER_VALUES;
+import static org.hamcrest.core.Is.is;
+import static org.hamcrest.core.IsInstanceOf.instanceOf;
 import static org.junit.Assert.*;
 
 /**
@@ -174,8 +176,11 @@
     public void shouldAllowAutoTransactionToWorkWithoutMutationByDefault() {
         // expecting no exceptions to be thrown here
         g.tx().commit();
+        assertThat(g.tx().isOpen(), is(false));
         g.tx().rollback();
+        assertThat(g.tx().isOpen(), is(false));
         g.tx().commit();
+        assertThat(g.tx().isOpen(), is(false));
     }
 
     @Test
@@ -243,19 +248,25 @@
         assertVertexEdgeCounts(graph, 1, 1);
         assertEquals(v1.id(), graph.vertices(v1.id()).next().id());
         assertEquals(e1.id(), graph.edges(e1.id()).next().id());
+        assertThat(g.tx().isOpen(), is(true));
         g.tx().commit();
+        assertThat(g.tx().isOpen(), is(false));
         assertVertexEdgeCounts(graph, 1, 1);
+        assertThat(g.tx().isOpen(), is(true));
         assertEquals(v1.id(), graph.vertices(v1.id()).next().id());
         assertEquals(e1.id(), graph.edges(e1.id()).next().id());
 
         graph.vertices(v1.id()).forEachRemaining(Element::remove);
         assertVertexEdgeCounts(graph, 0, 0);
         g.tx().rollback();
+        assertThat(g.tx().isOpen(), is(false));
         assertVertexEdgeCounts(graph, 1, 1);
+        assertThat(g.tx().isOpen(), is(true));
 
         graph.vertices(v1.id()).forEachRemaining(Element::remove);
         assertVertexEdgeCounts(graph, 0, 0);
         g.tx().commit();
+        assertThat(g.tx().isOpen(), is(false));
         assertVertexEdgeCounts(graph, 0, 0);
     }
 
@@ -590,6 +601,55 @@
         assertVertexEdgeCounts(graph, numberOfThreads, 0);
     }
 
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = Graph.Features.GraphFeatures.class, feature = Graph.Features.GraphFeatures.FEATURE_TRANSACTIONS)
+    @FeatureRequirement(featureClass = Graph.Features.GraphFeatures.class, feature = Graph.Features.GraphFeatures.FEATURE_THREADED_TRANSACTIONS)
+    public void shouldOpenTxWhenThreadedTransactionIsCreated() throws Exception {
+        // threaded transactions should be immediately open on creation
+        final Graph threadedG = g.tx().createThreadedTx();
+        assertThat(threadedG.tx().isOpen(), is(true));
+
+        threadedG.tx().rollback();
+        assertThat(threadedG.tx().isOpen(), is(false));
+    }
+
+    @Test
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = Graph.Features.GraphFeatures.class, feature = Graph.Features.GraphFeatures.FEATURE_TRANSACTIONS)
+    @FeatureRequirement(featureClass = Graph.Features.GraphFeatures.class, feature = Graph.Features.GraphFeatures.FEATURE_THREADED_TRANSACTIONS)
+    public void shouldNotReuseThreadedTransaction() throws Exception {
+        final int numberOfThreads = 10;
+        final CountDownLatch latch = new CountDownLatch(numberOfThreads);
+
+        final Graph threadedG = g.tx().createThreadedTx();
+
+        for (int ix = 0; ix < numberOfThreads; ix++) {
+            new Thread(() -> {
+                threadedG.addVertex();
+                latch.countDown();
+            }).start();
+        }
+
+        latch.await(10000, TimeUnit.MILLISECONDS);
+
+        // threaded transaction is not yet committed so g should not reflect any change
+        assertVertexEdgeCounts(graph, 0, 0);
+        threadedG.tx().commit();
+
+        // there should be one vertex for each thread
+        assertVertexEdgeCounts(graph, numberOfThreads, 0);
+
+        try {
+            assertThat(threadedG.tx().isOpen(), is(false));
+            threadedG.addVertex();
+            fail("Shouldn't be able to re-use a threaded transaction");
+        } catch (Exception ex) {
+            assertThat(ex, instanceOf(IllegalStateException.class));
+        } finally {
+            threadedG.tx().rollback();
+        }
+    }
 
     @Test
     @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/script/script-output-grateful-dead.groovy b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/script/script-output-grateful-dead.groovy
index 01cfac6..1f4e2dd 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/script/script-output-grateful-dead.groovy
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/script/script-output-grateful-dead.groovy
@@ -31,7 +31,7 @@
         default:
             throw new Exception("Unexpected vertex label: ${v.label()}")
     }
-    def g = v.graph().traversal(standard())
+    def g = v.graph().traversal()
     def outE = g.V(v).outE().map {
         def e = it.get()
         def weight = e.property("weight")
diff --git a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/structure/ExceptionCoverageTest.java b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/structure/ExceptionCoverageTest.java
index c0c6445..a4cbc9b 100644
--- a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/structure/ExceptionCoverageTest.java
+++ b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/structure/ExceptionCoverageTest.java
@@ -21,6 +21,7 @@
 import org.apache.tinkerpop.gremlin.ExceptionCoverage;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputerTest;
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.traversal.CoreTraversalTest;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -55,6 +56,7 @@
                 Element.Exceptions.class,
                 Graph.Exceptions.class,
                 GraphComputer.Exceptions.class,
+                Memory.Exceptions.class,
                 Graph.Variables.Exceptions.class,
                 Property.Exceptions.class,
                 Transaction.Exceptions.class,
@@ -68,10 +70,10 @@
         final Set<String> ignore = new HashSet<String>() {{
             // this is a general exception to be used as needed. it is not explicitly tested:
             add("org.apache.tinkerpop.gremlin.structure.Graph$Exceptions#argumentCanNotBeNull");
-            add("org.apache.tinkerpop.gremlin.structure.Graph$Exceptions#traversalEngineNotSupported");
 
             // deprecated exceptions
             add("org.apache.tinkerpop.gremlin.structure.Element$Exceptions#elementAlreadyRemoved"); // as of 3.1.0
+            add("org.apache.tinkerpop.gremlin.structure.Graph$Exceptions#traversalEngineNotSupported"); // as of 3.2.0
 
             // need to write consistency tests for the following items still...........
             add("org.apache.tinkerpop.gremlin.process.computer.GraphComputer$Exceptions#supportsDirectObjects");
diff --git a/hadoop-gremlin/conf/hadoop-graphson.properties b/hadoop-gremlin/conf/hadoop-graphson.properties
index 5fb3897..10025de 100644
--- a/hadoop-gremlin/conf/hadoop-graphson.properties
+++ b/hadoop-gremlin/conf/hadoop-graphson.properties
@@ -18,15 +18,13 @@
 # the graph class
 gremlin.graph=org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph
 # i/o formats for graphs
-gremlin.hadoop.graphInputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.graphson.GraphSONInputFormat
-gremlin.hadoop.graphOutputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.graphson.GraphSONOutputFormat
+gremlin.hadoop.graphReader=org.apache.tinkerpop.gremlin.hadoop.structure.io.graphson.GraphSONInputFormat
+gremlin.hadoop.graphWriter=org.apache.tinkerpop.gremlin.hadoop.structure.io.graphson.GraphSONOutputFormat
 # i/o locations
 gremlin.hadoop.inputLocation=tinkerpop-modern.json
 gremlin.hadoop.outputLocation=output
 # if the job jars are not on the classpath of every hadoop node, then they must be provided to the distributed cache at runtime
 gremlin.hadoop.jarsInDistributedCache=true
-# the vertex program to execute
-gremlin.vertexProgram=org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram
 
 ####################################
 # SparkGraphComputer Configuration #
diff --git a/hadoop-gremlin/conf/hadoop-grateful-gryo.properties b/hadoop-gremlin/conf/hadoop-grateful-gryo.properties
index e247c2a..17aeadd 100644
--- a/hadoop-gremlin/conf/hadoop-grateful-gryo.properties
+++ b/hadoop-gremlin/conf/hadoop-grateful-gryo.properties
@@ -19,8 +19,8 @@
 # Hadoop Graph Configuration
 #
 gremlin.graph=org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph
-gremlin.hadoop.graphInputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
-gremlin.hadoop.graphOutputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat
+gremlin.hadoop.graphReader=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
+gremlin.hadoop.graphWriter=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat
 gremlin.hadoop.inputLocation=grateful-dead.kryo
 gremlin.hadoop.outputLocation=output
 gremlin.hadoop.jarsInDistributedCache=true
diff --git a/hadoop-gremlin/conf/hadoop-gryo.properties b/hadoop-gremlin/conf/hadoop-gryo.properties
index 0721276..aaab24d 100644
--- a/hadoop-gremlin/conf/hadoop-gryo.properties
+++ b/hadoop-gremlin/conf/hadoop-gryo.properties
@@ -15,9 +15,10 @@
 # specific language governing permissions and limitations
 # under the License.
 gremlin.graph=org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph
-gremlin.hadoop.graphInputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
-gremlin.hadoop.graphOutputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat
+gremlin.hadoop.graphReader=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
+gremlin.hadoop.graphWriter=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat
 gremlin.hadoop.jarsInDistributedCache=true
+gremlin.hadoop.defaultGraphComputer=org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer
 
 gremlin.hadoop.inputLocation=tinkerpop-modern.kryo
 gremlin.hadoop.outputLocation=output
@@ -30,7 +31,7 @@
 spark.serializer=org.apache.tinkerpop.gremlin.spark.structure.io.gryo.GryoSerializer
 # gremlin.spark.graphStorageLevel=MEMORY_AND_DISK
 # gremlin.spark.persistContext=true
-# gremlin.spark.graphOutputRDD=org.apache.tinkerpop.gremlin.spark.structure.io.PersistedOutputRDD
+# gremlin.spark.graphWriter=org.apache.tinkerpop.gremlin.spark.structure.io.PersistedOutputRDD
 # gremlin.spark.persistStorageLevel=DISK_ONLY
 # spark.kryo.registrationRequired=true
 # spark.storage.memoryFraction=0.2
diff --git a/hadoop-gremlin/conf/hadoop-script.properties b/hadoop-gremlin/conf/hadoop-script.properties
index d21bff8..0c27dd7 100644
--- a/hadoop-gremlin/conf/hadoop-script.properties
+++ b/hadoop-gremlin/conf/hadoop-script.properties
@@ -15,8 +15,8 @@
 # specific language governing permissions and limitations
 # under the License.
 gremlin.graph=org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph
-gremlin.hadoop.graphInputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.script.ScriptInputFormat
-gremlin.hadoop.graphOutputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.graphson.GraphSONOutputFormat
+gremlin.hadoop.graphReader=org.apache.tinkerpop.gremlin.hadoop.structure.io.script.ScriptInputFormat
+gremlin.hadoop.graphWriter=org.apache.tinkerpop.gremlin.hadoop.structure.io.graphson.GraphSONOutputFormat
 gremlin.hadoop.jarsInDistributedCache=true
 
 gremlin.hadoop.inputLocation=tinkerpop-classic.txt
diff --git a/hadoop-gremlin/pom.xml b/hadoop-gremlin/pom.xml
index 03bd3cf..dcfac2f 100644
--- a/hadoop-gremlin/pom.xml
+++ b/hadoop-gremlin/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.4-SNAPSHOT</version>
+        <version>3.2.2-SNAPSHOT</version>
     </parent>
     <artifactId>hadoop-gremlin</artifactId>
     <name>Apache TinkerPop :: Hadoop Gremlin</name>
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/Constants.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/Constants.java
index aa0bca5c..9c79b53 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/Constants.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/Constants.java
@@ -33,10 +33,13 @@
 
     public static final String GREMLIN_HADOOP_INPUT_LOCATION = "gremlin.hadoop.inputLocation";
     public static final String GREMLIN_HADOOP_OUTPUT_LOCATION = "gremlin.hadoop.outputLocation";
-    public static final String GREMLIN_HADOOP_GRAPH_INPUT_FORMAT = "gremlin.hadoop.graphInputFormat";
-    public static final String GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT = "gremlin.hadoop.graphOutputFormat";
-    public static final String GREMLIN_HADOOP_GRAPH_INPUT_FORMAT_HAS_EDGES = "gremlin.hadoop.graphOutputFormat.hasEdges";
-    public static final String GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT_HAS_EDGES = "gremlin.hadoop.graphInputFormat.hasEdges";
+    public static final String GREMLIN_HADOOP_GRAPH_READER = "gremlin.hadoop.graphReader";
+    public static final String GREMLIN_HADOOP_GRAPH_WRITER = "gremlin.hadoop.graphWriter";
+    public static final String GREMLIN_HADOOP_GRAPH_READER_HAS_EDGES = "gremlin.hadoop.graphReader.hasEdges";
+    public static final String GREMLIN_HADOOP_GRAPH_WRITER_HAS_EDGES = "gremlin.hadoop.graphWriter.hasEdges";
+    public static final String GREMLIN_HADOOP_GRAPH_FILTER = "gremlin.hadoop.graphFilter";
+    public static final String GREMLIN_HADOOP_DEFAULT_GRAPH_COMPUTER = "gremlin.hadoop.defaultGraphComputer";
+    public static final String GREMLIN_HADOOP_VERTEX_PROGRAM_INTERCEPTOR = "gremlin.hadoop.vertexProgramInterceptor";
 
     public static final String GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE = "gremlin.hadoop.jarsInDistributedCache";
     public static final String HIDDEN_G = Graph.Hidden.hide("g");
@@ -52,11 +55,12 @@
     public static final String MAPREDUCE_INPUT_FILEINPUTFORMAT_INPUTDIR = "mapreduce.input.fileinputformat.inputdir";
 
     // spark based constants
-    public static final String GREMLIN_SPARK_GRAPH_INPUT_RDD = "gremlin.spark.graphInputRDD";
-    public static final String GREMLIN_SPARK_GRAPH_OUTPUT_RDD = "gremlin.spark.graphOutputRDD";
     public static final String GREMLIN_SPARK_PERSIST_CONTEXT = "gremlin.spark.persistContext";
     public static final String GREMLIN_SPARK_GRAPH_STORAGE_LEVEL = "gremlin.spark.graphStorageLevel";
     public static final String GREMLIN_SPARK_PERSIST_STORAGE_LEVEL = "gremlin.spark.persistStorageLevel";
+    public static final String GREMLIN_SPARK_SKIP_PARTITIONER = "gremlin.spark.skipPartitioner"; // don't partition the loadedGraphRDD
+    public static final String GREMLIN_SPARK_SKIP_GRAPH_CACHE = "gremlin.spark.skipGraphCache";  // don't cache the loadedGraphRDD (ignores graphStorageLevel)
+    public static final String SPARK_SERIALIZER = "spark.serializer";
 
     public static String getGraphLocation(final String location) {
         return location.endsWith("/") ? location + Constants.HIDDEN_G : location + "/" + Constants.HIDDEN_G;
@@ -74,4 +78,19 @@
         else
             return Optional.empty();
     }
+
+    ///////////////////////
+    @Deprecated
+    public static final String GREMLIN_HADOOP_GRAPH_INPUT_FORMAT = "gremlin.hadoop.graphInputFormat";
+    @Deprecated
+    public static final String GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT = "gremlin.hadoop.graphOutputFormat";
+    @Deprecated
+    public static final String GREMLIN_HADOOP_GRAPH_INPUT_FORMAT_HAS_EDGES = "gremlin.hadoop.graphInputFormat.hasEdges";
+    @Deprecated
+    public static final String GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT_HAS_EDGES = "gremlin.hadoop.graphOutputFormat.hasEdges";
+    @Deprecated
+    public static final String GREMLIN_SPARK_GRAPH_INPUT_RDD = "gremlin.spark.graphInputRDD";
+    @Deprecated
+    public static final String GREMLIN_SPARK_GRAPH_OUTPUT_RDD = "gremlin.spark.graphOutputRDD";
+    //////////////////////
 }
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopGremlinPlugin.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopGremlinPlugin.java
index a090e5b..021f9d3 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopGremlinPlugin.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopGremlinPlugin.java
@@ -80,7 +80,7 @@
         pluginAcceptor.addImports(IMPORTS);
         try {
             pluginAcceptor.addBinding("hdfs", FileSystemStorage.open(FileSystem.get(new Configuration())));
-            pluginAcceptor.addBinding("local", FileSystemStorage.open(FileSystem.getLocal(new Configuration())));
+            pluginAcceptor.addBinding("fs", FileSystemStorage.open(FileSystem.getLocal(new Configuration())));
             if (null == System.getenv(Constants.HADOOP_GREMLIN_LIBS))
                 HadoopGraph.LOGGER.warn("Be sure to set the environmental variable: " + Constants.HADOOP_GREMLIN_LIBS);
             else
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java
index 48db1b0..558376e 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopRemoteAcceptor.java
@@ -27,7 +27,8 @@
 import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ComputerResultStep;
 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.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
 import org.codehaus.groovy.tools.shell.Groovysh;
 
@@ -48,7 +49,6 @@
     private HadoopGraph hadoopGraph;
     private Groovysh shell;
     private boolean useSugar = false;
-    private TraversalSource.Builder useTraversalSource = GraphTraversalSource.computer();
     private TraversalSource traversalSource;
 
     public HadoopRemoteAcceptor(final Groovysh shell) {
@@ -58,12 +58,13 @@
     @Override
     public Object connect(final List<String> args) throws RemoteException {
         if (args.size() != 1 && args.size() != 2) {
-            throw new IllegalArgumentException("Usage: :remote connect " + HadoopGremlinPlugin.NAME + " <variable name of graph> <optional variable name of traversal source builder>");
+            throw new IllegalArgumentException("Usage: :remote connect " + HadoopGremlinPlugin.NAME + " <variable name of graph> <optional variable name of traversal source>");
         }
         this.hadoopGraph = (HadoopGraph) this.shell.getInterp().getContext().getVariable(args.get(0));
         if (args.size() == 2)
-            this.useTraversalSource = ((TraversalSource) this.shell.getInterp().getContext().getVariable(args.get(1))).asBuilder();
-        this.traversalSource = this.useTraversalSource.create(this.hadoopGraph);
+            this.traversalSource = ((TraversalSource) this.shell.getInterp().getContext().getVariable(args.get(1)));
+        else
+            this.traversalSource = this.hadoopGraph.traversal();
         ///
         final HashMap<String, Object> configuration = new HashMap<>();
         configuration.put(USE_SUGAR, this.useSugar);
@@ -77,8 +78,7 @@
             if (args.get(i).equals(USE_SUGAR))
                 this.useSugar = Boolean.valueOf(args.get(i + 1));
             else if (args.get(i).equals(USE_TRAVERSAL_SOURCE)) {
-                this.useTraversalSource = ((TraversalSource) this.shell.getInterp().getContext().getVariable(args.get(i + 1))).asBuilder();
-                this.traversalSource = this.useTraversalSource.create(this.hadoopGraph);
+                this.traversalSource = ((TraversalSource) this.shell.getInterp().getContext().getVariable(args.get(i + 1)));
             } else
                 throw new IllegalArgumentException("The provided configuration is unknown: " + args.get(i) + ":" + args.get(i + 1));
         }
@@ -95,12 +95,13 @@
             String script = RemoteAcceptor.getScript(String.join(SPACE, args), this.shell);
             if (this.useSugar)
                 script = SugarLoader.class.getCanonicalName() + ".load()\n" + script;
-            final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(this.useTraversalSource, "gremlin-groovy", script).create(this.hadoopGraph);
-            final ComputerResult computerResult = this.traversalSource.getGraphComputer().get().program(program).submit().get();
+            final TraversalVertexProgram program = TraversalVertexProgram.build().traversal(this.traversalSource, "gremlin-groovy", script).create(this.hadoopGraph);
+            final ComputerResult computerResult = VertexProgramStrategy.getComputer(this.traversalSource.getStrategies()).get().apply(this.hadoopGraph).program(program).submit().get();
             this.shell.getInterp().getContext().setVariable(RESULT, computerResult);
             ///
-            final Traversal.Admin<?, ?> traversal = new DefaultTraversal<>(computerResult.graph());
-            traversal.addStep(new ComputerResultStep<>(traversal, computerResult, false));
+            final Traversal.Admin<ComputerResult, ?> traversal = new DefaultTraversal<>(computerResult.graph());
+            traversal.addStep(new ComputerResultStep<>(traversal));
+            traversal.addStart(traversal.getTraverserGenerator().generate(computerResult, EmptyStep.instance(), 1l));
             return traversal;
         } catch (final Exception e) {
             throw new RemoteException(e);
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/AbstractHadoopGraphComputer.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/AbstractHadoopGraphComputer.java
index 1553240..6a68046 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/AbstractHadoopGraphComputer.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/AbstractHadoopGraphComputer.java
@@ -18,30 +18,46 @@
  */
 package org.apache.tinkerpop.gremlin.hadoop.process.computer;
 
-import org.apache.hadoop.io.NullWritable;
-import org.apache.hadoop.mapreduce.OutputFormat;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.LocatedFileStatus;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.fs.RemoteIterator;
 import org.apache.hadoop.util.ReflectionUtils;
 import org.apache.tinkerpop.gremlin.hadoop.Constants;
 import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
-import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
 import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.util.GraphComputerHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.util.Gremlin;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.HashSet;
 import java.util.Optional;
 import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public abstract class AbstractHadoopGraphComputer implements GraphComputer {
 
+    private final static Pattern PATH_PATTERN =
+            Pattern.compile(File.pathSeparator.equals(":") ? "([^:]|://)+" : ("[^" + File.pathSeparator + "]"));
+
     protected final Logger logger;
     protected final HadoopGraph hadoopGraph;
     protected boolean executed = false;
@@ -52,12 +68,26 @@
     protected ResultGraph resultGraph = null;
     protected Persist persist = null;
 
+    protected GraphFilter graphFilter = new GraphFilter();
+
     public AbstractHadoopGraphComputer(final HadoopGraph hadoopGraph) {
         this.hadoopGraph = hadoopGraph;
         this.logger = LoggerFactory.getLogger(this.getClass());
     }
 
     @Override
+    public GraphComputer vertices(final Traversal<Vertex, Vertex> vertexFilter) {
+        this.graphFilter.setVertexFilter(vertexFilter);
+        return this;
+    }
+
+    @Override
+    public GraphComputer edges(final Traversal<Vertex, Edge> edgeFilter) {
+        this.graphFilter.setEdgeFilter(edgeFilter);
+        return this;
+    }
+
+    @Override
     public GraphComputer result(final ResultGraph resultGraph) {
         this.resultGraph = resultGraph;
         return this;
@@ -117,6 +147,43 @@
             throw GraphComputer.Exceptions.computerRequiresMoreWorkersThanSupported(this.workers, this.features().getMaxWorkers());
     }
 
+    protected void loadJars(final Configuration hadoopConfiguration, final Object... params) {
+        if (hadoopConfiguration.getBoolean(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, true)) {
+            final String hadoopGremlinLibs = null == System.getProperty(Constants.HADOOP_GREMLIN_LIBS) ? System.getenv(Constants.HADOOP_GREMLIN_LIBS) : System.getProperty(Constants.HADOOP_GREMLIN_LIBS);
+            if (null == hadoopGremlinLibs)
+                this.logger.warn(Constants.HADOOP_GREMLIN_LIBS + " is not set -- proceeding regardless");
+            else {
+                try {
+                    final Matcher matcher = PATH_PATTERN.matcher(hadoopGremlinLibs);
+                    while (matcher.find()) {
+                        final String path = matcher.group();
+                        FileSystem fs;
+                        try {
+                            final URI uri = new URI(path);
+                            fs = FileSystem.get(uri, hadoopConfiguration);
+                        } catch (URISyntaxException e) {
+                            fs = FileSystem.get(hadoopConfiguration);
+                        }
+                        final File file = AbstractHadoopGraphComputer.copyDirectoryIfNonExistent(fs, path);
+                        if (file.exists()) {
+                            for (final File f : file.listFiles()) {
+                                if (f.getName().endsWith(Constants.DOT_JAR)) {
+                                    loadJar(hadoopConfiguration, f, params);
+                                }
+                            }
+                        } else
+                            this.logger.warn(path + " does not reference a valid directory -- proceeding regardless");
+                    }
+                } catch (IOException e) {
+                    throw new IllegalStateException(e.getMessage(), e);
+                }
+            }
+        }
+    }
+
+    protected abstract void loadJar(final Configuration hadoopConfiguration, final File file, final Object... params)
+            throws IOException;
+
     @Override
     public Features features() {
         return new Features();
@@ -161,16 +228,16 @@
 
         @Override
         public boolean supportsResultGraphPersistCombination(final ResultGraph resultGraph, final Persist persist) {
-            if (hadoopGraph.configuration().containsKey(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT)) {
-                final OutputFormat<NullWritable, VertexWritable> outputFormat = ReflectionUtils.newInstance(hadoopGraph.configuration().getGraphOutputFormat(), ConfUtil.makeHadoopConfiguration(hadoopGraph.configuration()));
-                if (outputFormat instanceof PersistResultGraphAware)
-                    return ((PersistResultGraphAware) outputFormat).supportsResultGraphPersistCombination(resultGraph, persist);
+            if (hadoopGraph.configuration().containsKey(Constants.GREMLIN_HADOOP_GRAPH_WRITER)) {
+                final Object writer = ReflectionUtils.newInstance(hadoopGraph.configuration().getGraphWriter(), ConfUtil.makeHadoopConfiguration(hadoopGraph.configuration()));
+                if (writer instanceof PersistResultGraphAware)
+                    return ((PersistResultGraphAware) writer).supportsResultGraphPersistCombination(resultGraph, persist);
                 else {
-                    logger.warn(outputFormat.getClass() + " does not implement " + PersistResultGraphAware.class.getSimpleName() + " and thus, persistence options are unknown -- assuming all options are possible");
+                    logger.warn(writer.getClass() + " does not implement " + PersistResultGraphAware.class.getSimpleName() + " and thus, persistence options are unknown -- assuming all options are possible");
                     return true;
                 }
             } else {
-                logger.warn("Unknown OutputFormat class and thus, persistence options are unknown -- assuming all options are possible");
+                logger.warn("No " + Constants.GREMLIN_HADOOP_GRAPH_WRITER + " property provided and thus, persistence options are unknown -- assuming all options are possible");
                 return true;
             }
         }
@@ -180,4 +247,27 @@
             return false;
         }
     }
+
+    //////////
+
+    public static File copyDirectoryIfNonExistent(final FileSystem fileSystem, final String directory) {
+        try {
+            final String hadoopGremlinLibsRemote = "hadoop-gremlin-" + Gremlin.version() + "-libs";
+            final Path path = new Path(directory);
+            if (Boolean.valueOf(System.getProperty("is.testing", "false")) || (fileSystem.exists(path) && fileSystem.isDirectory(path))) {
+                final File tempDirectory = new File(System.getProperty("java.io.tmpdir") + File.separator + hadoopGremlinLibsRemote);
+                assert tempDirectory.exists() || tempDirectory.mkdirs();
+                final String tempPath = tempDirectory.getAbsolutePath() + File.separator + path.getName();
+                final RemoteIterator<LocatedFileStatus> files = fileSystem.listFiles(path, false);
+                while (files.hasNext()) {
+                    final LocatedFileStatus f = files.next();
+                    fileSystem.copyToLocalFile(false, f.getPath(), new Path(tempPath + System.getProperty("file.separator") + f.getPath().getName()), true);
+                }
+                return new File(tempPath);
+            } else
+                return new File(directory);
+        } catch (final IOException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
 }
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/GraphFilterInputFormat.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/GraphFilterInputFormat.java
new file mode 100644
index 0000000..048b38e
--- /dev/null
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/GraphFilterInputFormat.java
@@ -0,0 +1,63 @@
+/*
+ * 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.hadoop.process.computer;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.io.NullWritable;
+import org.apache.hadoop.mapreduce.InputFormat;
+import org.apache.hadoop.mapreduce.InputSplit;
+import org.apache.hadoop.mapreduce.JobContext;
+import org.apache.hadoop.mapreduce.RecordReader;
+import org.apache.hadoop.mapreduce.TaskAttemptContext;
+import org.apache.hadoop.util.ReflectionUtils;
+import org.apache.tinkerpop.gremlin.hadoop.Constants;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.GraphFilterAware;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * GraphFilterInputFormat is a utility {@link InputFormat} that is useful if the underlying InputFormat is not {@link GraphFilterAware}.
+ * If the underlying InputFormat is GraphFilterAware, then GraphFilterInputFormat acts as an identity mapping.
+ * If the underlying InputFormat is not GraphFilterAware, then GraphFilterInputFormat will apply the respective {@link GraphFilter}
+ * and prune the loaded source graph data accordingly.
+ *
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class GraphFilterInputFormat extends InputFormat<NullWritable, VertexWritable> implements GraphFilterAware {
+
+    @Override
+    public List<InputSplit> getSplits(final JobContext jobContext) throws IOException, InterruptedException {
+        final Configuration configuration = jobContext.getConfiguration();
+        return ReflectionUtils.newInstance(configuration.getClass(Constants.GREMLIN_HADOOP_GRAPH_READER, InputFormat.class, InputFormat.class), configuration).getSplits(jobContext);
+    }
+
+    @Override
+    public RecordReader<NullWritable, VertexWritable> createRecordReader(final InputSplit inputSplit, final TaskAttemptContext taskAttemptContext) throws IOException, InterruptedException {
+        return new GraphFilterRecordReader();
+    }
+
+    @Override
+    public void setGraphFilter(final GraphFilter graphFilter) {
+        // do nothing -- loaded via configuration
+    }
+}
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/GraphFilterRecordReader.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/GraphFilterRecordReader.java
new file mode 100644
index 0000000..e08e2a0
--- /dev/null
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/GraphFilterRecordReader.java
@@ -0,0 +1,100 @@
+/*
+ * 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.hadoop.process.computer;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.io.NullWritable;
+import org.apache.hadoop.mapreduce.InputFormat;
+import org.apache.hadoop.mapreduce.InputSplit;
+import org.apache.hadoop.mapreduce.RecordReader;
+import org.apache.hadoop.mapreduce.TaskAttemptContext;
+import org.apache.hadoop.util.ReflectionUtils;
+import org.apache.tinkerpop.gremlin.hadoop.Constants;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.GraphFilterAware;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
+import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
+import org.apache.tinkerpop.gremlin.process.computer.util.VertexProgramHelper;
+import org.apache.tinkerpop.gremlin.structure.util.star.StarGraph;
+
+import java.io.IOException;
+import java.util.Optional;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class GraphFilterRecordReader extends RecordReader<NullWritable, VertexWritable> {
+
+    private GraphFilter graphFilter = null;
+    private RecordReader<NullWritable, VertexWritable> recordReader;
+
+    public GraphFilterRecordReader() {
+    }
+
+    @Override
+    public void initialize(final InputSplit inputSplit, final TaskAttemptContext taskAttemptContext) throws IOException, InterruptedException {
+        final Configuration configuration = taskAttemptContext.getConfiguration();
+        final InputFormat<NullWritable, VertexWritable> inputFormat = ReflectionUtils.newInstance(configuration.getClass(Constants.GREMLIN_HADOOP_GRAPH_READER, InputFormat.class, InputFormat.class), configuration);
+        if (!(inputFormat instanceof GraphFilterAware) && configuration.get(Constants.GREMLIN_HADOOP_GRAPH_FILTER, null) != null)
+            this.graphFilter = VertexProgramHelper.deserialize(ConfUtil.makeApacheConfiguration(configuration), Constants.GREMLIN_HADOOP_GRAPH_FILTER);
+        this.recordReader = inputFormat.createRecordReader(inputSplit, taskAttemptContext);
+        this.recordReader.initialize(inputSplit, taskAttemptContext);
+    }
+
+    @Override
+    public boolean nextKeyValue() throws IOException, InterruptedException {
+        if (null == this.graphFilter) {
+            return this.recordReader.nextKeyValue();
+        } else {
+            while (true) {
+                if (this.recordReader.nextKeyValue()) {
+                    final VertexWritable vertexWritable = this.recordReader.getCurrentValue();
+                    final Optional<StarGraph.StarVertex> vertex = vertexWritable.get().applyGraphFilter(this.graphFilter);
+                    if (vertex.isPresent()) {
+                        vertexWritable.set(vertex.get());
+                        return true;
+                    }
+                } else {
+                    return false;
+                }
+            }
+        }
+    }
+
+    @Override
+    public NullWritable getCurrentKey() throws IOException, InterruptedException {
+        return NullWritable.get();
+    }
+
+    @Override
+    public VertexWritable getCurrentValue() throws IOException, InterruptedException {
+        return this.recordReader.getCurrentValue();
+    }
+
+    @Override
+    public float getProgress() throws IOException, InterruptedException {
+        return this.recordReader.getProgress();
+    }
+
+    @Override
+    public void close() throws IOException {
+        this.recordReader.close();
+    }
+}
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopCombine.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopCombine.java
index de1e2f9..06778e6 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopCombine.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopCombine.java
@@ -25,6 +25,7 @@
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritable;
 import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimServiceLoader;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -47,7 +48,7 @@
     @Override
     public void setup(final Reducer<ObjectWritable, ObjectWritable, ObjectWritable, ObjectWritable>.Context context) {
         final Configuration apacheConfiguration = ConfUtil.makeApacheConfiguration(context.getConfiguration());
-        HadoopPools.initialize(apacheConfiguration);
+        KryoShimServiceLoader.applyConfiguration(apacheConfiguration);
         this.mapReduce = MapReduce.createMapReduce(HadoopGraph.open(apacheConfiguration), apacheConfiguration);
         this.mapReduce.workerStart(MapReduce.Stage.COMBINE);
     }
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopMap.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopMap.java
index 9e6fac3..5fc7026 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopMap.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopMap.java
@@ -28,6 +28,7 @@
 import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
 import org.apache.tinkerpop.gremlin.process.computer.util.ComputerGraph;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimServiceLoader;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -50,7 +51,7 @@
     @Override
     public void setup(final Mapper<NullWritable, VertexWritable, ObjectWritable, ObjectWritable>.Context context) {
         final Configuration apacheConfiguration = ConfUtil.makeApacheConfiguration(context.getConfiguration());
-        HadoopPools.initialize(apacheConfiguration);
+        KryoShimServiceLoader.applyConfiguration(apacheConfiguration);
         this.mapReduce = MapReduce.createMapReduce(HadoopGraph.open(apacheConfiguration), apacheConfiguration);
         this.mapReduce.workerStart(MapReduce.Stage.MAP);
     }
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopReduce.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopReduce.java
index 06dfba1..6ca7b8f 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopReduce.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/HadoopReduce.java
@@ -25,6 +25,7 @@
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritable;
 import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimServiceLoader;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -47,7 +48,7 @@
     @Override
     public void setup(final Reducer<ObjectWritable, ObjectWritable, ObjectWritable, ObjectWritable>.Context context) {
         final Configuration apacheConfiguration = ConfUtil.makeApacheConfiguration(context.getConfiguration());
-        HadoopPools.initialize(apacheConfiguration);
+        KryoShimServiceLoader.applyConfiguration(apacheConfiguration);
         this.mapReduce = MapReduce.createMapReduce(HadoopGraph.open(apacheConfiguration), apacheConfiguration);
         this.mapReduce.workerStart(MapReduce.Stage.REDUCE);
     }
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/util/ComputerSubmissionHelper.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/util/ComputerSubmissionHelper.java
index daad7ef..2f4625f 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/util/ComputerSubmissionHelper.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/util/ComputerSubmissionHelper.java
@@ -31,7 +31,7 @@
 
 import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
 
-public class ComputerSubmissionHelper {
+public final class ComputerSubmissionHelper {
 
     /**
      * Creates a {@link Executors#newSingleThreadExecutor(ThreadFactory)} configured
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/util/MapReduceHelper.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/util/MapReduceHelper.java
index 6e0cd9e..88474b2 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/util/MapReduceHelper.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/util/MapReduceHelper.java
@@ -22,7 +22,6 @@
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.mapreduce.InputFormat;
 import org.apache.hadoop.mapreduce.Job;
 import org.apache.hadoop.mapreduce.Mapper;
 import org.apache.hadoop.mapreduce.OutputFormat;
@@ -32,6 +31,7 @@
 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
 import org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat;
 import org.apache.tinkerpop.gremlin.hadoop.Constants;
+import org.apache.tinkerpop.gremlin.hadoop.process.computer.GraphFilterInputFormat;
 import org.apache.tinkerpop.gremlin.hadoop.process.computer.HadoopCombine;
 import org.apache.tinkerpop.gremlin.hadoop.process.computer.HadoopMap;
 import org.apache.tinkerpop.gremlin.hadoop.process.computer.HadoopReduce;
@@ -58,79 +58,80 @@
     }
 
     public static void executeMapReduceJob(final MapReduce mapReduce, final Memory.Admin memory, final Configuration configuration) throws IOException, ClassNotFoundException, InterruptedException {
-        final boolean vertexProgramExists = configuration.get(VertexProgram.VERTEX_PROGRAM, null) != null;
         final Configuration newConfiguration = new Configuration(configuration);
+        final boolean vertexProgramExists = newConfiguration.get(VertexProgram.VERTEX_PROGRAM, null) != null;
+        if (vertexProgramExists) {
+            newConfiguration.set(Constants.GREMLIN_HADOOP_GRAPH_READER, InputOutputHelper.getInputFormat((Class) newConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_WRITER, OutputFormat.class)).getCanonicalName());
+            newConfiguration.unset(Constants.GREMLIN_HADOOP_GRAPH_FILTER);
+        }
         final BaseConfiguration apacheConfiguration = new BaseConfiguration();
         apacheConfiguration.setDelimiterParsingDisabled(true);
         mapReduce.storeState(apacheConfiguration);
         ConfUtil.mergeApacheIntoHadoopConfiguration(apacheConfiguration, newConfiguration);
-        if (!mapReduce.doStage(MapReduce.Stage.MAP)) {
-            final Path memoryPath = new Path(Constants.getMemoryLocation(configuration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION), mapReduce.getMemoryKey()));
-            mapReduce.addResultToMemory(memory, new ObjectWritableIterator(configuration, memoryPath));
+
+        final Optional<Comparator<?>> mapSort = mapReduce.getMapKeySort();
+        final Optional<Comparator<?>> reduceSort = mapReduce.getReduceKeySort();
+        newConfiguration.setClass(Constants.GREMLIN_HADOOP_MAP_REDUCE_CLASS, mapReduce.getClass(), MapReduce.class);
+        final Job job = Job.getInstance(newConfiguration, mapReduce.toString());
+        HadoopGraph.LOGGER.info(Constants.GREMLIN_HADOOP_JOB_PREFIX + mapReduce.toString());
+        job.setJarByClass(HadoopGraph.class);
+        if (mapSort.isPresent())
+            job.setSortComparatorClass(ObjectWritableComparator.ObjectWritableMapComparator.class);
+        job.setMapperClass(HadoopMap.class);
+        if (mapReduce.doStage(MapReduce.Stage.REDUCE)) {
+            if (mapReduce.doStage(MapReduce.Stage.COMBINE))
+                job.setCombinerClass(HadoopCombine.class);
+            job.setReducerClass(HadoopReduce.class);
         } else {
-            final Optional<Comparator<?>> mapSort = mapReduce.getMapKeySort();
-            final Optional<Comparator<?>> reduceSort = mapReduce.getReduceKeySort();
-
-            newConfiguration.setClass(Constants.GREMLIN_HADOOP_MAP_REDUCE_CLASS, mapReduce.getClass(), MapReduce.class);
-            final Job job = Job.getInstance(newConfiguration, mapReduce.toString());
-            HadoopGraph.LOGGER.info(Constants.GREMLIN_HADOOP_JOB_PREFIX + mapReduce.toString());
-            job.setJarByClass(HadoopGraph.class);
-            if (mapSort.isPresent())
-                job.setSortComparatorClass(ObjectWritableComparator.ObjectWritableMapComparator.class);
-            job.setMapperClass(HadoopMap.class);
-            if (mapReduce.doStage(MapReduce.Stage.REDUCE)) {
-                if (mapReduce.doStage(MapReduce.Stage.COMBINE))
-                    job.setCombinerClass(HadoopCombine.class);
-                job.setReducerClass(HadoopReduce.class);
+            if (mapSort.isPresent()) {
+                job.setReducerClass(Reducer.class);
+                job.setNumReduceTasks(1); // todo: is this necessary to ensure sorted order?
             } else {
-                if (mapSort.isPresent()) {
-                    job.setReducerClass(Reducer.class);
-                    job.setNumReduceTasks(1); // todo: is this necessary to ensure sorted order?
-                } else {
-                    job.setNumReduceTasks(0);
-                }
+                job.setNumReduceTasks(0);
             }
-            job.setMapOutputKeyClass(ObjectWritable.class);
-            job.setMapOutputValueClass(ObjectWritable.class);
-            job.setOutputKeyClass(ObjectWritable.class);
-            job.setOutputValueClass(ObjectWritable.class);
-            job.setInputFormatClass(vertexProgramExists ?
-                    InputOutputHelper.getInputFormat((Class) newConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT, OutputFormat.class)) :
-                    (Class) newConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, InputFormat.class));
-            job.setOutputFormatClass(SequenceFileOutputFormat.class);
-            // if there is no vertex program, then grab the graph from the input location
-            final Path graphPath = vertexProgramExists ?
-                    new Path(Constants.getGraphLocation(newConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION))) :
-                    new Path(newConfiguration.get(Constants.GREMLIN_HADOOP_INPUT_LOCATION));
-            Path memoryPath = new Path(Constants.getMemoryLocation(newConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION), (reduceSort.isPresent() ? mapReduce.getMemoryKey() + "-temp" : mapReduce.getMemoryKey())));
-            if (FileSystem.get(newConfiguration).exists(memoryPath)) {
-                FileSystem.get(newConfiguration).delete(memoryPath, true);
-            }
-            FileInputFormat.setInputPaths(job, graphPath);
-            FileOutputFormat.setOutputPath(job, memoryPath);
-            job.waitForCompletion(true);
-
-            // if there is a reduce sort, we need to run another identity MapReduce job
-            if (reduceSort.isPresent()) {
-                final Job reduceSortJob = Job.getInstance(newConfiguration, "ReduceKeySort");
-                reduceSortJob.setSortComparatorClass(ObjectWritableComparator.ObjectWritableReduceComparator.class);
-                reduceSortJob.setMapperClass(Mapper.class);
-                reduceSortJob.setReducerClass(Reducer.class);
-                reduceSortJob.setMapOutputKeyClass(ObjectWritable.class);
-                reduceSortJob.setMapOutputValueClass(ObjectWritable.class);
-                reduceSortJob.setOutputKeyClass(ObjectWritable.class);
-                reduceSortJob.setOutputValueClass(ObjectWritable.class);
-                reduceSortJob.setInputFormatClass(SequenceFileInputFormat.class);
-                reduceSortJob.setOutputFormatClass(SequenceFileOutputFormat.class);
-                reduceSortJob.setNumReduceTasks(1); // todo: is this necessary to ensure sorted order?
-                FileInputFormat.setInputPaths(reduceSortJob, memoryPath);
-                final Path sortedMemoryPath = new Path(Constants.getMemoryLocation(newConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION), mapReduce.getMemoryKey()));
-                FileOutputFormat.setOutputPath(reduceSortJob, sortedMemoryPath);
-                reduceSortJob.waitForCompletion(true);
-                FileSystem.get(newConfiguration).delete(memoryPath, true); // delete the temporary memory path
-                memoryPath = sortedMemoryPath;
-            }
-            mapReduce.addResultToMemory(memory, new ObjectWritableIterator(configuration, memoryPath));
         }
+        job.setMapOutputKeyClass(ObjectWritable.class);
+        job.setMapOutputValueClass(ObjectWritable.class);
+        job.setOutputKeyClass(ObjectWritable.class);
+        job.setOutputValueClass(ObjectWritable.class);
+        job.setInputFormatClass(GraphFilterInputFormat.class);
+        job.setOutputFormatClass(SequenceFileOutputFormat.class);
+        // if there is no vertex program, then grab the graph from the input location
+        final Path graphPath;
+        if (vertexProgramExists) {
+            graphPath = new Path(Constants.getGraphLocation(newConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION)));
+        } else {
+            graphPath = new Path(newConfiguration.get(Constants.GREMLIN_HADOOP_INPUT_LOCATION));
+        }
+
+        Path memoryPath = new Path(Constants.getMemoryLocation(newConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION), (reduceSort.isPresent() ? mapReduce.getMemoryKey() + "-temp" : mapReduce.getMemoryKey())));
+        if (FileSystem.get(newConfiguration).exists(memoryPath)) {
+            FileSystem.get(newConfiguration).delete(memoryPath, true);
+        }
+        FileInputFormat.setInputPaths(job, graphPath);
+        FileOutputFormat.setOutputPath(job, memoryPath);
+        job.waitForCompletion(true);
+
+        // if there is a reduce sort, we need to run another identity MapReduce job
+        if (reduceSort.isPresent()) {
+            final Job reduceSortJob = Job.getInstance(newConfiguration, "ReduceKeySort");
+            reduceSortJob.setSortComparatorClass(ObjectWritableComparator.ObjectWritableReduceComparator.class);
+            reduceSortJob.setMapperClass(Mapper.class);
+            reduceSortJob.setReducerClass(Reducer.class);
+            reduceSortJob.setMapOutputKeyClass(ObjectWritable.class);
+            reduceSortJob.setMapOutputValueClass(ObjectWritable.class);
+            reduceSortJob.setOutputKeyClass(ObjectWritable.class);
+            reduceSortJob.setOutputValueClass(ObjectWritable.class);
+            reduceSortJob.setInputFormatClass(SequenceFileInputFormat.class);
+            reduceSortJob.setOutputFormatClass(SequenceFileOutputFormat.class);
+            reduceSortJob.setNumReduceTasks(1); // todo: is this necessary to ensure sorted order?
+            FileInputFormat.setInputPaths(reduceSortJob, memoryPath);
+            final Path sortedMemoryPath = new Path(Constants.getMemoryLocation(newConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION), mapReduce.getMemoryKey()));
+            FileOutputFormat.setOutputPath(reduceSortJob, sortedMemoryPath);
+            reduceSortJob.waitForCompletion(true);
+            FileSystem.get(newConfiguration).delete(memoryPath, true); // delete the temporary memory path
+            memoryPath = sortedMemoryPath;
+        }
+        mapReduce.addResultToMemory(memory, new ObjectWritableIterator(newConfiguration, memoryPath));
     }
 }
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/util/Rule.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/util/Rule.java
deleted file mode 100644
index e4648c0..0000000
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/util/Rule.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * 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.hadoop.process.computer.util;
-
-import org.apache.hadoop.io.Writable;
-import org.apache.hadoop.io.WritableUtils;
-import org.apache.tinkerpop.gremlin.util.Serializer;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-import java.io.Serializable;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class Rule implements Writable, Serializable {
-
-    public enum Operation {
-        OR {
-            public Boolean compute(final Object first, final Object second) {
-                if (null == first)
-                    return (Boolean) second;
-                else if (null == second)
-                    return (Boolean) first;
-                else
-                    return (Boolean) first || (Boolean) second;
-            }
-        }, AND {
-            public Boolean compute(final Object first, final Object second) {
-                if (null == first)
-                    return (Boolean) second;
-                else if (null == second)
-                    return (Boolean) first;
-                else
-                    return (Boolean) first && (Boolean) second;
-            }
-        }, INCR {
-            public Long compute(final Object first, final Object second) {
-                if (null == first)
-                    return (Long) second;
-                else if (null == second)
-                    return (Long) first;
-                else
-                    return (Long) first + (Long) second;
-
-            }
-        }, SET {
-            public Object compute(final Object first, final Object second) {
-                return null == second ? first : second;
-            }
-        }, NO_OP {
-            public Object compute(final Object first, final Object second) {
-                return null == first ? second : first;
-            }
-        };
-
-        public abstract Object compute(final Object first, final Object second);
-    }
-
-    private Operation operation;
-    private Object object;
-
-    public Rule(final Operation operation, final Object object) {
-        this.operation = operation;
-        this.object = object;
-    }
-
-    public Operation getOperation() {
-        return this.operation;
-    }
-
-    public <R> R getObject() {
-        return (R) this.object;
-    }
-
-    public String toString() {
-        return "rule[" + this.operation + ":" + this.object + "]";
-    }
-
-    @Override
-    public void write(final DataOutput output) throws IOException {
-        WritableUtils.writeVInt(output, this.operation.ordinal());
-        final byte[] objectBytes = Serializer.serializeObject(this.object);
-        WritableUtils.writeVInt(output, objectBytes.length);
-        output.write(objectBytes);
-    }
-
-    @Override
-    public void readFields(final DataInput input) throws IOException {
-        this.operation = Operation.values()[WritableUtils.readVInt(input)];
-        final int objectLength = WritableUtils.readVInt(input);
-        final byte[] objectBytes = new byte[objectLength];
-        for (int i = 0; i < objectLength; i++) {
-            objectBytes[i] = input.readByte();
-        }
-        try {
-            this.object = Serializer.deserializeObject(objectBytes);
-        } catch (final ClassNotFoundException e) {
-            throw new IOException(e.getMessage(), e);
-        }
-    }
-}
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopConfiguration.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopConfiguration.java
index 244ead9..9aac248 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopConfiguration.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopConfiguration.java
@@ -52,12 +52,12 @@
 
     @Override
     protected void addPropertyDirect(final String key, final Object value) {
-        this.properties.put(key, value);
+        this.properties.put(convertKey(key), value);
     }
 
     @Override
     protected void clearPropertyDirect(final String key) {
-        this.properties.remove(key);
+        this.properties.remove(convertKey(key));
     }
 
     @Override
@@ -67,12 +67,12 @@
 
     @Override
     public boolean containsKey(final String key) {
-        return this.properties.containsKey(key);
+        return this.properties.containsKey(convertKey(key));
     }
 
     @Override
     public Object getProperty(final String key) {
-        return this.properties.get(key);
+        return this.properties.get(convertKey(key));
     }
 
     @Override
@@ -80,19 +80,61 @@
         return this.properties.keySet().iterator();
     }
 
+    @Deprecated
+    private static String convertKey(final String key) {
+        if (key.equals(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT))
+            return Constants.GREMLIN_HADOOP_GRAPH_READER;
+        else if (key.equals(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT))
+            return Constants.GREMLIN_HADOOP_GRAPH_WRITER;
+        else if (key.equals(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD))
+            return Constants.GREMLIN_HADOOP_GRAPH_READER;
+        else if (key.equals(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD))
+            return Constants.GREMLIN_HADOOP_GRAPH_WRITER;
+        else if (key.equals(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT_HAS_EDGES))
+            return Constants.GREMLIN_HADOOP_GRAPH_READER_HAS_EDGES;
+        else if (key.equals(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT_HAS_EDGES))
+            return Constants.GREMLIN_HADOOP_GRAPH_WRITER_HAS_EDGES;
+        else
+            return key;
+    }
+
     ///////
 
-    public Class<InputFormat<NullWritable, VertexWritable>> getGraphInputFormat() {
+    public <A> Class<A> getGraphReader() {
         try {
-            return (Class) Class.forName(this.getString(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT));
+            return (Class) Class.forName(this.getString(Constants.GREMLIN_HADOOP_GRAPH_READER));
         } catch (final ClassNotFoundException e) {
             throw new RuntimeException(e.getMessage(), e);
         }
     }
 
+    public <A> Class<A> getGraphWriter() {
+        try {
+            return (Class) Class.forName(this.getString(Constants.GREMLIN_HADOOP_GRAPH_WRITER));
+        } catch (final ClassNotFoundException e) {
+            throw new RuntimeException(e.getMessage(), e);
+        }
+    }
+
+    /**
+     * @deprecated Since 3.2.0, please use {@link HadoopConfiguration#getGraphReader()}.
+     */
+    @Deprecated
+    public Class<InputFormat<NullWritable, VertexWritable>> getGraphInputFormat() {
+        try {
+            return (Class) Class.forName(this.getString(Constants.GREMLIN_HADOOP_GRAPH_READER));
+        } catch (final ClassNotFoundException e) {
+            throw new RuntimeException(e.getMessage(), e);
+        }
+    }
+
+    /**
+     * @deprecated Since 3.2.0, please use {@link HadoopConfiguration#getGraphWriter()}.
+     */
+    @Deprecated
     public Class<OutputFormat<NullWritable, VertexWritable>> getGraphOutputFormat() {
         try {
-            return (Class) Class.forName(this.getString(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT));
+            return (Class) Class.forName(this.getString(Constants.GREMLIN_HADOOP_GRAPH_WRITER));
         } catch (final ClassNotFoundException e) {
             throw new RuntimeException(e.getMessage(), e);
         }
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java
index 66f909c..d0f50d0 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java
@@ -22,13 +22,10 @@
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.PropertiesConfiguration;
-import org.apache.hadoop.mapred.OutputFormat;
-import org.apache.hadoop.mapreduce.InputFormat;
 import org.apache.tinkerpop.gremlin.hadoop.Constants;
 import org.apache.tinkerpop.gremlin.hadoop.process.computer.AbstractHadoopGraphComputer;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.HadoopEdgeIterator;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.HadoopVertexIterator;
-import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -56,126 +53,203 @@
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest$Traversals",
         method = "g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__a_0sungBy_bX",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest$Traversals",
         method = "g_V_matchXa_0sungBy_b__a_0sungBy_c__b_writtenBy_d__c_writtenBy_e__d_hasXname_George_HarisonX__e_hasXname_Bob_MarleyXX",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest$Traversals",
         method = "g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest$Traversals",
         method = "g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_dX_whereXc_sungBy_dX_whereXd_hasXname_GarciaXX",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest$Traversals",
         method = "g_V_matchXa_knows_b__c_knows_bX",
-        reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.")
-//computers = {GiraphGraphComputer.class})
+        reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.",
+        computers = {"org.apache.tinkerpop.gremlin.giraph.process.computer.GiraphGraphComputer"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest$Traversals",
         method = "g_V_matchXa_created_b__c_created_bX_selectXa_b_cX_byXnameX",
-        reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.")
-//computers = {GiraphGraphComputer.class})
+        reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.",
+        computers = {"org.apache.tinkerpop.gremlin.giraph.process.computer.GiraphGraphComputer"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest$Traversals",
         method = "g_V_out_asXcX_matchXb_knows_a__c_created_eX_selectXcX",
-        reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.")
-// computers = {GiraphGraphComputer.class})
+        reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.",
+        computers = {"org.apache.tinkerpop.gremlin.giraph.process.computer.GiraphGraphComputer"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals",
         method = "g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__a_0sungBy_bX",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals",
         method = "g_V_matchXa_knows_b__c_knows_bX",
-        reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.")
-//computers = {GiraphGraphComputer.class})
+        reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.",
+        computers = {"org.apache.tinkerpop.gremlin.giraph.process.computer.GiraphGraphComputer"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals",
         method = "g_V_matchXa_created_b__c_created_bX_selectXa_b_cX_byXnameX",
-        reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.")
-//computers = {GiraphGraphComputer.class})
+        reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.",
+        computers = {"org.apache.tinkerpop.gremlin.giraph.process.computer.GiraphGraphComputer"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals",
         method = "g_V_out_asXcX_matchXb_knows_a__c_created_eX_selectXcX",
-        reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.")
-//computers = {GiraphGraphComputer.class})
+        reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.",
+        computers = {"org.apache.tinkerpop.gremlin.giraph.process.computer.GiraphGraphComputer"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals",
         method = "g_V_matchXa_0sungBy_b__a_0sungBy_c__b_writtenBy_d__c_writtenBy_e__d_hasXname_George_HarisonX__e_hasXname_Bob_MarleyXX",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer"})  // this is a nasty long test, just do it once in Java MatchTest
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals",
         method = "g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyMatchTest$Traversals",
         method = "g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_dX_whereXc_sungBy_dX_whereXd_hasXname_GarciaXX",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest$Traversals",
         method = "g_V_both_both_count",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest$Traversals",
         method = "g_V_repeatXoutX_timesX3X_count",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest$Traversals",
         method = "g_V_repeatXoutX_timesX8X_count",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest$Traversals",
         method = "g_V_repeatXoutX_timesX5X_asXaX_outXwrittenByX_asXbX_selectXa_bX_count",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest$Traversals",
         method = "g_V_both_both_count",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest$Traversals",
         method = "g_V_repeatXoutX_timesX3X_count",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest$Traversals",
         method = "g_V_repeatXoutX_timesX8X_count",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest$Traversals",
         method = "g_V_repeatXoutX_timesX5X_asXaX_outXwrittenByX_asXbX_selectXa_bX_count",
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.ProfileTest$Traversals",
+        method = "grateful_V_out_out_profile",
         reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
 @Graph.OptOut(
-        test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileTest$Traversals",
-        method = "g_V_out_out_profile_grateful",
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.ProfileTest$Traversals",
+        method = "grateful_V_out_out_profileXmetricsX",
         reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
 @Graph.OptOut(
-        test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyProfileTest$Traversals",
-        method = "g_V_out_out_profile_grateful",
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyProfileTest$Traversals",
+        method = "grateful_V_out_out_profile",
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyProfileTest$Traversals",
+        method = "grateful_V_out_out_profileXmetricsX",
         reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTest",
+        method = "g_V_hasLabelXsongX_groupXaX_byXnameX_byXproperties_groupCount_byXlabelXX_out_capXaX",
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTest",
+        method = "g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX",
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTest",
         method = "g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTest",
         method = "g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTestV3d0",
         method = "g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTestV3d0",
         method = "g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTest$Traversals",
+        method = "g_V_hasLabelXsongX_groupXaX_byXnameX_byXproperties_groupCount_byXlabelXX_out_capXaX",
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTest$Traversals",
+        method = "g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX",
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTest$Traversals",
+        method = "g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX",
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTest$Traversals",
+        method = "g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX",
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTestV3d0$Traversals",
+        method = "g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX",
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroovyGroupTestV3d0$Traversals",
+        method = "g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX",
+        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.",
+        computers = {"ALL"})
 @Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.computer.GraphComputerTest",
         method = "shouldStartAndEndWorkersForVertexProgramAndMapReduce",
         reason = "Spark executes map and combine in a lazy fashion and thus, fails the blocking aspect of this test",
         computers = {"org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer"})
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionTest",
+        method = "*",
+        reason = "The interruption model in the test can't guarantee interruption at the right time with HadoopGraph.")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionComputerTest",
+        method = "*",
+        reason = "This test makes use of a sideEffect to enforce when a thread interruption is triggered and thus isn't applicable to HadoopGraph",
+        computers = {"org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer", "org.apache.tinkerpop.gremlin.giraph.process.computer.GiraphGraphComputer"})
 public final class HadoopGraph implements Graph {
 
     public static final Logger LOGGER = LoggerFactory.getLogger(HadoopGraph.class);
@@ -222,7 +296,14 @@
 
     @Override
     public GraphComputer compute() {
-        throw new IllegalArgumentException("There is no default GraphComputer for HadoopGraph. Use HadoopGraph.compute(class) to specify the GraphComputer to use.");
+        if (this.configuration.containsKey(Constants.GREMLIN_HADOOP_DEFAULT_GRAPH_COMPUTER)) {
+            try {
+                return this.compute((Class<? extends GraphComputer>) Class.forName(this.configuration.getString(Constants.GREMLIN_HADOOP_DEFAULT_GRAPH_COMPUTER)));
+            } catch (final Exception e) {
+                throw new IllegalStateException(e.getMessage(), e);
+            }
+        } else
+            throw new IllegalArgumentException("There is no default GraphComputer for HadoopGraph. Use HadoopGraph.compute(class) or gremlin.hadoop.defaultGraphComputer to specify the GraphComputer to use.");
     }
 
     @Override
@@ -236,13 +317,12 @@
     }
 
     public String toString() {
-        final org.apache.hadoop.conf.Configuration hadoopConfiguration = ConfUtil.makeHadoopConfiguration(this.configuration);
-        final String fromString = this.configuration.containsKey(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT) ?
-                hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, InputFormat.class).getSimpleName() :
-                "no-input";
-        final String toString = this.configuration.containsKey(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT) ?
-                hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT, OutputFormat.class).getSimpleName() :
-                "no-output";
+        final String fromString = this.configuration.containsKey(Constants.GREMLIN_HADOOP_GRAPH_READER) ?
+                this.configuration.getGraphReader().getSimpleName() :
+                "no-reader";
+        final String toString = this.configuration.containsKey(Constants.GREMLIN_HADOOP_GRAPH_WRITER) ?
+                this.configuration.getGraphWriter().getSimpleName() :
+                "no-writer";
         return StringFactory.graphString(this, fromString.toLowerCase() + "->" + toString.toLowerCase());
     }
 
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/CommonFileInputFormat.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/CommonFileInputFormat.java
new file mode 100644
index 0000000..e01cfab
--- /dev/null
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/CommonFileInputFormat.java
@@ -0,0 +1,43 @@
+/*
+ * 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.hadoop.structure.io;
+
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.io.NullWritable;
+import org.apache.hadoop.io.compress.CompressionCodecFactory;
+import org.apache.hadoop.mapreduce.JobContext;
+import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public abstract class CommonFileInputFormat extends FileInputFormat<NullWritable, VertexWritable> implements HadoopPoolsConfigurable, GraphFilterAware {
+
+    @Override
+    protected boolean isSplitable(final JobContext context, final Path file) {
+        return null == new CompressionCodecFactory(context.getConfiguration()).getCodec(file);
+    }
+
+    @Override
+    public void setGraphFilter(final GraphFilter graphFilter) {
+        // do nothing. loaded through configuration.
+    }
+}
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/CommonFileOutputFormat.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/CommonFileOutputFormat.java
index 1b7559a..5031abe 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/CommonFileOutputFormat.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/CommonFileOutputFormat.java
@@ -38,7 +38,7 @@
  */
 public abstract class CommonFileOutputFormat extends FileOutputFormat<NullWritable, VertexWritable> implements PersistResultGraphAware {
 
-    protected DataOutputStream getDataOuputStream(final TaskAttemptContext job) throws IOException, InterruptedException {
+    protected DataOutputStream getDataOutputStream(final TaskAttemptContext job) throws IOException, InterruptedException {
         final Configuration conf = job.getConfiguration();
         boolean isCompressed = getCompressOutput(job);
         CompressionCodec codec = null;
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/FileSystemStorage.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/FileSystemStorage.java
index 7fa43cd..882bbfb 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/FileSystemStorage.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/FileSystemStorage.java
@@ -163,23 +163,23 @@
     }
 
     @Override
-    public Iterator<Vertex> head(final String location, final Class parserClass, final int totalLines) {
+    public Iterator<Vertex> head(final String location, final Class readerClass, final int totalLines) {
         final org.apache.commons.configuration.Configuration configuration = new BaseConfiguration();
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, Constants.getSearchGraphLocation(location, this).get());
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, parserClass.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, readerClass.getCanonicalName());
         try {
-            if (InputFormat.class.isAssignableFrom(parserClass))
+            if (InputFormat.class.isAssignableFrom(readerClass))
                 return IteratorUtils.limit(new HadoopVertexIterator(HadoopGraph.open(configuration)), totalLines);
         } catch (final IOException e) {
             throw new IllegalStateException(e.getMessage(), e);
         }
-        throw new IllegalArgumentException("The provided parser class must be an " + InputFormat.class.getCanonicalName() + ": " + parserClass.getCanonicalName());
+        throw new IllegalArgumentException("The provided parser class must be an " + InputFormat.class.getCanonicalName() + ": " + readerClass.getCanonicalName());
 
     }
 
     @Override
-    public <K, V> Iterator<KeyValue<K, V>> head(final String location, final String memoryKey, final Class parserClass, final int totalLines) {
-        if (!parserClass.equals(SequenceFileInputFormat.class))
+    public <K, V> Iterator<KeyValue<K, V>> head(final String location, final String memoryKey, final Class readerClass, final int totalLines) {
+        if (!readerClass.equals(SequenceFileInputFormat.class))
             throw new IllegalArgumentException("Only " + SequenceFileInputFormat.class.getCanonicalName() + " memories are supported");
         final Configuration configuration = new Configuration();
         try {
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/GraphFilterAware.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/GraphFilterAware.java
new file mode 100644
index 0000000..5a52c8c
--- /dev/null
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/GraphFilterAware.java
@@ -0,0 +1,45 @@
+/*
+ * 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.hadoop.structure.io;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.hadoop.Constants;
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
+import org.apache.tinkerpop.gremlin.process.computer.util.VertexProgramHelper;
+
+/**
+ * An input graph class is {@code GraphFilterAware} if it can filter out vertices and edges as its loading the graph from the
+ * source data. Any input class that is {@code GraphFilterAware} must be able to fully handle both vertex and edge filtering.
+ * It is assumed that if the input class is {@code GraphFilterAware}, then the respective
+ * {@link org.apache.tinkerpop.gremlin.process.computer.GraphComputer} will not perform any filtering on the loaded graph.
+ *
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public interface GraphFilterAware {
+
+    public void setGraphFilter(final GraphFilter graphFilter);
+
+    public static void storeGraphFilter(final Configuration apacheConfiguration, final org.apache.hadoop.conf.Configuration hadoopConfiguration, final GraphFilter graphFilter) {
+        if (graphFilter.hasFilter()) {
+            VertexProgramHelper.serialize(graphFilter, apacheConfiguration, Constants.GREMLIN_HADOOP_GRAPH_FILTER);
+            hadoopConfiguration.set(Constants.GREMLIN_HADOOP_GRAPH_FILTER, apacheConfiguration.getString(Constants.GREMLIN_HADOOP_GRAPH_FILTER));
+        }
+    }
+}
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/HadoopElementIterator.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/HadoopElementIterator.java
index ae371e0..cdb5391 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/HadoopElementIterator.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/HadoopElementIterator.java
@@ -53,10 +53,9 @@
         try {
             this.graph = graph;
             final Configuration configuration = ConfUtil.makeHadoopConfiguration(this.graph.configuration());
-            final InputFormat<NullWritable, VertexWritable> inputFormat = this.graph.configuration().getGraphInputFormat().getConstructor().newInstance();
+            final InputFormat<NullWritable, VertexWritable> inputFormat = ConfUtil.getReaderAsInputFormat(configuration);
             if (inputFormat instanceof FileInputFormat) {
                 final Storage storage = FileSystemStorage.open(configuration);
-
                 if (!this.graph.configuration().containsKey(Constants.GREMLIN_HADOOP_INPUT_LOCATION))
                     return; // there is no input location and thus, no data (empty graph)
                 if (!Constants.getSearchGraphLocation(this.graph.configuration().getInputLocation(), storage).isPresent())
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/HadoopPoolShimService.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/HadoopPoolShimService.java
new file mode 100644
index 0000000..3fad4fd
--- /dev/null
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/HadoopPoolShimService.java
@@ -0,0 +1,75 @@
+/*
+ * 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.hadoop.structure.io;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimService;
+import org.apache.tinkerpop.shaded.kryo.Kryo;
+import org.apache.tinkerpop.shaded.kryo.io.Input;
+import org.apache.tinkerpop.shaded.kryo.io.Output;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+
+public class HadoopPoolShimService implements KryoShimService {
+
+    public Object readClassAndObject(final InputStream source) {
+
+        Kryo k = null;
+
+        try {
+            k = HadoopPools.getGryoPool().takeKryo();
+
+            return k.readClassAndObject(new Input(source));
+        } finally {
+            if (null != k) {
+                HadoopPools.getGryoPool().offerKryo(k);
+            }
+        }
+    }
+
+    public void writeClassAndObject(final Object o, final OutputStream sink) {
+
+        Kryo k = null;
+
+        try {
+            k = HadoopPools.getGryoPool().takeKryo();
+
+            final Output output = new Output(sink);
+
+            k.writeClassAndObject(output, o);
+
+            output.flush();
+        } finally {
+            if (null != k) {
+                HadoopPools.getGryoPool().offerKryo(k);
+            }
+        }
+    }
+
+    @Override
+    public int getPriority() {
+        return 0;
+    }
+
+    @Override
+    public void applyConfiguration(final Configuration conf) {
+        HadoopPools.initialize(conf);
+    }
+}
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/HadoopPools.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/HadoopPools.java
index 49263ef..5074ad5 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/HadoopPools.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/HadoopPools.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.hadoop.structure.io;
 
+import org.apache.commons.configuration.BaseConfiguration;
 import org.apache.commons.configuration.Configuration;
 import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
@@ -42,6 +43,7 @@
             GRYO_POOL = GryoPool.build().
                     poolSize(configuration.getInt(GryoPool.CONFIG_IO_GRYO_POOL_SIZE, 256)).
                     ioRegistries(configuration.getList(GryoPool.CONFIG_IO_REGISTRY, Collections.emptyList())).
+                    initializeMapper(m -> m.registrationRequired(false)).
                     create();
         }
     }
@@ -51,8 +53,10 @@
     }
 
     public static GryoPool getGryoPool() {
-        if (!INITIALIZED)
+        if (!INITIALIZED) {
             HadoopGraph.LOGGER.warn("The " + HadoopPools.class.getSimpleName() + " has not been initialized, using the default pool");     // TODO: this is necessary because we can't get the pool intialized in the Merger code of the Hadoop process.
+            initialize(new BaseConfiguration());
+        }
         return GRYO_POOL;
     }
 }
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/HadoopPoolsConfigurable.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/HadoopPoolsConfigurable.java
index f3a1bac..0e5f135 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/HadoopPoolsConfigurable.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/HadoopPoolsConfigurable.java
@@ -20,6 +20,8 @@
 
 import org.apache.hadoop.conf.Configurable;
 import org.apache.hadoop.conf.Configuration;
+import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimServiceLoader;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -28,7 +30,7 @@
 
     @Override
     public default void setConf(final Configuration configuration) {
-        HadoopPools.initialize(configuration);
+        KryoShimServiceLoader.applyConfiguration(ConfUtil.makeApacheConfiguration(configuration));
     }
 
     @Override
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/InputOutputHelper.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/InputOutputHelper.java
index 11c579e..dd68c32 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/InputOutputHelper.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/InputOutputHelper.java
@@ -78,9 +78,10 @@
         newConfiguration.copy(hadoopConfiguration);
         if (resultGraph.equals(GraphComputer.ResultGraph.NEW)) {
             newConfiguration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, hadoopConfiguration.getOutputLocation());
-            if (hadoopConfiguration.containsKey(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT))
-                newConfiguration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, InputOutputHelper.getInputFormat(hadoopConfiguration.getGraphOutputFormat()).getCanonicalName());
-            newConfiguration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT_HAS_EDGES, persist.equals(GraphComputer.Persist.EDGES));
+            if (hadoopConfiguration.containsKey(Constants.GREMLIN_HADOOP_GRAPH_WRITER))
+                if (null != InputOutputHelper.getInputFormat(hadoopConfiguration.getGraphWriter()))
+                    newConfiguration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, InputOutputHelper.getInputFormat(hadoopConfiguration.getGraphWriter()).getCanonicalName());
+            newConfiguration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER_HAS_EDGES, persist.equals(GraphComputer.Persist.EDGES));
         }
         newConfiguration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, hadoopConfiguration.getOutputLocation() + "_");
         return HadoopGraph.open(newConfiguration);
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/ObjectWritable.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/ObjectWritable.java
index 9e101ef..0379ee6 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/ObjectWritable.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/ObjectWritable.java
@@ -21,9 +21,9 @@
 import org.apache.hadoop.io.WritableComparable;
 import org.apache.hadoop.io.WritableUtils;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimServiceLoader;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
@@ -63,29 +63,14 @@
 
     @Override
     public void readFields(final DataInput input) throws IOException {
-        this.t = HadoopPools.getGryoPool().doWithReader(gryoReader -> {
-            try {
-                // class argument is Object because gryo doesn't really care that we don't know the specific type.
-                // the type is embedded in the stream so it can just read it from there and return it as needed.
-                // presumably that will cast nicely to T
-                return (T) gryoReader.readObject(new ByteArrayInputStream(WritableUtils.readCompressedByteArray(input)), Object.class);
-            } catch (IOException e) {
-                throw new IllegalStateException(e.getMessage(), e);
-            }
-        });
+        final ByteArrayInputStream bais = new ByteArrayInputStream(WritableUtils.readCompressedByteArray(input));
+        this.t = KryoShimServiceLoader.readClassAndObject(bais);
     }
 
     @Override
     public void write(final DataOutput output) throws IOException {
-        HadoopPools.getGryoPool().doWithWriter(gryoWriter -> {
-            try {
-                final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-                gryoWriter.writeObject(outputStream, this.t);
-                WritableUtils.writeCompressedByteArray(output, outputStream.toByteArray());
-            } catch (IOException e) {
-                throw new IllegalStateException(e.getMessage(), e);
-            }
-        });
+        final byte serialized[] = KryoShimServiceLoader.writeClassAndObjectToBytes(this.t);
+        WritableUtils.writeCompressedByteArray(output, serialized);
     }
 
     private void writeObject(final ObjectOutputStream outputStream) throws IOException {
@@ -112,7 +97,7 @@
         return null == this.t;
     }
 
-    public static ObjectWritable empty() {
+    public static <A> ObjectWritable<A> empty() {
         return new ObjectWritable<>(null);
     }
 
@@ -128,7 +113,7 @@
 
     @Override
     public int hashCode() {
-        return this.isEmpty() ? 0 : this.t.hashCode();
+        return null == this.t ? 0 : this.t.hashCode();
     }
 
     public static ObjectWritable<MapReduce.NullObject> getNullObjectWritable() {
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/ObjectWritableIterator.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/ObjectWritableIterator.java
index 676ca07..5c90c5b 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/ObjectWritableIterator.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/ObjectWritableIterator.java
@@ -24,11 +24,11 @@
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.SequenceFile;
 import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
-import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
 
 import java.io.IOException;
 import java.util.Iterator;
 import java.util.LinkedList;
+import java.util.NoSuchElementException;
 import java.util.Queue;
 
 /**
@@ -77,7 +77,7 @@
             } else {
                 while (true) {
                     if (this.readers.isEmpty())
-                        throw FastNoSuchElementException.instance();
+                        throw new NoSuchElementException();
                     if (this.readers.peek().next(this.key, this.value)) {
                         return new KeyValue<>(this.key.get(), this.value.get());
                     } else
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/VertexWritable.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/VertexWritable.java
index ac360e9..be09941 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/VertexWritable.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/VertexWritable.java
@@ -21,11 +21,11 @@
 import org.apache.hadoop.io.Writable;
 import org.apache.hadoop.io.WritableUtils;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimServiceLoader;
 import org.apache.tinkerpop.gremlin.structure.util.ElementHelper;
 import org.apache.tinkerpop.gremlin.structure.util.star.StarGraph;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
@@ -60,42 +60,15 @@
 
     @Override
     public void readFields(final DataInput input) throws IOException {
-        try {
-            this.vertex = null;
-            this.vertex = HadoopPools.getGryoPool().doWithReader(gryoReader -> {
-                try {
-                    final ByteArrayInputStream inputStream = new ByteArrayInputStream(WritableUtils.readCompressedByteArray(input));
-                    return gryoReader.readObject(inputStream, StarGraph.class).getStarVertex(); // read the star graph
-                } catch (final IOException e) {
-                    throw new IllegalStateException(e.getMessage(), e);
-                }
-            });
-        } catch (final IllegalStateException e) {
-            if (e.getCause() instanceof IOException)
-                throw (IOException) e.getCause();
-            else
-                throw e;
-        }
+        this.vertex = null;
+        final ByteArrayInputStream bais = new ByteArrayInputStream(WritableUtils.readCompressedByteArray(input));
+        this.vertex = ((StarGraph)KryoShimServiceLoader.readClassAndObject(bais)).getStarVertex(); // read the star graph;
     }
 
     @Override
     public void write(final DataOutput output) throws IOException {
-        try {
-            HadoopPools.getGryoPool().doWithWriter(gryoWriter -> {
-                try {
-                    final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-                    gryoWriter.writeObject(outputStream, this.vertex.graph()); // write the star graph
-                    WritableUtils.writeCompressedByteArray(output, outputStream.toByteArray());
-                } catch (final IOException e) {
-                    throw new IllegalStateException(e.getMessage(), e);
-                }
-            });
-        } catch (final IllegalStateException e) {
-            if (e.getCause() instanceof IOException)
-                throw (IOException) e.getCause();
-            else
-                throw e;
-        }
+        final byte serialized[] = KryoShimServiceLoader.writeClassAndObjectToBytes(this.vertex.graph());
+        WritableUtils.writeCompressedByteArray(output, serialized);
     }
 
     private void writeObject(final ObjectOutputStream outputStream) throws IOException {
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/VertexWritableIterator.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/VertexWritableIterator.java
index d3e1fd0..835262f 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/VertexWritableIterator.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/VertexWritableIterator.java
@@ -23,12 +23,12 @@
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.SequenceFile;
-import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
 import java.io.IOException;
 import java.util.Iterator;
 import java.util.LinkedList;
+import java.util.NoSuchElementException;
 import java.util.Queue;
 
 /**
@@ -76,7 +76,7 @@
             } else {
                 while (true) {
                     if (this.readers.isEmpty())
-                        throw FastNoSuchElementException.instance();
+                        throw new NoSuchElementException();
                     if (this.readers.peek().next(this.value)) {
                         return this.value.get();
                     } else
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/graphson/GraphSONOutputFormat.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/graphson/GraphSONOutputFormat.java
index 30a8cfa..4698e61 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/graphson/GraphSONOutputFormat.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/graphson/GraphSONOutputFormat.java
@@ -34,7 +34,7 @@
 
     @Override
     public RecordWriter<NullWritable, VertexWritable> getRecordWriter(final TaskAttemptContext job) throws IOException, InterruptedException {
-        return new GraphSONRecordWriter(getDataOuputStream(job), job.getConfiguration());
+        return new GraphSONRecordWriter(getDataOutputStream(job), job.getConfiguration());
     }
 
 }
\ No newline at end of file
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/graphson/GraphSONRecordReader.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/graphson/GraphSONRecordReader.java
index a990a2b..828c85d 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/graphson/GraphSONRecordReader.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/graphson/GraphSONRecordReader.java
@@ -50,7 +50,7 @@
     @Override
     public void initialize(final InputSplit genericSplit, final TaskAttemptContext context) throws IOException {
         this.lineRecordReader.initialize(genericSplit, context);
-        this.hasEdges = context.getConfiguration().getBoolean(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT_HAS_EDGES, true);
+        this.hasEdges = context.getConfiguration().getBoolean(Constants.GREMLIN_HADOOP_GRAPH_READER_HAS_EDGES, true);
     }
 
     @Override
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/graphson/GraphSONRecordWriter.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/graphson/GraphSONRecordWriter.java
index 0e03b9a..b558894 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/graphson/GraphSONRecordWriter.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/graphson/GraphSONRecordWriter.java
@@ -52,7 +52,7 @@
 
     public GraphSONRecordWriter(final DataOutputStream outputStream, final Configuration configuration) {
         this.outputStream = outputStream;
-        this.hasEdges = configuration.getBoolean(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT_HAS_EDGES, true);
+        this.hasEdges = configuration.getBoolean(Constants.GREMLIN_HADOOP_GRAPH_WRITER_HAS_EDGES, true);
     }
 
     @Override
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/gryo/GryoInputFormat.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/gryo/GryoInputFormat.java
index 7a53a39..d2b48ee 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/gryo/GryoInputFormat.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/gryo/GryoInputFormat.java
@@ -22,8 +22,7 @@
 import org.apache.hadoop.mapreduce.InputSplit;
 import org.apache.hadoop.mapreduce.RecordReader;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
-import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
-import org.apache.tinkerpop.gremlin.hadoop.structure.io.HadoopPoolsConfigurable;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.CommonFileInputFormat;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
 
 import java.io.IOException;
@@ -31,7 +30,7 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class GryoInputFormat extends FileInputFormat<NullWritable, VertexWritable> implements HadoopPoolsConfigurable {
+public final class GryoInputFormat extends CommonFileInputFormat {
 
     @Override
     public RecordReader<NullWritable, VertexWritable> createRecordReader(final InputSplit split, final TaskAttemptContext context) throws IOException, InterruptedException {
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/gryo/GryoOutputFormat.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/gryo/GryoOutputFormat.java
index 69d56ce..4f923ff 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/gryo/GryoOutputFormat.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/gryo/GryoOutputFormat.java
@@ -34,7 +34,7 @@
 
     @Override
     public RecordWriter<NullWritable, VertexWritable> getRecordWriter(final TaskAttemptContext job) throws IOException, InterruptedException {
-        return new GryoRecordWriter(getDataOuputStream(job), job.getConfiguration());
+        return new GryoRecordWriter(getDataOutputStream(job), job.getConfiguration());
     }
 
 }
\ No newline at end of file
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/gryo/GryoRecordReader.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/gryo/GryoRecordReader.java
index f77fbbf..a1daddf 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/gryo/GryoRecordReader.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/gryo/GryoRecordReader.java
@@ -27,17 +27,23 @@
 import org.apache.hadoop.mapreduce.RecordReader;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
 import org.apache.hadoop.mapreduce.lib.input.FileSplit;
+import org.apache.tinkerpop.gremlin.hadoop.Constants;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.HadoopPools;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
+import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
+import org.apache.tinkerpop.gremlin.process.computer.util.VertexProgramHelper;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.VertexTerminator;
-import org.apache.tinkerpop.gremlin.structure.util.Attachable;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimServiceLoader;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Optional;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -54,15 +60,19 @@
 
     private long currentLength = 0;
     private long splitLength;
+    private GraphFilter graphFilter = new GraphFilter();
 
     public GryoRecordReader() {
+
     }
 
     @Override
     public void initialize(final InputSplit genericSplit, final TaskAttemptContext context) throws IOException {
         final FileSplit split = (FileSplit) genericSplit;
         final Configuration configuration = context.getConfiguration();
-        HadoopPools.initialize(configuration);
+        if (configuration.get(Constants.GREMLIN_HADOOP_GRAPH_FILTER, null) != null)
+            this.graphFilter = VertexProgramHelper.deserialize(ConfUtil.makeApacheConfiguration(configuration), Constants.GREMLIN_HADOOP_GRAPH_FILTER);
+        KryoShimServiceLoader.applyConfiguration(ConfUtil.makeApacheConfiguration(configuration));
         this.gryoReader = HadoopPools.getGryoPool().takeReader();
         long start = split.getStart();
         final Path file = split.getPath();
@@ -124,8 +134,15 @@
             terminatorLocation = ((byte) currentByte) == TERMINATOR[terminatorLocation] ? terminatorLocation + 1 : 0;
             if (terminatorLocation >= TERMINATOR.length) {
                 try (InputStream in = new ByteArrayInputStream(output.toByteArray())) {
-                    this.vertexWritable.set(this.gryoReader.readVertex(in, Attachable::get)); // I know how GryoReader works, so I'm cheating here
-                    return true;
+                    final Optional<Vertex> vertex = this.gryoReader.readVertex(in, this.graphFilter);
+                    if (vertex.isPresent()) {
+                        this.vertexWritable.set(vertex.get());
+                        return true;
+                    } else {
+                        currentVertexLength = 0;
+                        terminatorLocation = 0;
+                        output.reset();
+                    }
                 }
             }
         }
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/gryo/GryoRecordWriter.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/gryo/GryoRecordWriter.java
index 5ffccdf..2ea3394 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/gryo/GryoRecordWriter.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/gryo/GryoRecordWriter.java
@@ -25,8 +25,10 @@
 import org.apache.tinkerpop.gremlin.hadoop.Constants;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.HadoopPools;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
+import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoWriter;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimServiceLoader;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
@@ -42,8 +44,8 @@
 
     public GryoRecordWriter(final DataOutputStream outputStream, final Configuration configuration) {
         this.outputStream = outputStream;
-        this.hasEdges = configuration.getBoolean(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT_HAS_EDGES, true);
-        HadoopPools.initialize(configuration);
+        this.hasEdges = configuration.getBoolean(Constants.GREMLIN_HADOOP_GRAPH_WRITER_HAS_EDGES, true);
+        KryoShimServiceLoader.applyConfiguration(ConfUtil.makeApacheConfiguration(configuration));
         this.gryoWriter = HadoopPools.getGryoPool().takeWriter();
     }
 
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptInputFormat.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptInputFormat.java
index b7c6876..44f9220 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptInputFormat.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptInputFormat.java
@@ -18,15 +18,11 @@
  */
 package org.apache.tinkerpop.gremlin.hadoop.structure.io.script;
 
-import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.NullWritable;
-import org.apache.hadoop.io.compress.CompressionCodecFactory;
 import org.apache.hadoop.mapreduce.InputSplit;
-import org.apache.hadoop.mapreduce.JobContext;
 import org.apache.hadoop.mapreduce.RecordReader;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
-import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
-import org.apache.tinkerpop.gremlin.hadoop.structure.io.HadoopPoolsConfigurable;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.CommonFileInputFormat;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
 
 import java.io.IOException;
@@ -40,19 +36,13 @@
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Daniel Kuppitz (http://gremlin.guru)
  */
-public final class ScriptInputFormat extends FileInputFormat<NullWritable, VertexWritable> implements HadoopPoolsConfigurable {
+public final class ScriptInputFormat extends CommonFileInputFormat {
 
     @Override
-    public RecordReader<NullWritable, VertexWritable> createRecordReader(final InputSplit split, final TaskAttemptContext context)
-            throws IOException, InterruptedException {
-
+    public RecordReader<NullWritable, VertexWritable> createRecordReader(final InputSplit split, final TaskAttemptContext context) throws IOException, InterruptedException {
         RecordReader<NullWritable, VertexWritable> reader = new ScriptRecordReader();
         reader.initialize(split, context);
         return reader;
     }
 
-    @Override
-    protected boolean isSplitable(final JobContext context, final Path file) {
-        return null == new CompressionCodecFactory(context.getConfiguration()).getCodec(file);
-    }
 }
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptOutputFormat.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptOutputFormat.java
index 85dc106..dec434c 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptOutputFormat.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptOutputFormat.java
@@ -41,7 +41,7 @@
 
     @Override
     public RecordWriter<NullWritable, VertexWritable> getRecordWriter(final TaskAttemptContext job) throws IOException, InterruptedException {
-        return getRecordWriter(job, getDataOuputStream(job));
+        return getRecordWriter(job, getDataOutputStream(job));
     }
 
     public RecordWriter<NullWritable, VertexWritable> getRecordWriter(final TaskAttemptContext job, final DataOutputStream outputStream) throws IOException, InterruptedException {
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordReader.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordReader.java
index 4cb9100..ea72f9a 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordReader.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/script/ScriptRecordReader.java
@@ -30,7 +30,11 @@
 import org.apache.tinkerpop.gremlin.groovy.CompilerCustomizerProvider;
 import org.apache.tinkerpop.gremlin.groovy.DefaultImportCustomizerProvider;
 import org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine;
+import org.apache.tinkerpop.gremlin.hadoop.Constants;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
+import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
+import org.apache.tinkerpop.gremlin.process.computer.util.VertexProgramHelper;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
@@ -45,6 +49,7 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.Iterator;
+import java.util.Optional;
 
 /**
  * @author Daniel Kuppitz (http://gremlin.guru)
@@ -65,6 +70,8 @@
     private String parse;
     private CompiledScript script;
 
+    private GraphFilter graphFilter = new GraphFilter();
+
     public ScriptRecordReader() {
         this.lineRecordReader = new LineRecordReader();
     }
@@ -73,6 +80,8 @@
     public void initialize(final InputSplit genericSplit, final TaskAttemptContext context) throws IOException {
         this.lineRecordReader.initialize(genericSplit, context);
         final Configuration configuration = context.getConfiguration();
+        if (configuration.get(Constants.GREMLIN_HADOOP_GRAPH_FILTER, null) != null)
+            this.graphFilter = VertexProgramHelper.deserialize(ConfUtil.makeApacheConfiguration(configuration), Constants.GREMLIN_HADOOP_GRAPH_FILTER);
         this.engine = new GremlinGroovyScriptEngine((CompilerCustomizerProvider) new DefaultImportCustomizerProvider());
         //this.engine = ScriptEngineCache.get(configuration.get(SCRIPT_ENGINE, ScriptEngineCache.DEFAULT_SCRIPT_ENGINE));
         final FileSystem fs = FileSystem.get(configuration);
@@ -96,10 +105,13 @@
                 bindings.put(GRAPH, graph);
                 bindings.put(LINE, this.lineRecordReader.getCurrentValue().toString());
                 bindings.put(FACTORY, factory);
-                final Vertex vertex = (Vertex) script.eval(bindings);
-                if (vertex != null) {
-                    this.vertexWritable.set(vertex);
-                    return true;
+                final StarGraph.StarVertex sv = (StarGraph.StarVertex) script.eval(bindings);
+                if (sv != null) {
+                    final Optional<StarGraph.StarVertex> vertex = sv.applyGraphFilter(this.graphFilter);
+                    if (vertex.isPresent()) {
+                        this.vertexWritable.set(vertex.get());
+                        return true;
+                    }
                 }
             } catch (final ScriptException e) {
                 throw new IOException(e.getMessage(), e);
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/util/ConfUtil.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/util/ConfUtil.java
index 1144964..0e1efb7 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/util/ConfUtil.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/util/ConfUtil.java
@@ -20,6 +20,10 @@
 
 import org.apache.commons.configuration.BaseConfiguration;
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.io.NullWritable;
+import org.apache.hadoop.mapreduce.InputFormat;
+import org.apache.tinkerpop.gremlin.hadoop.Constants;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -51,4 +55,15 @@
             hadoopConfiguration.set(key, object.toString());
         });
     }
+
+    public static InputFormat<NullWritable, VertexWritable> getReaderAsInputFormat(final Configuration hadoopConfiguration) {
+        final Class<?> readerClass = hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_READER, Object.class);
+        try {
+            return InputFormat.class.isAssignableFrom(readerClass) ?
+                    (InputFormat<NullWritable, VertexWritable>) readerClass.newInstance() :
+                    (InputFormat<NullWritable, VertexWritable>) Class.forName("org.apache.tinkerpop.gremlin.spark.structure.io.InputRDDFormat").newInstance();
+        } catch (final Exception e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
 }
diff --git a/hadoop-gremlin/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimService b/hadoop-gremlin/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimService
new file mode 100644
index 0000000..0b27e72
--- /dev/null
+++ b/hadoop-gremlin/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimService
@@ -0,0 +1 @@
+org.apache.tinkerpop.gremlin.hadoop.structure.io.HadoopPoolShimService # HadoopPools provides/caches instances of TinkerPop's shaded Kryo
diff --git a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/HadoopGraphProvider.java b/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/HadoopGraphProvider.java
index 4a6f06c..9c6a352 100644
--- a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/HadoopGraphProvider.java
+++ b/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/HadoopGraphProvider.java
@@ -45,6 +45,8 @@
 import java.util.Random;
 import java.util.Set;
 
+import static org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimServiceLoader.KRYO_SHIM_SERVICE;
+
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
@@ -52,7 +54,7 @@
  */
 public class HadoopGraphProvider extends AbstractGraphProvider {
 
-    private static final Random RANDOM = new Random();
+    protected static final Random RANDOM = new Random();
     private boolean graphSONInput = false;
 
     public static Map<String, String> PATHS = new HashMap<>();
@@ -109,11 +111,12 @@
 
     @Override
     public Map<String, Object> getBaseConfiguration(final String graphName, final Class<?> test, final String testMethodName, final LoadGraphWith.GraphData loadGraphWith) {
+        System.clearProperty(KRYO_SHIM_SERVICE);
         this.graphSONInput = RANDOM.nextBoolean();
         return new HashMap<String, Object>() {{
             put(Graph.GRAPH, HadoopGraph.class.getName());
-            put(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, graphSONInput ? GraphSONInputFormat.class.getCanonicalName() : GryoInputFormat.class.getCanonicalName());
-            put(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT, GryoOutputFormat.class.getCanonicalName());
+            put(Constants.GREMLIN_HADOOP_GRAPH_READER, graphSONInput ? GraphSONInputFormat.class.getCanonicalName() : GryoInputFormat.class.getCanonicalName());
+            put(Constants.GREMLIN_HADOOP_GRAPH_WRITER, GryoOutputFormat.class.getCanonicalName());
             put(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, getWorkingDirectory());
             put(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, false);
         }};
diff --git a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopGremlinPluginCheck.java b/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopGremlinPluginCheck.java
index 0639609..f7b702a 100644
--- a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopGremlinPluginCheck.java
+++ b/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/groovy/plugin/HadoopGremlinPluginCheck.java
@@ -22,23 +22,43 @@
 import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.TestHelper;
+import org.apache.tinkerpop.gremlin.groovy.loaders.GremlinLoader;
 import org.apache.tinkerpop.gremlin.groovy.plugin.RemoteAcceptor;
 import org.apache.tinkerpop.gremlin.groovy.util.SugarTestHelper;
 import org.apache.tinkerpop.gremlin.groovy.util.TestableConsolePluginAcceptor;
 import org.apache.tinkerpop.gremlin.hadoop.Constants;
 import org.apache.tinkerpop.gremlin.hadoop.HadoopGremlinSuite;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.util.Gremlin;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.junit.Before;
 import org.junit.Test;
 
+import javax.tools.JavaCompiler;
+import javax.tools.SimpleJavaFileObject;
+import javax.tools.ToolProvider;
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.net.URI;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
+import java.util.Map;
+import java.util.jar.Attributes;
+import java.util.jar.JarEntry;
+import java.util.jar.JarOutputStream;
+import java.util.jar.Manifest;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 /**
  * This is an test that is mean to be used in the context of the {@link HadoopGremlinSuite} and shouldn't be
@@ -84,7 +104,14 @@
         SugarTestHelper.clearRegistry(this.graphProvider);
         this.console.addBinding("graph", this.graph);
         this.console.addBinding("g", this.g);
-        this.remote.connect(Arrays.asList("graph"));
+        //
+        this.remote.connect(Arrays.asList("graph", "g"));
+        try {
+            this.remote.submit(Arrays.asList("g.V.name.map{it.length()}.sum"));
+            fail("Should not allow sugar usage");
+        } catch (final Exception e) {
+            // this is good
+        }
         //
         this.remote.configure(Arrays.asList("useSugar", "true"));
         this.remote.connect(Arrays.asList("graph", "g"));
@@ -96,13 +123,48 @@
 
     @Test
     @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+    public void shouldSupportRemoteGroupTraversal() throws Exception {
+        SugarTestHelper.clearRegistry(this.graphProvider);
+        GremlinLoader.load();
+        this.console.addBinding("graph", this.graph);
+        this.console.addBinding("g", this.g);
+        this.remote.connect(Arrays.asList("graph"));
+        //
+        this.remote.connect(Arrays.asList("graph", "g"));
+        Traversal<?, Map<String, List<String>>> traversal = (Traversal<?, Map<String, List<String>>>) this.remote.submit(Arrays.asList("g.V().out().group().by{it.value('name')[1]}.by('name')"));
+        Map<String, List<String>> map = traversal.next();
+        assertEquals(3, map.size());
+        assertEquals(1, map.get("a").size());
+        assertEquals("vadas", map.get("a").get(0));
+        assertEquals(1, map.get("i").size());
+        assertEquals("ripple", map.get("i").get(0));
+        assertEquals(4, map.get("o").size());
+        assertTrue(map.get("o").contains("josh"));
+        assertTrue(map.get("o").contains("lop"));
+        assertNotNull(this.console.getBindings().get(RemoteAcceptor.RESULT));
+        //
+        traversal = (Traversal<?, Map<String, List<String>>>) this.remote.submit(Arrays.asList("g.V().out().group().by(label).by{it.value('name')[1]}"));
+        map = traversal.next();
+        assertEquals(2, map.size());
+        assertEquals(4, map.get("software").size());
+        assertTrue(map.get("software").contains("o"));
+        assertTrue(map.get("software").contains("i"));
+        assertEquals(2, map.get("person").size());
+        assertTrue(map.get("person").contains("o"));
+        assertTrue(map.get("person").contains("a"));
+        assertNotNull(this.console.getBindings().get(RemoteAcceptor.RESULT));
+    }
+
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
     public void shouldSupportHDFSMethods() throws Exception {
         List<String> ls = (List<String>) this.console.eval("hdfs.ls()");
         for (final String line : ls) {
             assertTrue(line.startsWith("-") || line.startsWith("r") || line.startsWith("w") || line.startsWith("x"));
             assertEquals(" ", line.substring(9, 10));
         }
-        ls = (List<String>) this.console.eval("local.ls()");
+        ls = (List<String>) this.console.eval("fs.ls()");
         for (final String line : ls) {
             assertTrue(line.startsWith("-") || line.startsWith("r") || line.startsWith("w") || line.startsWith("x"));
             assertEquals(" ", line.substring(9, 10));
@@ -121,4 +183,129 @@
         assertEquals(6, IteratorUtils.count(traversal));
         assertNotNull(this.console.getBindings().get(RemoteAcceptor.RESULT));
     }
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+    public void shouldSupportVariousFileSystemsInGremlinHadoopLibs() throws Exception {
+
+        // The whole point of this test is to verify that HADOOP_GREMLIN_LIBS may contain paths with or without
+        // a file system scheme prefix and that either path is properly handled. If all jar files, that were specified
+        // in HADOOP_GREMLIN_LIBS, are found in the GraphComputers temporary directory after using the GraphComputer
+        // (by submitting a traversal), the test is considered to be successful.
+        //
+        // The traversal will likely never fail, since both - Spark and Giraph - run in the same JVM during tests. This
+        // is unfortunate as it doesn't allow us to verify that GraphComputers load jars properly in a distributed
+        // environment. The test would fail in a distributed environment, IF loading the jars specified in
+        // HADOOP_GREMLIN_LIBS wouldn't work. That is because we generate new jar files on the fly that are definitely
+        // not part of any existing directory or the current classpath.
+
+        final String testDataDirectory = TestHelper.makeTestDataDirectory(HadoopGremlinPluginCheck.class, "shouldHandleLocalGremlinHadoopLibs");
+        final File jarFile1 = createJarFile(testDataDirectory + File.separator + "1", "Greeter1");
+        final File jarFile2 = createJarFile(testDataDirectory + File.separator + "2", "Greeter2");
+        final String graphComputerJarTargetBasePath = System.getProperty("java.io.tmpdir") + File.separator +
+                "hadoop-gremlin-" + Gremlin.version() + "-libs" + File.separator;
+        final File graphComputerJarTargetPath1 = new File(graphComputerJarTargetBasePath + "1" + File.separator + "Greeter1.jar");
+        final File graphComputerJarTargetPath2 = new File(graphComputerJarTargetBasePath + "2" + File.separator + "Greeter2.jar");
+
+        for (final boolean withScheme : Arrays.asList(false, true)) {
+
+            Stream<String> hadoopGremlinLibs = Arrays.asList(jarFile1, jarFile2).stream().map(f -> f.getParentFile().getAbsolutePath());
+            if (withScheme) {
+                hadoopGremlinLibs = hadoopGremlinLibs.map(path -> "file://" + path);
+            }
+            System.setProperty(Constants.HADOOP_GREMLIN_LIBS, String.join(File.pathSeparator, hadoopGremlinLibs.collect(Collectors.toList())));
+
+            this.graph.configuration().setProperty(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, true);
+            this.console.addBinding("graph", this.graph);
+            this.console.addBinding("g", this.g);
+            this.remote.connect(Arrays.asList("graph", "g"));
+
+            Traversal<?, ?> traversal = (Traversal<?, ?>) this.remote.submit(Arrays.asList(
+                    "ClassLoader.getSystemClassLoader().addURL('" + jarFile1.toURI().toURL() + "'.toURL());",
+                    "ClassLoader.getSystemClassLoader().addURL('" + jarFile2.toURI().toURL() + "'.toURL());",
+                    "g.V().choose(hasLabel('person'), " +
+                            "values('name').map {Class.forName('Greeter1').hello(it.get())}, " +
+                            "values('name').map {Class.forName('Greeter2').hello(it.get())})"));
+
+            final List<String> expectedMessages = Arrays.asList("marko", "josh", "peter", "vadas").stream().
+                    map(name -> "Greeter1 says: Hello " + name + "!").collect(Collectors.toList());
+
+            expectedMessages.addAll(Arrays.asList("lop", "ripple").stream().
+                    map(name -> "Greeter2 says: Hello " + name + "!").collect(Collectors.toList()));
+
+            while (traversal.hasNext()) {
+                final String message = (String) traversal.next();
+                assertTrue(expectedMessages.remove(message));
+            }
+
+            assertEquals(0, expectedMessages.size());
+        }
+
+        assertTrue(graphComputerJarTargetPath1.exists());
+        assertTrue(graphComputerJarTargetPath2.exists());
+
+        assert graphComputerJarTargetPath1.delete();
+        assert graphComputerJarTargetPath2.delete();
+    }
+
+    private File createJarFile(final String directory, final String className) throws IOException {
+
+        new File(directory).mkdirs();
+
+        final File classFile = new File(directory + File.separator + className + ".class");
+        final File jarFile = new File(directory + File.separator + className + ".jar");
+
+        jarFile.deleteOnExit();
+
+        final JavaStringObject source = new JavaStringObject(className,
+                "public class " + className + " {\n" +
+                        "    public static String hello(final String name) {\n" +
+                        "        return \"" + className + " says: Hello \" + name + \"!\";\n" +
+                        "    }\n" +
+                        "}");
+
+        final JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+        final List<String> options = Arrays.asList(
+                "-d", classFile.getParentFile().getAbsolutePath()
+        );
+        assert compiler.getTask(null, null, null, options, null, Collections.singletonList(source)).call();
+
+        final Manifest manifest = new Manifest();
+        manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0");
+
+        try (final JarOutputStream target = new JarOutputStream(new FileOutputStream(jarFile), manifest)) {
+            final JarEntry entry = new JarEntry(classFile.getName());
+            entry.setTime(classFile.lastModified());
+            target.putNextEntry(entry);
+            try (final FileInputStream fis = new FileInputStream(classFile);
+                 final BufferedInputStream in = new BufferedInputStream(fis)) {
+                final byte buffer[] = new byte[1024];
+                while (true) {
+                    final int count = in.read(buffer);
+                    if (count < 0) break;
+                    target.write(buffer, 0, count);
+                }
+            }
+            target.closeEntry();
+        }
+
+        assert classFile.delete();
+
+        return jarFile;
+    }
+
+    private static class JavaStringObject extends SimpleJavaFileObject {
+
+        private final String code;
+
+        JavaStringObject(final String className, final String code) {
+            super(URI.create("string:///" + className.replace(".", "/") + Kind.SOURCE.extension), Kind.SOURCE);
+            this.code = code;
+        }
+
+        @Override
+        public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
+            return code;
+        }
+    }
 }
diff --git a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/process/HadoopGraphProcessStandardTest.java b/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/process/HadoopGraphProcessStandardIntegrateTest.java
similarity index 95%
rename from hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/process/HadoopGraphProcessStandardTest.java
rename to hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/process/HadoopGraphProcessStandardIntegrateTest.java
index 2304aed..4b8375d 100644
--- a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/process/HadoopGraphProcessStandardTest.java
+++ b/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/process/HadoopGraphProcessStandardIntegrateTest.java
@@ -29,6 +29,6 @@
  */
 @RunWith(ProcessStandardSuite.class)
 @GraphProviderClass(provider = HadoopGraphProvider.class, graph = HadoopGraph.class)
-public class HadoopGraphProcessStandardTest {
+public class HadoopGraphProcessStandardIntegrateTest {
 
 }
diff --git a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/AbstractHadoopGraphComputerTest.java b/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/AbstractHadoopGraphComputerTest.java
new file mode 100644
index 0000000..56f0417
--- /dev/null
+++ b/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/process/computer/AbstractHadoopGraphComputerTest.java
@@ -0,0 +1,83 @@
+/*
+ * 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.hadoop.process.computer;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+import org.apache.tinkerpop.gremlin.util.Gremlin;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.stream.Stream;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class AbstractHadoopGraphComputerTest {
+
+    @Test
+    public void shouldCopyDirectoriesCorrectly() throws Exception {
+        final String hdfsName = this.getClass().getSimpleName() + "-hdfs";
+        final String localName = this.getClass().getSimpleName() + "-local";
+        final FileSystem fs = FileSystem.get(new Configuration());
+        if (!new File(System.getProperty("java.io.tmpdir") + "/" + localName).exists())
+            assertTrue(new File(System.getProperty("java.io.tmpdir") + "/" + localName).mkdir());
+        File tempFile1 = new File(System.getProperty("java.io.tmpdir") + "/" + localName + "/test1.txt");
+        File tempFile2 = new File(System.getProperty("java.io.tmpdir") + "/" + localName + "/test2.txt");
+        assertTrue(tempFile1.createNewFile());
+        assertTrue(tempFile2.createNewFile());
+        assertTrue(tempFile1.exists());
+        assertTrue(tempFile2.exists());
+        if (fs.exists(new Path("target/" + hdfsName)))
+            assertTrue(fs.delete(new Path("target/" + hdfsName), true));
+        fs.copyFromLocalFile(true, new Path(tempFile1.getAbsolutePath()), new Path("target/" + hdfsName + "/test1.dat"));
+        fs.copyFromLocalFile(true, new Path(tempFile2.getAbsolutePath()), new Path("target/" + hdfsName + "/test2.dat"));
+        assertTrue(fs.exists(new Path("target/" + hdfsName + "/test1.dat")));
+        assertTrue(fs.exists(new Path("target/" + hdfsName + "/test2.dat")));
+        assertTrue(fs.exists(new Path("target/" + hdfsName)));
+        assertTrue(fs.isDirectory(new Path("target/" + hdfsName)));
+        assertFalse(tempFile1.exists());
+        assertFalse(tempFile2.exists());
+        assertTrue(new File(System.getProperty("java.io.tmpdir") + "/" + localName).exists());
+        assertTrue(new File(System.getProperty("java.io.tmpdir") + "/" + localName).delete());
+        assertTrue(fs.exists(new Path("target/" + hdfsName + "/test1.dat")));
+        assertTrue(fs.exists(new Path("target/" + hdfsName + "/test2.dat")));
+        assertTrue(fs.exists(new Path("target/" + hdfsName)));
+        assertTrue(fs.isDirectory(new Path("target/" + hdfsName)));
+        /////
+        final String hadoopGremlinLibsRemote = "hadoop-gremlin-" + Gremlin.version() + "-libs";
+        final File localDirectory = new File(System.getProperty("java.io.tmpdir") + "/" + hadoopGremlinLibsRemote);
+        final File localLibDirectory = new File(localDirectory.getAbsolutePath() + "/" + hdfsName);
+        if (localLibDirectory.exists()) {
+            Stream.of(localLibDirectory.listFiles()).forEach(File::delete);
+            assertTrue(localLibDirectory.delete());
+        }
+        assertFalse(localLibDirectory.exists());
+        assertEquals(localLibDirectory, AbstractHadoopGraphComputer.copyDirectoryIfNonExistent(fs, "target/" + hdfsName));
+        assertTrue(localLibDirectory.exists());
+        assertTrue(localLibDirectory.isDirectory());
+        assertEquals(2, Stream.of(localLibDirectory.listFiles()).filter(file -> file.getName().endsWith(".dat")).count());
+    }
+}
diff --git a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/AbstractStorageCheck.java b/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/AbstractStorageCheck.java
index 492a501..7b679e2 100644
--- a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/AbstractStorageCheck.java
+++ b/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/AbstractStorageCheck.java
@@ -54,7 +54,7 @@
 
         ////////////////////
 
-        final ComputerResult result = graph.compute(graphComputerClass.get()).program(PeerPressureVertexProgram.build().create(graph)).mapReduce(ClusterCountMapReduce.build().memoryKey("clusterCount").create()).submit().get();
+        final ComputerResult result = graphProvider.getGraphComputer(graph).program(PeerPressureVertexProgram.build().create(graph)).mapReduce(ClusterCountMapReduce.build().memoryKey("clusterCount").create()).submit().get();
         // TEST OUTPUT GRAPH
         assertTrue(storage.exists(outputLocation));
         assertTrue(storage.exists(Constants.getGraphLocation(outputLocation)));
@@ -77,7 +77,7 @@
     }
 
     public void checkRemoveAndListMethods(final Storage storage, final String outputLocation) throws Exception {
-        graph.compute(graphComputerClass.get()).program(PeerPressureVertexProgram.build().create(graph)).mapReduce(ClusterCountMapReduce.build().memoryKey("clusterCount").create()).submit().get();
+        graphProvider.getGraphComputer(graph).program(PeerPressureVertexProgram.build().create(graph)).mapReduce(ClusterCountMapReduce.build().memoryKey("clusterCount").create()).submit().get();
         assertTrue(storage.exists(outputLocation));
         assertTrue(storage.exists(Constants.getGraphLocation(outputLocation)));
         assertTrue(storage.exists(Constants.getMemoryLocation(outputLocation, "clusterCount")));
@@ -95,7 +95,7 @@
 
         ////////////////
 
-        graph.compute(graphComputerClass.get()).program(PeerPressureVertexProgram.build().create(graph)).mapReduce(ClusterCountMapReduce.build().memoryKey("clusterCount").create()).submit().get();
+        graphProvider.getGraphComputer(graph).program(PeerPressureVertexProgram.build().create(graph)).mapReduce(ClusterCountMapReduce.build().memoryKey("clusterCount").create()).submit().get();
         assertTrue(storage.exists(outputLocation));
         assertTrue(storage.exists(Constants.getGraphLocation(outputLocation)));
         assertTrue(storage.exists(Constants.getMemoryLocation(outputLocation, "clusterCount")));
@@ -106,7 +106,7 @@
     }
 
     public void checkCopyMethods(final Storage storage, final String outputLocation, final String newOutputLocation, final Class outputGraphParserClass, final Class outputMemoryParserClass) throws Exception {
-        graph.compute(graphComputerClass.get()).program(PeerPressureVertexProgram.build().create(graph)).mapReduce(ClusterCountMapReduce.build().memoryKey("clusterCount").create()).submit().get();
+        graphProvider.getGraphComputer(graph).program(PeerPressureVertexProgram.build().create(graph)).mapReduce(ClusterCountMapReduce.build().memoryKey("clusterCount").create()).submit().get();
         assertTrue(storage.exists(outputLocation));
         assertTrue(storage.exists(Constants.getGraphLocation(outputLocation)));
         assertTrue(storage.exists(Constants.getMemoryLocation(outputLocation, "clusterCount")));
@@ -131,17 +131,12 @@
         final GraphTraversal<Vertex, Long> traversal = g.V().both("knows").groupCount("m").by("age").count();
         assertEquals(4l, traversal.next().longValue());
         assertFalse(storage.exists(outputLocation));
-        assertFalse(storage.exists(Constants.getMemoryLocation(outputLocation, "m")));
-        assertFalse(storage.exists(Constants.getMemoryLocation(outputLocation, Graph.Hidden.hide("reducing"))));
         assertFalse(storage.exists(Constants.getGraphLocation(outputLocation)));
         ///
-        assertEquals(3, traversal.asAdmin().getSideEffects().<Map<Integer, Long>>get("m").get().size());
-        assertEquals(1, traversal.asAdmin().getSideEffects().<Map<Integer, Long>>get("m").get().get(27).longValue());
-        assertEquals(2, traversal.asAdmin().getSideEffects().<Map<Integer, Long>>get("m").get().get(29).longValue());
-        assertEquals(1, traversal.asAdmin().getSideEffects().<Map<Integer, Long>>get("m").get().get(32).longValue());
-        ///
-        assertEquals(4l, traversal.asAdmin().getSideEffects().<Long>get(Graph.Hidden.hide("reducing")).get().longValue());
-
+        assertEquals(3, traversal.asAdmin().getSideEffects().<Map<Integer, Long>>get("m").size());
+        assertEquals(1, traversal.asAdmin().getSideEffects().<Map<Integer, Long>>get("m").get(27).longValue());
+        assertEquals(2, traversal.asAdmin().getSideEffects().<Map<Integer, Long>>get("m").get(29).longValue());
+        assertEquals(1, traversal.asAdmin().getSideEffects().<Map<Integer, Long>>get("m").get(32).longValue());
     }
 
     public void checkFileDirectoryDistinction(final Storage storage, final String directory1, final String directory2) throws Exception {
diff --git a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/FileSystemStorageCheck.java b/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/FileSystemStorageCheck.java
index 72d5efe..c2eeac3 100644
--- a/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/FileSystemStorageCheck.java
+++ b/hadoop-gremlin/src/test/java/org/apache/tinkerpop/gremlin/hadoop/structure/io/FileSystemStorageCheck.java
@@ -47,7 +47,7 @@
         final String outputLocation = graph.configuration().getString(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION);
         // TestHelper creates the directory and we need it not to exist
         deleteDirectory(outputLocation);
-        super.checkHeadMethods(storage, inputLocation, outputLocation, InputOutputHelper.getInputFormat((Class) Class.forName(graph.configuration().getString(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT))), SequenceFileInputFormat.class);
+        super.checkHeadMethods(storage, inputLocation, outputLocation, InputOutputHelper.getInputFormat((Class) Class.forName(graph.configuration().getString(Constants.GREMLIN_HADOOP_GRAPH_WRITER))), SequenceFileInputFormat.class);
     }
 
     @Test
@@ -66,7 +66,7 @@
         final String newOutputLocation = TestHelper.makeTestDataDirectory(FileSystemStorageCheck.class, "new-location-for-copy");
         // TestHelper creates the directory and we need it not to exist
         deleteDirectory(newOutputLocation);
-        super.checkCopyMethods(storage, outputLocation, newOutputLocation, InputOutputHelper.getInputFormat((Class) Class.forName(graph.configuration().getString(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT))), SequenceFileInputFormat.class);
+        super.checkCopyMethods(storage, outputLocation, newOutputLocation, InputOutputHelper.getInputFormat((Class) Class.forName(graph.configuration().getString(Constants.GREMLIN_HADOOP_GRAPH_WRITER))), SequenceFileInputFormat.class);
 
     }
 
diff --git a/neo4j-gremlin/pom.xml b/neo4j-gremlin/pom.xml
index fae8cad..b2a5de1 100644
--- a/neo4j-gremlin/pom.xml
+++ b/neo4j-gremlin/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.4-SNAPSHOT</version>
+        <version>3.2.2-SNAPSHOT</version>
     </parent>
     <artifactId>neo4j-gremlin</artifactId>
     <name>Apache TinkerPop :: Neo4j Gremlin</name>
@@ -114,7 +114,7 @@
                 <configuration>
                     <archive>
                         <manifestEntries>
-                            <Gremlin-Plugin-Dependencies>org.neo4j:neo4j-tinkerpop-api-impl:0.3-2.3.2
+                            <Gremlin-Plugin-Dependencies>org.neo4j:neo4j-tinkerpop-api-impl:0.3-2.3.3
                             </Gremlin-Plugin-Dependencies>
                         </manifestEntries>
                     </archive>
@@ -142,7 +142,7 @@
                 <dependency>
                     <groupId>org.neo4j</groupId>
                     <artifactId>neo4j-tinkerpop-api-impl</artifactId>
-                    <version>0.3-2.3.2</version>
+                    <version>0.3-2.3.3</version>
                     <scope>test</scope>
                     <exclusions>
                         <exclusion>
diff --git a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java
index 3c22567..6b4e9c4 100644
--- a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java
+++ b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java
@@ -77,4 +77,9 @@
     public void addHasContainer(final HasContainer hasContainer) {
         this.hasContainers.add(hasContainer);
     }
+
+    @Override
+    public int hashCode() {
+        return super.hashCode() ^ this.hasContainers.hashCode();
+    }
 }
diff --git a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/strategy/optimization/Neo4jGraphStepStrategy.java b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/strategy/optimization/Neo4jGraphStepStrategy.java
index 7a6216f..eed7b15 100644
--- a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/strategy/optimization/Neo4jGraphStepStrategy.java
+++ b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/strategy/optimization/Neo4jGraphStepStrategy.java
@@ -40,15 +40,15 @@
 
     @Override
     public void apply(final Traversal.Admin<?, ?> traversal) {
-        if (traversal.getEngine().isComputer())
-            return;
-
         TraversalHelper.getStepsOfClass(GraphStep.class, traversal).forEach(originalGraphStep -> {
             final Neo4jGraphStep<?, ?> neo4jGraphStep = new Neo4jGraphStep<>(originalGraphStep);
             TraversalHelper.replaceStep(originalGraphStep, (Step) neo4jGraphStep, traversal);
             Step<?, ?> currentStep = neo4jGraphStep.getNextStep();
             while (currentStep instanceof HasContainerHolder) {
-                ((HasContainerHolder) currentStep).getHasContainers().forEach(neo4jGraphStep::addHasContainer);
+                ((HasContainerHolder) currentStep).getHasContainers().forEach(hasContainer -> {
+                    if (!GraphStep.processHasContainerIds(neo4jGraphStep, hasContainer))
+                        neo4jGraphStep.addHasContainer(hasContainer);
+                });
                 currentStep.getLabels().forEach(neo4jGraphStep::addLabel);
                 traversal.removeStep(currentStep);
                 currentStep = currentStep.getNextStep();
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/NativeNeo4jCypherCheck.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/NativeNeo4jCypherCheck.java
index 07ff06e..c98e8f9 100644
--- a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/NativeNeo4jCypherCheck.java
+++ b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/NativeNeo4jCypherCheck.java
@@ -42,7 +42,9 @@
 
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.as;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.where;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -142,72 +144,82 @@
         final List<Supplier<GraphTraversal<?, ?>>> traversals = Arrays.asList(
                 () -> g.V().match(
                         as("a").in("sungBy").as("b"),
-                        as("a").in("writtenBy").as("b")).select("a","b").by("name"),
-                () -> n.cypher("MATCH (a)<-[:sungBy]-(b), (a)<-[:writtenBy]-(b) RETURN a, b").select("a","b").by("name"),
+                        as("a").in("writtenBy").as("b")).select("a", "b").by("name"),
+                () -> n.cypher("MATCH (a)<-[:sungBy]-(b), (a)<-[:writtenBy]-(b) RETURN a.name, b.name"),
                 ///
                 () -> g.V().match(
                         as("a").out("followedBy").as("b"),
-                        as("b").out("followedBy").as("a")).select("a","b").by("name"),
-                () -> n.cypher("MATCH (a)-[:followedBy]->(b), (b)-[:followedBy]->(a) RETURN a, b").select("a","b").by("name"),
+                        as("b").out("followedBy").as("a")).select("a", "b").by("name"),
+                () -> n.cypher("MATCH (a)-[:followedBy]->(b), (b)-[:followedBy]->(a) RETURN a.name, b.name"),
                 ///
                 () -> g.V().match(
                         as("a").out("followedBy").count().as("b"),
                         as("a").in("followedBy").count().as("b"),
                         as("b").is(P.gt(10))).select("a").by("name"),
-                () -> n.cypher("MATCH (a)-[:followedBy]->(b) WITH a, COUNT(b) AS bc WHERE bc > 10 MATCH (a)<-[:followedBy]-(c) WITH a, bc, COUNT(c) AS cc WHERE bc = cc RETURN a").select("a").by("name"),
+                () -> n.cypher("MATCH (a)-[:followedBy]->(b) WITH a, COUNT(b) AS bc WHERE bc > 10 MATCH (a)<-[:followedBy]-(c) WITH a, bc, COUNT(c) AS cc WHERE bc = cc RETURN a.name"),
                 ///
-                () -> g.V().match(
+                /*() -> g.V().match(
                         as("a").in("sungBy").count().as("b"),
                         as("a").in("sungBy").as("c"),
                         as("c").out("followedBy").as("d"),
                         as("d").out("sungBy").as("e"),
                         as("e").in("sungBy").count().as("b"),
                         where("a", P.neq("e"))).select("a", "e").by("name"),
-                () -> n.cypher("MATCH (a)<-[:sungBy]-()-[:followedBy]->()-[:sungBy]->(e) WHERE a <> e WITH a, e MATCH (a)<-[:sungBy]-(b) WITH a, e, COUNT(DISTINCT b) as bc MATCH (e)<-[:sungBy]-(f) WITH a, e, bc, COUNT(DISTINCT f) as fc WHERE bc = fc RETURN a, e").select("a", "e").by("name"),
-                ///
+                () -> n.cypher("MATCH (a)<-[:sungBy]-()-[:followedBy]->()-[:sungBy]->(e) WHERE a <> e WITH a, e MATCH (a)<-[:sungBy]-(b) WITH a, e, COUNT(DISTINCT b) as bc MATCH (e)<-[:sungBy]-(f) WITH a, e, bc, COUNT(DISTINCT f) as fc WHERE bc = fc RETURN a.name, e.name"),
+                *////
                 () -> g.V().match(
                         as("a").in("followedBy").as("b"),
                         as("a").out("sungBy").as("c"),
-                        as("a").out("writtenBy").as("d")).select("a","b","c","d").by("name"),
-                () -> n.cypher("MATCH (a)<-[:followedBy]-(b), (a)-[:sungBy]->(c), (a)-[:writtenBy]->(d) RETURN a, b, c, d").select("a","b","c","d").by("name"),
+                        as("b").out("sungBy").as("c")).select("a", "b"),
+                () -> n.cypher("MATCH (a)<-[:followedBy]-(b), (a)-[:sungBy]->(c), (b)-[:sungBy]->(c) RETURN a, b"),
                 ///
                 () -> g.V().match(
                         as("a").in("followedBy").as("b"),
                         as("a").out("sungBy").as("c"),
                         as("a").out("writtenBy").as("d"),
-                        where("c", P.neq("d"))).select("a","b","c","d").by("name"),
-                () -> n.cypher("MATCH (a)<-[:followedBy]-(b), (a)-[:sungBy]->(c), (a)-[:writtenBy]->(d) WHERE c <> d RETURN a, b, c, d").select("a","b","c","d").by("name"),
+                        as("b").out("sungBy").as("c"),
+                        as("b").out("writtenBy").as("d"),
+                        where("c", P.neq("d"))).select("a", "b").by("name"),
+                () -> n.cypher("MATCH (a)<-[:followedBy]-(b), (a)-[:sungBy]->(c), (a)-[:writtenBy]->(d), (b)-[:sungBy]->(c), (b)-[:writtenBy]->(d) WHERE c <> d RETURN a.name, b.name"),
                 ///
                 () -> g.V().match(
                         as("a").in("sungBy").as("b"),
                         as("a").in("writtenBy").as("b"),
                         as("b").out("followedBy").as("c"),
                         as("c").out("sungBy").as("a"),
-                        as("c").out("writtenBy").as("a")).select("a", "b", "c").by("name"),
-                () -> n.cypher("MATCH (a)<-[:sungBy]-(b), (a)<-[:writtenBy]-(b), (b)-[:followedBy]->(c), (c)-[:sungBy]->(a), (c)-[:writtenBy]->(a) RETURN a, b, c").select("a", "b", "c").by("name"),
+                        as("c").out("writtenBy").as("a")).select("a").by("name"),
+                () -> n.cypher("MATCH (a)<-[:sungBy]-(b), (a)<-[:writtenBy]-(b), (b)-[:followedBy]->(c), (c)-[:sungBy]->(a), (c)-[:writtenBy]->(a) RETURN a.name"),
                 ///
                 () -> g.V().match(
                         as("a").has("name", "Garcia").has(T.label, "artist"),
                         as("a").in("writtenBy").as("b"),
                         as("b").out("followedBy").as("c"),
                         as("c").out("writtenBy").as("d"),
-                        as("d").where(P.neq("a"))).select("a","b","c","d").by("name"),
-                () -> n.cypher("MATCH (a)<-[:writtenBy]-(b), (b)-[:followedBy]->(c), (c)-[:writtenBy]->(d) WHERE a <> d AND a.name = 'Garcia' AND 'artist' IN labels(a) RETURN a, b, c, d").select("a","b","c","d").by("name"),
+                        as("d").where(P.neq("a"))).select("a", "d").by("name"),
+                () -> n.cypher("MATCH (a)<-[:writtenBy]-(b), (b)-[:followedBy]->(c), (c)-[:writtenBy]->(d) WHERE a <> d AND a.name = 'Garcia' AND 'artist' IN labels(a) RETURN a.name, d.name"),
                 ///
                 () -> g.V().match(
                         as("a").out("followedBy").as("b"),
+                        as("b").out("followedBy").as("c")).select("a").by("name"),
+                () -> n.cypher("MATCH (a)-[:followedBy]->(b), (b)-[:followedBy]->(c) RETURN a.name")
+                ///
+                /*() -> g.V().match(
+                        as("a").out("followedBy").as("b"),
                         as("a").has(T.label, "song").has("performances", P.gt(10)),
                         as("a").out("writtenBy").as("c"),
                         as("b").out("writtenBy").as("c")).select("a", "b", "c").by("name"),
-                () -> n.cypher("MATCH (a)-[:followedBy]->(b), (a)-[:writtenBy]->(c), (b)-[:writtenBy]->(c) WHERE a.performances > 10 AND 'song' IN labels(a) RETURN a, b, c").select("a","b","c").by("name")
+                () -> n.cypher("MATCH (a)-[:followedBy]->(b), (a)-[:writtenBy]->(c), (b)-[:writtenBy]->(c) WHERE a.performances > 10 AND 'song' IN labels(a) RETURN a, b, c").select("a","b","c").by("name")*/
         );
-        int counter = 0;
-        for (final Supplier<GraphTraversal<?, ?>> traversal : traversals) {
-            logger.info("pre-strategy:  {}", traversal.get());
-            logger.info("post-strategy: {}", traversal.get().iterate());
-            logger.info(TimeUtil.clockWithResult(25, () -> traversal.get().count().next()).toString());
-            if (++counter % 2 == 0)
+
+        for (int i = 0; i < traversals.size(); i = i + 2) {
+            final Supplier<GraphTraversal<?, ?>> gremlin = traversals.get(i);
+            final Supplier<GraphTraversal<?, ?>> cypher = traversals.get(i + 1);
+            for (final Supplier<GraphTraversal<?, ?>> sub : Arrays.asList(cypher, gremlin)) {
+                logger.info("pre-strategy:  {}", sub.get());
+                logger.info("post-strategy: {}", sub.get().iterate());
+                logger.info(TimeUtil.clockWithResult(25, () -> sub.get().count().next()).toString());
                 logger.info("------------------");
+            }
         }
     }
 
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/NativeNeo4jStructureCheck.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/NativeNeo4jStructureCheck.java
index 7237085..d585a5a 100644
--- a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/NativeNeo4jStructureCheck.java
+++ b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/structure/NativeNeo4jStructureCheck.java
@@ -131,7 +131,7 @@
     public void shouldEnsureTraverseRelationshipNeedsTx() throws ScriptException {
         final GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine();
         final Bindings bindings = engine.createBindings();
-        bindings.put("g", graph.traversal(GraphTraversalSource.standard()));
+        bindings.put("g", graph.traversal());
         bindings.put("#jsr223.groovy.engine.keep.globals", "phantom");
 
         Vertex marko = this.graph.addVertex(T.label, "Person", "name", "marko");
@@ -152,7 +152,7 @@
     public void shouldEnsureTraversalOfVerticesNeedsTx() throws ScriptException {
         final GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine();
         final Bindings bindings = engine.createBindings();
-        bindings.put("g", graph.traversal(GraphTraversalSource.standard()));
+        bindings.put("g", graph.traversal());
         bindings.put("#jsr223.groovy.engine.keep.globals", "phantom");
 
         Vertex marko = this.graph.addVertex(T.label, "Person", "name", "marko");
diff --git a/pom.xml b/pom.xml
index 35c1a64..749c8f0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
     </parent>
     <groupId>org.apache.tinkerpop</groupId>
     <artifactId>tinkerpop</artifactId>
-    <version>3.1.4-SNAPSHOT</version>
+    <version>3.2.2-SNAPSHOT</version>
     <packaging>pom</packaging>
     <name>Apache TinkerPop</name>
     <description>A Graph Computing Framework</description>
@@ -103,11 +103,17 @@
             <email>dylan.millikin@gmail.com</email>
             <url>https://github.com/PommeVerte</url>
         </contributor>
+        <contributor>
+            <name>Ted Wilmes</name>
+            <email>twilmes@gmail.com</email>
+            <url>https://github.com/twilmes</url>
+        </contributor>
     </contributors>
     <modules>
         <module>gremlin-shaded</module>
         <module>gremlin-core</module>
         <module>gremlin-test</module>
+        <module>gremlin-benchmark</module>
         <module>gremlin-groovy</module>
         <module>gremlin-groovy-test</module>
         <module>tinkergraph-gremlin</module>
@@ -127,7 +133,7 @@
     </scm>
     <properties>
         <commons.configuration.version>1.10</commons.configuration.version>
-        <groovy.version>2.4.6</groovy.version>
+        <groovy.version>2.4.7</groovy.version>
         <junit.version>4.12</junit.version>
         <metrics.version>3.0.2</metrics.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -330,7 +336,7 @@
                     <artifactId>maven-surefire-plugin</artifactId>
                     <version>2.17</version>
                     <configuration>
-                        <argLine>-Dlog4j.configuration=${log4j-test.properties} -Dbuild.dir=${project.build.directory}
+                        <argLine>-Dlog4j.configuration=${log4j-test.properties} -Dbuild.dir=${project.build.directory} -Dis.testing=true
                         </argLine>
                         <excludes>
                             <exclude>**/*IntegrateTest.java</exclude>
@@ -356,7 +362,7 @@
                                 <argLine>-Dlog4j.configuration=${log4j-test.properties} -Dhost=localhost -Dport=8182
                                     -Djub.consumers=CONSOLE,H2 -Djub.db.file=target/performance/h2/benchmarks
                                     -Djub.charts.dir=target/performance/charts -Djub.customkey=${project.parent.version}
-                                    -Dbuild.dir=${project.build.directory}
+                                    -Dbuild.dir=${project.build.directory}  -Dis.testing=true
                                 </argLine>
                                 <summaryFile>target/failsafe-reports/failsafe-integration.xml</summaryFile>
                             </configuration>
@@ -493,6 +499,11 @@
                 <version>3.2.2</version>
             </dependency>
             <dependency>
+                <groupId>org.apache.commons</groupId>
+                <artifactId>commons-lang3</artifactId>
+                <version>3.3.1</version>
+            </dependency>
+            <dependency>
                 <groupId>org.apache.hadoop</groupId>
                 <artifactId>hadoop-core</artifactId>
                 <version>1.2.1</version>
@@ -664,6 +675,7 @@
                                     </resources>
                                     <nonFilteredFileExtensions>
                                         <nonFilteredFileExtension>png</nonFilteredFileExtension>
+                                        <nonFilteredFileExtension>py</nonFilteredFileExtension>
                                     </nonFilteredFileExtensions>
                                 </configuration>
                             </execution>
@@ -775,6 +787,31 @@
                                 </configuration>
                             </execution>
                             <execution>
+                                <id>recipe-book</id>
+                                <phase>generate-resources</phase>
+                                <goals>
+                                    <goal>process-asciidoc</goal>
+                                </goals>
+                                <configuration>
+                                    <sourceDirectory>${asciidoc.input.dir}/recipes</sourceDirectory>
+                                    <sourceDocumentName>index.asciidoc</sourceDocumentName>
+                                    <outputDirectory>${htmlsingle.output.dir}/recipes</outputDirectory>
+                                    <backend>html5</backend>
+                                    <doctype>book</doctype>
+                                    <attributes>
+                                        <imagesdir>../images</imagesdir>
+                                        <encoding>UTF-8</encoding>
+                                        <toc>true</toc>
+                                        <toclevels>2</toclevels>
+                                        <toc-position>left</toc-position>
+                                        <stylesdir>${asciidoctor.style.dir}</stylesdir>
+                                        <stylesheet>tinkerpop.css</stylesheet>
+                                        <source-highlighter>coderay</source-highlighter>
+                                        <basedir>${project.basedir}</basedir>
+                                    </attributes>
+                                </configuration>
+                            </execution>
+                            <execution>
                                 <id>tutorial-getting-started</id>
                                 <phase>generate-resources</phase>
                                 <goals>
@@ -818,6 +855,28 @@
                                     </attributes>
                                 </configuration>
                             </execution>
+                            <execution>
+                                <id>tutorial-gremlin-language-variants</id>
+                                <phase>generate-resources</phase>
+                                <goals>
+                                    <goal>process-asciidoc</goal>
+                                </goals>
+                                <configuration>
+                                    <sourceDirectory>${asciidoc.input.dir}/tutorials/gremlin-language-variants</sourceDirectory>
+                                    <sourceDocumentName>index.asciidoc</sourceDocumentName>
+                                    <outputDirectory>${htmlsingle.output.dir}/tutorials/gremlin-language-variants</outputDirectory>
+                                    <backend>html5</backend>
+                                    <doctype>article</doctype>
+                                    <attributes>
+                                        <imagesdir>../../images</imagesdir>
+                                        <encoding>UTF-8</encoding>
+                                        <stylesdir>${asciidoctor.style.dir}</stylesdir>
+                                        <stylesheet>tinkerpop.css</stylesheet>
+                                        <source-highlighter>coderay</source-highlighter>
+                                        <basedir>${project.basedir}</basedir>
+                                    </attributes>
+                                </configuration>
+                            </execution>
                         </executions>
                     </plugin>
                 </plugins>
@@ -873,7 +932,7 @@
                                     <overview>${basedir}/docs/javadoc/overview.html</overview>
                                     <quiet>true</quiet>
                                     <sourcepath>
-                                        giraph-gremlin/src/main/java:gremlin-core/src/main/java:gremlin-driver/src/main/java:gremlin-groovy/src/main/java:gremlin-groovy-test/src/main/java:gremlin-server/src/main/java:gremlin-test/src/main/java:hadoop-gremlin/src/main/java:neo4j-gremlin/src/main/java:spark-gremlin/src/main/java:tinkergraph-gremlin/src/main/java
+                                        giraph-gremlin/src/main/java:gremlin-core/src/main/java:gremlin-driver/src/main/java:gremlin-groovy/src/main/java:gremlin-groovy-test/src/main/java:gremlin-server/src/main/java:gremlin-test/src/main/java:hadoop-gremlin/src/main/java:neo4j-gremlin/src/main/java:spark-gremlin/src/main/java:tinkergraph-gremlin/src/main/java:gremlin-benchmark/src/main/java
                                     </sourcepath>
                                 </configuration>
                             </execution>
@@ -998,7 +1057,7 @@
                         <artifactId>maven-surefire-plugin</artifactId>
                         <version>2.17</version>
                         <configuration>
-                            <argLine>-Dlog4j.configuration=${log4j-silent.properties} -Dbuild.dir=${project.build.directory}
+                            <argLine>-Dlog4j.configuration=${log4j-silent.properties} -Dbuild.dir=${project.build.directory} -Dis.testing=true
                             </argLine>
                             <excludes>
                                 <exclude>**/*IntegrateTest.java</exclude>
@@ -1074,7 +1133,7 @@
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-surefire-plugin</artifactId>
                         <configuration>
-                            <argLine>-Dlog4j.configuration=${log4j-test.properties} -Dbuild.dir=${project.build.directory} -Dhadoop.home.dir=${project.build.directory}/hadoop_home</argLine>
+                            <argLine>-Dlog4j.configuration=${log4j-test.properties} -Dbuild.dir=${project.build.directory} -Dhadoop.home.dir=${project.build.directory}/hadoop_home -Dis.testing=true</argLine>
                         </configuration>
                     </plugin>
                 </plugins>
diff --git a/spark-gremlin/pom.xml b/spark-gremlin/pom.xml
index 9655eef..a8bc9ae 100644
--- a/spark-gremlin/pom.xml
+++ b/spark-gremlin/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.4-SNAPSHOT</version>
+        <version>3.2.2-SNAPSHOT</version>
     </parent>
     <artifactId>spark-gremlin</artifactId>
     <name>Apache TinkerPop :: Spark Gremlin</name>
@@ -104,7 +104,7 @@
         <dependency>
             <groupId>org.apache.spark</groupId>
             <artifactId>spark-core_2.10</artifactId>
-            <version>1.5.2</version>
+            <version>1.6.1</version>
             <exclusions>
                 <!-- self conflicts -->
                 <exclusion>
diff --git a/spark-gremlin/src/main/bin/init-tp-spark.sh b/spark-gremlin/src/main/bin/init-tp-spark.sh
index 51eca6b..670a2a9 100755
--- a/spark-gremlin/src/main/bin/init-tp-spark.sh
+++ b/spark-gremlin/src/main/bin/init-tp-spark.sh
@@ -27,7 +27,7 @@
   echo
   echo "Example:"
   echo
-  echo "  $0 /usr/local/spark-1.5.2-bin-hadoop2.6 spark@master spark@slave1 spark@slave2 spark@slave3"
+  echo "  $0 /usr/local/spark-1.6.1-bin-hadoop2.6 spark@master spark@slave1 spark@slave2 spark@slave3"
   echo
   exit 1
 fi
diff --git a/spark-gremlin/src/main/groovy/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/CompactBufferSerializer.groovy b/spark-gremlin/src/main/groovy/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/CompactBufferSerializer.groovy
new file mode 100644
index 0000000..be491c4
--- /dev/null
+++ b/spark-gremlin/src/main/groovy/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/CompactBufferSerializer.groovy
@@ -0,0 +1,63 @@
+/*
+ * 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.spark.structure.io.gryo
+
+import org.apache.spark.util.collection.CompactBuffer
+import org.apache.tinkerpop.shaded.kryo.Kryo
+import org.apache.tinkerpop.shaded.kryo.Serializer
+import org.apache.tinkerpop.shaded.kryo.io.Input
+import org.apache.tinkerpop.shaded.kryo.io.Output
+import scala.reflect.ClassTag
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class CompactBufferSerializer<T> extends Serializer<CompactBuffer<T>> {
+
+    /*
+    private final ClassTag<T> evidence$1;
+    private T element0;
+    private T element1;
+    private int org$apache$spark$util$collection$CompactBuffer$$curSize;
+    private Object otherElements;
+     */
+
+    @Override
+    public void write(final Kryo kryo, final Output output, final CompactBuffer<T> compactBuffer) {
+        kryo.writeClassAndObject(output, compactBuffer.evidence$1);
+        kryo.writeClassAndObject(output, compactBuffer.element0);
+        kryo.writeClassAndObject(output, compactBuffer.element1);
+        output.flush();
+        output.writeVarInt(compactBuffer.org$apache$spark$util$collection$CompactBuffer$$curSize, true);
+        kryo.writeClassAndObject(output, compactBuffer.otherElements);
+        output.flush();
+    }
+
+    @Override
+    public CompactBuffer<T> read(Kryo kryo, Input input, Class<CompactBuffer<T>> aClass) {
+        final ClassTag<T> classTag = kryo.readClassAndObject(input);
+        final CompactBuffer<T> compactBuffer = new CompactBuffer<>(classTag);
+        compactBuffer.element0 = kryo.readClassAndObject(input);
+        compactBuffer.element1 = kryo.readClassAndObject(input);
+        compactBuffer.org$apache$spark$util$collection$CompactBuffer$$curSize = input.readVarInt(true);
+        compactBuffer.otherElements = kryo.readClassAndObject(input);
+        return compactBuffer;
+    }
+}
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/MemoryAccumulator.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/MemoryAccumulator.java
new file mode 100644
index 0000000..cf8cb25
--- /dev/null
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/MemoryAccumulator.java
@@ -0,0 +1,55 @@
+/*
+ * 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.spark.process.computer;
+
+import org.apache.spark.AccumulatorParam;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritable;
+import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class MemoryAccumulator<A> implements AccumulatorParam<ObjectWritable<A>> {
+
+    private final MemoryComputeKey<A> memoryComputeKey;
+
+    public MemoryAccumulator(final MemoryComputeKey<A> memoryComputeKey) {
+        this.memoryComputeKey = memoryComputeKey;
+    }
+
+    @Override
+    public ObjectWritable<A> addAccumulator(final ObjectWritable<A> a, final ObjectWritable<A> b) {
+        if (a.isEmpty())
+            return b;
+        if (b.isEmpty())
+            return a;
+        return new ObjectWritable<>(this.memoryComputeKey.getReducer().apply(a.get(), b.get()));
+    }
+
+    @Override
+    public ObjectWritable<A> addInPlace(final ObjectWritable<A> a, final ObjectWritable<A> b) {
+        return this.addAccumulator(a, b);
+    }
+
+    @Override
+    public ObjectWritable<A> zero(final ObjectWritable<A> a) {
+        return ObjectWritable.empty();
+    }
+}
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/RuleAccumulator.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/RuleAccumulator.java
deleted file mode 100644
index bebd283..0000000
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/RuleAccumulator.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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.spark.process.computer;
-
-import org.apache.spark.AccumulatorParam;
-import org.apache.tinkerpop.gremlin.hadoop.process.computer.util.Rule;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class RuleAccumulator implements AccumulatorParam<Rule> {
-
-    @Override
-    public Rule addAccumulator(final Rule a, final Rule b) {
-        if (a.getOperation().equals(Rule.Operation.NO_OP))
-            return b;
-        if (b.getOperation().equals(Rule.Operation.NO_OP))
-            return a;
-        else
-            return new Rule(b.getOperation(), b.getOperation().compute(a.getObject(), b.getObject()));
-    }
-
-    @Override
-    public Rule addInPlace(final Rule a, final Rule b) {
-        if (a.getOperation().equals(Rule.Operation.NO_OP))
-            return b;
-        if (b.getOperation().equals(Rule.Operation.NO_OP))
-            return a;
-        else
-            return new Rule(b.getOperation(), b.getOperation().compute(a.getObject(), b.getObject()));
-    }
-
-    @Override
-    public Rule zero(final Rule rule) {
-        return new Rule(Rule.Operation.NO_OP, null);
-    }
-
-
-}
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkExecutor.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkExecutor.java
index e0dccab..8dd2381 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkExecutor.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkExecutor.java
@@ -21,18 +21,23 @@
 import com.google.common.base.Optional;
 import org.apache.commons.configuration.Configuration;
 import org.apache.spark.api.java.JavaPairRDD;
+import org.apache.spark.api.java.function.Function2;
+import org.apache.spark.api.java.function.PairFlatMapFunction;
 import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
-import org.apache.tinkerpop.gremlin.hadoop.structure.io.HadoopPools;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
 import org.apache.tinkerpop.gremlin.process.computer.MessageCombiner;
+import org.apache.tinkerpop.gremlin.process.computer.VertexComputeKey;
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.util.ComputerGraph;
+import org.apache.tinkerpop.gremlin.process.computer.util.VertexProgramHelper;
 import org.apache.tinkerpop.gremlin.spark.process.computer.payload.MessagePayload;
 import org.apache.tinkerpop.gremlin.spark.process.computer.payload.Payload;
 import org.apache.tinkerpop.gremlin.spark.process.computer.payload.ViewIncomingPayload;
 import org.apache.tinkerpop.gremlin.spark.process.computer.payload.ViewOutgoingPayload;
 import org.apache.tinkerpop.gremlin.spark.process.computer.payload.ViewPayload;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimServiceLoader;
 import org.apache.tinkerpop.gremlin.structure.util.Attachable;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
@@ -40,6 +45,7 @@
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import scala.Tuple2;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
@@ -49,11 +55,21 @@
  */
 public final class SparkExecutor {
 
-    private static final String[] EMPTY_ARRAY = new String[0];
-
     private SparkExecutor() {
     }
 
+    //////////////////
+    // DATA LOADING //
+    //////////////////
+
+    public static JavaPairRDD<Object, VertexWritable> applyGraphFilter(final JavaPairRDD<Object, VertexWritable> graphRDD, final GraphFilter graphFilter) {
+        return graphRDD.mapPartitionsToPair(partitionIterator -> {
+            final GraphFilter gFilter = graphFilter.clone();
+            return () -> IteratorUtils.filter(partitionIterator, tuple -> (tuple._2().get().applyGraphFilter(gFilter)).isPresent());
+        }, true);
+    }
+
+
     ////////////////////
     // VERTEX PROGRAM //
     ////////////////////
@@ -62,92 +78,122 @@
             final JavaPairRDD<Object, VertexWritable> graphRDD,
             final JavaPairRDD<Object, ViewIncomingPayload<M>> viewIncomingRDD,
             final SparkMemory memory,
-            final Configuration apacheConfiguration) {
+            final Configuration graphComputerConfiguration,    // has the Graph/GraphComputer.configuration() information
+            final Configuration vertexProgramConfiguration) { // has the VertexProgram.loadState() information
 
-        if (null != viewIncomingRDD) // the graphRDD and the viewRDD must have the same partitioner
+        boolean partitionedGraphRDD = graphRDD.partitioner().isPresent();
+
+        if (partitionedGraphRDD && null != viewIncomingRDD) // the graphRDD and the viewRDD must have the same partitioner
             assert graphRDD.partitioner().get().equals(viewIncomingRDD.partitioner().get());
-        final JavaPairRDD<Object, ViewOutgoingPayload<M>> viewOutgoingRDD = (((null == viewIncomingRDD) ?
+        final JavaPairRDD<Object, ViewOutgoingPayload<M>> viewOutgoingRDD = ((null == viewIncomingRDD) ?
                 graphRDD.mapValues(vertexWritable -> new Tuple2<>(vertexWritable, Optional.<ViewIncomingPayload<M>>absent())) : // first iteration will not have any views or messages
                 graphRDD.leftOuterJoin(viewIncomingRDD))                                                   // every other iteration may have views and messages
                 // for each partition of vertices emit a view and their outgoing messages
                 .mapPartitionsToPair(partitionIterator -> {
-                    HadoopPools.initialize(apacheConfiguration);
-                    final VertexProgram<M> workerVertexProgram = VertexProgram.<VertexProgram<M>>createVertexProgram(HadoopGraph.open(apacheConfiguration), apacheConfiguration); // each partition(Spark)/worker(TP3) has a local copy of the vertex program (a worker's task)
-                    final Set<String> elementComputeKeys = workerVertexProgram.getElementComputeKeys(); // the compute keys as a set
-                    final String[] elementComputeKeysArray = elementComputeKeys.size() == 0 ? EMPTY_ARRAY : elementComputeKeys.toArray(new String[elementComputeKeys.size()]); // the compute keys as an array
+                    KryoShimServiceLoader.applyConfiguration(graphComputerConfiguration);
+                    final VertexProgram<M> workerVertexProgram = VertexProgram.createVertexProgram(HadoopGraph.open(graphComputerConfiguration), vertexProgramConfiguration); // each partition(Spark)/worker(TP3) has a local copy of the vertex program (a worker's task)
+                    final String[] vertexComputeKeysArray = VertexProgramHelper.vertexComputeKeysAsArray(workerVertexProgram.getVertexComputeKeys()); // the compute keys as an array
                     final SparkMessenger<M> messenger = new SparkMessenger<>();
                     workerVertexProgram.workerIterationStart(memory.asImmutable()); // start the worker
                     return () -> IteratorUtils.map(partitionIterator, vertexViewIncoming -> {
                         final StarGraph.StarVertex vertex = vertexViewIncoming._2()._1().get(); // get the vertex from the vertex writable
-                        // drop any computed properties that are cached in memory
-                        if (elementComputeKeysArray.length > 0)
-                            vertex.dropVertexProperties(elementComputeKeysArray);
                         final boolean hasViewAndMessages = vertexViewIncoming._2()._2().isPresent(); // if this is the first iteration, then there are no views or messages
-                        final List<DetachedVertexProperty<Object>> previousView = hasViewAndMessages ? vertexViewIncoming._2()._2().get().getView() : Collections.emptyList();
+                        final List<DetachedVertexProperty<Object>> previousView = hasViewAndMessages ? vertexViewIncoming._2()._2().get().getView() : memory.isInitialIteration() ? new ArrayList<>() : Collections.emptyList();
+                        // revive compute properties if they already exist
+                        if (memory.isInitialIteration() && vertexComputeKeysArray.length > 0)
+                            vertex.properties(vertexComputeKeysArray).forEachRemaining(vertexProperty -> previousView.add(DetachedFactory.detach(vertexProperty, true)));
+                        // drop any computed properties that are cached in memory
+                        vertex.dropVertexProperties(vertexComputeKeysArray);
                         final List<M> incomingMessages = hasViewAndMessages ? vertexViewIncoming._2()._2().get().getIncomingMessages() : Collections.emptyList();
-                        previousView.forEach(property -> property.attach(Attachable.Method.create(vertex)));  // attach the view to the vertex
-                        // previousView.clear(); // no longer needed so kill it from memory
-                        ///
+                        IteratorUtils.removeOnNext(previousView.iterator()).forEachRemaining(property -> property.attach(Attachable.Method.create(vertex)));  // attach the view to the vertex
+                        assert previousView.isEmpty();
+                        // do the vertex's vertex program iteration
                         messenger.setVertexAndIncomingMessages(vertex, incomingMessages); // set the messenger with the incoming messages
                         workerVertexProgram.execute(ComputerGraph.vertexProgram(vertex, workerVertexProgram), messenger, memory); // execute the vertex program on this vertex for this iteration
-                        // incomingMessages.clear(); // no longer needed so kill it from memory
-                        ///
-                        final List<DetachedVertexProperty<Object>> nextView = elementComputeKeysArray.length == 0 ?  // not all vertex programs have compute keys
+                        // assert incomingMessages.isEmpty();  // maybe the program didn't read all the messages
+                        incomingMessages.clear();
+                        // detached the compute property view from the vertex
+                        final List<DetachedVertexProperty<Object>> nextView = vertexComputeKeysArray.length == 0 ?  // not all vertex programs have compute keys
                                 Collections.emptyList() :
-                                IteratorUtils.list(IteratorUtils.map(vertex.properties(elementComputeKeysArray), property -> DetachedFactory.detach(property, true)));
-                        final List<Tuple2<Object, M>> outgoingMessages = messenger.getOutgoingMessages(); // get the outgoing messages
+                                IteratorUtils.list(IteratorUtils.map(vertex.properties(vertexComputeKeysArray), vertexProperty -> DetachedFactory.detach(vertexProperty, true)));
+                        // drop compute property view as it has now been detached from the vertex
+                        vertex.dropVertexProperties(vertexComputeKeysArray);
+                        final List<Tuple2<Object, M>> outgoingMessages = messenger.getOutgoingMessages(); // get the outgoing messages being sent by this vertex
                         if (!partitionIterator.hasNext())
                             workerVertexProgram.workerIterationEnd(memory.asImmutable()); // if no more vertices in the partition, end the worker's iteration
-                        return new Tuple2<>(vertex.id(), new ViewOutgoingPayload<>(nextView, outgoingMessages));
+                        return (nextView.isEmpty() && outgoingMessages.isEmpty()) ?
+                                null : // if there is no view nor outgoing messages, emit nothing
+                                new Tuple2<>(vertex.id(), new ViewOutgoingPayload<>(nextView, outgoingMessages));  // else, emit the vertex id, its view, and its outgoing messages
                     });
-                }, true)); // true means that the partition is preserved
+                }, true)  // true means that the partition is preserved
+                .filter(tuple -> null != tuple); // if there are no messages or views, then the tuple is null (memory optimization)
         // the graphRDD and the viewRDD must have the same partitioner
-        assert graphRDD.partitioner().get().equals(viewOutgoingRDD.partitioner().get());
-        // "message pass" by reducing on the vertex object id of the view and message payloads
-        final MessageCombiner<M> messageCombiner = VertexProgram.<VertexProgram<M>>createVertexProgram(HadoopGraph.open(apacheConfiguration), apacheConfiguration).getMessageCombiner().orElse(null);
-        final JavaPairRDD<Object, ViewIncomingPayload<M>> newViewIncomingRDD = viewOutgoingRDD
-                .flatMapToPair(tuple -> () -> IteratorUtils.<Tuple2<Object, Payload>>concat(
+        if (partitionedGraphRDD)
+            assert graphRDD.partitioner().get().equals(viewOutgoingRDD.partitioner().get());
+        /////////////////////////////////////////////////////////////
+        /////////////////////////////////////////////////////////////
+        final PairFlatMapFunction<Tuple2<Object, ViewOutgoingPayload<M>>, Object, Payload> messageFunction =
+                tuple -> () -> IteratorUtils.concat(
                         IteratorUtils.of(new Tuple2<>(tuple._1(), tuple._2().getView())),      // emit the view payload
-                        IteratorUtils.map(tuple._2().getOutgoingMessages().iterator(), message -> new Tuple2<>(message._1(), new MessagePayload<>(message._2())))))  // emit the outgoing message payloads one by one
-                .reduceByKey(graphRDD.partitioner().get(), (a, b) -> {      // reduce the view and outgoing messages into a single payload object representing the new view and incoming messages for a vertex
-                    if (a instanceof ViewIncomingPayload) {
-                        ((ViewIncomingPayload<M>) a).mergePayload(b, messageCombiner);
-                        return a;
-                    } else if (b instanceof ViewIncomingPayload) {
-                        ((ViewIncomingPayload<M>) b).mergePayload(a, messageCombiner);
-                        return b;
-                    } else {
-                        final ViewIncomingPayload<M> c = new ViewIncomingPayload<>(messageCombiner);
-                        c.mergePayload(a, messageCombiner);
-                        c.mergePayload(b, messageCombiner);
-                        return c;
-                    }
-                })
-                .filter(payload -> !(payload._2() instanceof MessagePayload)) // this happens if there is a message to a vertex that does not exist
-                .filter(payload -> !((payload._2() instanceof ViewIncomingPayload) && !((ViewIncomingPayload<M>) payload._2()).hasView())) // this happens if there are many messages to a vertex that does not exist
-                .mapValues(payload -> payload instanceof ViewIncomingPayload ?
-                        (ViewIncomingPayload<M>) payload :                    // this happens if there is a vertex with incoming messages
-                        new ViewIncomingPayload<>((ViewPayload) payload));    // this happens if there is a vertex with no incoming messages
+                        IteratorUtils.map(tuple._2().getOutgoingMessages().iterator(), message -> new Tuple2<>(message._1(), new MessagePayload<>(message._2()))));
+        final MessageCombiner<M> messageCombiner = VertexProgram.<VertexProgram<M>>createVertexProgram(HadoopGraph.open(vertexProgramConfiguration), vertexProgramConfiguration).getMessageCombiner().orElse(null);
+        final Function2<Payload, Payload, Payload> reducerFunction = (a, b) -> {      // reduce the view and outgoing messages into a single payload object representing the new view and incoming messages for a vertex
+            if (a instanceof ViewIncomingPayload) {
+                ((ViewIncomingPayload<M>) a).mergePayload(b, messageCombiner);
+                return a;
+            } else if (b instanceof ViewIncomingPayload) {
+                ((ViewIncomingPayload<M>) b).mergePayload(a, messageCombiner);
+                return b;
+            } else {
+                final ViewIncomingPayload<M> c = new ViewIncomingPayload<>(messageCombiner);
+                c.mergePayload(a, messageCombiner);
+                c.mergePayload(b, messageCombiner);
+                return c;
+            }
+        };
+        /////////////////////////////////////////////////////////////
+        /////////////////////////////////////////////////////////////
+        // "message pass" by reducing on the vertex object id of the view and message payloads
+        final JavaPairRDD<Object, ViewIncomingPayload<M>> newViewIncomingRDD =
+                (partitionedGraphRDD ?
+                        viewOutgoingRDD.flatMapToPair(messageFunction).reduceByKey(graphRDD.partitioner().get(), reducerFunction) :
+                        viewOutgoingRDD.flatMapToPair(messageFunction).reduceByKey(reducerFunction))
+                        .mapValues(payload -> { // handle various corner cases of when views don't exist, messages don't exist, or neither exists.
+                            if (payload instanceof ViewIncomingPayload) // this happens if there is a vertex view with incoming messages
+                                return (ViewIncomingPayload<M>) payload;
+                            else if (payload instanceof ViewPayload)    // this happens if there is a vertex view with no incoming messages
+                                return new ViewIncomingPayload<>((ViewPayload) payload);
+                            else                                        // this happens when there is a single message to a vertex that has no view or outgoing messages
+                                return new ViewIncomingPayload<>((MessagePayload<M>) payload);
+                        });
         // the graphRDD and the viewRDD must have the same partitioner
-        assert graphRDD.partitioner().get().equals(newViewIncomingRDD.partitioner().get());
+        if (partitionedGraphRDD)
+            assert graphRDD.partitioner().get().equals(newViewIncomingRDD.partitioner().get());
         newViewIncomingRDD
                 .foreachPartition(partitionIterator -> {
-                    HadoopPools.initialize(apacheConfiguration);
+                    KryoShimServiceLoader.applyConfiguration(graphComputerConfiguration);
                 }); // need to complete a task so its BSP and the memory for this iteration is updated
         return newViewIncomingRDD;
     }
 
-    public static <M> JavaPairRDD<Object, VertexWritable> prepareFinalGraphRDD(final JavaPairRDD<Object, VertexWritable> graphRDD, final JavaPairRDD<Object, ViewIncomingPayload<M>> viewIncomingRDD, final String[] elementComputeKeys) {
+    public static <M> JavaPairRDD<Object, VertexWritable> prepareFinalGraphRDD(
+            final JavaPairRDD<Object, VertexWritable> graphRDD,
+            final JavaPairRDD<Object, ViewIncomingPayload<M>> viewIncomingRDD,
+            final Set<VertexComputeKey> vertexComputeKeys) {
         // the graphRDD and the viewRDD must have the same partitioner
-        assert (graphRDD.partitioner().get().equals(viewIncomingRDD.partitioner().get()));
-        // attach the final computed view to the cached graph
+        if (graphRDD.partitioner().isPresent())
+            assert (graphRDD.partitioner().get().equals(viewIncomingRDD.partitioner().get()));
+        final String[] vertexComputeKeysArray = VertexProgramHelper.vertexComputeKeysAsArray(vertexComputeKeys); // the compute keys as an array
         return graphRDD.leftOuterJoin(viewIncomingRDD)
                 .mapValues(tuple -> {
                     final StarGraph.StarVertex vertex = tuple._1().get();
-                    vertex.dropVertexProperties(elementComputeKeys);
+                    vertex.dropVertexProperties(vertexComputeKeysArray); // drop all existing compute keys
+                    // attach the final computed view to the cached graph
                     final List<DetachedVertexProperty<Object>> view = tuple._2().isPresent() ? tuple._2().get().getView() : Collections.emptyList();
-                    view.forEach(property -> property.attach(Attachable.Method.create(vertex)));
-                    // view.clear(); // no longer needed so kill it from memory
+                    for (final DetachedVertexProperty<Object> property : view) {
+                        if (!VertexProgramHelper.isTransientVertexComputeKey(property.key(), vertexComputeKeys))
+                            property.attach(Attachable.Method.create(vertex));
+                    }
                     return tuple._1();
                 });
     }
@@ -156,30 +202,35 @@
     // MAP REDUCE //
     ////////////////
 
-    public static <K, V> JavaPairRDD<K, V> executeMap(final JavaPairRDD<Object, VertexWritable> graphRDD, final MapReduce<K, V, ?, ?, ?> mapReduce, final Configuration apacheConfiguration) {
+    public static <K, V> JavaPairRDD<K, V> executeMap(
+            final JavaPairRDD<Object, VertexWritable> graphRDD, final MapReduce<K, V, ?, ?, ?> mapReduce,
+            final Configuration graphComputerConfiguration) {
         JavaPairRDD<K, V> mapRDD = graphRDD.mapPartitionsToPair(partitionIterator -> {
-            HadoopPools.initialize(apacheConfiguration);
-            return () -> new MapIterator<>(MapReduce.<MapReduce<K, V, ?, ?, ?>>createMapReduce(HadoopGraph.open(apacheConfiguration), apacheConfiguration), partitionIterator);
+            KryoShimServiceLoader.applyConfiguration(graphComputerConfiguration);
+            return () -> new MapIterator<>(MapReduce.<MapReduce<K, V, ?, ?, ?>>createMapReduce(HadoopGraph.open(graphComputerConfiguration), graphComputerConfiguration), partitionIterator);
         });
         if (mapReduce.getMapKeySort().isPresent())
             mapRDD = mapRDD.sortByKey(mapReduce.getMapKeySort().get(), true, 1);
         return mapRDD;
     }
 
-    public static <K, V, OK, OV> JavaPairRDD<OK, OV> executeCombine(final JavaPairRDD<K, V> mapRDD, final Configuration apacheConfiguration) {
+    public static <K, V, OK, OV> JavaPairRDD<OK, OV> executeCombine(final JavaPairRDD<K, V> mapRDD,
+                                                                    final Configuration graphComputerConfiguration) {
         return mapRDD.mapPartitionsToPair(partitionIterator -> {
-            HadoopPools.initialize(apacheConfiguration);
-            return () -> new CombineIterator<>(MapReduce.<MapReduce<K, V, OK, OV, ?>>createMapReduce(HadoopGraph.open(apacheConfiguration), apacheConfiguration), partitionIterator);
+            KryoShimServiceLoader.applyConfiguration(graphComputerConfiguration);
+            return () -> new CombineIterator<>(MapReduce.<MapReduce<K, V, OK, OV, ?>>createMapReduce(HadoopGraph.open(graphComputerConfiguration), graphComputerConfiguration), partitionIterator);
         });
     }
 
-    public static <K, V, OK, OV> JavaPairRDD<OK, OV> executeReduce(final JavaPairRDD<K, V> mapOrCombineRDD, final MapReduce<K, V, OK, OV, ?> mapReduce, final Configuration apacheConfiguration) {
+    public static <K, V, OK, OV> JavaPairRDD<OK, OV> executeReduce(
+            final JavaPairRDD<K, V> mapOrCombineRDD, final MapReduce<K, V, OK, OV, ?> mapReduce,
+            final Configuration graphComputerConfiguration) {
         JavaPairRDD<OK, OV> reduceRDD = mapOrCombineRDD.groupByKey().mapPartitionsToPair(partitionIterator -> {
-            HadoopPools.initialize(apacheConfiguration);
-            return () -> new ReduceIterator<>(MapReduce.<MapReduce<K, V, OK, OV, ?>>createMapReduce(HadoopGraph.open(apacheConfiguration), apacheConfiguration), partitionIterator);
+            KryoShimServiceLoader.applyConfiguration(graphComputerConfiguration);
+            return () -> new ReduceIterator<>(MapReduce.<MapReduce<K, V, OK, OV, ?>>createMapReduce(HadoopGraph.open(graphComputerConfiguration), graphComputerConfiguration), partitionIterator);
         });
         if (mapReduce.getReduceKeySort().isPresent())
             reduceRDD = reduceRDD.sortByKey(mapReduce.getReduceKeySort().get(), true, 1);
         return reduceRDD;
     }
-}
+}
\ No newline at end of file
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputer.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputer.java
index 06a8f39..40598c0 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputer.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputer.java
@@ -21,6 +21,7 @@
 import org.apache.commons.configuration.ConfigurationUtils;
 import org.apache.commons.configuration.FileConfiguration;
 import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.commons.lang3.concurrent.BasicThreadFactory;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -28,6 +29,7 @@
 import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
 import org.apache.spark.HashPartitioner;
+import org.apache.spark.Partitioner;
 import org.apache.spark.SparkConf;
 import org.apache.spark.SparkContext;
 import org.apache.spark.api.java.JavaPairRDD;
@@ -40,6 +42,7 @@
 import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopConfiguration;
 import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.FileSystemStorage;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.GraphFilterAware;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
 import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
 import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
@@ -49,7 +52,12 @@
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.util.DefaultComputerResult;
 import org.apache.tinkerpop.gremlin.process.computer.util.MapMemory;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalInterruptedException;
 import org.apache.tinkerpop.gremlin.spark.process.computer.payload.ViewIncomingPayload;
+import org.apache.tinkerpop.gremlin.spark.process.computer.traversal.strategy.SparkVertexProgramInterceptor;
+import org.apache.tinkerpop.gremlin.spark.process.computer.traversal.strategy.optimization.SparkInterceptorStrategy;
+import org.apache.tinkerpop.gremlin.spark.process.computer.traversal.strategy.optimization.SparkSingleIterationStrategy;
 import org.apache.tinkerpop.gremlin.spark.structure.Spark;
 import org.apache.tinkerpop.gremlin.spark.structure.io.InputFormatRDD;
 import org.apache.tinkerpop.gremlin.spark.structure.io.InputOutputHelper;
@@ -59,14 +67,17 @@
 import org.apache.tinkerpop.gremlin.spark.structure.io.PersistedInputRDD;
 import org.apache.tinkerpop.gremlin.spark.structure.io.PersistedOutputRDD;
 import org.apache.tinkerpop.gremlin.spark.structure.io.SparkContextStorage;
+import org.apache.tinkerpop.gremlin.spark.structure.io.gryo.GryoSerializer;
+import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.io.Storage;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
-import java.util.stream.Stream;
+import java.util.concurrent.ThreadFactory;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -75,6 +86,20 @@
 
     private final org.apache.commons.configuration.Configuration sparkConfiguration;
     private boolean workersSet = false;
+    private final ThreadFactory threadFactoryBoss = new BasicThreadFactory.Builder().namingPattern(SparkGraphComputer.class.getSimpleName() + "-boss").build();
+
+    /**
+     * An {@code ExecutorService} that schedules up background work. Since a {@link GraphComputer} is only used once
+     * for a {@link VertexProgram} a single threaded executor is sufficient.
+     */
+    private final ExecutorService computerService = Executors.newSingleThreadExecutor(threadFactoryBoss);
+
+    static {
+        TraversalStrategies.GlobalCache.registerStrategies(SparkGraphComputer.class,
+                TraversalStrategies.GlobalCache.getStrategies(GraphComputer.class).clone().addStrategies(
+                        SparkSingleIterationStrategy.instance(),
+                        SparkInterceptorStrategy.instance()));
+    }
 
     public SparkGraphComputer(final HadoopGraph hadoopGraph) {
         super(hadoopGraph);
@@ -99,47 +124,71 @@
     }
 
     @Override
-    protected void validateStatePriorToExecution() {
-        super.validateStatePriorToExecution();
-        if (this.sparkConfiguration.containsKey(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD) && this.sparkConfiguration.containsKey(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT))
-            this.logger.warn("Both " + Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD + " and " + Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT + " were specified, ignoring " + Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT);
-        if (this.sparkConfiguration.containsKey(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD) && this.sparkConfiguration.containsKey(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT))
-            this.logger.warn("Both " + Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD + " and " + Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT + " were specified, ignoring " + Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT);
-    }
-
-    @Override
     public Future<ComputerResult> submit() {
         this.validateStatePriorToExecution();
-
         return ComputerSubmissionHelper.runWithBackgroundThread(this::submitWithExecutor, "SparkSubmitter");
     }
 
     private Future<ComputerResult> submitWithExecutor(Executor exec) {
-        // apache and hadoop configurations that are used throughout the graph computer computation
-        final org.apache.commons.configuration.Configuration apacheConfiguration = new HadoopConfiguration(this.sparkConfiguration);
-        apacheConfiguration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT_HAS_EDGES, this.persist.equals(GraphComputer.Persist.EDGES));
-        final Configuration hadoopConfiguration = ConfUtil.makeHadoopConfiguration(apacheConfiguration);
-        if (hadoopConfiguration.get(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, null) == null && // if an InputRDD is specified, then ignore InputFormat
-                hadoopConfiguration.get(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, null) != null &&
-                FileInputFormat.class.isAssignableFrom(hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, InputFormat.class))) {
+        // create the completable future
+        return computerService.submit(() -> {
+            final long startTime = System.currentTimeMillis();
+            // apache and hadoop configurations that are used throughout the graph computer computation
+            final org.apache.commons.configuration.Configuration graphComputerConfiguration = new HadoopConfiguration(this.sparkConfiguration);
+            if (!graphComputerConfiguration.containsKey(Constants.SPARK_SERIALIZER))
+                graphComputerConfiguration.setProperty(Constants.SPARK_SERIALIZER, GryoSerializer.class.getCanonicalName());
+            graphComputerConfiguration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER_HAS_EDGES, this.persist.equals(GraphComputer.Persist.EDGES));
+            final Configuration hadoopConfiguration = ConfUtil.makeHadoopConfiguration(graphComputerConfiguration);
+            final Storage fileSystemStorage = FileSystemStorage.open(hadoopConfiguration);
+            final Storage sparkContextStorage = SparkContextStorage.open(graphComputerConfiguration);
+            final boolean inputFromHDFS = FileInputFormat.class.isAssignableFrom(hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_READER, Object.class));
+            final boolean inputFromSpark = PersistedInputRDD.class.isAssignableFrom(hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_READER, Object.class));
+            final boolean outputToHDFS = FileOutputFormat.class.isAssignableFrom(hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_WRITER, Object.class));
+            final boolean outputToSpark = PersistedOutputRDD.class.isAssignableFrom(hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_WRITER, Object.class));
+            final boolean skipPartitioner = graphComputerConfiguration.getBoolean(Constants.GREMLIN_SPARK_SKIP_PARTITIONER, false);
+            final boolean skipPersist = graphComputerConfiguration.getBoolean(Constants.GREMLIN_SPARK_SKIP_GRAPH_CACHE, false);
+            String inputLocation = null;
+            if (inputFromSpark)
+                inputLocation = Constants.getSearchGraphLocation(hadoopConfiguration.get(Constants.GREMLIN_HADOOP_INPUT_LOCATION), sparkContextStorage).orElse(null);
+            else if (inputFromHDFS)
+                inputLocation = Constants.getSearchGraphLocation(hadoopConfiguration.get(Constants.GREMLIN_HADOOP_INPUT_LOCATION), fileSystemStorage).orElse(null);
+            if (null == inputLocation)
+                inputLocation = hadoopConfiguration.get(Constants.GREMLIN_HADOOP_INPUT_LOCATION);
+
+            if (null != inputLocation && inputFromHDFS) {
+                try {
+                    graphComputerConfiguration.setProperty(Constants.MAPREDUCE_INPUT_FILEINPUTFORMAT_INPUTDIR, FileSystem.get(hadoopConfiguration).getFileStatus(new Path(inputLocation)).getPath().toString());
+                    hadoopConfiguration.set(Constants.MAPREDUCE_INPUT_FILEINPUTFORMAT_INPUTDIR, FileSystem.get(hadoopConfiguration).getFileStatus(new Path(inputLocation)).getPath().toString());
+                } catch (final IOException e) {
+                    throw new IllegalStateException(e.getMessage(), e);
+                }
+            }
+            final InputRDD inputRDD;
+            final OutputRDD outputRDD;
+            final boolean filtered;
             try {
-                final String inputLocation = FileSystem.get(hadoopConfiguration).getFileStatus(new Path(hadoopConfiguration.get(Constants.GREMLIN_HADOOP_INPUT_LOCATION))).getPath().toString();
-                apacheConfiguration.setProperty(Constants.MAPREDUCE_INPUT_FILEINPUTFORMAT_INPUTDIR, inputLocation);
-                hadoopConfiguration.set(Constants.MAPREDUCE_INPUT_FILEINPUTFORMAT_INPUTDIR, inputLocation);
-            } catch (final IOException e) {
+                inputRDD = InputRDD.class.isAssignableFrom(hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_READER, Object.class)) ?
+                        hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_READER, InputRDD.class, InputRDD.class).newInstance() :
+                        InputFormatRDD.class.newInstance();
+                outputRDD = OutputRDD.class.isAssignableFrom(hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_WRITER, Object.class)) ?
+                        hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_WRITER, OutputRDD.class, OutputRDD.class).newInstance() :
+                        OutputFormatRDD.class.newInstance();
+                // if the input class can filter on load, then set the filters
+                if (inputRDD instanceof InputFormatRDD && GraphFilterAware.class.isAssignableFrom(hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_READER, InputFormat.class, InputFormat.class))) {
+                    GraphFilterAware.storeGraphFilter(graphComputerConfiguration, hadoopConfiguration, this.graphFilter);
+                    filtered = false;
+                } else if (inputRDD instanceof GraphFilterAware) {
+                    ((GraphFilterAware) inputRDD).setGraphFilter(this.graphFilter);
+                    filtered = false;
+                } else if (this.graphFilter.hasFilter()) {
+                    filtered = true;
+                } else {
+                    filtered = false;
+                }
+            } catch (final InstantiationException | IllegalAccessException e) {
                 throw new IllegalStateException(e.getMessage(), e);
             }
-        }
 
-        // create the completable future
-        return CompletableFuture.<ComputerResult>supplyAsync(() -> {
-            final long startTime = System.currentTimeMillis();
-            final Storage fileSystemStorage = FileSystemStorage.open(hadoopConfiguration);
-            final Storage sparkContextStorage = SparkContextStorage.open(apacheConfiguration);
-            // final boolean inputFromHDFS = FileInputFormat.class.isAssignableFrom(hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT, Object.class));
-            final boolean inputFromSpark = PersistedInputRDD.class.isAssignableFrom(hadoopConfiguration.getClass(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, Object.class));
-            final boolean outputToHDFS = FileOutputFormat.class.isAssignableFrom(hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT, Object.class));
-            final boolean outputToSpark = PersistedOutputRDD.class.isAssignableFrom(hadoopConfiguration.getClass(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, Object.class));
             SparkMemory memory = null;
             // delete output location
             final String outputLocation = hadoopConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, null);
@@ -149,90 +198,113 @@
                 if (outputToSpark && sparkContextStorage.exists(outputLocation))
                     sparkContextStorage.rm(outputLocation);
             }
-            // wire up a spark context
-            final SparkConf sparkConfiguration = new SparkConf();
-            sparkConfiguration.setAppName(Constants.GREMLIN_HADOOP_SPARK_JOB_PREFIX + (null == this.vertexProgram ? "No VertexProgram" : this.vertexProgram) + "[" + this.mapReducers + "]");
+
+            // the Spark application name will always be set by SparkContextStorage, thus, INFO the name to make it easier to debug
+            logger.debug(Constants.GREMLIN_HADOOP_SPARK_JOB_PREFIX + (null == this.vertexProgram ? "No VertexProgram" : this.vertexProgram) + "[" + this.mapReducers + "]");
 
             // create the spark configuration from the graph computer configuration
+            final SparkConf sparkConfiguration = new SparkConf();
             hadoopConfiguration.forEach(entry -> sparkConfiguration.set(entry.getKey(), entry.getValue()));
             // execute the vertex program and map reducers and if there is a failure, auto-close the spark context
             try {
                 final JavaSparkContext sparkContext = new JavaSparkContext(SparkContext.getOrCreate(sparkConfiguration));
-                this.loadJars(sparkContext, hadoopConfiguration); // add the project jars to the cluster
+                this.loadJars(hadoopConfiguration, sparkContext); // add the project jars to the cluster
                 Spark.create(sparkContext.sc()); // this is the context RDD holder that prevents GC
                 updateLocalConfiguration(sparkContext, sparkConfiguration);
                 // create a message-passing friendly rdd from the input rdd
-                JavaPairRDD<Object, VertexWritable> loadedGraphRDD;
-                JavaPairRDD<Object, VertexWritable> computedGraphRDD = null;
                 boolean partitioned = false;
-                try {
-                    loadedGraphRDD = hadoopConfiguration.getClass(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, InputFormatRDD.class, InputRDD.class)
-                            .newInstance()
-                            .readGraphRDD(apacheConfiguration, sparkContext);
-
-                    if (loadedGraphRDD.partitioner().isPresent())
-                        this.logger.info("Using the existing partitioner associated with the loaded graphRDD: " + loadedGraphRDD.partitioner().get());
-                    else {
-                        loadedGraphRDD = loadedGraphRDD.partitionBy(new HashPartitioner(this.workersSet ? this.workers : loadedGraphRDD.partitions().size()));
-                        partitioned = true;
-                    }
-                    assert loadedGraphRDD.partitioner().isPresent();
-                    // if the loaded graphRDD was already partitioned previous, then this coalesce/repartition will not take place
-                    if (this.workersSet) {
-                        if (loadedGraphRDD.partitions().size() > this.workers) // ensures that the loaded graphRDD does not have more partitions than workers
-                            loadedGraphRDD = loadedGraphRDD.coalesce(this.workers);
-                        else if (loadedGraphRDD.partitions().size() < this.workers) // ensures that the loaded graphRDD does not have less partitions than workers
-                            loadedGraphRDD = loadedGraphRDD.repartition(this.workers);
-                    }
-                    // persist the vertex program loaded graph as specified by configuration or else use default cache() which is MEMORY_ONLY
-                    if (!inputFromSpark || partitioned)
-                        loadedGraphRDD = loadedGraphRDD.persist(StorageLevel.fromString(hadoopConfiguration.get(Constants.GREMLIN_SPARK_GRAPH_STORAGE_LEVEL, "MEMORY_ONLY")));
-                } catch (final InstantiationException | IllegalAccessException e) {
-                    throw new IllegalStateException(e.getMessage(), e);
+                JavaPairRDD<Object, VertexWritable> loadedGraphRDD = inputRDD.readGraphRDD(graphComputerConfiguration, sparkContext);
+                // if there are vertex or edge filters, filter the loaded graph rdd prior to partitioning and persisting
+                if (filtered) {
+                    this.logger.debug("Filtering the loaded graphRDD: " + this.graphFilter);
+                    loadedGraphRDD = SparkExecutor.applyGraphFilter(loadedGraphRDD, this.graphFilter);
                 }
+                // if the loaded graph RDD is already partitioned use that partitioner, else partition it with HashPartitioner
+                if (loadedGraphRDD.partitioner().isPresent())
+                    this.logger.debug("Using the existing partitioner associated with the loaded graphRDD: " + loadedGraphRDD.partitioner().get());
+                else {
+                    if (!skipPartitioner) {
+                        final Partitioner partitioner = new HashPartitioner(this.workersSet ? this.workers : loadedGraphRDD.partitions().size());
+                        this.logger.debug("Partitioning the loaded graphRDD: " + partitioner);
+                        loadedGraphRDD = loadedGraphRDD.partitionBy(partitioner);
+                        partitioned = true;
+                        assert loadedGraphRDD.partitioner().isPresent();
+                    } else {
+                        assert skipPartitioner == !loadedGraphRDD.partitioner().isPresent(); // no easy way to test this with a test case
+                        this.logger.debug("Partitioning has been skipped for the loaded graphRDD via " + Constants.GREMLIN_SPARK_SKIP_PARTITIONER);
+                    }
+                }
+                // if the loaded graphRDD was already partitioned previous, then this coalesce/repartition will not take place
+                if (this.workersSet) {
+                    if (loadedGraphRDD.partitions().size() > this.workers) // ensures that the loaded graphRDD does not have more partitions than workers
+                        loadedGraphRDD = loadedGraphRDD.coalesce(this.workers);
+                    else if (loadedGraphRDD.partitions().size() < this.workers) // ensures that the loaded graphRDD does not have less partitions than workers
+                        loadedGraphRDD = loadedGraphRDD.repartition(this.workers);
+                }
+                // persist the vertex program loaded graph as specified by configuration or else use default cache() which is MEMORY_ONLY
+                if (!skipPersist && (!inputFromSpark || partitioned || filtered))
+                    loadedGraphRDD = loadedGraphRDD.persist(StorageLevel.fromString(hadoopConfiguration.get(Constants.GREMLIN_SPARK_GRAPH_STORAGE_LEVEL, "MEMORY_ONLY")));
 
-                JavaPairRDD<Object, ViewIncomingPayload<Object>> viewIncomingRDD = null;
-
+                // final graph with view (for persisting and/or mapReducing -- may be null and thus, possible to save space/time)
+                JavaPairRDD<Object, VertexWritable> computedGraphRDD = null;
                 ////////////////////////////////
                 // process the vertex program //
                 ////////////////////////////////
                 if (null != this.vertexProgram) {
-                    // set up the vertex program and wire up configurations
                     memory = new SparkMemory(this.vertexProgram, this.mapReducers, sparkContext);
-                    this.vertexProgram.setup(memory);
-                    memory.broadcastMemory(sparkContext);
-                    final HadoopConfiguration vertexProgramConfiguration = new HadoopConfiguration();
-                    this.vertexProgram.storeState(vertexProgramConfiguration);
-                    ConfigurationUtils.copy(vertexProgramConfiguration, apacheConfiguration);
-                    ConfUtil.mergeApacheIntoHadoopConfiguration(vertexProgramConfiguration, hadoopConfiguration);
-                    // execute the vertex program
-                    while (true) {
-                        memory.setInTask(true);
-                        viewIncomingRDD = SparkExecutor.executeVertexProgramIteration(loadedGraphRDD, viewIncomingRDD, memory, vertexProgramConfiguration);
-                        memory.setInTask(false);
-                        if (this.vertexProgram.terminate(memory))
-                            break;
-                        else {
-                            memory.incrIteration();
-                            memory.broadcastMemory(sparkContext);
+                    /////////////////
+                    // if there is a registered VertexProgramInterceptor, use it to bypass the GraphComputer semantics
+                    if (graphComputerConfiguration.containsKey(Constants.GREMLIN_HADOOP_VERTEX_PROGRAM_INTERCEPTOR)) {
+                        try {
+                            final SparkVertexProgramInterceptor<VertexProgram> interceptor =
+                                    (SparkVertexProgramInterceptor) Class.forName(graphComputerConfiguration.getString(Constants.GREMLIN_HADOOP_VERTEX_PROGRAM_INTERCEPTOR)).newInstance();
+                            computedGraphRDD = interceptor.apply(this.vertexProgram, loadedGraphRDD, memory);
+                        } catch (final ClassNotFoundException | IllegalAccessException | InstantiationException e) {
+                            throw new IllegalStateException(e.getMessage());
+                        }
+                    } else {  // standard GraphComputer semantics
+                        // get a configuration that will be propagated to all workers
+                        final HadoopConfiguration vertexProgramConfiguration = new HadoopConfiguration();
+                        this.vertexProgram.storeState(vertexProgramConfiguration);
+                        // set up the vertex program and wire up configurations
+                        this.vertexProgram.setup(memory);
+                        JavaPairRDD<Object, ViewIncomingPayload<Object>> viewIncomingRDD = null;
+                        memory.broadcastMemory(sparkContext);
+                        // execute the vertex program
+                        while (true) {
+                            if (Thread.interrupted()) {
+                                sparkContext.cancelAllJobs();
+                                throw new TraversalInterruptedException();
+                            }
+                            memory.setInExecute(true);
+                            viewIncomingRDD = SparkExecutor.executeVertexProgramIteration(loadedGraphRDD, viewIncomingRDD, memory, graphComputerConfiguration, vertexProgramConfiguration);
+                            memory.setInExecute(false);
+                            if (this.vertexProgram.terminate(memory))
+                                break;
+                            else {
+                                memory.incrIteration();
+                                memory.broadcastMemory(sparkContext);
+                            }
+                        }
+                        // if the graph will be continued to be used (persisted or mapreduced), then generate a view+graph
+                        if ((null != outputRDD && !this.persist.equals(Persist.NOTHING)) || !this.mapReducers.isEmpty()) {
+                            computedGraphRDD = SparkExecutor.prepareFinalGraphRDD(loadedGraphRDD, viewIncomingRDD, this.vertexProgram.getVertexComputeKeys());
+                            assert null != computedGraphRDD && computedGraphRDD != loadedGraphRDD;
+                        } else {
+                            // ensure that the computedGraphRDD was not created
+                            assert null == computedGraphRDD;
                         }
                     }
+                    /////////////////
+                    memory.complete(); // drop all transient memory keys
                     // write the computed graph to the respective output (rdd or output format)
-                    final String[] elementComputeKeys = this.vertexProgram == null ? new String[0] : this.vertexProgram.getElementComputeKeys().toArray(new String[this.vertexProgram.getElementComputeKeys().size()]);
-                    computedGraphRDD = SparkExecutor.prepareFinalGraphRDD(loadedGraphRDD, viewIncomingRDD, elementComputeKeys);
-                    if ((hadoopConfiguration.get(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT, null) != null ||
-                            hadoopConfiguration.get(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, null) != null) && !this.persist.equals(Persist.NOTHING)) {
-                        try {
-                            hadoopConfiguration.getClass(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, OutputFormatRDD.class, OutputRDD.class)
-                                    .newInstance()
-                                    .writeGraphRDD(apacheConfiguration, computedGraphRDD);
-                        } catch (final InstantiationException | IllegalAccessException e) {
-                            throw new IllegalStateException(e.getMessage(), e);
-                        }
+                    if (null != outputRDD && !this.persist.equals(Persist.NOTHING)) {
+                        assert null != computedGraphRDD; // the logic holds that a computeGraphRDD must be created at this point
+                        outputRDD.writeGraphRDD(graphComputerConfiguration, computedGraphRDD);
                     }
                 }
 
-                final boolean computedGraphCreated = computedGraphRDD != null;
+                final boolean computedGraphCreated = computedGraphRDD != null && computedGraphRDD != loadedGraphRDD;
                 if (!computedGraphCreated)
                     computedGraphRDD = loadedGraphRDD;
 
@@ -242,45 +314,50 @@
                 // process the map reducers //
                 //////////////////////////////
                 if (!this.mapReducers.isEmpty()) {
+                    // create a mapReduceRDD for executing the map reduce jobs on
+                    JavaPairRDD<Object, VertexWritable> mapReduceRDD = computedGraphRDD;
                     if (computedGraphCreated && !outputToSpark) {
                         // drop all the edges of the graph as they are not used in mapReduce processing
-                        computedGraphRDD = computedGraphRDD.mapValues(vertexWritable -> {
-                            vertexWritable.get().dropEdges();
+                        mapReduceRDD = computedGraphRDD.mapValues(vertexWritable -> {
+                            vertexWritable.get().dropEdges(Direction.BOTH);
                             return vertexWritable;
                         });
                         // if there is only one MapReduce to execute, don't bother wasting the clock cycles.
                         if (this.mapReducers.size() > 1)
-                            computedGraphRDD = computedGraphRDD.persist(StorageLevel.fromString(hadoopConfiguration.get(Constants.GREMLIN_SPARK_GRAPH_STORAGE_LEVEL, "MEMORY_ONLY")));
+                            mapReduceRDD = mapReduceRDD.persist(StorageLevel.fromString(hadoopConfiguration.get(Constants.GREMLIN_SPARK_GRAPH_STORAGE_LEVEL, "MEMORY_ONLY")));
                     }
 
                     for (final MapReduce mapReduce : this.mapReducers) {
                         // execute the map reduce job
-                        final HadoopConfiguration newApacheConfiguration = new HadoopConfiguration(apacheConfiguration);
+                        final HadoopConfiguration newApacheConfiguration = new HadoopConfiguration(graphComputerConfiguration);
                         mapReduce.storeState(newApacheConfiguration);
                         // map
-                        final JavaPairRDD mapRDD = SparkExecutor.executeMap((JavaPairRDD) computedGraphRDD, mapReduce, newApacheConfiguration);
+                        final JavaPairRDD mapRDD = SparkExecutor.executeMap((JavaPairRDD) mapReduceRDD, mapReduce, newApacheConfiguration);
                         // combine
                         final JavaPairRDD combineRDD = mapReduce.doStage(MapReduce.Stage.COMBINE) ? SparkExecutor.executeCombine(mapRDD, newApacheConfiguration) : mapRDD;
                         // reduce
                         final JavaPairRDD reduceRDD = mapReduce.doStage(MapReduce.Stage.REDUCE) ? SparkExecutor.executeReduce(combineRDD, mapReduce, newApacheConfiguration) : combineRDD;
                         // write the map reduce output back to disk and computer result memory
-                        try {
-                            mapReduce.addResultToMemory(finalMemory,
-                                    hadoopConfiguration.getClass(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, OutputFormatRDD.class, OutputRDD.class)
-                                            .newInstance()
-                                            .writeMemoryRDD(apacheConfiguration, mapReduce.getMemoryKey(), reduceRDD));
-                        } catch (final InstantiationException | IllegalAccessException e) {
-                            throw new IllegalStateException(e.getMessage(), e);
-                        }
+                        if (null != outputRDD)
+                            mapReduce.addResultToMemory(finalMemory, outputRDD.writeMemoryRDD(graphComputerConfiguration, mapReduce.getMemoryKey(), reduceRDD));
+                    }
+                    // if the mapReduceRDD is not simply the computed graph, unpersist the mapReduceRDD
+                    if (computedGraphCreated && !outputToSpark) {
+                        assert loadedGraphRDD != computedGraphRDD;
+                        assert mapReduceRDD != computedGraphRDD;
+                        mapReduceRDD.unpersist();
+                    } else {
+                        assert mapReduceRDD == computedGraphRDD;
                     }
                 }
 
                 // unpersist the loaded graph if it will not be used again (no PersistedInputRDD)
-                // if the graphRDD was loaded from Spark, but then partitioned, its a different RDD
-                if ((!inputFromSpark || partitioned) && computedGraphCreated)
+                // if the graphRDD was loaded from Spark, but then partitioned or filtered, its a different RDD
+                if (!inputFromSpark || partitioned || filtered)
                     loadedGraphRDD.unpersist();
                 // unpersist the computed graph if it will not be used again (no PersistedOutputRDD)
-                if (!outputToSpark || this.persist.equals(GraphComputer.Persist.NOTHING))
+                // if the computed graph is the loadedGraphRDD because it was not mutated and not-unpersisted, then don't unpersist the computedGraphRDD/loadedGraphRDD
+                if ((!outputToSpark || this.persist.equals(GraphComputer.Persist.NOTHING)) && computedGraphCreated)
                     computedGraphRDD.unpersist();
                 // delete any file system or rdd data if persist nothing
                 if (null != outputLocation && this.persist.equals(GraphComputer.Persist.NOTHING)) {
@@ -291,32 +368,25 @@
                 }
                 // update runtime and return the newly computed graph
                 finalMemory.setRuntime(System.currentTimeMillis() - startTime);
-                return new DefaultComputerResult(InputOutputHelper.getOutputGraph(apacheConfiguration, this.resultGraph, this.persist), finalMemory.asImmutable());
+                // clear properties that should not be propagated in an OLAP chain
+                graphComputerConfiguration.clearProperty(Constants.GREMLIN_HADOOP_GRAPH_FILTER);
+                graphComputerConfiguration.clearProperty(Constants.GREMLIN_HADOOP_VERTEX_PROGRAM_INTERCEPTOR);
+                graphComputerConfiguration.clearProperty(Constants.GREMLIN_SPARK_SKIP_GRAPH_CACHE);
+                graphComputerConfiguration.clearProperty(Constants.GREMLIN_SPARK_SKIP_PARTITIONER);
+                return new DefaultComputerResult(InputOutputHelper.getOutputGraph(graphComputerConfiguration, this.resultGraph, this.persist), finalMemory.asImmutable());
             } finally {
-                if (!apacheConfiguration.getBoolean(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, false))
+                if (!graphComputerConfiguration.getBoolean(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, false))
                     Spark.close();
             }
-        }, exec);
+        });
     }
 
     /////////////////
 
-    private void loadJars(final JavaSparkContext sparkContext, final Configuration hadoopConfiguration) {
-        if (hadoopConfiguration.getBoolean(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, true)) {
-            final String hadoopGremlinLocalLibs = null == System.getProperty(Constants.HADOOP_GREMLIN_LIBS) ? System.getenv(Constants.HADOOP_GREMLIN_LIBS) : System.getProperty(Constants.HADOOP_GREMLIN_LIBS);
-            if (null == hadoopGremlinLocalLibs)
-                this.logger.warn(Constants.HADOOP_GREMLIN_LIBS + " is not set -- proceeding regardless");
-            else {
-                final String[] paths = hadoopGremlinLocalLibs.split(":");
-                for (final String path : paths) {
-                    final File file = new File(path);
-                    if (file.exists())
-                        Stream.of(file.listFiles()).filter(f -> f.getName().endsWith(Constants.DOT_JAR)).forEach(f -> sparkContext.addJar(f.getAbsolutePath()));
-                    else
-                        this.logger.warn(path + " does not reference a valid directory -- proceeding regardless");
-                }
-            }
-        }
+    @Override
+    protected void loadJar(final Configuration hadoopConfiguration, final File file, final Object... params) {
+        final JavaSparkContext sparkContext = (JavaSparkContext) params[0];
+        sparkContext.addJar(file.getAbsolutePath());
     }
 
     /**
@@ -354,4 +424,4 @@
         final FileConfiguration configuration = new PropertiesConfiguration(args[0]);
         new SparkGraphComputer(HadoopGraph.open(configuration)).program(VertexProgram.createVertexProgram(HadoopGraph.open(configuration), configuration)).submit().get();
     }
-}
+}
\ No newline at end of file
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 dbfadcc..bf8590e 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
@@ -21,12 +21,14 @@
 import org.apache.spark.Accumulator;
 import org.apache.spark.api.java.JavaSparkContext;
 import org.apache.spark.broadcast.Broadcast;
-import org.apache.tinkerpop.gremlin.hadoop.process.computer.util.Rule;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritable;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 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.computer.util.MemoryHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.io.Serializable;
@@ -43,37 +45,38 @@
  */
 public final class SparkMemory implements Memory.Admin, Serializable {
 
-    public final Set<String> memoryKeys = new HashSet<>();
-    private final AtomicInteger iteration = new AtomicInteger(0);   // do these need to be atomics?
+    public final Map<String, MemoryComputeKey> memoryComputeKeys = new HashMap<>();
+    private final Map<String, Accumulator<ObjectWritable>> sparkMemory = new HashMap<>();
+    private final AtomicInteger iteration = new AtomicInteger(0);
     private final AtomicLong runtime = new AtomicLong(0l);
-    private final Map<String, Accumulator<Rule>> memory = new HashMap<>();
     private Broadcast<Map<String, Object>> broadcast;
-    private boolean inTask = false;
+    private boolean inExecute = false;
 
     public SparkMemory(final VertexProgram<?> vertexProgram, final Set<MapReduce> mapReducers, final JavaSparkContext sparkContext) {
         if (null != vertexProgram) {
-            for (final String key : vertexProgram.getMemoryComputeKeys()) {
-                MemoryHelper.validateKey(key);
-                this.memoryKeys.add(key);
+            for (final MemoryComputeKey key : vertexProgram.getMemoryComputeKeys()) {
+                this.memoryComputeKeys.put(key.getKey(), key);
             }
         }
         for (final MapReduce mapReduce : mapReducers) {
-            this.memoryKeys.add(mapReduce.getMemoryKey());
+            this.memoryComputeKeys.put(mapReduce.getMemoryKey(), MemoryComputeKey.of(mapReduce.getMemoryKey(), Operator.assign, false, false));
         }
-        for (final String key : this.memoryKeys) {
-            this.memory.put(key, sparkContext.accumulator(new Rule(Rule.Operation.NO_OP, null), key, new RuleAccumulator()));
+        for (final MemoryComputeKey memoryComputeKey : this.memoryComputeKeys.values()) {
+            this.sparkMemory.put(
+                    memoryComputeKey.getKey(),
+                    sparkContext.accumulator(ObjectWritable.empty(), memoryComputeKey.getKey(), new MemoryAccumulator<>(memoryComputeKey)));
         }
-        this.broadcast = sparkContext.broadcast(new HashMap<>());
+        this.broadcast = sparkContext.broadcast(Collections.emptyMap());
     }
 
     @Override
     public Set<String> keys() {
-        if (this.inTask)
+        if (this.inExecute)
             return this.broadcast.getValue().keySet();
         else {
             final Set<String> trueKeys = new HashSet<>();
-            this.memory.forEach((key, value) -> {
-                if (value.value().getObject() != null)
+            this.sparkMemory.forEach((key, value) -> {
+                if (!value.value().isEmpty())
                     trueKeys.add(key);
             });
             return Collections.unmodifiableSet(trueKeys);
@@ -107,47 +110,33 @@
 
     @Override
     public <R> R get(final String key) throws IllegalArgumentException {
-        final R r = this.getValue(key);
-        if (null == r)
+        if (!this.memoryComputeKeys.containsKey(key))
+            throw Memory.Exceptions.memoryDoesNotExist(key);
+        if (this.inExecute && !this.memoryComputeKeys.get(key).isBroadcast())
+            throw Memory.Exceptions.memoryDoesNotExist(key);
+        final ObjectWritable<R> r = (ObjectWritable<R>) (this.inExecute ? this.broadcast.value().get(key) : this.sparkMemory.get(key).value());
+        if (null == r || r.isEmpty())
             throw Memory.Exceptions.memoryDoesNotExist(key);
         else
-            return r;
+            return r.get();
     }
 
     @Override
-    public void incr(final String key, final long delta) {
-        checkKeyValue(key, delta);
-        if (this.inTask)
-            this.memory.get(key).add(new Rule(Rule.Operation.INCR, delta));
+    public void add(final String key, final Object value) {
+        checkKeyValue(key, value);
+        if (this.inExecute)
+            this.sparkMemory.get(key).add(new ObjectWritable<>(value));
         else
-            this.memory.get(key).setValue(new Rule(Rule.Operation.INCR, this.<Long>getValue(key) + delta));
-    }
-
-    @Override
-    public void and(final String key, final boolean bool) {
-        checkKeyValue(key, bool);
-        if (this.inTask)
-            this.memory.get(key).add(new Rule(Rule.Operation.AND, bool));
-        else
-            this.memory.get(key).setValue(new Rule(Rule.Operation.AND, this.<Boolean>getValue(key) && bool));
-    }
-
-    @Override
-    public void or(final String key, final boolean bool) {
-        checkKeyValue(key, bool);
-        if (this.inTask)
-            this.memory.get(key).add(new Rule(Rule.Operation.OR, bool));
-        else
-            this.memory.get(key).setValue(new Rule(Rule.Operation.OR, this.<Boolean>getValue(key) || bool));
+            throw Memory.Exceptions.memoryAddOnlyDuringVertexProgramExecute(key);
     }
 
     @Override
     public void set(final String key, final Object value) {
         checkKeyValue(key, value);
-        if (this.inTask)
-            this.memory.get(key).add(new Rule(Rule.Operation.SET, value));
+        if (this.inExecute)
+            throw Memory.Exceptions.memorySetOnlyDuringVertexProgramSetUpAndTerminate(key);
         else
-            this.memory.get(key).setValue(new Rule(Rule.Operation.SET, value));
+            this.sparkMemory.get(key).setValue(new ObjectWritable<>(value));
     }
 
     @Override
@@ -155,27 +144,27 @@
         return StringFactory.memoryString(this);
     }
 
-    protected void setInTask(final boolean inTask) {
-        this.inTask = inTask;
+    protected void complete() {
+        this.memoryComputeKeys.values().stream().filter(MemoryComputeKey::isTransient).forEach(memoryComputeKey -> this.sparkMemory.remove(memoryComputeKey.getKey()));
+    }
+
+    public void setInExecute(final boolean inExecute) {
+        this.inExecute = inExecute;
     }
 
     protected void broadcastMemory(final JavaSparkContext sparkContext) {
         this.broadcast.destroy(true); // do we need to block?
         final Map<String, Object> toBroadcast = new HashMap<>();
-        this.memory.forEach((key, rule) -> {
-            if (null != rule.value().getObject())
-                toBroadcast.put(key, rule.value().getObject());
+        this.sparkMemory.forEach((key, object) -> {
+            if (!object.value().isEmpty() && this.memoryComputeKeys.get(key).isBroadcast())
+                toBroadcast.put(key, object.value());
         });
         this.broadcast = sparkContext.broadcast(toBroadcast);
     }
 
     private void checkKeyValue(final String key, final Object value) {
-        if (!this.memoryKeys.contains(key))
+        if (!this.memoryComputeKeys.containsKey(key))
             throw GraphComputer.Exceptions.providedKeyIsNotAMemoryComputeKey(key);
         MemoryHelper.validateValue(value);
     }
-
-    private <R> R getValue(final String key) {
-        return this.inTask ? (R) this.broadcast.value().get(key) : (R) this.memory.get(key).value().getObject();
-    }
 }
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkMessenger.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkMessenger.java
index a3b11c8..aab7ecd 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkMessenger.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkMessenger.java
@@ -22,7 +22,6 @@
 import org.apache.tinkerpop.gremlin.process.computer.Messenger;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StartStep;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -62,7 +61,7 @@
     public void sendMessage(final MessageScope messageScope, final M message) {
         if (messageScope instanceof MessageScope.Local) {
             final MessageScope.Local<M> localMessageScope = (MessageScope.Local) messageScope;
-            final Traversal.Admin<Vertex, Edge> incidentTraversal = SparkMessenger.setVertexStart(localMessageScope.getIncidentTraversal().get(), this.vertex);
+            final Traversal.Admin<Vertex, Edge> incidentTraversal = SparkMessenger.setVertexStart(localMessageScope.getIncidentTraversal().get().asAdmin(), this.vertex);
             final Direction direction = SparkMessenger.getOppositeDirection(incidentTraversal);
             incidentTraversal.forEachRemaining(edge -> this.outgoingMessages.add(new Tuple2<>(edge.vertices(direction).next().id(), message)));
         } else {
@@ -72,8 +71,8 @@
 
     ///////////
 
-    private static <T extends Traversal.Admin<Vertex, Edge>> T setVertexStart(final Traversal<Vertex, Edge> incidentTraversal, final Vertex vertex) {
-        incidentTraversal.asAdmin().addStep(0, new StartStep<>(incidentTraversal.asAdmin(), vertex));
+    private static <T extends Traversal.Admin<Vertex, Edge>> T setVertexStart(final Traversal.Admin<Vertex, Edge> incidentTraversal, final Vertex vertex) {
+        incidentTraversal.asAdmin().addStart(incidentTraversal.getTraverserGenerator().generate(vertex, incidentTraversal.asAdmin().getStartStep(), 1l));
         return (T) incidentTraversal;
     }
 
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/payload/ViewIncomingPayload.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/payload/ViewIncomingPayload.java
index 2dc9796..904583e 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/payload/ViewIncomingPayload.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/payload/ViewIncomingPayload.java
@@ -45,6 +45,13 @@
     public ViewIncomingPayload(final ViewPayload viewPayload) {
         this.incomingMessages = null;
         this.view = viewPayload.getView();
+        if (this.view.isEmpty())
+            this.view = null;
+    }
+
+    public ViewIncomingPayload(final MessagePayload<M> messagePayload) {
+        this.incomingMessages = new ArrayList<>();
+        this.incomingMessages.add(messagePayload.getMessage());
     }
 
 
@@ -58,7 +65,7 @@
     }
 
     public boolean hasView() {
-        return null != view;
+        return null != this.view;
     }
 
     ////////////////////
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/payload/ViewOutgoingPayload.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/payload/ViewOutgoingPayload.java
index 20c8e09..5e1cc0b 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/payload/ViewOutgoingPayload.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/payload/ViewOutgoingPayload.java
@@ -21,6 +21,7 @@
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
 import scala.Tuple2;
 
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -36,8 +37,8 @@
     }
 
     public ViewOutgoingPayload(final List<DetachedVertexProperty<Object>> view, final List<Tuple2<Object, M>> outgoingMessages) {
-        this.view = view;
-        this.outgoingMessages = outgoingMessages;
+        this.view = view.isEmpty() ? null : view;
+        this.outgoingMessages = outgoingMessages.isEmpty() ? null : outgoingMessages;
     }
 
     public ViewPayload getView() {
@@ -45,6 +46,6 @@
     }
 
     public List<Tuple2<Object, M>> getOutgoingMessages() {
-        return this.outgoingMessages;
+        return null == this.outgoingMessages ? Collections.emptyList() : this.outgoingMessages;
     }
 }
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/payload/ViewPayload.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/payload/ViewPayload.java
index dec0e66..1cdf5f4 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/payload/ViewPayload.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/payload/ViewPayload.java
@@ -38,6 +38,6 @@
     }
 
     public List<DetachedVertexProperty<Object>> getView() {
-        return this.view;
+        return null == this.view ? Collections.emptyList() : this.view;
     }
 }
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/groovy/SparkGraphComputerGroovyProcessIntegrateTest.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/SparkVertexProgramInterceptor.java
similarity index 63%
copy from spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/groovy/SparkGraphComputerGroovyProcessIntegrateTest.java
copy to spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/SparkVertexProgramInterceptor.java
index 6f259dd..0e34e45 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/groovy/SparkGraphComputerGroovyProcessIntegrateTest.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/SparkVertexProgramInterceptor.java
@@ -16,18 +16,17 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.gremlin.spark.process.computer.groovy;
 
-import org.apache.tinkerpop.gremlin.GraphProviderClass;
-import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
-import org.apache.tinkerpop.gremlin.process.GroovyProcessComputerSuite;
-import org.apache.tinkerpop.gremlin.spark.process.computer.SparkHadoopGraphProvider;
-import org.junit.runner.RunWith;
+package org.apache.tinkerpop.gremlin.spark.process.computer.traversal.strategy;
+
+import org.apache.spark.api.java.JavaPairRDD;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
+import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.VertexProgramInterceptor;
+import org.apache.tinkerpop.gremlin.spark.process.computer.SparkMemory;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-@RunWith(GroovyProcessComputerSuite.class)
-@GraphProviderClass(provider = SparkHadoopGraphProvider.class, graph = HadoopGraph.class)
-public class SparkGraphComputerGroovyProcessIntegrateTest {
-}
\ No newline at end of file
+public interface SparkVertexProgramInterceptor<V extends VertexProgram> extends VertexProgramInterceptor<V, JavaPairRDD<Object, VertexWritable>, SparkMemory> {
+}
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkInterceptorStrategy.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkInterceptorStrategy.java
new file mode 100644
index 0000000..bb8476a
--- /dev/null
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkInterceptorStrategy.java
@@ -0,0 +1,64 @@
+/*
+ * 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.spark.process.computer.traversal.strategy.optimization;
+
+import org.apache.tinkerpop.gremlin.hadoop.Constants;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.computer.util.EmptyMemory;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.spark.process.computer.traversal.strategy.optimization.interceptor.SparkStarBarrierInterceptor;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class SparkInterceptorStrategy extends AbstractTraversalStrategy<TraversalStrategy.ProviderOptimizationStrategy> implements TraversalStrategy.ProviderOptimizationStrategy {
+
+    private static final SparkInterceptorStrategy INSTANCE = new SparkInterceptorStrategy();
+
+    private SparkInterceptorStrategy() {
+    }
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        final Graph graph = traversal.getGraph().orElse(EmptyGraph.instance()); // best guess at what the graph will be as its dynamically determined
+        for (final TraversalVertexProgramStep step : TraversalHelper.getStepsOfClass(TraversalVertexProgramStep.class, traversal)) {
+            final Traversal.Admin<?, ?> computerTraversal = step.generateProgram(graph, EmptyMemory.instance()).getTraversal().get().clone();
+            if (!computerTraversal.isLocked())
+                computerTraversal.applyStrategies();
+            if (SparkStarBarrierInterceptor.isLegal(computerTraversal)) {
+                step.setComputer(step.getComputer()
+                        .configure(Constants.GREMLIN_SPARK_SKIP_PARTITIONER, true)
+                        .configure(Constants.GREMLIN_SPARK_SKIP_GRAPH_CACHE, true)
+                        .configure(Constants.GREMLIN_HADOOP_VERTEX_PROGRAM_INTERCEPTOR, SparkStarBarrierInterceptor.class.getCanonicalName()));
+            }
+        }
+    }
+
+    public static SparkInterceptorStrategy instance() {
+        return INSTANCE;
+    }
+
+
+}
\ No newline at end of file
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkSingleIterationStrategy.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkSingleIterationStrategy.java
new file mode 100644
index 0000000..a4acf4c
--- /dev/null
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkSingleIterationStrategy.java
@@ -0,0 +1,89 @@
+/*
+ * 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.spark.process.computer.traversal.strategy.optimization;
+
+import org.apache.tinkerpop.gremlin.hadoop.Constants;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.computer.util.EmptyMemory;
+import org.apache.tinkerpop.gremlin.process.traversal.Scope;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeVertexStep;
+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.VertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class SparkSingleIterationStrategy extends AbstractTraversalStrategy<TraversalStrategy.ProviderOptimizationStrategy> implements TraversalStrategy.ProviderOptimizationStrategy {
+
+    private static final SparkSingleIterationStrategy INSTANCE = new SparkSingleIterationStrategy();
+
+    private static final Set<Class> MULTI_ITERATION_CLASSES = new HashSet<>(Arrays.asList(
+            EdgeVertexStep.class,
+            LambdaMapStep.class, // maybe?
+            LambdaFlatMapStep.class // maybe?
+            // VertexStep is special as you need to see if the return class is Edge or Vertex (logic below)
+    ));
+
+    private SparkSingleIterationStrategy() {
+    }
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        final Graph graph = traversal.getGraph().orElse(EmptyGraph.instance()); // best guess at what the graph will be as its dynamically determined
+        for (final TraversalVertexProgramStep step : TraversalHelper.getStepsOfClass(TraversalVertexProgramStep.class, traversal)) {
+            final Traversal.Admin<?, ?> computerTraversal = step.generateProgram(graph, EmptyMemory.instance()).getTraversal().get().clone();
+            if (!computerTraversal.isLocked())
+                computerTraversal.applyStrategies();
+            boolean doesMessagePass = TraversalHelper.hasStepOfAssignableClassRecursively(Scope.global, MULTI_ITERATION_CLASSES, computerTraversal);
+            if (!doesMessagePass) {
+                for (final VertexStep vertexStep : TraversalHelper.getStepsOfAssignableClassRecursively(Scope.global, VertexStep.class, computerTraversal)) {
+                    if (vertexStep.returnsVertex() || !vertexStep.getDirection().equals(Direction.OUT)) { // in-edges require message pass in OLAP
+                        doesMessagePass = true;
+                        break;
+                    }
+                }
+            }
+            if (!doesMessagePass) {
+                step.setComputer(step.getComputer()
+                        // if no message passing, don't partition the loaded graph
+                        .configure(Constants.GREMLIN_SPARK_SKIP_PARTITIONER, true)
+                                // if no message passing, don't cache the loaded graph
+                        .configure(Constants.GREMLIN_SPARK_SKIP_GRAPH_CACHE, true));
+            }
+        }
+    }
+
+    public static SparkSingleIterationStrategy instance() {
+        return INSTANCE;
+    }
+
+}
\ No newline at end of file
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java
new file mode 100644
index 0000000..4149ba7
--- /dev/null
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/interceptor/SparkStarBarrierInterceptor.java
@@ -0,0 +1,180 @@
+/*
+ * 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.spark.process.computer.traversal.strategy.optimization.interceptor;
+
+import org.apache.spark.api.java.JavaPairRDD;
+import org.apache.spark.api.java.JavaRDD;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
+import org.apache.tinkerpop.gremlin.process.computer.ProgramPhase;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.MemoryTraversalSideEffects;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
+import org.apache.tinkerpop.gremlin.process.traversal.NumberHelper;
+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.step.Barrier;
+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.GraphStep;
+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.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.util.ReducingBarrierStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.spark.process.computer.SparkMemory;
+import org.apache.tinkerpop.gremlin.spark.process.computer.traversal.strategy.SparkVertexProgramInterceptor;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.util.ElementHelper;
+import org.apache.tinkerpop.gremlin.util.function.ArrayListSupplier;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.BinaryOperator;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class SparkStarBarrierInterceptor implements SparkVertexProgramInterceptor<TraversalVertexProgram> {
+
+    public SparkStarBarrierInterceptor() {
+
+    }
+
+    @Override
+    public JavaPairRDD<Object, VertexWritable> apply(final TraversalVertexProgram vertexProgram, final JavaPairRDD<Object, VertexWritable> inputRDD, final SparkMemory memory) {
+        vertexProgram.setup(memory);
+        final Traversal.Admin<Vertex, Object> traversal = (Traversal.Admin) vertexProgram.getTraversal().getPure().clone();
+        final GraphStep<Vertex, Vertex> graphStep = ((GraphStep) traversal.getStartStep());
+        final Object[] graphStepIds = graphStep.getIds();    // any V(1,2,3)-style ids to filter on
+        final ReducingBarrierStep endStep = (ReducingBarrierStep) traversal.getEndStep(); // needed for the final traverser generation
+        traversal.removeStep(0);                                    // remove GraphStep
+        traversal.removeStep(traversal.getSteps().size() - 1);      // remove ReducingBarrierStep
+        traversal.setStrategies(traversal.clone().getStrategies().removeStrategies(ComputerVerificationStrategy.class)); // no longer a computer job, but parallel standard jobs
+        traversal.applyStrategies();                                // compile
+        boolean identityTraversal = traversal.getSteps().isEmpty(); // if the traversal is empty, just return the vertex (fast)
+        ///////////////////////////////
+        MemoryTraversalSideEffects.setMemorySideEffects(traversal, memory, ProgramPhase.EXECUTE); // any intermediate sideEffect steps are backed by SparkMemory
+        memory.setInExecute(true);
+        final JavaRDD<Traverser.Admin<Object>> nextRDD = inputRDD.values()
+                .filter(vertexWritable -> ElementHelper.idExists(vertexWritable.get().id(), graphStepIds)) // ensure vertex ids are in V(x)
+                .flatMap(vertexWritable -> {
+                    if (identityTraversal)                          // g.V.count()-style (identity)
+                        return () -> IteratorUtils.of(traversal.getTraverserGenerator().generate(vertexWritable.get(), (Step) graphStep, 1l));
+                    else {                                          // add the vertex to head of the traversal
+                        return () -> {                              // and iterate it for its results
+                            final Traversal.Admin<Vertex, ?> clone = traversal.clone(); // need a unique clone for each vertex to isolate the computation
+                            clone.getStartStep().addStart(clone.getTraverserGenerator().generate(vertexWritable.get(), graphStep, 1l));
+                            return (Step) clone.getEndStep();
+                        };
+                    }
+                });
+        // USE SPARK DSL FOR THE RESPECTIVE END REDUCING BARRIER STEP OF THE TRAVERSAL
+        final Object result;
+        if (endStep instanceof CountGlobalStep)
+            result = nextRDD.map(Traverser::bulk).fold(0l, (a, b) -> a + b);
+        else if (endStep instanceof SumGlobalStep)
+            result = nextRDD
+                    .map(traverser -> NumberHelper.mul(traverser.bulk(), (Number) traverser.get()))
+                    .fold(0, NumberHelper::add);
+        else if (endStep instanceof MeanGlobalStep)
+            result = nextRDD
+                    .map(traverser -> new MeanGlobalStep.MeanNumber((Number) traverser.get(), traverser.bulk()))
+                    .fold(new MeanGlobalStep.MeanNumber(), MeanGlobalStep.MeanNumber::add)
+                    .getFinal();
+        else if (endStep instanceof MinGlobalStep)
+            result = nextRDD
+                    .map(traverser -> (Number) traverser.get())
+                    .fold(Integer.MAX_VALUE, NumberHelper::min);
+        else if (endStep instanceof MaxGlobalStep)
+            result = nextRDD
+                    .map(traverser -> (Number) traverser.get())
+                    .fold(Integer.MIN_VALUE, NumberHelper::max);
+        else if (endStep instanceof FoldStep) {
+            final BinaryOperator biOperator = endStep.getBiOperator();
+            result = nextRDD.map(traverser -> {
+                if (endStep.getSeedSupplier() instanceof ArrayListSupplier) {
+                    final List list = new ArrayList<>();
+                    for (long i = 0; i < traverser.bulk(); i++) {
+                        list.add(traverser.get());
+                    }
+                    return list;
+                } else {
+                    return traverser.get();
+                }
+            }).fold(endStep.getSeedSupplier().get(), biOperator::apply);
+        } else if (endStep instanceof GroupStep) {
+            final GroupStep.GroupBiOperator<Object, Object> biOperator = (GroupStep.GroupBiOperator) endStep.getBiOperator();
+            result = ((GroupStep) endStep).generateFinalResult(nextRDD.
+                    mapPartitions(partitions -> {
+                        final GroupStep<Object, Object, Object> clone = (GroupStep) endStep.clone();
+                        return () -> IteratorUtils.map(partitions, clone::projectTraverser);
+                    }).fold(((GroupStep<Object, Object, Object>) endStep).getSeedSupplier().get(), biOperator::apply));
+        } else if (endStep instanceof GroupCountStep) {
+            final GroupCountStep.GroupCountBiOperator<Object> biOperator = GroupCountStep.GroupCountBiOperator.instance();
+            result = nextRDD
+                    .mapPartitions(partitions -> {
+                        final GroupCountStep<Object, Object> clone = (GroupCountStep) endStep.clone();
+                        return () -> IteratorUtils.map(partitions, clone::projectTraverser);
+                    })
+                    .fold(((GroupCountStep<Object, Object>) endStep).getSeedSupplier().get(), biOperator::apply);
+        } else
+            throw new IllegalArgumentException("The end step is an unsupported barrier: " + endStep);
+        memory.setInExecute(false);
+        ///////////////////////////////
+
+        // generate the HALTED_TRAVERSERS for the memory
+        final TraverserSet<Long> haltedTraversers = new TraverserSet<>();
+        haltedTraversers.add(traversal.getTraverserGenerator().generate(result, endStep, 1l)); // all reducing barrier steps produce a result of bulk 1
+        memory.set(TraversalVertexProgram.HALTED_TRAVERSERS, haltedTraversers);
+        memory.incrIteration(); // any local star graph reduction takes a single iteration
+        return inputRDD;
+    }
+
+    public static boolean isLegal(final Traversal.Admin<?, ?> traversal) {
+        final Step<?, ?> startStep = traversal.getStartStep();
+        final Step<?, ?> endStep = traversal.getEndStep();
+        if (!startStep.getClass().equals(GraphStep.class) || ((GraphStep) startStep).returnsEdge())
+            return false;
+        if (!endStep.getClass().equals(CountGlobalStep.class) &&
+                !endStep.getClass().equals(SumGlobalStep.class) &&
+                !endStep.getClass().equals(MeanGlobalStep.class) &&
+                !endStep.getClass().equals(MaxGlobalStep.class) &&
+                !endStep.getClass().equals(MinGlobalStep.class) &&
+                !endStep.getClass().equals(FoldStep.class) &&
+                !endStep.getClass().equals(GroupStep.class) &&
+                !endStep.getClass().equals(GroupCountStep.class))
+            // TODO: tree()
+            return false;
+        if (TraversalHelper.getStepsOfAssignableClassRecursively(Scope.global, Barrier.class, traversal).size() != 1)
+            return false;
+        if (traversal.getTraverserRequirements().contains(TraverserRequirement.SACK))
+            return false;
+        return TraversalHelper.isLocalStarGraph(traversal);
+    }
+}
+
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputFormatRDD.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputFormatRDD.java
index a7bfbc1..9589497 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputFormatRDD.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputFormatRDD.java
@@ -40,7 +40,7 @@
     public JavaPairRDD<Object, VertexWritable> readGraphRDD(final Configuration configuration, final JavaSparkContext sparkContext) {
         final org.apache.hadoop.conf.Configuration hadoopConfiguration = ConfUtil.makeHadoopConfiguration(configuration);
         return sparkContext.newAPIHadoopRDD(hadoopConfiguration,
-                (Class<InputFormat<NullWritable, VertexWritable>>) hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, InputFormat.class),
+                (Class<InputFormat<NullWritable, VertexWritable>>) hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_READER, InputFormat.class),
                 NullWritable.class,
                 VertexWritable.class)
                 .mapToPair(tuple -> new Tuple2<>(tuple._2().get().id(), new VertexWritable(tuple._2().get())));
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputOutputHelper.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputOutputHelper.java
index 4753028..444b10a 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputOutputHelper.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputOutputHelper.java
@@ -63,18 +63,13 @@
     }
 
     public static HadoopGraph getOutputGraph(final Configuration configuration, final GraphComputer.ResultGraph resultGraph, final GraphComputer.Persist persist) {
-        try {
-            final HadoopConfiguration hadoopConfiguration = new HadoopConfiguration(configuration);
-            final BaseConfiguration newConfiguration = new BaseConfiguration();
-            newConfiguration.copy(org.apache.tinkerpop.gremlin.hadoop.structure.io.InputOutputHelper.getOutputGraph(configuration, resultGraph, persist).configuration());
-            if (resultGraph.equals(GraphComputer.ResultGraph.NEW) && hadoopConfiguration.containsKey(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD)) {
-                newConfiguration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, InputRDDFormat.class.getCanonicalName());
-                //newConfiguration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT, OutputRDDFormat.class.getCanonicalName());
-                newConfiguration.setProperty(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, InputOutputHelper.getInputFormat((Class) Class.forName(hadoopConfiguration.getString(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD))).getCanonicalName());
-            }
-            return HadoopGraph.open(newConfiguration);
-        } catch (final ClassNotFoundException e) {
-            throw new IllegalArgumentException(e.getMessage(), e);
+        final HadoopConfiguration hadoopConfiguration = new HadoopConfiguration(configuration);
+        final BaseConfiguration newConfiguration = new BaseConfiguration();
+        newConfiguration.copy(org.apache.tinkerpop.gremlin.hadoop.structure.io.InputOutputHelper.getOutputGraph(configuration, resultGraph, persist).configuration());
+        if (resultGraph.equals(GraphComputer.ResultGraph.NEW) && hadoopConfiguration.containsKey(Constants.GREMLIN_HADOOP_GRAPH_WRITER)) {
+            if (null != InputOutputHelper.getInputFormat(hadoopConfiguration.getGraphWriter()))
+                newConfiguration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, InputOutputHelper.getInputFormat(hadoopConfiguration.getGraphWriter()).getCanonicalName());
         }
+        return HadoopGraph.open(newConfiguration);
     }
 }
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputRDDFormat.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputRDDFormat.java
index d00af55..d33b1dc 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputRDDFormat.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputRDDFormat.java
@@ -71,7 +71,7 @@
             final SparkConf sparkConfiguration = new SparkConf();
             sparkConfiguration.setAppName(UUID.randomUUID().toString());
             hadoopConfiguration.forEach(entry -> sparkConfiguration.set(entry.getKey(), entry.getValue()));
-            final InputRDD inputRDD = (InputRDD) Class.forName(sparkConfiguration.get(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD)).newInstance();
+            final InputRDD inputRDD = (InputRDD) Class.forName(sparkConfiguration.get(Constants.GREMLIN_HADOOP_GRAPH_READER)).newInstance();
             final JavaSparkContext javaSparkContext = new JavaSparkContext(SparkContext.getOrCreate(sparkConfiguration));
             Spark.create(javaSparkContext.sc());
             final Iterator<Tuple2<Object, VertexWritable>> iterator = inputRDD.readGraphRDD(ConfUtil.makeApacheConfiguration(taskAttemptContext.getConfiguration()), javaSparkContext).toLocalIterator();
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/OutputFormatRDD.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/OutputFormatRDD.java
index edb541b..fe848a0 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/OutputFormatRDD.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/OutputFormatRDD.java
@@ -52,7 +52,7 @@
                     .saveAsNewAPIHadoopFile(Constants.getGraphLocation(outputLocation),
                             NullWritable.class,
                             VertexWritable.class,
-                            (Class<OutputFormat<NullWritable, VertexWritable>>) hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT, OutputFormat.class), hadoopConfiguration);
+                            (Class<OutputFormat<NullWritable, VertexWritable>>) hadoopConfiguration.getClass(Constants.GREMLIN_HADOOP_GRAPH_WRITER, OutputFormat.class), hadoopConfiguration);
         }
     }
 
@@ -62,10 +62,11 @@
         final String outputLocation = hadoopConfiguration.get(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION);
         if (null != outputLocation) {
             // map back to a Hadoop stream for output
-            memoryRDD.mapToPair(keyValue -> new Tuple2<>(new ObjectWritable<>(keyValue._1()), new ObjectWritable<>(keyValue._2()))).saveAsNewAPIHadoopFile(Constants.getMemoryLocation(outputLocation, memoryKey),
-                    ObjectWritable.class,
-                    ObjectWritable.class,
-                    SequenceFileOutputFormat.class, hadoopConfiguration);
+            memoryRDD.mapToPair(keyValue -> new Tuple2<>(new ObjectWritable<>(keyValue._1()), new ObjectWritable<>(keyValue._2())))
+                    .saveAsNewAPIHadoopFile(Constants.getMemoryLocation(outputLocation, memoryKey),
+                            ObjectWritable.class,
+                            ObjectWritable.class,
+                            SequenceFileOutputFormat.class, hadoopConfiguration);
             try {
                 return (Iterator) new ObjectWritableIterator(hadoopConfiguration, new Path(Constants.getMemoryLocation(outputLocation, memoryKey)));
             } catch (final IOException e) {
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/PersistedInputRDD.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/PersistedInputRDD.java
index d926686..58d3b47 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/PersistedInputRDD.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/PersistedInputRDD.java
@@ -27,6 +27,8 @@
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
 import org.apache.tinkerpop.gremlin.spark.structure.Spark;
 
+import java.util.Optional;
+
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
@@ -37,7 +39,8 @@
         if (!configuration.containsKey(Constants.GREMLIN_HADOOP_INPUT_LOCATION))
             throw new IllegalArgumentException("There is no provided " + Constants.GREMLIN_HADOOP_INPUT_LOCATION + " to read the persisted RDD from");
         Spark.create(sparkContext.sc());
-        return JavaPairRDD.fromJavaRDD((JavaRDD) Spark.getRDD(Constants.getSearchGraphLocation(configuration.getString(Constants.GREMLIN_HADOOP_INPUT_LOCATION), SparkContextStorage.open(sparkContext.sc())).get()).toJavaRDD());
+        final Optional<String> graphLocation = Constants.getSearchGraphLocation(configuration.getString(Constants.GREMLIN_HADOOP_INPUT_LOCATION), SparkContextStorage.open(sparkContext.sc()));
+        return graphLocation.isPresent() ? JavaPairRDD.fromJavaRDD((JavaRDD) Spark.getRDD(graphLocation.get()).toJavaRDD()) : JavaPairRDD.fromJavaRDD(sparkContext.emptyRDD());
     }
 
     @Override
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/PersistedOutputRDD.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/PersistedOutputRDD.java
index 3cc27b7..c9fc684 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/PersistedOutputRDD.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/PersistedOutputRDD.java
@@ -23,9 +23,12 @@
 import org.apache.spark.api.java.JavaPairRDD;
 import org.apache.spark.storage.StorageLevel;
 import org.apache.tinkerpop.gremlin.hadoop.Constants;
+import org.apache.tinkerpop.gremlin.hadoop.process.computer.PersistResultGraphAware;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
 import org.apache.tinkerpop.gremlin.spark.structure.Spark;
+import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,7 +38,7 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class PersistedOutputRDD implements OutputRDD {
+public final class PersistedOutputRDD implements OutputRDD, PersistResultGraphAware {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(PersistedOutputRDD.class);
 
@@ -48,9 +51,9 @@
         SparkContextStorage.open(configuration).rm(configuration.getString(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION));  // this might be bad cause it unpersists the job RDD
         // determine which storage level to persist the RDD as with MEMORY_ONLY being the default cache()
         final StorageLevel storageLevel = StorageLevel.fromString(configuration.getString(Constants.GREMLIN_SPARK_PERSIST_STORAGE_LEVEL, "MEMORY_ONLY"));
-        if (!configuration.getBoolean(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT_HAS_EDGES, true))
+        if (!configuration.getBoolean(Constants.GREMLIN_HADOOP_GRAPH_WRITER_HAS_EDGES, true))
             graphRDD.mapValues(vertex -> {
-                vertex.get().dropEdges();
+                vertex.get().dropEdges(Direction.BOTH);
                 return vertex;
             }).setName(Constants.getGraphLocation(configuration.getString(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION))).persist(storageLevel);
         else
@@ -70,4 +73,9 @@
         Spark.refresh(); // necessary to do really fast so the Spark GC doesn't clear out the RDD
         return IteratorUtils.map(memoryRDD.collect().iterator(), tuple -> new KeyValue<>(tuple._1(), tuple._2()));
     }
+
+    @Override
+    public boolean supportsResultGraphPersistCombination(final GraphComputer.ResultGraph resultGraph, final GraphComputer.Persist persist) {
+        return persist.equals(GraphComputer.Persist.NOTHING) || resultGraph.equals(GraphComputer.ResultGraph.NEW);
+    }
 }
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/SparkContextStorage.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/SparkContextStorage.java
index 799c215..9cbf169 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/SparkContextStorage.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/SparkContextStorage.java
@@ -113,39 +113,37 @@
     }
 
     @Override
-    public Iterator<Vertex> head(final String location, final Class parserClass, final int totalLines) {
+    public Iterator<Vertex> head(final String location, final Class readerClass, final int totalLines) {
         final Configuration configuration = new BaseConfiguration();
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, location);
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, parserClass.getCanonicalName());
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, parserClass.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, readerClass.getCanonicalName());
         try {
-            if (InputRDD.class.isAssignableFrom(parserClass)) {
-                return IteratorUtils.map(((InputRDD) parserClass.getConstructor().newInstance()).readGraphRDD(configuration, new JavaSparkContext(Spark.getContext())).take(totalLines).iterator(), tuple -> tuple._2().get());
-            } else if (InputFormat.class.isAssignableFrom(parserClass)) {
+            if (InputRDD.class.isAssignableFrom(readerClass)) {
+                return IteratorUtils.map(((InputRDD) readerClass.getConstructor().newInstance()).readGraphRDD(configuration, new JavaSparkContext(Spark.getContext())).take(totalLines).iterator(), tuple -> tuple._2().get());
+            } else if (InputFormat.class.isAssignableFrom(readerClass)) {
                 return IteratorUtils.map(new InputFormatRDD().readGraphRDD(configuration, new JavaSparkContext(Spark.getContext())).take(totalLines).iterator(), tuple -> tuple._2().get());
             }
         } catch (final Exception e) {
             throw new IllegalArgumentException(e.getMessage(), e);
         }
-        throw new IllegalArgumentException("The provided parserClass must be an " + InputFormat.class.getCanonicalName() + " or an " + InputRDD.class.getCanonicalName() + ": " + parserClass.getCanonicalName());
+        throw new IllegalArgumentException("The provided parserClass must be an " + InputFormat.class.getCanonicalName() + " or an " + InputRDD.class.getCanonicalName() + ": " + readerClass.getCanonicalName());
     }
 
     @Override
-    public <K, V> Iterator<KeyValue<K, V>> head(final String location, final String memoryKey, final Class parserClass, final int totalLines) {
+    public <K, V> Iterator<KeyValue<K, V>> head(final String location, final String memoryKey, final Class readerClass, final int totalLines) {
         final Configuration configuration = new BaseConfiguration();
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, location);
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, parserClass.getCanonicalName());
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, parserClass.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, readerClass.getCanonicalName());
         try {
-            if (InputRDD.class.isAssignableFrom(parserClass)) {
-                return IteratorUtils.map(((InputRDD) parserClass.getConstructor().newInstance()).readMemoryRDD(configuration, memoryKey, new JavaSparkContext(Spark.getContext())).take(totalLines).iterator(), tuple -> new KeyValue(tuple._1(), tuple._2()));
-            } else if (InputFormat.class.isAssignableFrom(parserClass)) {
+            if (InputRDD.class.isAssignableFrom(readerClass)) {
+                return IteratorUtils.map(((InputRDD) readerClass.getConstructor().newInstance()).readMemoryRDD(configuration, memoryKey, new JavaSparkContext(Spark.getContext())).take(totalLines).iterator(), tuple -> new KeyValue(tuple._1(), tuple._2()));
+            } else if (InputFormat.class.isAssignableFrom(readerClass)) {
                 return IteratorUtils.map(new InputFormatRDD().readMemoryRDD(configuration, memoryKey, new JavaSparkContext(Spark.getContext())).take(totalLines).iterator(), tuple -> new KeyValue(tuple._1(), tuple._2()));
             }
         } catch (final Exception e) {
             throw new IllegalArgumentException(e.getMessage(), e);
         }
-        throw new IllegalArgumentException("The provided parserClass must be an " + InputFormat.class.getCanonicalName() + " or an " + InputRDD.class.getCanonicalName() + ": " + parserClass.getCanonicalName());
+        throw new IllegalArgumentException("The provided parserClass must be an " + InputFormat.class.getCanonicalName() + " or an " + InputRDD.class.getCanonicalName() + ": " + readerClass.getCanonicalName());
     }
 
     @Override
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoRegistrator.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoRegistrator.java
new file mode 100644
index 0000000..ffd731a
--- /dev/null
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoRegistrator.java
@@ -0,0 +1,245 @@
+/*
+ * 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.spark.structure.io.gryo;
+
+import com.esotericsoftware.kryo.Kryo;
+import com.esotericsoftware.kryo.Serializer;
+import com.esotericsoftware.kryo.serializers.JavaSerializer;
+import org.apache.spark.serializer.KryoRegistrator;
+import org.apache.spark.util.collection.CompactBuffer;
+import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopEdge;
+import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopProperty;
+import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopVertex;
+import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopVertexProperty;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritable;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
+import org.apache.tinkerpop.gremlin.process.computer.util.ComputerGraph;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ImmutablePath;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.MutablePath;
+import org.apache.tinkerpop.gremlin.spark.process.computer.payload.MessagePayload;
+import org.apache.tinkerpop.gremlin.spark.process.computer.payload.ViewIncomingPayload;
+import org.apache.tinkerpop.gremlin.spark.process.computer.payload.ViewOutgoingPayload;
+import org.apache.tinkerpop.gremlin.spark.process.computer.payload.ViewPayload;
+import org.apache.tinkerpop.gremlin.spark.structure.io.gryo.kryoshim.unshaded.UnshadedSerializerAdapter;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoSerializers;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.TypeRegistration;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
+import org.apache.tinkerpop.gremlin.structure.util.star.StarGraph;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import scala.collection.mutable.WrappedArray;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * A spark.kryo.registrator implementation that installs TinkerPop types.
+ * This is intended for use with spark.serializer=KryoSerializer, not GryoSerializer.
+ */
+public class GryoRegistrator implements KryoRegistrator {
+
+    private static final Logger log = LoggerFactory.getLogger(GryoRegistrator.class);
+
+    @Override
+    public void registerClasses(Kryo kryo) {
+        registerClasses(kryo, Collections.emptyMap(), Collections.emptySet());
+    }
+
+    /**
+     * Register TinkerPop's classes with the supplied {@link Kryo} instance
+     * while honoring optional overrides and optional class blacklist ("blackset"?).
+     *
+     * @param kryo                the Kryo serializer instance with which to register types
+     * @param serializerOverrides serializer mappings that override this class's defaults
+     * @param blacklist           classes which should not be registered at all, even if there is an override entry
+     *                            or if they would be registered by this class by default (does not affect Kryo's
+     *                            built-in registrations, e.g. String.class).
+     */
+    public void registerClasses(final Kryo kryo, final Map<Class<?>, Serializer<?>> serializerOverrides, final Set<Class<?>> blacklist) {
+        // Apply TinkerPop type registrations copied from GyroSerializer's constructor
+        for (Map.Entry<Class<?>, Serializer<?>> ent : getExtraRegistrations().entrySet()) {
+            final Class<?> targetClass = ent.getKey();
+            final Serializer<?> ser = ent.getValue();
+
+            // Is this class blacklisted?  Skip it. (takes precedence over serializerOverrides)
+            if (blacklist.contains(targetClass)) {
+                log.debug("Not registering serializer for {} (blacklisted)", targetClass);
+                continue;
+            }
+
+            if (checkForAndApplySerializerOverride(serializerOverrides, kryo, targetClass)) {
+                // do nothing but skip the remaining else(-if) clauses
+            } else if (null == ser) {
+                log.debug("Registering {} with default serializer", targetClass);
+                kryo.register(targetClass);
+            } else {
+                log.debug("Registering {} with serializer {}", targetClass, ser);
+                kryo.register(targetClass, ser);
+            }
+        }
+
+        final Set<Class<?>> shimmedClassesFromGryoMapper = new HashSet<>();
+
+        // Apply GryoMapper's default registrations
+        for (TypeRegistration<?> tr : GryoMapper.build().create().getTypeRegistrations()) {
+            // Is this class blacklisted?  Skip it. (takes precedence over serializerOverrides)
+            if (blacklist.contains(tr.getTargetClass())) {
+                log.debug("Not registering serializer for {} (blacklisted)", tr.getTargetClass());
+                continue;
+            }
+
+            final org.apache.tinkerpop.shaded.kryo.Serializer<?> shadedSerializer = tr.getShadedSerializer();
+            final SerializerShim<?> serializerShim = tr.getSerializerShim();
+            final java.util.function.Function<
+                    org.apache.tinkerpop.shaded.kryo.Kryo,
+                    org.apache.tinkerpop.shaded.kryo.Serializer> functionOfShadedKryo = tr.getFunctionOfShadedKryo();
+
+            // Apply overrides with the highest case-precedence
+            if (checkForAndApplySerializerOverride(serializerOverrides, kryo, tr.getTargetClass())) {
+                // do nothing but skip the remaining else(-if) clauses
+            } else if (null != shadedSerializer) {
+                if (shadedSerializer.getClass().equals(org.apache.tinkerpop.shaded.kryo.serializers.JavaSerializer.class)) {
+                    // Convert GryoMapper's shaded JavaSerializer mappings to their unshaded equivalents
+                    log.debug("Registering {} with JavaSerializer", tr.getTargetClass());
+                    kryo.register(tr.getTargetClass(), new JavaSerializer());
+                } else {
+                    // There's supposed to be a check in GryoMapper that prevents this from happening
+                    log.error("GryoMapper's default serialization registration for {} is a {}. " +
+                                    "This is probably a bug in TinkerPop (this is not a valid default registration). " +
+                                    "I am configuring Spark to use Kryo's default serializer for this class, " +
+                                    "but this may cause serialization failures at runtime.",
+                            tr.getTargetClass(),
+                            org.apache.tinkerpop.shaded.kryo.Serializer.class.getCanonicalName());
+                    kryo.register(tr.getTargetClass());
+                }
+            } else if (null != serializerShim) {
+                // Wrap shim serializers in an adapter for Spark's unshaded Kryo
+                log.debug("Registering {} to serializer shim {} (serializer shim {})",
+                        tr.getTargetClass(), serializerShim, serializerShim.getClass());
+                kryo.register(tr.getTargetClass(), new UnshadedSerializerAdapter<>(serializerShim));
+                shimmedClassesFromGryoMapper.add(tr.getTargetClass());
+            } else if (null != functionOfShadedKryo) {
+                // As with shaded serializers, there's supposed to be a check in GryoMapper that prevents this from happening
+                log.error("GryoMapper's default serialization registration for {} is a Function<{},{}>.  " +
+                                "This is probably a bug in TinkerPop (this is not a valid default registration). " +
+                                "I am configuring Spark to use Kryo's default serializer instead of this function, " +
+                                "but this may cause serialization failures at runtime.",
+                        tr.getTargetClass(),
+                        org.apache.tinkerpop.shaded.kryo.Kryo.class.getCanonicalName(),
+                        org.apache.tinkerpop.shaded.kryo.Serializer.class.getCanonicalName());
+                kryo.register(tr.getTargetClass());
+            } else {
+                // Register all other classes with the default behavior (FieldSerializer)
+                log.debug("Registering {} with default serializer", tr.getTargetClass());
+                kryo.register(tr.getTargetClass());
+            }
+        }
+
+        // StarGraph's shim serializer is especially important on Spark for efficiency reasons,
+        // so log a warning if we failed to register it somehow
+        if (!shimmedClassesFromGryoMapper.contains(StarGraph.class)) {
+            log.warn("No SerializerShim found for StarGraph");
+        }
+    }
+
+    private LinkedHashMap<Class<?>, Serializer<?>> getExtraRegistrations() {
+
+        /* The map returned by this method MUST have a fixed iteration order!
+         *
+         * The order itself is irrelevant, so long as it is completely stable at runtime.
+         *
+         * LinkedHashMap satisfies this requirement (its contract specifies
+         * iteration in key-insertion-order).
+         */
+
+        final LinkedHashMap<Class<?>, Serializer<?>> m = new LinkedHashMap<>();
+        // The following entries were copied from GryoSerializer's constructor
+        // This could be turned into a static collection on GryoSerializer to avoid
+        // duplication, but it would be a bit cumbersome to do so without disturbing
+        // the ordering of the existing entries in that constructor, since not all
+        // of the entries are for TinkerPop (and the ordering is significant).
+        if (Boolean.valueOf(System.getProperty("is.testing", "false"))) {
+            try {
+                m.put(Class.forName("scala.reflect.ClassTag$$anon$1"), new JavaSerializer());
+                m.put(Class.forName("scala.reflect.ManifestFactory$$anon$1"), new JavaSerializer());
+            } catch (final ClassNotFoundException e) {
+                throw new IllegalStateException(e.getMessage(), e);
+            }
+        }
+        m.put(WrappedArray.ofRef.class, null);
+        m.put(MessagePayload.class, null);
+        m.put(ViewIncomingPayload.class, null);
+        m.put(ViewOutgoingPayload.class, null);
+        m.put(ViewPayload.class, null);
+        m.put(VertexWritable.class, new UnshadedSerializerAdapter<>(new VertexWritableSerializer()));
+        m.put(ObjectWritable.class, new UnshadedSerializerAdapter<>(new ObjectWritableSerializer<>()));
+        //
+        m.put(HadoopVertex.class, new UnshadedSerializerAdapter<>(new GryoSerializers.VertexSerializer()));
+        m.put(HadoopVertexProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializers.VertexPropertySerializer()));
+        m.put(HadoopProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializers.PropertySerializer()));
+        m.put(HadoopEdge.class, new UnshadedSerializerAdapter<>(new GryoSerializers.EdgeSerializer()));
+        //
+        m.put(ComputerGraph.ComputerVertex.class, new UnshadedSerializerAdapter<>(new GryoSerializers.VertexSerializer()));
+        m.put(ComputerGraph.ComputerVertexProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializers.VertexPropertySerializer()));
+        m.put(ComputerGraph.ComputerProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializers.PropertySerializer()));
+        m.put(ComputerGraph.ComputerEdge.class, new UnshadedSerializerAdapter<>(new GryoSerializers.EdgeSerializer()));
+        //
+        m.put(StarGraph.StarEdge.class, new UnshadedSerializerAdapter<>(new GryoSerializers.EdgeSerializer()));
+        m.put(StarGraph.StarVertex.class, new UnshadedSerializerAdapter<>(new GryoSerializers.VertexSerializer()));
+        m.put(StarGraph.StarProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializers.PropertySerializer()));
+        m.put(StarGraph.StarVertexProperty.class, new UnshadedSerializerAdapter<>(new GryoSerializers.VertexPropertySerializer()));
+        //
+        m.put(MutablePath.class, new UnshadedSerializerAdapter<>(new GryoSerializers.PathSerializer()));
+        m.put(ImmutablePath.class, new UnshadedSerializerAdapter<>(new GryoSerializers.PathSerializer()));
+        try {
+            m.put(Class.forName(ImmutablePath.class.getCanonicalName() + "$TailPath"), new UnshadedSerializerAdapter<>(new GryoSerializers.PathSerializer()));
+        } catch (final ClassNotFoundException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+        //
+        m.put(CompactBuffer[].class, null);
+        // TODO: VoidSerializer is a default serializer and thus, may not be needed (if it is, you can't use FieldSerializer)
+        // TODO: We will have to copy/paste the shaded DefaultSerializer.VoidSerializer into an unshaded form.
+        //m.put(void.class, null);
+        //m.put(Void.class, null);
+        return m;
+    }
+
+    private boolean checkForAndApplySerializerOverride(final Map<Class<?>, Serializer<?>> serializerOverrides,
+                                                       final Kryo kryo, Class<?> targetClass) {
+        if (serializerOverrides.containsKey(targetClass)) {
+            final Serializer<?> ser = serializerOverrides.get(targetClass);
+            if (null == ser) {
+                // null means use Kryo's default serializer
+                log.debug("Registering {} with default serializer per overrides", targetClass);
+                kryo.register(targetClass);
+            } else {
+                // nonnull means use that serializer
+                log.debug("Registering {} with serializer {} per overrides", targetClass, ser);
+                kryo.register(targetClass, ser);
+            }
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoSerializer.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoSerializer.java
index a66b146..28a4d55 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoSerializer.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoSerializer.java
@@ -22,7 +22,6 @@
 
 import org.apache.commons.configuration.BaseConfiguration;
 import org.apache.commons.configuration.Configuration;
-import org.apache.spark.SerializableWritable;
 import org.apache.spark.SparkConf;
 import org.apache.spark.api.python.PythonBroadcast;
 import org.apache.spark.broadcast.HttpBroadcast;
@@ -31,6 +30,7 @@
 import org.apache.spark.scheduler.HighlyCompressedMapStatus;
 import org.apache.spark.serializer.Serializer;
 import org.apache.spark.serializer.SerializerInstance;
+import org.apache.spark.storage.BlockManagerId;
 import org.apache.spark.util.SerializableConfiguration;
 import org.apache.spark.util.collection.CompactBuffer;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritable;
@@ -41,6 +41,7 @@
 import org.apache.tinkerpop.gremlin.spark.process.computer.payload.ViewPayload;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoPool;
 import org.apache.tinkerpop.shaded.kryo.io.Output;
+import org.apache.tinkerpop.shaded.kryo.serializers.ExternalizableSerializer;
 import org.apache.tinkerpop.shaded.kryo.serializers.JavaSerializer;
 import scala.Tuple2;
 import scala.Tuple3;
@@ -77,31 +78,32 @@
             }
         }
         this.gryoPool = GryoPool.build().
-                poolSize(sparkConfiguration.getInt(GryoPool.CONFIG_IO_GRYO_POOL_SIZE, 256)).
+                poolSize(sparkConfiguration.getInt(GryoPool.CONFIG_IO_GRYO_POOL_SIZE, GryoPool.CONFIG_IO_GRYO_POOL_SIZE_DEFAULT)).
                 ioRegistries(makeApacheConfiguration(sparkConfiguration).getList(GryoPool.CONFIG_IO_REGISTRY, Collections.emptyList())).
                 initializeMapper(builder -> {
                     try {
-                        builder.addCustom(SerializableWritable.class, new JavaSerializer())
-                                .addCustom(Tuple2.class, new JavaSerializer())
-                                .addCustom(Tuple2[].class, new JavaSerializer())
-                                .addCustom(Tuple3.class, new JavaSerializer())
-                                .addCustom(Tuple3[].class, new JavaSerializer())
-                                .addCustom(CompactBuffer.class, new JavaSerializer())
-                                .addCustom(CompactBuffer[].class, new JavaSerializer())
-                                .addCustom(CompressedMapStatus.class, new JavaSerializer())
-                                .addCustom(HighlyCompressedMapStatus.class, new JavaSerializer())
-                                .addCustom(HttpBroadcast.class, new JavaSerializer())
-                                .addCustom(PythonBroadcast.class, new JavaSerializer())
-                                .addCustom(BoxedUnit.class, new JavaSerializer())
+                        builder.addCustom(Tuple2.class, new Tuple2Serializer())
+                                .addCustom(Tuple2[].class)
+                                .addCustom(Tuple3.class, new Tuple3Serializer())
+                                .addCustom(Tuple3[].class)
+                                .addCustom(CompactBuffer.class, new CompactBufferSerializer())
+                                .addCustom(CompactBuffer[].class)
+                                .addCustom(CompressedMapStatus.class)
+                                .addCustom(BlockManagerId.class)
+                                .addCustom(HighlyCompressedMapStatus.class, new ExternalizableSerializer())   // externalizable implemented so its okay
+                                .addCustom(HttpBroadcast.class)
+                                .addCustom(PythonBroadcast.class)
+                                .addCustom(BoxedUnit.class)
                                 .addCustom(Class.forName("scala.reflect.ClassTag$$anon$1"), new JavaSerializer())
+                                .addCustom(Class.forName("scala.reflect.ManifestFactory$$anon$1"), new JavaSerializer())
                                 .addCustom(WrappedArray.ofRef.class, new WrappedArraySerializer())
                                 .addCustom(MessagePayload.class)
                                 .addCustom(ViewIncomingPayload.class)
                                 .addCustom(ViewOutgoingPayload.class)
                                 .addCustom(ViewPayload.class)
                                 .addCustom(SerializableConfiguration.class, new JavaSerializer())
-                                .addCustom(VertexWritable.class, new JavaSerializer())
-                                .addCustom(ObjectWritable.class, new JavaSerializer())
+                                .addCustom(VertexWritable.class, new VertexWritableSerializer())
+                                .addCustom(ObjectWritable.class, new ObjectWritableSerializer())
                                 .referenceTracking(referenceTracking)
                                 .registrationRequired(registrationRequired);
                         // add these as we find ClassNotFoundExceptions
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/IoRegistryAwareKryoSerializer.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/IoRegistryAwareKryoSerializer.java
new file mode 100644
index 0000000..bf71fae
--- /dev/null
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/IoRegistryAwareKryoSerializer.java
@@ -0,0 +1,116 @@
+/*
+ * 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.
+ */
+
+/**
+ * Copyright DataStax, Inc.
+ * <p>
+ * Please see the included license file for details.
+ */
+package org.apache.tinkerpop.gremlin.spark.structure.io.gryo;
+
+import com.esotericsoftware.kryo.Kryo;
+import com.esotericsoftware.kryo.Serializer;
+import org.apache.spark.SparkConf;
+import org.apache.spark.serializer.KryoSerializer;
+import org.apache.tinkerpop.gremlin.structure.io.IoRegistry;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoPool;
+import org.javatuples.Pair;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+/**
+ * A {@link KryoSerializer} that attempts to honor {@link GryoPool#CONFIG_IO_REGISTRY}.
+ */
+public class IoRegistryAwareKryoSerializer extends KryoSerializer {
+
+    private final SparkConf conf;
+
+    private static final Logger log = LoggerFactory.getLogger(IoRegistryAwareKryoSerializer.class);
+
+    public IoRegistryAwareKryoSerializer(final SparkConf conf) {
+        super(conf);
+        // store conf so that we can access its registry (if one is present) in newKryo()
+        this.conf = conf;
+    }
+
+    @Override
+    public Kryo newKryo() {
+        final Kryo kryo = super.newKryo();
+
+        return applyIoRegistryIfPresent(kryo);
+    }
+
+    private Kryo applyIoRegistryIfPresent(final Kryo kryo) {
+        if (!conf.contains(GryoPool.CONFIG_IO_REGISTRY)) {
+            log.info("SparkConf {} does not contain setting {}, skipping {} handling",
+                    GryoPool.CONFIG_IO_REGISTRY, conf, IoRegistry.class.getCanonicalName());
+            return kryo;
+        }
+
+        final String registryClassnames = conf.get(GryoPool.CONFIG_IO_REGISTRY);
+
+        for (String registryClassname : registryClassnames.split(",")) {
+            final IoRegistry registry;
+
+            try {
+                registry = (IoRegistry) Class.forName(registryClassname).newInstance();
+                log.info("Instantiated {}", registryClassname);
+            } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
+                log.error("Unable to reflectively instantiate the {} implementation named {}",
+                        IoRegistry.class.getCanonicalName(), registryClassname, e);
+                return kryo;
+            }
+
+            // Left is the class targeted for serialization, right is a mess of potential types, including
+            // a shaded Serializer impl, unshaded Serializer impl, or Function<shaded.Kryo,shaded.Serializer>
+            final List<Pair<Class, Object>> serializers = registry.find(GryoIo.class);
+
+            if (null == serializers) {
+                log.info("Invoking find({}.class) returned null on registry {}; ignoring this registry",
+                        GryoIo.class.getCanonicalName(), registry);
+                return kryo;
+            }
+
+            for (Pair<Class, Object> p : serializers) {
+                if (null == p.getValue1()) {
+                    // null on the right is fine
+                    log.info("Registering {} with default serializer", p.getValue0());
+                    kryo.register(p.getValue0());
+                } else if (p.getValue1() instanceof Serializer) {
+                    // unshaded serializer on the right is fine
+                    log.info("Registering {} with serializer {}", p.getValue0(), p.getValue1());
+                    kryo.register(p.getValue0(), (Serializer) p.getValue1());
+                } else {
+                    // anything else on the right is unsupported with Spark
+                    log.error("Serializer {} found in {} must implement {} " +
+                                    "(the shaded interface {} is not supported on Spark).  This class will be registered with " +
+                                    "the default behavior of Spark's KryoSerializer.",
+                            p.getValue1(), registryClassname, Serializer.class.getCanonicalName(),
+                            org.apache.tinkerpop.shaded.kryo.Serializer.class.getCanonicalName());
+                    kryo.register(p.getValue0());
+                }
+            }
+        }
+
+        return kryo;
+    }
+}
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/ObjectWritableSerializer.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/ObjectWritableSerializer.java
new file mode 100644
index 0000000..01be50d
--- /dev/null
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/ObjectWritableSerializer.java
@@ -0,0 +1,47 @@
+/*
+ * 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.spark.structure.io.gryo;
+
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.ObjectWritable;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.InputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.OutputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
+import org.apache.tinkerpop.shaded.kryo.Kryo;
+import org.apache.tinkerpop.shaded.kryo.Serializer;
+import org.apache.tinkerpop.shaded.kryo.io.Input;
+import org.apache.tinkerpop.shaded.kryo.io.Output;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class ObjectWritableSerializer<T> implements SerializerShim<ObjectWritable<T>> {
+
+    @Override
+    public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final ObjectWritable<T> starGraph) {
+        kryo.writeClassAndObject(output, starGraph.get());
+        output.flush();
+    }
+
+    @Override
+    public <I extends InputShim> ObjectWritable<T> read(final KryoShim<I, ?> kryo, final I input, final Class<ObjectWritable<T>> clazz) {
+        return new ObjectWritable(kryo.readClassAndObject(input));
+    }
+}
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/Tuple2Serializer.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/Tuple2Serializer.java
new file mode 100644
index 0000000..05d0b9e
--- /dev/null
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/Tuple2Serializer.java
@@ -0,0 +1,46 @@
+/*
+ * 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.spark.structure.io.gryo;
+
+
+import org.apache.tinkerpop.shaded.kryo.Kryo;
+import org.apache.tinkerpop.shaded.kryo.Serializer;
+import org.apache.tinkerpop.shaded.kryo.io.Input;
+import org.apache.tinkerpop.shaded.kryo.io.Output;
+import scala.Tuple2;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class Tuple2Serializer<A, B> extends Serializer<Tuple2<A, B>> {
+
+    @Override
+    public void write(final Kryo kryo, final Output output, final Tuple2<A, B> tuple2) {
+        kryo.writeClassAndObject(output, tuple2._1());
+        output.flush();
+        kryo.writeClassAndObject(output, tuple2._2());
+        output.flush();
+    }
+
+    @Override
+    public Tuple2<A, B> read(final Kryo kryo, final Input input, final Class<Tuple2<A, B>> clazz) {
+        return new Tuple2(kryo.readClassAndObject(input), kryo.readClassAndObject(input));
+    }
+}
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/Tuple3Serializer.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/Tuple3Serializer.java
new file mode 100644
index 0000000..f188794
--- /dev/null
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/Tuple3Serializer.java
@@ -0,0 +1,47 @@
+/*
+ * 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.spark.structure.io.gryo;
+
+import org.apache.tinkerpop.shaded.kryo.Kryo;
+import org.apache.tinkerpop.shaded.kryo.Serializer;
+import org.apache.tinkerpop.shaded.kryo.io.Input;
+import org.apache.tinkerpop.shaded.kryo.io.Output;
+import scala.Tuple3;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class Tuple3Serializer<A, B, C> extends Serializer<Tuple3<A, B, C>> {
+
+    @Override
+    public void write(final Kryo kryo, final Output output, final Tuple3<A, B, C> tuple3) {
+        kryo.writeClassAndObject(output, tuple3._1());
+        output.flush();
+        kryo.writeClassAndObject(output, tuple3._2());
+        output.flush();
+        kryo.writeClassAndObject(output, tuple3._3());
+        output.flush();
+    }
+
+    @Override
+    public Tuple3<A, B, C> read(final Kryo kryo, final Input input, final Class<Tuple3<A, B, C>> clazz) {
+        return new Tuple3(kryo.readClassAndObject(input), kryo.readClassAndObject(input), kryo.readClassAndObject(input));
+    }
+}
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/VertexWritableSerializer.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/VertexWritableSerializer.java
new file mode 100644
index 0000000..c89fb05
--- /dev/null
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/VertexWritableSerializer.java
@@ -0,0 +1,48 @@
+/*
+ * 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.spark.structure.io.gryo;
+
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.VertexWritable;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.InputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.OutputShim;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
+import org.apache.tinkerpop.gremlin.structure.util.star.StarGraph;
+import org.apache.tinkerpop.shaded.kryo.Kryo;
+import org.apache.tinkerpop.shaded.kryo.Serializer;
+import org.apache.tinkerpop.shaded.kryo.io.Input;
+import org.apache.tinkerpop.shaded.kryo.io.Output;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class VertexWritableSerializer implements SerializerShim<VertexWritable> {
+
+    @Override
+    public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final VertexWritable vertexWritable) {
+        kryo.writeObject(output, vertexWritable.get().graph());
+        output.flush();
+    }
+
+    @Override
+    public <I extends InputShim> VertexWritable read(final KryoShim<I, ?> kryo, final I input, final Class<VertexWritable> clazz) {
+        return new VertexWritable(kryo.readObject(input, StarGraph.class).getStarVertex());
+    }
+}
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/WrappedArraySerializer.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/WrappedArraySerializer.java
index 0e9f03f..8de1955 100644
--- a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/WrappedArraySerializer.java
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/WrappedArraySerializer.java
@@ -26,9 +26,6 @@
 import scala.collection.JavaConversions;
 import scala.collection.mutable.WrappedArray;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
@@ -36,11 +33,20 @@
 
     @Override
     public void write(final Kryo kryo, final Output output, final WrappedArray<T> iterable) {
-        kryo.writeClassAndObject(output,new ArrayList<>(JavaConversions.asJavaList(iterable)));
+        output.writeVarInt(iterable.size(), true);
+        JavaConversions.asJavaCollection(iterable).forEach(t -> {
+            kryo.writeClassAndObject(output, t);
+            output.flush();
+        });
     }
 
     @Override
     public WrappedArray<T> read(final Kryo kryo, final Input input, final Class<WrappedArray<T>> aClass) {
-        return new WrappedArray.ofRef<>((T[]) ((List<T>) kryo.readClassAndObject(input)).toArray());
+        final int size = input.readVarInt(true);
+        final Object[] array = new Object[size];
+        for (int i = 0; i < size; i++) {
+            array[i] = kryo.readClassAndObject(input);
+        }
+        return new WrappedArray.ofRef<>((T[]) array);
     }
 }
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedInputAdapter.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedInputAdapter.java
new file mode 100644
index 0000000..0f13bb2
--- /dev/null
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedInputAdapter.java
@@ -0,0 +1,78 @@
+/*
+ * 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.
+ */
+
+/**
+ * Copyright DataStax, Inc.
+ *
+ * Please see the included license file for details.
+ */
+package org.apache.tinkerpop.gremlin.spark.structure.io.gryo.kryoshim.unshaded;
+
+import com.esotericsoftware.kryo.io.Input;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.InputShim;
+
+public class UnshadedInputAdapter implements InputShim
+{
+
+    private final Input unshadedInput;
+
+    public UnshadedInputAdapter(final Input unshadedInput)
+    {
+        this.unshadedInput = unshadedInput;
+    }
+
+    Input getUnshadedInput()
+    {
+        return unshadedInput;
+    }
+
+    @Override
+    public byte readByte()
+    {
+        return unshadedInput.readByte();
+    }
+
+    @Override
+    public byte[] readBytes(final int size) {
+        return unshadedInput.readBytes(size);
+    }
+
+    @Override
+    public String readString()
+    {
+        return unshadedInput.readString();
+    }
+
+    @Override
+    public long readLong()
+    {
+        return unshadedInput.readLong();
+    }
+
+    @Override
+    public int readInt() {
+        return unshadedInput.readInt();
+    }
+
+    @Override
+    public double readDouble()
+    {
+        return unshadedInput.readDouble();
+    }
+}
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedKryoAdapter.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedKryoAdapter.java
new file mode 100644
index 0000000..94918a3
--- /dev/null
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedKryoAdapter.java
@@ -0,0 +1,74 @@
+/*
+ * 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.
+ */
+
+/**
+ * Copyright DataStax, Inc.
+ *
+ * Please see the included license file for details.
+ */
+package org.apache.tinkerpop.gremlin.spark.structure.io.gryo.kryoshim.unshaded;
+
+import com.esotericsoftware.kryo.Kryo;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShim;
+
+public class UnshadedKryoAdapter implements KryoShim<UnshadedInputAdapter, UnshadedOutputAdapter>
+{
+    private final Kryo unshadedKryo;
+
+    public UnshadedKryoAdapter(final Kryo unshadedKryo)
+    {
+        this.unshadedKryo = unshadedKryo;
+    }
+
+    @Override
+    public <T> T readObject(final UnshadedInputAdapter input, final Class<T> type)
+    {
+        return unshadedKryo.readObject(input.getUnshadedInput(), type);
+    }
+
+    @Override
+    public Object readClassAndObject(final UnshadedInputAdapter input)
+    {
+        return unshadedKryo.readClassAndObject(input.getUnshadedInput());
+    }
+
+    @Override
+    public void writeObject(final UnshadedOutputAdapter output, final Object object)
+    {
+        unshadedKryo.writeObject(output.getUnshadedOutput(), object);
+    }
+
+    @Override
+    public void writeClassAndObject(final UnshadedOutputAdapter output, final Object object)
+    {
+        unshadedKryo.writeClassAndObject(output.getUnshadedOutput(), object);
+    }
+
+    @Override
+    public <T> T readObjectOrNull(final UnshadedInputAdapter input, final Class<T> type)
+    {
+        return unshadedKryo.readObjectOrNull(input.getUnshadedInput(), type);
+    }
+
+    @Override
+    public void writeObjectOrNull(final UnshadedOutputAdapter output, final Object object, final Class type)
+    {
+        unshadedKryo.writeObjectOrNull(output.getUnshadedOutput(), object, type);
+    }
+}
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedKryoShimService.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedKryoShimService.java
new file mode 100644
index 0000000..41e0001
--- /dev/null
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedKryoShimService.java
@@ -0,0 +1,154 @@
+/*
+ * 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.
+ */
+
+/**
+ * Copyright DataStax, Inc.
+ * <p>
+ * Please see the included license file for details.
+ */
+package org.apache.tinkerpop.gremlin.spark.structure.io.gryo.kryoshim.unshaded;
+
+import com.esotericsoftware.kryo.Kryo;
+import com.esotericsoftware.kryo.io.Input;
+import com.esotericsoftware.kryo.io.Output;
+import org.apache.commons.configuration.BaseConfiguration;
+import org.apache.commons.configuration.Configuration;
+import org.apache.spark.SparkConf;
+import org.apache.tinkerpop.gremlin.spark.structure.io.gryo.IoRegistryAwareKryoSerializer;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoPool;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.concurrent.LinkedBlockingQueue;
+
+public class UnshadedKryoShimService implements KryoShimService {
+
+    private static final Logger log = LoggerFactory.getLogger(UnshadedKryoShimService.class);
+
+    private static final LinkedBlockingQueue<Kryo> KRYOS = new LinkedBlockingQueue<>();
+
+    private static volatile boolean initialized;
+
+    public UnshadedKryoShimService() { }
+
+    @Override
+    public Object readClassAndObject(final InputStream source) {
+
+        final LinkedBlockingQueue<Kryo> kryos = initialize();
+
+        Kryo k = null;
+        try {
+            k = kryos.take();
+
+            return k.readClassAndObject(new Input(source));
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        } finally {
+            try {
+                kryos.put(k);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+    @Override
+    public void writeClassAndObject(final Object o, OutputStream sink) {
+
+        final LinkedBlockingQueue<Kryo> kryos = initialize();
+
+        Kryo k = null;
+        try {
+            k = kryos.take();
+
+            final Output kryoOutput = new Output(sink);
+
+            k.writeClassAndObject(kryoOutput, o);
+
+            kryoOutput.flush();
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        } finally {
+            try {
+                kryos.put(k);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+    @Override
+    public int getPriority() {
+        return -50;
+    }
+
+    @Override
+    public void applyConfiguration(final Configuration conf) {
+        initialize(conf);
+    }
+
+    private LinkedBlockingQueue<Kryo> initialize() {
+        return initialize(new BaseConfiguration());
+    }
+
+    private LinkedBlockingQueue<Kryo> initialize(final Configuration conf) {
+        // DCL is safe in this case due to volatility
+        if (!initialized) {
+            synchronized (UnshadedKryoShimService.class) {
+                if (!initialized) {
+                    final SparkConf sparkConf = new SparkConf();
+
+                    // Copy the user's IoRegistry from the param conf to the SparkConf we just created
+                    final String regStr = conf.getString(GryoPool.CONFIG_IO_REGISTRY);
+                    if (null != regStr) { // SparkConf rejects null values with NPE, so this has to be checked before set(...)
+                        sparkConf.set(GryoPool.CONFIG_IO_REGISTRY, regStr);
+                    }
+                    // Setting spark.serializer here almost certainly isn't necessary, but it doesn't hurt
+                    sparkConf.set("spark.serializer", IoRegistryAwareKryoSerializer.class.getCanonicalName());
+
+                    final String registrator = conf.getString("spark.kryo.registrator");
+                    if (null != registrator) {
+                        sparkConf.set("spark.kryo.registrator", registrator);
+                        log.info("Copied spark.kryo.registrator: {}", registrator);
+                    } else {
+                        log.info("Not copying spark.kryo.registrator");
+                    }
+
+                    // Reuse Gryo poolsize for Kryo poolsize (no need to copy this to SparkConf)
+                    final int poolSize = conf.getInt(GryoPool.CONFIG_IO_GRYO_POOL_SIZE,
+                            GryoPool.CONFIG_IO_GRYO_POOL_SIZE_DEFAULT);
+                    // Instantiate the spark.serializer
+                    final IoRegistryAwareKryoSerializer ioReg = new IoRegistryAwareKryoSerializer(sparkConf);
+                    // Setup a pool backed by our spark.serializer instance
+
+                    for (int i = 0; i < poolSize; i++) {
+                        KRYOS.add(ioReg.newKryo());
+                    }
+
+                    initialized = true;
+                }
+            }
+        }
+
+        return KRYOS;
+    }
+}
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedOutputAdapter.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedOutputAdapter.java
new file mode 100644
index 0000000..8dd8eb3
--- /dev/null
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedOutputAdapter.java
@@ -0,0 +1,83 @@
+/*
+ * 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.
+ */
+
+/**
+ * Copyright DataStax, Inc.
+ *
+ * Please see the included license file for details.
+ */
+package org.apache.tinkerpop.gremlin.spark.structure.io.gryo.kryoshim.unshaded;
+
+import com.esotericsoftware.kryo.io.Output;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.OutputShim;
+
+public class UnshadedOutputAdapter implements OutputShim
+{
+    private final Output unshadedOutput;
+
+    public UnshadedOutputAdapter(final Output unshadedOutput)
+    {
+        this.unshadedOutput = unshadedOutput;
+    }
+
+    Output getUnshadedOutput()
+    {
+        return unshadedOutput;
+    }
+
+    @Override
+    public void writeByte(final byte b)
+    {
+        unshadedOutput.writeByte(b);
+    }
+
+    @Override
+    public void writeBytes(final byte[] array, final int offset, final int count) {
+        unshadedOutput.writeBytes(array, offset, count);
+    }
+
+    @Override
+    public void writeString(final String s)
+    {
+        unshadedOutput.writeString(s);
+    }
+
+    @Override
+    public void writeLong(final long l)
+    {
+        unshadedOutput.writeLong(l);
+    }
+
+    @Override
+    public void writeInt(final int i) {
+        unshadedOutput.writeInt(i);
+    }
+
+    @Override
+    public void writeDouble(final double d)
+    {
+        unshadedOutput.writeDouble(d);
+    }
+
+    @Override
+    public void flush()
+    {
+        unshadedOutput.flush();
+    }
+}
diff --git a/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedSerializerAdapter.java b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedSerializerAdapter.java
new file mode 100644
index 0000000..a5f8b05
--- /dev/null
+++ b/spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/kryoshim/unshaded/UnshadedSerializerAdapter.java
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ */
+
+/**
+ * Copyright DataStax, Inc.
+ *
+ * Please see the included license file for details.
+ */
+package org.apache.tinkerpop.gremlin.spark.structure.io.gryo.kryoshim.unshaded;
+
+import com.esotericsoftware.kryo.Kryo;
+import com.esotericsoftware.kryo.Serializer;
+import com.esotericsoftware.kryo.io.Input;
+import com.esotericsoftware.kryo.io.Output;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.SerializerShim;
+
+public class UnshadedSerializerAdapter<T> extends Serializer<T>
+{
+
+    SerializerShim<T> serializer;
+
+    public UnshadedSerializerAdapter(final SerializerShim<T> serializer) {
+        this.serializer = serializer;
+        setImmutable(this.serializer.isImmutable());
+    }
+
+    @Override
+    public void write(final Kryo kryo, final Output output, final T t) {
+        UnshadedKryoAdapter shadedKryoAdapter = new UnshadedKryoAdapter(kryo);
+        UnshadedOutputAdapter shadedOutputAdapter = new UnshadedOutputAdapter(output);
+        serializer.write(shadedKryoAdapter, shadedOutputAdapter, t);
+    }
+
+    @Override
+    public T read(final Kryo kryo, final Input input, final Class<T> aClass)
+    {
+        UnshadedKryoAdapter shadedKryoAdapter = new UnshadedKryoAdapter(kryo);
+        UnshadedInputAdapter shadedInputAdapter = new UnshadedInputAdapter(input);
+        return serializer.read(shadedKryoAdapter, shadedInputAdapter, aClass);
+    }
+}
diff --git a/spark-gremlin/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimService b/spark-gremlin/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimService
new file mode 100644
index 0000000..68712a6
--- /dev/null
+++ b/spark-gremlin/src/main/resources/META-INF/services/org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimService
@@ -0,0 +1 @@
+org.apache.tinkerpop.gremlin.spark.structure.io.gryo.kryoshim.unshaded.UnshadedKryoShimService # Supports Spark
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/AbstractSparkTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/AbstractSparkTest.java
index 985b832..6d2231f 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/AbstractSparkTest.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/AbstractSparkTest.java
@@ -57,7 +57,7 @@
         final BaseConfiguration configuration = new BaseConfiguration();
         configuration.setDelimiterParsingDisabled(true);
         configuration.setProperty("spark.master", "local[4]");
-        configuration.setProperty("spark.serializer", GryoSerializer.class.getCanonicalName());
+        configuration.setProperty(Constants.SPARK_SERIALIZER, GryoSerializer.class.getCanonicalName());
         configuration.setProperty("spark.kryo.registrationRequired", true);
         configuration.setProperty(Graph.GRAPH, HadoopGraph.class.getName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, false);
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/CombineIteratorTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/CombineIteratorTest.java
index e5458b0..118a0cb 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/CombineIteratorTest.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/CombineIteratorTest.java
@@ -22,6 +22,7 @@
 import org.apache.tinkerpop.gremlin.process.computer.KeyValue;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
 import org.apache.tinkerpop.gremlin.process.computer.util.StaticMapReduce;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.junit.Test;
 import scala.Tuple2;
@@ -148,12 +149,19 @@
             emitter.emit(key, counter);
         }
 
+
+
         @Override
         public boolean doStage(final Stage stage) {
             return true;
         }
 
         @Override
+        public void map(final Vertex vertex, final MapEmitter<String, Long> emitter) {
+
+        }
+
+        @Override
         public String getMemoryKey() {
             return "test";
         }
@@ -181,6 +189,11 @@
         }
 
         @Override
+        public void map(final Vertex vertex, final MapEmitter<NullObject, Long> emitter) {
+
+        }
+
+        @Override
         public String getMemoryKey() {
             return "test";
         }
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/LocalPropertyTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/LocalPropertyTest.java
index 65d6ce4..91b3e86 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/LocalPropertyTest.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/LocalPropertyTest.java
@@ -30,10 +30,9 @@
 import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat;
 import org.apache.tinkerpop.gremlin.hadoop.structure.util.ConfUtil;
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.ComputerTraversalEngine;
 import org.apache.tinkerpop.gremlin.spark.AbstractSparkTest;
 import org.apache.tinkerpop.gremlin.spark.structure.Spark;
 import org.apache.tinkerpop.gremlin.spark.structure.io.PersistedInputRDD;
@@ -58,8 +57,8 @@
         configuration.setProperty("spark.serializer", GryoSerializer.class.getCanonicalName());
         configuration.setProperty(Graph.GRAPH, HadoopGraph.class.getName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, SparkHadoopGraphProvider.PATHS.get("tinkerpop-modern.kryo"));
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, GryoInputFormat.class.getCanonicalName());
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, PersistedOutputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, GryoInputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, rddName);
         configuration.setProperty(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, false);
         configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);
@@ -69,7 +68,7 @@
                 .result(GraphComputer.ResultGraph.NEW)
                 .persist(GraphComputer.Persist.EDGES)
                 .program(TraversalVertexProgram.build()
-                        .traversal(GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(SparkGraphComputer.class)),
+                        .traversal(graph.traversal().withComputer(Computer.compute(SparkGraphComputer.class)),
                                 "gremlin-groovy",
                                 "g.V()").create(graph)).submit().get();
         ////////
@@ -81,9 +80,9 @@
         assertTrue(statusTracker.getJobIdsForGroup("22").length >= 1);
         assertTrue(Spark.hasRDD(Constants.getGraphLocation(rddName)));
         ///////
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, PersistedInputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, PersistedInputRDD.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, rddName);
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, null);
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, null);
         configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, null);
         configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, false);
         configuration.setProperty("spark.jobGroup.id", "44");
@@ -92,7 +91,7 @@
                 .result(GraphComputer.ResultGraph.NEW)
                 .persist(GraphComputer.Persist.NOTHING)
                 .program(TraversalVertexProgram.build()
-                        .traversal(GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(SparkGraphComputer.class)),
+                        .traversal(graph.traversal().withComputer(SparkGraphComputer.class),
                                 "gremlin-groovy",
                                 "g.V()").create(graph)).submit().get();
         ///////
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputerProcessIntegrateTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputerProcessTest.java
similarity index 95%
rename from spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputerProcessIntegrateTest.java
rename to spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputerProcessTest.java
index f38dcf5..055c9bd 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputerProcessIntegrateTest.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGraphComputerProcessTest.java
@@ -28,5 +28,5 @@
  */
 @RunWith(ProcessComputerSuite.class)
 @GraphProviderClass(provider = SparkHadoopGraphProvider.class, graph = HadoopGraph.class)
-public class SparkGraphComputerProcessIntegrateTest {
+public class SparkGraphComputerProcessTest {
 }
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGryoRegistratorGraphComputerProcessIntegrateTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGryoRegistratorGraphComputerProcessIntegrateTest.java
new file mode 100644
index 0000000..29f627d
--- /dev/null
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkGryoRegistratorGraphComputerProcessIntegrateTest.java
@@ -0,0 +1,33 @@
+/*
+ *  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.spark.process.computer;
+
+import org.apache.tinkerpop.gremlin.GraphProviderClass;
+import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
+import org.apache.tinkerpop.gremlin.process.ProcessComputerSuite;
+import org.junit.runner.RunWith;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(ProcessComputerSuite.class)
+@GraphProviderClass(provider = SparkHadoopGraphGryoRegistratorProvider.class, graph = HadoopGraph.class)
+public class SparkGryoRegistratorGraphComputerProcessIntegrateTest {
+}
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphGryoRegistratorProvider.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphGryoRegistratorProvider.java
new file mode 100644
index 0000000..fcebbd0
--- /dev/null
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphGryoRegistratorProvider.java
@@ -0,0 +1,52 @@
+/*
+ *  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.spark.process.computer;
+
+import org.apache.spark.serializer.KryoSerializer;
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.hadoop.Constants;
+import org.apache.tinkerpop.gremlin.spark.structure.Spark;
+import org.apache.tinkerpop.gremlin.spark.structure.io.gryo.GryoRegistrator;
+import org.apache.tinkerpop.gremlin.spark.structure.io.gryo.kryoshim.unshaded.UnshadedKryoShimService;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimServiceLoader;
+
+import java.util.Map;
+
+import static org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimServiceLoader.KRYO_SHIM_SERVICE;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class SparkHadoopGraphGryoRegistratorProvider extends SparkHadoopGraphProvider {
+
+    public Map<String, Object> getBaseConfiguration(final String graphName, final Class<?> test, final String testMethodName, final LoadGraphWith.GraphData loadGraphWith) {
+        Spark.close();
+        final Map<String, Object> config = super.getBaseConfiguration(graphName, test, testMethodName, loadGraphWith);
+        // ensure the context doesn't stay open for the GryoSerializer tests to follow
+        // this is primarily to ensure that the KryoShimService loaded specifically in these tests don't leak to the other tests
+        config.put(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, false);
+        config.put("spark.serializer", KryoSerializer.class.getCanonicalName());
+        config.put("spark.kryo.registrator", GryoRegistrator.class.getCanonicalName());
+        System.setProperty(KRYO_SHIM_SERVICE, UnshadedKryoShimService.class.getCanonicalName());
+        KryoShimServiceLoader.load(true);
+        System.clearProperty(KRYO_SHIM_SERVICE);
+        return config;
+    }
+}
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphProvider.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphProvider.java
index f384063..d4201b5 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphProvider.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphProvider.java
@@ -25,8 +25,16 @@
 import org.apache.tinkerpop.gremlin.hadoop.HadoopGraphProvider;
 import org.apache.tinkerpop.gremlin.hadoop.groovy.plugin.HadoopGremlinPluginCheck;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.FileSystemStorageCheck;
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.engine.ComputerTraversalEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyPageRankTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyPeerPressureTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyProgramTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PageRankTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PeerPressureTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProgramTest;
 import org.apache.tinkerpop.gremlin.spark.structure.Spark;
 import org.apache.tinkerpop.gremlin.spark.structure.io.PersistedOutputRDD;
 import org.apache.tinkerpop.gremlin.spark.structure.io.SparkContextStorageCheck;
@@ -35,28 +43,36 @@
 import org.apache.tinkerpop.gremlin.structure.Graph;
 
 import java.util.Map;
-import java.util.Random;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 @GraphProvider.Descriptor(computer = SparkGraphComputer.class)
-public final class SparkHadoopGraphProvider extends HadoopGraphProvider {
-
-    private static final Random RANDOM = new Random();
+public class SparkHadoopGraphProvider extends HadoopGraphProvider {
 
     @Override
     public Map<String, Object> getBaseConfiguration(final String graphName, final Class<?> test, final String testMethodName, final LoadGraphWith.GraphData loadGraphWith) {
         final Map<String, Object> config = super.getBaseConfiguration(graphName, test, testMethodName, loadGraphWith);
         config.put(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);  // this makes the test suite go really fast
-        if (!test.equals(FileSystemStorageCheck.class) && null != loadGraphWith && RANDOM.nextBoolean()) {
-            config.put(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, ToyGraphInputRDD.class.getCanonicalName());
+
+        // toy graph inputRDD does not have corresponding outputRDD so where jobs chain, it fails (failing makes sense)
+        if (null != loadGraphWith &&
+                !test.equals(ProgramTest.Traversals.class) &&
+                !test.equals(GroovyProgramTest.Traversals.class) &&
+                !test.equals(PageRankTest.Traversals.class) &&
+                !test.equals(GroovyPageRankTest.Traversals.class) &&
+                !test.equals(PeerPressureTest.Traversals.class) &&
+                !test.equals(GroovyPeerPressureTest.Traversals.class) &&
+                !test.equals(FileSystemStorageCheck.class) &&
+                !testMethodName.equals("shouldSupportJobChaining") &&  // GraphComputerTest.shouldSupportJobChaining
+                RANDOM.nextBoolean()) {
+            config.put(RANDOM.nextBoolean() ? Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD : Constants.GREMLIN_HADOOP_GRAPH_READER, ToyGraphInputRDD.class.getCanonicalName());
         }
 
         // tests persisted RDDs
         if (test.equals(SparkContextStorageCheck.class)) {
-            config.put(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, ToyGraphInputRDD.class.getCanonicalName());
-            config.put(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, PersistedOutputRDD.class.getCanonicalName());
+            config.put(RANDOM.nextBoolean() ? Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD : Constants.GREMLIN_HADOOP_GRAPH_READER, ToyGraphInputRDD.class.getCanonicalName());
+            config.put(RANDOM.nextBoolean() ? Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD : Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
         }
 
         // sugar plugin causes meta-method issues with a persisted context
@@ -65,7 +81,7 @@
             SugarTestHelper.clearRegistry(this);
         }
 
-        /// spark configuration
+        config.put(Constants.GREMLIN_HADOOP_DEFAULT_GRAPH_COMPUTER, SparkGraphComputer.class.getCanonicalName());
         config.put("spark.master", "local[4]");
         config.put("spark.serializer", GryoSerializer.class.getCanonicalName());
         config.put("spark.kryo.registrationRequired", true);
@@ -75,7 +91,18 @@
     @Override
     public GraphTraversalSource traversal(final Graph graph) {
         return RANDOM.nextBoolean() ?
-                GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(SparkGraphComputer.class).workers(RANDOM.nextInt(3) + 1)).create(graph) :
-                GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(SparkGraphComputer.class)).create(graph);
+                RANDOM.nextBoolean() ?
+                        graph.traversal(GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(SparkGraphComputer.class).workers(RANDOM.nextInt(3) + 1))) :
+                        graph.traversal().withComputer(Computer.compute(SparkGraphComputer.class).workers(RANDOM.nextInt(3) + 1)) :
+                RANDOM.nextBoolean() ?
+                        graph.traversal(GraphTraversalSource.computer(SparkGraphComputer.class)) :
+                        graph.traversal().withComputer();
+    }
+
+    @Override
+    public GraphComputer getGraphComputer(final Graph graph) {
+        return RANDOM.nextBoolean() ?
+                graph.compute().workers(RANDOM.nextInt(3) + 1) :
+                graph.compute(SparkGraphComputer.class);
     }
 }
\ No newline at end of file
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/groovy/SparkGraphComputerGroovyProcessIntegrateTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/groovy/SparkGraphComputerGroovyProcessTest.java
similarity index 95%
rename from spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/groovy/SparkGraphComputerGroovyProcessIntegrateTest.java
rename to spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/groovy/SparkGraphComputerGroovyProcessTest.java
index 6f259dd..65ebd75 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/groovy/SparkGraphComputerGroovyProcessIntegrateTest.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/groovy/SparkGraphComputerGroovyProcessTest.java
@@ -29,5 +29,5 @@
  */
 @RunWith(GroovyProcessComputerSuite.class)
 @GraphProviderClass(provider = SparkHadoopGraphProvider.class, graph = HadoopGraph.class)
-public class SparkGraphComputerGroovyProcessIntegrateTest {
+public class SparkGraphComputerGroovyProcessTest {
 }
\ No newline at end of file
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkInterceptorStrategyTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkInterceptorStrategyTest.java
new file mode 100644
index 0000000..24e3663
--- /dev/null
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkInterceptorStrategyTest.java
@@ -0,0 +1,175 @@
+/*
+ * 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.spark.process.computer.traversal.strategy.optimization;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.TestHelper;
+import org.apache.tinkerpop.gremlin.hadoop.Constants;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.VertexProgramInterceptor;
+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.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.spark.AbstractSparkTest;
+import org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer;
+import org.apache.tinkerpop.gremlin.spark.process.computer.SparkHadoopGraphProvider;
+import org.apache.tinkerpop.gremlin.spark.process.computer.traversal.strategy.optimization.interceptor.SparkStarBarrierInterceptor;
+import org.apache.tinkerpop.gremlin.spark.structure.io.PersistedOutputRDD;
+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.structure.util.GraphFactory;
+import org.junit.Test;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class SparkInterceptorStrategyTest extends AbstractSparkTest {
+
+    @Test
+    public void shouldHandleSideEffectsCorrectly() throws Exception {
+        final Configuration configuration = getBaseConfiguration();
+        configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, SparkHadoopGraphProvider.PATHS.get("tinkerpop-modern.kryo"));
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, GryoInputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, TestHelper.makeTestDataDirectory(SparkSingleIterationStrategyTest.class, UUID.randomUUID().toString()));
+        configuration.setProperty(Constants.GREMLIN_HADOOP_DEFAULT_GRAPH_COMPUTER, SparkGraphComputer.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);
+        ///
+        Graph graph = GraphFactory.open(configuration);
+        GraphTraversalSource g = graph.traversal().withComputer().withoutStrategies(SparkSingleIterationStrategy.class);
+        assertFalse(g.getStrategies().toList().contains(SparkSingleIterationStrategy.instance()));
+        assertFalse(g.V().count().explain().toString().contains(SparkSingleIterationStrategy.class.getSimpleName()));
+        assertTrue(g.getStrategies().toList().contains(SparkInterceptorStrategy.instance()));
+        assertTrue(g.V().count().explain().toString().contains(SparkInterceptorStrategy.class.getSimpleName()));
+        /// groupCount(m)-test
+        Traversal.Admin<Vertex, Long> traversal = g.V().groupCount("m").by(T.label).count().asAdmin();
+        test(SparkStarBarrierInterceptor.class, 6l, traversal);
+        assertEquals(1, traversal.getSideEffects().keys().size());
+        assertTrue(traversal.getSideEffects().exists("m"));
+        assertTrue(traversal.getSideEffects().keys().contains("m"));
+        final Map<String, Long> map = traversal.getSideEffects().get("m");
+        assertEquals(2, map.size());
+        assertEquals(2, map.get("software").intValue());
+        assertEquals(4, map.get("person").intValue());
+    }
+
+    @Test
+    public void shouldSuccessfullyEvaluateInterceptedTraversals() throws Exception {
+        final Configuration configuration = getBaseConfiguration();
+        configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, SparkHadoopGraphProvider.PATHS.get("tinkerpop-modern.kryo"));
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, GryoInputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, TestHelper.makeTestDataDirectory(SparkSingleIterationStrategyTest.class, UUID.randomUUID().toString()));
+        configuration.setProperty(Constants.GREMLIN_HADOOP_DEFAULT_GRAPH_COMPUTER, SparkGraphComputer.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);
+        ///
+        Graph graph = GraphFactory.open(configuration);
+        GraphTraversalSource g = graph.traversal().withComputer().withoutStrategies(SparkSingleIterationStrategy.class);
+        assertFalse(g.getStrategies().toList().contains(SparkSingleIterationStrategy.instance()));
+        assertFalse(g.V().count().explain().toString().contains(SparkSingleIterationStrategy.class.getSimpleName()));
+        assertTrue(g.getStrategies().toList().contains(SparkInterceptorStrategy.instance()));
+        assertTrue(g.V().count().explain().toString().contains(SparkInterceptorStrategy.class.getSimpleName()));
+        /// SparkCountInterceptor matches
+        test(SparkStarBarrierInterceptor.class, 6l, g.V().count());
+        test(SparkStarBarrierInterceptor.class, 2l, g.V().hasLabel("software").count());
+        test(SparkStarBarrierInterceptor.class, 2l, g.V().hasLabel("person").has("age", P.gt(30)).count());
+        test(SparkStarBarrierInterceptor.class, 2l, g.V().hasLabel("person").has("age", P.gt(30)).values("name").count());
+        test(SparkStarBarrierInterceptor.class, 2l, g.V().hasLabel("person").has("age", P.gt(30)).properties("name").count());
+        test(SparkStarBarrierInterceptor.class, 4l, g.V().hasLabel("person").has("age", P.gt(30)).properties("name", "age").count());
+        test(SparkStarBarrierInterceptor.class, 3l, g.V().hasLabel("person").has("age", P.gt(30)).out().count());
+        test(SparkStarBarrierInterceptor.class, 0l, g.V().hasLabel("person").has("age", P.gt(30)).out("knows").count());
+        test(SparkStarBarrierInterceptor.class, 3l, g.V().has(T.label, P.not(P.within("robot", "android")).and(P.within("person", "software"))).hasLabel("person").has("age", P.gt(30)).out("created").count());
+        test(SparkStarBarrierInterceptor.class, 3l, g.V(1).out().count());
+        test(SparkStarBarrierInterceptor.class, 2l, g.V(1).out("knows").count());
+        test(SparkStarBarrierInterceptor.class, 3l, g.V(1).out("knows", "created").count());
+        test(SparkStarBarrierInterceptor.class, 5l, g.V(1, 4).out("knows", "created").count());
+        test(SparkStarBarrierInterceptor.class, 1l, g.V(2).in("knows").count());
+        test(SparkStarBarrierInterceptor.class, 0l, g.V(6).has("name", "peter").in().count());
+        test(SparkStarBarrierInterceptor.class, 6l, g.V().as("a").values("name").as("b").count());
+        test(SparkStarBarrierInterceptor.class, 6l, g.V().as("a").count());
+        test(SparkStarBarrierInterceptor.class, 1l, g.V().has("name", "marko").as("a").values("name").as("b").count());
+        test(SparkStarBarrierInterceptor.class, 4l, g.V().has(T.label, P.not(P.within("robot", "android")).and(P.within("person", "software"))).hasLabel("person").has("age").out("created").count());
+        test(SparkStarBarrierInterceptor.class, 123l, g.V().has("age").values("age").sum());
+        test(SparkStarBarrierInterceptor.class, 67l, g.V().has("age").has("age", P.gt(30)).values("age").sum());
+        test(SparkStarBarrierInterceptor.class, 27, g.V().hasLabel("person").values("age").min());
+        test(SparkStarBarrierInterceptor.class, 35, g.V().hasLabel("person").values("age").max());
+        test(SparkStarBarrierInterceptor.class, new HashMap<String, Long>() {{
+            put("software", 2l);
+            put("person", 4l);
+        }}, g.V().<String>groupCount().by(T.label));
+        test(SparkStarBarrierInterceptor.class, Collections.singletonMap("person", 2l), g.V().has("person", "age", P.lt(30)).<String>groupCount().by(T.label));
+        test(SparkStarBarrierInterceptor.class, new HashMap<String, Long>() {{
+            put("software", 2l);
+            put("person", 4l);
+        }}, g.V().<String, Long>group().by(T.label).by(__.count()));
+        test(SparkStarBarrierInterceptor.class, 123l, g.V().hasLabel("person").values("age").fold(0l, Operator.sum));
+        /// No interceptor matches
+        test(2l, g.V().out().out().count());
+        test(6l, g.E().count());
+        test(2l, g.V().out().out().count());
+        test(6l, g.V().out().values("name").count());
+        test(2l, g.V().out("knows").values("name").count());
+        test(3l, g.V().in().has("name", "marko").count());
+        test(6l, g.V().repeat(__.dedup()).times(2).count());
+        test(6l, g.V().dedup().count());
+        test(4l, g.V().hasLabel("person").order().by("age").count());
+        test(1l, g.V().count().count());
+        test(2l, g.V().limit(2).count());
+        test(3l, g.V().tail(3).count());
+    }
+
+    private static <R> void test(Class<? extends VertexProgramInterceptor> expectedInterceptor, R expectedResult, final Traversal<?, R> traversal) throws Exception {
+        final Traversal.Admin<?, ?> clone = traversal.asAdmin().clone();
+        clone.applyStrategies();
+        final Map<String, Object> configuration = TraversalHelper.getFirstStepOfAssignableClass(TraversalVertexProgramStep.class, clone).get().getComputer().getConfiguration();
+        final String interceptor = (String) configuration.getOrDefault(Constants.GREMLIN_HADOOP_VERTEX_PROGRAM_INTERCEPTOR, null);
+        if (null == expectedInterceptor) {
+            assertNull(interceptor);
+            assertFalse((Boolean) configuration.getOrDefault(Constants.GREMLIN_SPARK_SKIP_PARTITIONER, false));
+            assertFalse((Boolean) configuration.getOrDefault(Constants.GREMLIN_SPARK_SKIP_PARTITIONER, false));
+        } else {
+            assertEquals(expectedInterceptor, Class.forName(interceptor));
+            if (interceptor.equals(SparkStarBarrierInterceptor.class.getCanonicalName())) {
+                assertTrue((Boolean) configuration.getOrDefault(Constants.GREMLIN_SPARK_SKIP_PARTITIONER, false));
+                assertTrue((Boolean) configuration.getOrDefault(Constants.GREMLIN_SPARK_SKIP_PARTITIONER, false));
+            }
+        }
+        assertEquals(expectedResult, traversal.next());
+    }
+
+    private static <R> void test(R expectedResult, final Traversal<?, R> traversal) throws Exception {
+        test(null, expectedResult, traversal);
+    }
+}
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkSingleIterationStrategyTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkSingleIterationStrategyTest.java
new file mode 100644
index 0000000..4e43438
--- /dev/null
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkSingleIterationStrategyTest.java
@@ -0,0 +1,104 @@
+/*
+ * 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.spark.process.computer.traversal.strategy.optimization;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.tinkerpop.gremlin.TestHelper;
+import org.apache.tinkerpop.gremlin.hadoop.Constants;
+import org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.spark.AbstractSparkTest;
+import org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer;
+import org.apache.tinkerpop.gremlin.spark.process.computer.SparkHadoopGraphProvider;
+import org.apache.tinkerpop.gremlin.spark.structure.io.PersistedOutputRDD;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.util.GraphFactory;
+import org.junit.Test;
+
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class SparkSingleIterationStrategyTest extends AbstractSparkTest {
+
+    @Test
+    public void shouldSuccessfullyEvaluateSingleIterationTraversals() throws Exception {
+        final String outputLocation = TestHelper.makeTestDataDirectory(SparkSingleIterationStrategyTest.class, UUID.randomUUID().toString());
+        Configuration configuration = getBaseConfiguration();
+        configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, SparkHadoopGraphProvider.PATHS.get("tinkerpop-modern.kryo"));
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, GryoInputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, outputLocation);
+        configuration.setProperty(Constants.GREMLIN_HADOOP_DEFAULT_GRAPH_COMPUTER, SparkGraphComputer.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);
+
+        Graph graph = GraphFactory.open(configuration);
+        GraphTraversalSource g = graph.traversal().withComputer().withoutStrategies(SparkInterceptorStrategy.class);
+        assertFalse(g.getStrategies().toList().contains(SparkInterceptorStrategy.instance()));
+        assertFalse(g.V().count().explain().toString().contains(SparkInterceptorStrategy.class.getSimpleName()));
+        assertTrue(g.getStrategies().toList().contains(SparkSingleIterationStrategy.instance()));
+        assertTrue(g.V().count().explain().toString().contains(SparkSingleIterationStrategy.class.getSimpleName()));
+
+        test(true, g.V().limit(10));
+        test(true, g.V().values("age").groupCount());
+        test(true, g.V().groupCount().by(__.out().count()));
+        test(true, g.V().outE());
+        test(true, 6l, g.V().count());
+        test(true, 6l, g.V().out().count());
+        test(true, 6l, g.V().local(__.inE()).count());
+        test(true, 6l, g.V().outE().inV().count());
+        ////
+        test(false, g.V().outE().inV());
+        test(false, g.V().both());
+        test(false, 12l, g.V().both().count());
+        test(false, g.V().out().id());
+        test(false, 2l, g.V().out().out().count());
+        test(false, 6l, g.V().in().count());
+        test(false, 6l, g.V().inE().count());
+    }
+
+    private static <R> void test(boolean singleIteration, final Traversal<?, R> traversal) {
+        test(singleIteration, null, traversal);
+    }
+
+    private static <R> void test(boolean singleIteration, R expectedResult, final Traversal<?, R> traversal) {
+        traversal.asAdmin().applyStrategies();
+        final Map<String, Object> configuration = TraversalHelper.getFirstStepOfAssignableClass(TraversalVertexProgramStep.class, traversal.asAdmin()).get()
+                .getComputer()
+                .getConfiguration();
+        assertEquals(singleIteration, configuration.getOrDefault(Constants.GREMLIN_SPARK_SKIP_PARTITIONER, false));
+        assertEquals(singleIteration, configuration.getOrDefault(Constants.GREMLIN_SPARK_SKIP_GRAPH_CACHE, false));
+        final List<R> result = traversal.toList();
+        if (null != expectedResult)
+            assertEquals(expectedResult, result.get(0));
+    }
+
+}
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/SparkTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/SparkTest.java
index 6867b80..bc489aa 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/SparkTest.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/SparkTest.java
@@ -61,8 +61,8 @@
         configuration.setProperty("spark.serializer", GryoSerializer.class.getCanonicalName());
         configuration.setProperty(Graph.GRAPH, HadoopGraph.class.getName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, SparkHadoopGraphProvider.PATHS.get("tinkerpop-modern.kryo"));
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, GryoInputFormat.class.getCanonicalName());
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, PersistedOutputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, GryoInputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, false);
         configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);
 
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputOutputRDDTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputOutputRDDTest.java
index c6ced89..e1098de 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputOutputRDDTest.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputOutputRDDTest.java
@@ -20,14 +20,11 @@
 
 import org.apache.commons.configuration.BaseConfiguration;
 import org.apache.commons.configuration.Configuration;
-import org.apache.tinkerpop.gremlin.AbstractGraphProvider;
 import org.apache.tinkerpop.gremlin.TestHelper;
 import org.apache.tinkerpop.gremlin.hadoop.Constants;
 import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.ComputerTraversalEngine;
 import org.apache.tinkerpop.gremlin.spark.AbstractSparkTest;
 import org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer;
 import org.apache.tinkerpop.gremlin.spark.structure.io.gryo.GryoSerializer;
@@ -46,8 +43,8 @@
         configuration.setProperty("spark.master", "local[4]");
         configuration.setProperty("spark.serializer", GryoSerializer.class.getCanonicalName());
         configuration.setProperty(Graph.GRAPH, HadoopGraph.class.getName());
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, ExampleInputRDD.class.getCanonicalName());
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, ExampleOutputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, ExampleInputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, ExampleOutputRDD.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, TestHelper.makeTestDataDirectory(this.getClass(), "shouldReadFromWriteToArbitraryRDD"));
         configuration.setProperty(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, false);
         ////////
@@ -56,7 +53,7 @@
                 .result(GraphComputer.ResultGraph.NEW)
                 .persist(GraphComputer.Persist.EDGES)
                 .program(TraversalVertexProgram.build()
-                        .traversal(GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(SparkGraphComputer.class)),
+                        .traversal(graph.traversal().withComputer(SparkGraphComputer.class),
                                 "gremlin-groovy",
                                 "g.V()").create(graph)).submit().get();
     }
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputRDDTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputRDDTest.java
index fdc36c4..8a8392a 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputRDDTest.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/InputRDDTest.java
@@ -38,7 +38,7 @@
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class InputRDDTest  extends AbstractSparkTest {
+public class InputRDDTest extends AbstractSparkTest {
 
     @Test
     public void shouldReadFromArbitraryRDD() {
@@ -46,14 +46,14 @@
         configuration.setProperty("spark.master", "local[4]");
         configuration.setProperty("spark.serializer", GryoSerializer.class.getCanonicalName());
         configuration.setProperty(Graph.GRAPH, HadoopGraph.class.getName());
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, ExampleInputRDD.class.getCanonicalName());
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT, GryoOutputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, ExampleInputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, GryoOutputFormat.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, TestHelper.makeTestDataDirectory(this.getClass(), "shouldReadFromArbitraryRDD"));
         configuration.setProperty(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, false);
         ////////
         Graph graph = GraphFactory.open(configuration);
-        assertEquals(123l, graph.traversal(GraphTraversalSource.computer(SparkGraphComputer.class)).V().values("age").sum().next());
-        assertEquals(Long.valueOf(4l), graph.traversal(GraphTraversalSource.computer(SparkGraphComputer.class)).V().count().next());
+        assertEquals(123l, graph.traversal().withComputer(SparkGraphComputer.class).V().values("age").sum().next());
+        assertEquals(Long.valueOf(4l), graph.traversal().withComputer(SparkGraphComputer.class).V().count().next());
     }
 
     @Test
@@ -62,9 +62,8 @@
         configuration.setProperty("spark.master", "local[4]");
         configuration.setProperty("spark.serializer", GryoSerializer.class.getCanonicalName());
         configuration.setProperty(Graph.GRAPH, HadoopGraph.class.getName());
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, ExampleInputRDD.class.getCanonicalName());
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, InputRDDFormat.class.getCanonicalName());
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT, GryoOutputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, ExampleInputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, GryoOutputFormat.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, TestHelper.makeTestDataDirectory(this.getClass(), "shouldSupportHadoopGraphOLTP"));
         configuration.setProperty(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, false);
         ////////
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/OutputRDDTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/OutputRDDTest.java
index 7ea6315..3b76e11 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/OutputRDDTest.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/OutputRDDTest.java
@@ -24,10 +24,9 @@
 import org.apache.tinkerpop.gremlin.hadoop.Constants;
 import org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat;
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.ComputerTraversalEngine;
 import org.apache.tinkerpop.gremlin.spark.AbstractSparkTest;
 import org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer;
 import org.apache.tinkerpop.gremlin.spark.process.computer.SparkHadoopGraphProvider;
@@ -48,8 +47,8 @@
         configuration.setProperty("spark.serializer", GryoSerializer.class.getCanonicalName());
         configuration.setProperty(Graph.GRAPH, HadoopGraph.class.getName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, SparkHadoopGraphProvider.PATHS.get("tinkerpop-modern.kryo"));
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, GryoInputFormat.class.getCanonicalName());
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, ExampleOutputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, GryoInputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, ExampleOutputRDD.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, TestHelper.makeTestDataDirectory(this.getClass(), "shouldWriteToArbitraryRDD"));
         configuration.setProperty(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, false);
         ////////
@@ -58,7 +57,7 @@
                 .result(GraphComputer.ResultGraph.NEW)
                 .persist(GraphComputer.Persist.EDGES)
                 .program(TraversalVertexProgram.build()
-                        .traversal(GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(SparkGraphComputer.class)),
+                        .traversal(graph.traversal().withComputer(Computer.compute(SparkGraphComputer.class)),
                                 "gremlin-groovy",
                                 "g.V()").create(graph)).submit().get();
     }
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/PersistedInputOutputRDDTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/PersistedInputOutputRDDTest.java
index 8dd677f..7a089b6 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/PersistedInputOutputRDDTest.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/PersistedInputOutputRDDTest.java
@@ -26,13 +26,13 @@
 import org.apache.tinkerpop.gremlin.hadoop.Constants;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat;
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.bulkloading.BulkLoaderVertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankMapReduce;
 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.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.ComputerTraversalEngine;
 import org.apache.tinkerpop.gremlin.spark.AbstractSparkTest;
 import org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer;
 import org.apache.tinkerpop.gremlin.spark.process.computer.SparkHadoopGraphProvider;
@@ -61,33 +61,36 @@
         final String rddName = TestHelper.makeTestDataDirectory(PersistedInputOutputRDDTest.class, UUID.randomUUID().toString());
         final Configuration configuration = super.getBaseConfiguration();
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, SparkHadoopGraphProvider.PATHS.get("tinkerpop-modern.kryo"));
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, GryoInputFormat.class.getCanonicalName());
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT, GryoOutputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, GryoInputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, GryoOutputFormat.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, rddName);
         configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);
         Graph graph = GraphFactory.open(configuration);
-        assertEquals(6, graph.traversal(GraphTraversalSource.computer(SparkGraphComputer.class)).V().out().count().next().longValue());
-        ////////
+        ///
+        assertEquals(6, graph.traversal().withComputer(Computer.compute(SparkGraphComputer.class)).V().out().count().next().longValue());
+        assertFalse(Spark.hasRDD(Constants.getGraphLocation(rddName)));
+        assertEquals(0, Spark.getContext().getPersistentRDDs().size());
+        //
+        assertEquals(2, graph.traversal().withComputer(Computer.compute(SparkGraphComputer.class)).V().out().out().count().next().longValue());
         assertFalse(Spark.hasRDD(Constants.getGraphLocation(rddName)));
         assertEquals(0, Spark.getContext().getPersistentRDDs().size());
         ///////
         Spark.close();
     }
 
-
     @Test
     public void shouldPersistRDDBasedOnStorageLevel() throws Exception {
         Spark.create("local[4]");
         int counter = 0;
         for (final String storageLevel : Arrays.asList("MEMORY_ONLY", "DISK_ONLY", "MEMORY_ONLY_SER", "MEMORY_AND_DISK_SER")) {
-            assertEquals(counter * 3, Spark.getRDDs().size());
-            assertEquals(counter * 3, Spark.getContext().getPersistentRDDs().size());
+            assertEquals(counter, Spark.getRDDs().size());
+            assertEquals(counter, Spark.getContext().getPersistentRDDs().size());
             counter++;
             final String rddName = TestHelper.makeTestDataDirectory(PersistedInputOutputRDDTest.class, UUID.randomUUID().toString());
             final Configuration configuration = super.getBaseConfiguration();
             configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, SparkHadoopGraphProvider.PATHS.get("tinkerpop-modern.kryo"));
-            configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, GryoInputFormat.class.getCanonicalName());
-            configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, PersistedOutputRDD.class.getCanonicalName());
+            configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, GryoInputFormat.class.getCanonicalName());
+            configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
             configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_STORAGE_LEVEL, storageLevel);
             configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, rddName);
             configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);
@@ -96,19 +99,14 @@
                     .result(GraphComputer.ResultGraph.NEW)
                     .persist(GraphComputer.Persist.EDGES)
                     .program(TraversalVertexProgram.build()
-                            .traversal(GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(SparkGraphComputer.class)),
+                            .traversal(graph.traversal().withComputer(SparkGraphComputer.class),
                                     "gremlin-groovy",
                                     "g.V().groupCount('m').by('name').out()").create(graph)).submit().get();
             ////////
             assertTrue(Spark.hasRDD(Constants.getGraphLocation(rddName)));
-            assertTrue(Spark.hasRDD(Constants.getMemoryLocation(rddName, "m")));
-            assertTrue(Spark.hasRDD(Constants.getMemoryLocation(rddName, Graph.Hidden.hide("traversers"))));
             assertEquals(StorageLevel.fromString(storageLevel), Spark.getRDD(Constants.getGraphLocation(rddName)).getStorageLevel());
-            assertEquals(StorageLevel.fromString(storageLevel), Spark.getRDD(Constants.getMemoryLocation(rddName, "m")).getStorageLevel());
-            assertEquals(StorageLevel.fromString(storageLevel), Spark.getRDD(Constants.getMemoryLocation(rddName, Graph.Hidden.hide("traversers"))).getStorageLevel());
-            assertEquals(counter * 3, Spark.getRDDs().size());
-            assertEquals(counter * 3, Spark.getContext().getPersistentRDDs().size());
-            //System.out.println(SparkContextStorage.open().ls());
+            assertEquals(counter, Spark.getRDDs().size());
+            assertEquals(counter, Spark.getContext().getPersistentRDDs().size());
         }
         Spark.close();
     }
@@ -119,8 +117,8 @@
         final String rddName = TestHelper.makeTestDataDirectory(PersistedInputOutputRDDTest.class, UUID.randomUUID().toString());
         final Configuration configuration = super.getBaseConfiguration();
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, SparkHadoopGraphProvider.PATHS.get("tinkerpop-modern.kryo"));
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, GryoInputFormat.class.getCanonicalName());
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, PersistedOutputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, GryoInputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, rddName);
         configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, false);  // because the spark context is NOT persisted, neither is the RDD
         Graph graph = GraphFactory.open(configuration);
@@ -128,7 +126,7 @@
                 .result(GraphComputer.ResultGraph.NEW)
                 .persist(GraphComputer.Persist.EDGES)
                 .program(TraversalVertexProgram.build()
-                        .traversal(GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(SparkGraphComputer.class)),
+                        .traversal(graph.traversal().withComputer(SparkGraphComputer.class),
                                 "gremlin-groovy",
                                 "g.V()").create(graph)).submit().get();
         ////////
@@ -140,13 +138,13 @@
 
     @Test
     public void shouldPersistRDDAcrossJobs() throws Exception {
-
+        Spark.create("local[4]");
         final String rddName = TestHelper.makeTestDataDirectory(PersistedInputOutputRDDTest.class, UUID.randomUUID().toString());
         final String rddName2 = TestHelper.makeTestDataDirectory(PersistedInputOutputRDDTest.class, UUID.randomUUID().toString());
         final Configuration configuration = super.getBaseConfiguration();
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, SparkHadoopGraphProvider.PATHS.get("tinkerpop-modern.kryo"));
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, GryoInputFormat.class.getCanonicalName());
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, PersistedOutputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, GryoInputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, rddName);
         configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);
         Graph graph = GraphFactory.open(configuration);
@@ -154,22 +152,58 @@
                 .result(GraphComputer.ResultGraph.NEW)
                 .persist(GraphComputer.Persist.EDGES)
                 .program(TraversalVertexProgram.build()
-                        .traversal(GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(SparkGraphComputer.class)),
+                        .traversal(graph.traversal().withComputer(SparkGraphComputer.class),
                                 "gremlin-groovy",
                                 "g.V().count()").create(graph)).submit().get();
         assertTrue(Spark.hasRDD(Constants.getGraphLocation(rddName)));
-        assertTrue(Spark.hasRDD(Constants.getMemoryLocation(rddName, Graph.Hidden.hide("reducing"))));
-        assertEquals(2, Spark.getContext().getPersistentRDDs().size());
+        assertEquals(1, Spark.getContext().getPersistentRDDs().size());
         ///////
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, PersistedInputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, PersistedInputRDD.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, rddName);
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, PersistedOutputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, rddName2);
         graph = GraphFactory.open(configuration);
-        assertEquals(6, graph.traversal(GraphTraversalSource.computer(SparkGraphComputer.class)).V().out().count().next().longValue());
+        assertEquals(6, graph.traversal().withComputer(SparkGraphComputer.class).V().out().count().next().longValue());
         assertTrue(Spark.hasRDD(Constants.getGraphLocation(rddName)));
-        assertTrue(Spark.hasRDD(Constants.getMemoryLocation(rddName, Graph.Hidden.hide("reducing"))));
+        assertEquals(1, Spark.getContext().getPersistentRDDs().size());
+        ///////
+        graph = GraphFactory.open(configuration);
+        graph.compute(SparkGraphComputer.class)
+                .result(GraphComputer.ResultGraph.NEW)
+                .persist(GraphComputer.Persist.EDGES)
+                .program(TraversalVertexProgram.build()
+                        .traversal(graph.traversal().withComputer(SparkGraphComputer.class),
+                                "gremlin-groovy",
+                                "g.V().count()").create(graph)).submit().get();
+        assertTrue(Spark.hasRDD(Constants.getGraphLocation(rddName)));
+        assertTrue(Spark.hasRDD(Constants.getGraphLocation(rddName2)));
         assertEquals(2, Spark.getContext().getPersistentRDDs().size());
+        ///////
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, PersistedInputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, rddName);
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, rddName2);
+        graph = GraphFactory.open(configuration);
+        assertEquals(6, graph.traversal().withComputer(SparkGraphComputer.class).V().out().count().next().longValue());
+        assertTrue(Spark.hasRDD(Constants.getGraphLocation(rddName)));
+        assertEquals(1, Spark.getContext().getPersistentRDDs().size());
+        ///////
+        graph = GraphFactory.open(configuration);
+        graph.compute(SparkGraphComputer.class)
+                .result(GraphComputer.ResultGraph.NEW)
+                .persist(GraphComputer.Persist.EDGES)
+                .program(TraversalVertexProgram.build()
+                        .traversal(graph.traversal().withComputer(SparkGraphComputer.class),
+                                "gremlin-groovy",
+                                "g.V().count()").create(graph)).submit().get();
+        assertTrue(Spark.hasRDD(Constants.getGraphLocation(rddName)));
+        assertTrue(Spark.hasRDD(Constants.getGraphLocation(rddName2)));
+        assertEquals(2, Spark.getContext().getPersistentRDDs().size());
+        ///////
+        graph = GraphFactory.open(configuration);
+        assertEquals(6, graph.traversal().withComputer(SparkGraphComputer.class).V().out().count().next().longValue());
+        assertTrue(Spark.hasRDD(Constants.getGraphLocation(rddName)));
+        assertEquals(1, Spark.getContext().getPersistentRDDs().size());
         Spark.close();
     }
 
@@ -178,9 +212,9 @@
         Spark.create("local[4]");
         final String rddName = TestHelper.makeTestDataDirectory(PersistedInputOutputRDDTest.class, UUID.randomUUID().toString());
         final Configuration readConfiguration = super.getBaseConfiguration();
-        readConfiguration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, GryoInputFormat.class.getCanonicalName());
+        readConfiguration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, GryoInputFormat.class.getCanonicalName());
         readConfiguration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, SparkHadoopGraphProvider.PATHS.get("tinkerpop-modern.kryo"));
-        readConfiguration.setProperty(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, PersistedOutputRDD.class.getCanonicalName());
+        readConfiguration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
         readConfiguration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, rddName);
         readConfiguration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);
         Graph pageRankGraph = GraphFactory.open(readConfiguration);
@@ -193,9 +227,9 @@
         bulkLoaderGraph.compute(SparkGraphComputer.class)
                 .persist(GraphComputer.Persist.NOTHING)
                 .workers(1)
-                .configure(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, PersistedInputRDD.class.getCanonicalName())
+                .configure(Constants.GREMLIN_HADOOP_GRAPH_READER, PersistedInputRDD.class.getCanonicalName())
                 .configure(Constants.GREMLIN_HADOOP_INPUT_LOCATION, rddName)
-                .configure(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, null)
+                .configure(Constants.GREMLIN_HADOOP_GRAPH_WRITER, null)
                 .configure(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, null)
                 .program(BulkLoaderVertexProgram.build().userSuppliedIds(true).writeGraph(writeConfiguration).create(bulkLoaderGraph))
                 .submit().get();
@@ -210,7 +244,6 @@
         assertEquals(0l, g.E().count().next().longValue());
         assertEquals("marko", g.V().has("name", "marko").values("name").next());
         assertEquals(6l, g.V().values(PageRankVertexProgram.PAGE_RANK).count().next().longValue());
-        assertEquals(6l, g.V().values(PageRankVertexProgram.EDGE_COUNT).count().next().longValue());
         ////
         Spark.close();
     }
@@ -221,9 +254,9 @@
 
         final String rddName = TestHelper.makeTestDataDirectory(PersistedInputOutputRDDTest.class, UUID.randomUUID().toString());
         final Configuration readConfiguration = super.getBaseConfiguration();
-        readConfiguration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, GryoInputFormat.class.getCanonicalName());
+        readConfiguration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, GryoInputFormat.class.getCanonicalName());
         readConfiguration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, SparkHadoopGraphProvider.PATHS.get("tinkerpop-modern.kryo"));
-        readConfiguration.setProperty(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, PersistedOutputRDD.class.getCanonicalName());
+        readConfiguration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
         readConfiguration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, rddName);
         readConfiguration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);
         Graph pageRankGraph = GraphFactory.open(readConfiguration);
@@ -250,7 +283,6 @@
         assertEquals(6l, g.E().count().next().longValue());
         assertEquals("marko", g.V().has("name", "marko").values("name").next());
         assertEquals(6l, g.V().values(PageRankVertexProgram.PAGE_RANK).count().next().longValue());
-        assertEquals(6l, g.V().values(PageRankVertexProgram.EDGE_COUNT).count().next().longValue());
         ////
         Spark.close();
     }
@@ -262,9 +294,9 @@
         final String rddName = TestHelper.makeTestDataDirectory(PersistedInputOutputRDDTest.class, "testComplexChain", "graphRDD");
         final String rddName2 = TestHelper.makeTestDataDirectory(PersistedInputOutputRDDTest.class, "testComplexChain", "graphRDD2");
         final Configuration configuration = super.getBaseConfiguration();
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, GryoInputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, GryoInputFormat.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, SparkHadoopGraphProvider.PATHS.get("tinkerpop-modern.kryo"));
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, PersistedOutputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, rddName);
         configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);
 
@@ -276,14 +308,13 @@
         assertEquals(6l, g.V().count().next().longValue());
         assertEquals(6l, g.E().count().next().longValue());
         assertEquals(6l, g.V().values(PageRankVertexProgram.PAGE_RANK).count().next().longValue());
-        assertEquals(6l, g.V().values(PageRankVertexProgram.EDGE_COUNT).count().next().longValue());
         ////
         assertTrue(Spark.hasRDD(Constants.getGraphLocation(rddName)));
         assertEquals(1, Spark.getContext().getPersistentRDDs().size());
         ////
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, PersistedInputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, PersistedInputRDD.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, rddName);
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, PersistedOutputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, rddName2);
         ////
         graph = GraphFactory.open(configuration);
@@ -292,7 +323,6 @@
         assertEquals(6l, g.V().count().next().longValue());
         assertEquals(6l, g.E().count().next().longValue());
         assertEquals(6l, g.V().values(PageRankVertexProgram.PAGE_RANK).count().next().longValue());
-        assertEquals(6l, g.V().values(PageRankVertexProgram.EDGE_COUNT).count().next().longValue());
         ////
         assertTrue(Spark.hasRDD(Constants.getGraphLocation(rddName)));
         assertTrue(Spark.hasRDD(Constants.getGraphLocation(rddName2)));
@@ -305,7 +335,6 @@
         assertEquals(6l, g.V().count().next().longValue());
         assertEquals(0l, g.E().count().next().longValue());
         assertEquals(6l, g.V().values(PageRankVertexProgram.PAGE_RANK).count().next().longValue());
-        assertEquals(6l, g.V().values(PageRankVertexProgram.EDGE_COUNT).count().next().longValue());
         ////
         assertTrue(Spark.hasRDD(Constants.getGraphLocation(rddName)));
         assertTrue(Spark.hasRDD(Constants.getGraphLocation(rddName2)));
@@ -313,13 +342,12 @@
         assertEquals(2, Spark.getContext().getPersistentRDDs().size());
         ////
         graph = GraphFactory.open(configuration);
-        graph.compute(SparkGraphComputer.class).persist(GraphComputer.Persist.NOTHING).program(PageRankVertexProgram.build().iterations(2).create(graph)).submit().get().graph();
+        graph = graph.compute(SparkGraphComputer.class).persist(GraphComputer.Persist.NOTHING).program(PageRankVertexProgram.build().iterations(2).create(graph)).submit().get().graph();
         assertFalse(Spark.hasRDD(Constants.getGraphLocation(rddName2)));
         g = graph.traversal();
         assertEquals(0l, g.V().count().next().longValue());
         assertEquals(0l, g.E().count().next().longValue());
         assertEquals(0l, g.V().values(PageRankVertexProgram.PAGE_RANK).count().next().longValue());
-        assertEquals(0l, g.V().values(PageRankVertexProgram.EDGE_COUNT).count().next().longValue());
         ////
         assertTrue(Spark.hasRDD(Constants.getGraphLocation(rddName)));
         assertFalse(Spark.hasRDD(Constants.getGraphLocation(rddName2)));
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/SparkContextStorageCheck.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/SparkContextStorageCheck.java
index 06deb7c..f9e5172 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/SparkContextStorageCheck.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/SparkContextStorageCheck.java
@@ -26,6 +26,7 @@
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.AbstractStorageCheck;
 import org.apache.tinkerpop.gremlin.spark.structure.Spark;
 import org.apache.tinkerpop.gremlin.structure.io.Storage;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -41,6 +42,13 @@
         Spark.close();
     }
 
+    @After
+    public void tearDown() throws Exception {
+        super.tearDown();
+        Spark.create("local[4]");
+        Spark.close();
+    }
+
     @Test
     @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
     public void shouldSupportHeadMethods() throws Exception {
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/ToyGraphInputRDD.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/ToyGraphInputRDD.java
index ea3636f..4cd8cea 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/ToyGraphInputRDD.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/ToyGraphInputRDD.java
@@ -30,6 +30,7 @@
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoResourceAccess;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.KryoShimServiceLoader;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
@@ -46,7 +47,7 @@
 
     @Override
     public JavaPairRDD<Object, VertexWritable> readGraphRDD(final Configuration configuration, final JavaSparkContext sparkContext) {
-        HadoopPools.initialize(TinkerGraph.open().configuration());
+        KryoShimServiceLoader.applyConfiguration(TinkerGraph.open().configuration());
         final List<VertexWritable> vertices;
         if (configuration.getString(Constants.GREMLIN_HADOOP_INPUT_LOCATION).contains("modern"))
             vertices = IteratorUtils.list(IteratorUtils.map(TinkerFactory.createModern().vertices(), VertexWritable::new));
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoSerializerIntegrateTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoSerializerIntegrateTest.java
index c493be4..aa154d8 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoSerializerIntegrateTest.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/structure/io/gryo/GryoSerializerIntegrateTest.java
@@ -25,20 +25,25 @@
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat;
 import org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat;
 import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.spark.AbstractSparkTest;
 import org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer;
 import org.apache.tinkerpop.gremlin.spark.structure.io.PersistedInputRDD;
 import org.apache.tinkerpop.gremlin.spark.structure.io.PersistedOutputRDD;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.io.IoCore;
 import org.apache.tinkerpop.gremlin.structure.util.GraphFactory;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
 import org.junit.Test;
 
+import java.util.Collection;
+import java.util.Map;
 import java.util.UUID;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -58,18 +63,26 @@
 
         final String outputLocation = TestHelper.makeTestDataDirectory(GryoSerializerIntegrateTest.class, UUID.randomUUID().toString());
         Configuration configuration = getBaseConfiguration();
+        configuration.clearProperty(Constants.SPARK_SERIALIZER); // ensure proper default to GryoSerializer
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, inputLocation);
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, GryoInputFormat.class.getCanonicalName());
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT, GryoOutputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, GryoInputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, GryoOutputFormat.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, outputLocation);
         configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, false);
         Graph graph = GraphFactory.open(configuration);
-        assertEquals(totalVertices, graph.traversal(GraphTraversalSource.computer(SparkGraphComputer.class)).V().count().next().longValue());
+        final GraphTraversal.Admin<Vertex, Map<Vertex, Collection<Vertex>>> traversal = graph.traversal().withComputer(SparkGraphComputer.class).V().group("m").<Map<Vertex, Collection<Vertex>>>cap("m").asAdmin();
+        assertTrue(traversal.hasNext());
+        assertTrue(traversal.next() == traversal.getSideEffects().get("m"));
+        assertFalse(traversal.hasNext());
+        assertTrue(traversal.getSideEffects().exists("m"));
+        assertTrue(traversal.getSideEffects().get("m") instanceof Map);
+        assertEquals(totalVertices, traversal.getSideEffects().<Map>get("m").size());
 
         configuration = getBaseConfiguration();
+        configuration.clearProperty(Constants.SPARK_SERIALIZER); // ensure proper default to GryoSerializer
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, inputLocation);
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_INPUT_FORMAT, GryoInputFormat.class.getCanonicalName());
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, PersistedOutputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, GryoInputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_STORAGE_LEVEL, "DISK_ONLY");
         configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, "persisted-rdd");
         configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);
@@ -77,23 +90,24 @@
         assertEquals(totalVertices, graph.compute(SparkGraphComputer.class).program(PageRankVertexProgram.build().iterations(2).create(graph)).submit().get().graph().traversal().V().count().next().longValue());
 
         configuration = getBaseConfiguration();
+        configuration.clearProperty(Constants.SPARK_SERIALIZER); // ensure proper default to GryoSerializer
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, "persisted-rdd");
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, PersistedInputRDD.class.getCanonicalName());
-        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_OUTPUT_FORMAT, GryoOutputFormat.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, PersistedInputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, GryoOutputFormat.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, outputLocation);
         configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);
         graph = GraphFactory.open(configuration);
-        assertEquals(totalVertices, graph.traversal(GraphTraversalSource.computer(SparkGraphComputer.class)).V().count().next().longValue());
+        assertEquals(totalVertices, graph.traversal().withComputer(SparkGraphComputer.class).V().count().next().longValue());
 
         configuration = getBaseConfiguration();
         configuration.setProperty(Constants.GREMLIN_HADOOP_INPUT_LOCATION, "persisted-rdd");
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_INPUT_RDD, PersistedInputRDD.class.getCanonicalName());
-        configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_OUTPUT_RDD, PersistedOutputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_READER, PersistedInputRDD.class.getCanonicalName());
+        configuration.setProperty(Constants.GREMLIN_HADOOP_GRAPH_WRITER, PersistedOutputRDD.class.getCanonicalName());
         configuration.setProperty(Constants.GREMLIN_HADOOP_OUTPUT_LOCATION, outputLocation);
         configuration.setProperty(Constants.GREMLIN_SPARK_GRAPH_STORAGE_LEVEL, "MEMORY_ONLY"); // this should be ignored as you can't change the persistence level once created
         configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_STORAGE_LEVEL, "MEMORY_AND_DISK");
         configuration.setProperty(Constants.GREMLIN_SPARK_PERSIST_CONTEXT, true);
         graph = GraphFactory.open(configuration);
-        assertEquals(totalVertices, graph.traversal(GraphTraversalSource.computer(SparkGraphComputer.class)).V().count().next().longValue());
+        assertEquals(totalVertices, graph.traversal().withComputer(SparkGraphComputer.class).V().count().next().longValue());
     }
 }
diff --git a/tinkergraph-gremlin/pom.xml b/tinkergraph-gremlin/pom.xml
index 92a943f..4ee4878 100644
--- a/tinkergraph-gremlin/pom.xml
+++ b/tinkergraph-gremlin/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.4-SNAPSHOT</version>
+        <version>3.2.2-SNAPSHOT</version>
     </parent>
     <artifactId>tinkergraph-gremlin</artifactId>
     <name>Apache TinkerPop :: TinkerGraph Gremlin</name>
@@ -31,6 +31,10 @@
             <artifactId>gremlin-core</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
         <!-- provided scope for gremlin-groovy because it is only used for purpose of scriptengine plugin in
              the console and server - in which case that jar should already be present -->
         <dependency>
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java
index 07ad0c8..c333130 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java
@@ -18,27 +18,37 @@
  */
 package org.apache.tinkerpop.gremlin.tinkergraph.process.computer;
 
+import org.apache.commons.lang3.concurrent.BasicThreadFactory;
 import org.apache.tinkerpop.gremlin.process.computer.ComputerResult;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.GraphFilterStrategy;
 import org.apache.tinkerpop.gremlin.process.computer.util.ComputerGraph;
 import org.apache.tinkerpop.gremlin.process.computer.util.DefaultComputerResult;
 import org.apache.tinkerpop.gremlin.process.computer.util.GraphComputerHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalInterruptedException;
+import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerHelper;
 
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Queue;
 import java.util.Set;
-import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
+import java.util.concurrent.ThreadFactory;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -46,6 +56,12 @@
  */
 public final class TinkerGraphComputer implements GraphComputer {
 
+    static {
+        // GraphFilters are expensive w/ TinkerGraphComputer as everything is already in memory
+        TraversalStrategies.GlobalCache.registerStrategies(TinkerGraphComputer.class,
+                TraversalStrategies.GlobalCache.getStrategies(GraphComputer.class).clone().removeStrategies(GraphFilterStrategy.class));
+    }
+
     private ResultGraph resultGraph = null;
     private Persist persist = null;
 
@@ -56,6 +72,15 @@
     private boolean executed = false;
     private final Set<MapReduce> mapReducers = new HashSet<>();
     private int workers = Runtime.getRuntime().availableProcessors();
+    private final GraphFilter graphFilter = new GraphFilter();
+
+    private final ThreadFactory threadFactoryBoss = new BasicThreadFactory.Builder().namingPattern(TinkerGraphComputer.class.getSimpleName() + "-boss").build();
+
+    /**
+     * An {@code ExecutorService} that schedules up background work. Since a {@link GraphComputer} is only used once
+     * for a {@link VertexProgram} a single threaded executor is sufficient.
+     */
+    private final ExecutorService computerService = Executors.newSingleThreadExecutor(threadFactoryBoss);
 
     public TinkerGraphComputer(final TinkerGraph graph) {
         this.graph = graph;
@@ -92,6 +117,18 @@
     }
 
     @Override
+    public GraphComputer vertices(final Traversal<Vertex, Vertex> vertexFilter) {
+        this.graphFilter.setVertexFilter(vertexFilter);
+        return this;
+    }
+
+    @Override
+    public GraphComputer edges(final Traversal<Vertex, Edge> edgeFilter) {
+        this.graphFilter.setEdgeFilter(edgeFilter);
+        return this;
+    }
+
+    @Override
     public Future<ComputerResult> submit() {
         // a graph computer can only be executed once
         if (this.executed)
@@ -115,24 +152,27 @@
         if (this.workers > this.features().getMaxWorkers())
             throw GraphComputer.Exceptions.computerRequiresMoreWorkersThanSupported(this.workers, this.features().getMaxWorkers());
 
-
         // initialize the memory
         this.memory = new TinkerMemory(this.vertexProgram, this.mapReducers);
-        return CompletableFuture.<ComputerResult>supplyAsync(() -> {
+        return computerService.submit(() -> {
             final long time = System.currentTimeMillis();
-            try (final TinkerWorkerPool workers = new TinkerWorkerPool(this.workers)) {
+            final TinkerGraphComputerView view;
+            final TinkerWorkerPool workers = new TinkerWorkerPool(this.workers);
+            try {
                 if (null != this.vertexProgram) {
-                    TinkerHelper.createGraphComputerView(this.graph, this.vertexProgram.getElementComputeKeys());
+                    view = TinkerHelper.createGraphComputerView(this.graph, this.graphFilter, this.vertexProgram.getVertexComputeKeys());
                     // execute the vertex program
                     this.vertexProgram.setup(this.memory);
-                    this.memory.completeSubRound();
                     while (true) {
+                        if (Thread.interrupted()) throw new TraversalInterruptedException();
+                        this.memory.completeSubRound();
                         workers.setVertexProgram(this.vertexProgram);
                         final SynchronizedIterator<Vertex> vertices = new SynchronizedIterator<>(this.graph.vertices());
                         workers.executeVertexProgram(vertexProgram -> {
                             vertexProgram.workerIterationStart(this.memory.asImmutable());
                             while (true) {
                                 final Vertex vertex = vertices.next();
+                                if (Thread.interrupted()) throw new TraversalInterruptedException();
                                 if (null == vertex) break;
                                 vertexProgram.execute(
                                         ComputerGraph.vertexProgram(vertex, vertexProgram),
@@ -146,64 +186,70 @@
                         this.memory.completeSubRound();
                         if (this.vertexProgram.terminate(this.memory)) {
                             this.memory.incrIteration();
-                            this.memory.completeSubRound();
                             break;
                         } else {
                             this.memory.incrIteration();
-                            this.memory.completeSubRound();
                         }
                     }
+                    view.complete(); // drop all transient vertex compute keys
+                } else {
+                    // MapReduce only
+                    view = TinkerHelper.createGraphComputerView(this.graph, this.graphFilter, Collections.emptySet());
                 }
 
                 // execute mapreduce jobs
                 for (final MapReduce mapReduce : mapReducers) {
-                    if (mapReduce.doStage(MapReduce.Stage.MAP)) {
-                        final TinkerMapEmitter<?, ?> mapEmitter = new TinkerMapEmitter<>(mapReduce.doStage(MapReduce.Stage.REDUCE));
-                        final SynchronizedIterator<Vertex> vertices = new SynchronizedIterator<>(this.graph.vertices());
-                        workers.setMapReduce(mapReduce);
-                        workers.executeMapReduce(workerMapReduce -> {
-                            workerMapReduce.workerStart(MapReduce.Stage.MAP);
-                            while (true) {
-                                final Vertex vertex = vertices.next();
-                                if (null == vertex) break;
-                                workerMapReduce.map(ComputerGraph.mapReduce(vertex), mapEmitter);
-                            }
-                            workerMapReduce.workerEnd(MapReduce.Stage.MAP);
-                        });
-                        // sort results if a map output sort is defined
-                        mapEmitter.complete(mapReduce);
-
-                        // no need to run combiners as this is single machine
-                        if (mapReduce.doStage(MapReduce.Stage.REDUCE)) {
-                            final TinkerReduceEmitter<?, ?> reduceEmitter = new TinkerReduceEmitter<>();
-                            final SynchronizedIterator<Map.Entry<?, Queue<?>>> keyValues = new SynchronizedIterator((Iterator) mapEmitter.reduceMap.entrySet().iterator());
-                            workers.executeMapReduce(workerMapReduce -> {
-                                workerMapReduce.workerStart(MapReduce.Stage.REDUCE);
-                                while (true) {
-                                    final Map.Entry<?, Queue<?>> entry = keyValues.next();
-                                    if (null == entry) break;
-                                    workerMapReduce.reduce(entry.getKey(), entry.getValue().iterator(), reduceEmitter);
-                                }
-                                workerMapReduce.workerEnd(MapReduce.Stage.REDUCE);
-                            });
-                            reduceEmitter.complete(mapReduce); // sort results if a reduce output sort is defined
-                            mapReduce.addResultToMemory(this.memory, reduceEmitter.reduceQueue.iterator());
-                        } else {
-                            mapReduce.addResultToMemory(this.memory, mapEmitter.mapQueue.iterator());
+                    final TinkerMapEmitter<?, ?> mapEmitter = new TinkerMapEmitter<>(mapReduce.doStage(MapReduce.Stage.REDUCE));
+                    final SynchronizedIterator<Vertex> vertices = new SynchronizedIterator<>(this.graph.vertices());
+                    workers.setMapReduce(mapReduce);
+                    workers.executeMapReduce(workerMapReduce -> {
+                        workerMapReduce.workerStart(MapReduce.Stage.MAP);
+                        while (true) {
+                            if (Thread.interrupted()) throw new TraversalInterruptedException();
+                            final Vertex vertex = vertices.next();
+                            if (null == vertex) break;
+                            workerMapReduce.map(ComputerGraph.mapReduce(vertex), mapEmitter);
                         }
+                        workerMapReduce.workerEnd(MapReduce.Stage.MAP);
+                    });
+                    // sort results if a map output sort is defined
+                    mapEmitter.complete(mapReduce);
+
+                    // no need to run combiners as this is single machine
+                    if (mapReduce.doStage(MapReduce.Stage.REDUCE)) {
+                        final TinkerReduceEmitter<?, ?> reduceEmitter = new TinkerReduceEmitter<>();
+                        final SynchronizedIterator<Map.Entry<?, Queue<?>>> keyValues = new SynchronizedIterator((Iterator) mapEmitter.reduceMap.entrySet().iterator());
+                        workers.executeMapReduce(workerMapReduce -> {
+                            workerMapReduce.workerStart(MapReduce.Stage.REDUCE);
+                            while (true) {
+                                if (Thread.interrupted()) throw new TraversalInterruptedException();
+                                final Map.Entry<?, Queue<?>> entry = keyValues.next();
+                                if (null == entry) break;
+                                workerMapReduce.reduce(entry.getKey(), entry.getValue().iterator(), reduceEmitter);
+                            }
+                            workerMapReduce.workerEnd(MapReduce.Stage.REDUCE);
+                        });
+                        reduceEmitter.complete(mapReduce); // sort results if a reduce output sort is defined
+                        mapReduce.addResultToMemory(this.memory, reduceEmitter.reduceQueue.iterator());
+                    } else {
+                        mapReduce.addResultToMemory(this.memory, mapEmitter.mapQueue.iterator());
                     }
                 }
                 // update runtime and return the newly computed graph
                 this.memory.setRuntime(System.currentTimeMillis() - time);
-                this.memory.complete();
+                this.memory.complete(); // drop all transient properties and set iteration
                 // determine the resultant graph based on the result graph/persist state
-                final TinkerGraphComputerView view = TinkerHelper.getGraphComputerView(this.graph);
-                final Graph resultGraph = null == view ? this.graph : view.processResultGraphPersist(this.resultGraph, this.persist);
-                TinkerHelper.dropGraphComputerView(this.graph);
+                final Graph resultGraph = view.processResultGraphPersist(this.resultGraph, this.persist);
+                TinkerHelper.dropGraphComputerView(this.graph); // drop the view from the original source graph
                 return new DefaultComputerResult(resultGraph, this.memory.asImmutable());
-
+            } catch (InterruptedException ie) {
+                workers.closeNow();
+                throw new TraversalInterruptedException();
             } catch (Exception ex) {
+                workers.closeNow();
                 throw new RuntimeException(ex);
+            } finally {
+                workers.close();
             }
         });
     }
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputerView.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputerView.java
index 3c5fdc6..43090fe 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputerView.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputerView.java
@@ -19,6 +19,8 @@
 package org.apache.tinkerpop.gremlin.tinkergraph.process.computer;
 
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
+import org.apache.tinkerpop.gremlin.process.computer.VertexComputeKey;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -35,6 +37,8 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -48,13 +52,32 @@
 public final class TinkerGraphComputerView {
 
     private final TinkerGraph graph;
-    protected final Set<String> computeKeys;
+    protected final Map<String, VertexComputeKey> computeKeys;
     private Map<Element, Map<String, List<VertexProperty<?>>>> computeProperties;
+    private final Set<Object> legalVertices = new HashSet<>();
+    private final Map<Object, Set<Object>> legalEdges = new HashMap<>();
+    private final GraphFilter graphFilter;
 
-    public TinkerGraphComputerView(final TinkerGraph graph, final Set<String> computeKeys) {
+    public TinkerGraphComputerView(final TinkerGraph graph, final GraphFilter graphFilter, final Set<VertexComputeKey> computeKeys) {
         this.graph = graph;
-        this.computeKeys = computeKeys;
+        this.computeKeys = new HashMap<>();
+        computeKeys.forEach(key -> this.computeKeys.put(key.getKey(), key));
         this.computeProperties = new ConcurrentHashMap<>();
+        this.graphFilter = graphFilter;
+        if (this.graphFilter.hasFilter()) {
+            graph.vertices().forEachRemaining(vertex -> {
+                boolean legalVertex = false;
+                if (this.graphFilter.hasVertexFilter() && this.graphFilter.legalVertex(vertex)) {
+                    this.legalVertices.add(vertex.id());
+                    legalVertex = true;
+                }
+                if ((legalVertex || !this.graphFilter.hasVertexFilter()) && this.graphFilter.hasEdgeFilter()) {
+                    final Set<Object> edges = new HashSet<>();
+                    this.legalEdges.put(vertex.id(), edges);
+                    this.graphFilter.legalEdges(vertex).forEachRemaining(edge -> edges.add(edge.id()));
+                }
+            });
+        }
     }
 
     public <V> Property<V> addProperty(final TinkerVertex vertex, final String key, final V value) {
@@ -74,7 +97,10 @@
     }
 
     public List<VertexProperty<?>> getProperty(final TinkerVertex vertex, final String key) {
-        return isComputeKey(key) ? this.getValue(vertex, key) : (List) TinkerHelper.getProperties(vertex).getOrDefault(key, Collections.emptyList());
+        // if the vertex property is already on the vertex, use that.
+        final List<VertexProperty<?>> vertexProperty = this.getValue(vertex, key);
+        return vertexProperty.isEmpty() ? (List) TinkerHelper.getProperties(vertex).getOrDefault(key, Collections.emptyList()) : vertexProperty;
+        //return isComputeKey(key) ? this.getValue(vertex, key) : (List) TinkerHelper.getProperties(vertex).getOrDefault(key, Collections.emptyList());
     }
 
     public List<Property> getProperties(final TinkerVertex vertex) {
@@ -93,9 +119,28 @@
         }
     }
 
+    public boolean legalVertex(final Vertex vertex) {
+        return !this.graphFilter.hasVertexFilter() || this.legalVertices.contains(vertex.id());
+    }
+
+    public boolean legalEdge(final Vertex vertex, final Edge edge) {
+        return !this.graphFilter.hasEdgeFilter() || this.legalEdges.get(vertex.id()).contains(edge.id());
+    }
+
+    protected void complete() {
+        // remove all transient properties from the vertices
+        for (final VertexComputeKey computeKey : this.computeKeys.values()) {
+            if (computeKey.isTransient()) {
+                final List<VertexProperty<?>> toRemove = this.computeProperties.values().stream().flatMap(map -> map.getOrDefault(computeKey.getKey(), Collections.emptyList()).stream()).collect(Collectors.toList());
+                toRemove.forEach(VertexProperty::remove);
+            }
+        }
+    }
+
     //////////////////////
 
-    public Graph processResultGraphPersist(final GraphComputer.ResultGraph resultGraph, final GraphComputer.Persist persist) {
+    public Graph processResultGraphPersist(final GraphComputer.ResultGraph resultGraph,
+                                           final GraphComputer.Persist persist) {
         if (GraphComputer.Persist.NOTHING == persist) {
             if (GraphComputer.ResultGraph.ORIGINAL == resultGraph)
                 return this.graph;
@@ -162,7 +207,7 @@
     //////////////////////
 
     private boolean isComputeKey(final String key) {
-        return this.computeKeys.contains(key);
+        return this.computeKeys.containsKey(key);
     }
 
     private void addValue(final Vertex vertex, final String key, final VertexProperty property) {
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 dac5766..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
@@ -21,45 +21,48 @@
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 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.computer.util.MemoryHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
-import java.util.HashSet;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
+import java.util.stream.Collectors;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public final class TinkerMemory implements Memory.Admin {
 
-    public final Set<String> memoryKeys = new HashSet<>();
+    public final Map<String, MemoryComputeKey> memoryKeys = new HashMap<>();
     public Map<String, Object> previousMap;
     public Map<String, Object> currentMap;
     private final AtomicInteger iteration = new AtomicInteger(0);
     private final AtomicLong runtime = new AtomicLong(0l);
+    private boolean inExecute = false;
 
     public TinkerMemory(final VertexProgram<?> vertexProgram, final Set<MapReduce> mapReducers) {
         this.currentMap = new ConcurrentHashMap<>();
         this.previousMap = new ConcurrentHashMap<>();
         if (null != vertexProgram) {
-            for (final String key : vertexProgram.getMemoryComputeKeys()) {
-                MemoryHelper.validateKey(key);
-                this.memoryKeys.add(key);
+            for (final MemoryComputeKey memoryComputeKey : vertexProgram.getMemoryComputeKeys()) {
+                this.memoryKeys.put(memoryComputeKey.getKey(), memoryComputeKey);
             }
         }
         for (final MapReduce mapReduce : mapReducers) {
-            this.memoryKeys.add(mapReduce.getMemoryKey());
+            this.memoryKeys.put(mapReduce.getMemoryKey(), MemoryComputeKey.of(mapReduce.getMemoryKey(), Operator.assign, false, false));
         }
     }
 
     @Override
     public Set<String> keys() {
-        return this.previousMap.keySet();
+        return this.previousMap.keySet().stream().filter(key -> !this.inExecute || this.memoryKeys.get(key).isBroadcast()).collect(Collectors.toSet());
     }
 
     @Override
@@ -90,11 +93,12 @@
     protected void complete() {
         this.iteration.decrementAndGet();
         this.previousMap = this.currentMap;
+        this.memoryKeys.values().stream().filter(MemoryComputeKey::isTransient).forEach(computeKey -> this.previousMap.remove(computeKey.getKey()));
     }
 
     protected void completeSubRound() {
         this.previousMap = new ConcurrentHashMap<>(this.currentMap);
-
+        this.inExecute = !this.inExecute;
     }
 
     @Override
@@ -107,41 +111,35 @@
         final R r = (R) this.previousMap.get(key);
         if (null == r)
             throw Memory.Exceptions.memoryDoesNotExist(key);
+        else if (this.inExecute && !this.memoryKeys.get(key).isBroadcast())
+            throw Memory.Exceptions.memoryDoesNotExist(key);
         else
             return r;
     }
 
     @Override
-    public void incr(final String key, final long delta) {
-        checkKeyValue(key, delta);
-        this.currentMap.compute(key, (k, v) -> null == v ? delta : delta + (Long) v);
-    }
-
-    @Override
-    public void and(final String key, final boolean bool) {
-        checkKeyValue(key, bool);
-        this.currentMap.compute(key, (k, v) -> null == v ? bool : bool && (Boolean) v);
-    }
-
-    @Override
-    public void or(final String key, final boolean bool) {
-        checkKeyValue(key, bool);
-        this.currentMap.compute(key, (k, v) -> null == v ? bool : bool || (Boolean) v);
-    }
-
-    @Override
     public void set(final String key, final Object value) {
         checkKeyValue(key, value);
+        if (this.inExecute)
+            throw Memory.Exceptions.memorySetOnlyDuringVertexProgramSetUpAndTerminate(key);
         this.currentMap.put(key, value);
     }
 
     @Override
+    public void add(final String key, final Object value) {
+        checkKeyValue(key, value);
+        if (!this.inExecute)
+            throw Memory.Exceptions.memoryAddOnlyDuringVertexProgramExecute(key);
+        this.currentMap.compute(key, (k, v) -> null == v ? value : this.memoryKeys.get(key).getReducer().apply(v, value));
+    }
+
+    @Override
     public String toString() {
         return StringFactory.memoryString(this);
     }
 
     private void checkKeyValue(final String key, final Object value) {
-        if (!this.memoryKeys.contains(key))
+        if (!this.memoryKeys.containsKey(key))
             throw GraphComputer.Exceptions.providedKeyIsNotAMemoryComputeKey(key);
         MemoryHelper.validateValue(value);
     }
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java
index 3298aff..7ea2b8b 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMessenger.java
@@ -104,7 +104,7 @@
     ///////////
 
     private static <T extends Traversal.Admin<Vertex, Edge>> T setVertexStart(final Traversal.Admin<Vertex, Edge> incidentTraversal, final Vertex vertex) {
-        incidentTraversal.addStep(0, new StartStep<>(incidentTraversal, vertex));
+        incidentTraversal.addStart(incidentTraversal.getTraverserGenerator().generate(vertex,incidentTraversal.getStartStep(),1l));
         return (T) incidentTraversal;
     }
 
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerPool.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerPool.java
index e9341b4..3d851bf 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerPool.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerPool.java
@@ -59,7 +59,7 @@
         this.mapReducePool = new MapReducePool(mapReduce, this.numberOfWorkers);
     }
 
-    public void executeVertexProgram(final Consumer<VertexProgram> worker) {
+    public void executeVertexProgram(final Consumer<VertexProgram> worker) throws InterruptedException {
         for (int i = 0; i < this.numberOfWorkers; i++) {
             this.completionService.submit(() -> {
                 final VertexProgram vp = this.vertexProgramPool.take();
@@ -71,13 +71,15 @@
         for (int i = 0; i < this.numberOfWorkers; i++) {
             try {
                 this.completionService.take().get();
+            } catch (InterruptedException ie) {
+                throw ie;
             } catch (final Exception e) {
                 throw new IllegalStateException(e.getMessage(), e);
             }
         }
     }
 
-    public void executeMapReduce(final Consumer<MapReduce> worker) {
+    public void executeMapReduce(final Consumer<MapReduce> worker) throws InterruptedException {
         for (int i = 0; i < this.numberOfWorkers; i++) {
             this.completionService.submit(() -> {
                 final MapReduce mr = this.mapReducePool.take();
@@ -89,12 +91,18 @@
         for (int i = 0; i < this.numberOfWorkers; i++) {
             try {
                 this.completionService.take().get();
+            } catch (InterruptedException ie) {
+                throw ie;
             } catch (final Exception e) {
                 throw new IllegalStateException(e.getMessage(), e);
             }
         }
     }
 
+    public void closeNow() throws Exception {
+        this.workerPool.shutdownNow();
+    }
+
     @Override
     public void close() throws Exception {
         this.workerPool.shutdown();
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphStep.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphStep.java
index 3ec73c3..23ba817 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphStep.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphStep.java
@@ -122,4 +122,9 @@
     public void addHasContainer(final HasContainer hasContainer) {
         this.hasContainers.add(hasContainer);
     }
+
+    @Override
+    public int hashCode() {
+        return super.hashCode() ^ this.hasContainers.hashCode();
+    }
 }
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/strategy/optimization/TinkerGraphStepStrategy.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/strategy/optimization/TinkerGraphStepStrategy.java
index 05e9c20..a5f258a 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/strategy/optimization/TinkerGraphStepStrategy.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/strategy/optimization/TinkerGraphStepStrategy.java
@@ -39,15 +39,18 @@
 
     @Override
     public void apply(final Traversal.Admin<?, ?> traversal) {
-        if (traversal.getEngine().isComputer())
+        if (TraversalHelper.onGraphComputer(traversal))
             return;
 
         TraversalHelper.getStepsOfClass(GraphStep.class, traversal).forEach(originalGraphStep -> {
-            final TinkerGraphStep<?,?> tinkerGraphStep = new TinkerGraphStep<>(originalGraphStep);
+            final TinkerGraphStep<?, ?> tinkerGraphStep = new TinkerGraphStep<>(originalGraphStep);
             TraversalHelper.replaceStep(originalGraphStep, (Step) tinkerGraphStep, traversal);
             Step<?, ?> currentStep = tinkerGraphStep.getNextStep();
             while (currentStep instanceof HasContainerHolder) {
-                ((HasContainerHolder) currentStep).getHasContainers().forEach(tinkerGraphStep::addHasContainer);
+                ((HasContainerHolder) currentStep).getHasContainers().forEach(hasContainer -> {
+                    if (!GraphStep.processHasContainerIds(tinkerGraphStep, hasContainer))
+                        tinkerGraphStep.addHasContainer(hasContainer);
+                });
                 currentStep.getLabels().forEach(tinkerGraphStep::addLabel);
                 traversal.removeStep(currentStep);
                 currentStep = currentStep.getNextStep();
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
index af7245a..4cf264e 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
@@ -322,8 +322,9 @@
     private <T extends Element> Iterator<T> createElementIterator(final Class<T> clazz, final Map<Object, T> elements,
                                                                   final IdManager idManager,
                                                                   final Object... ids) {
+        final Iterator<T> iterator;
         if (0 == ids.length) {
-            return elements.values().iterator();
+            iterator = elements.values().iterator();
         } else {
             final List<Object> idList = Arrays.asList(ids);
             validateHomogenousIds(idList);
@@ -336,6 +337,11 @@
                IteratorUtils.filter(IteratorUtils.map(idList, id -> elements.get(clazz.cast(id).id())).iterator(), Objects::nonNull)
                 : IteratorUtils.filter(IteratorUtils.map(idList, id -> elements.get(idManager.convert(id))).iterator(), Objects::nonNull);
         }
+        return TinkerHelper.inComputerMode(this) ?
+                (Iterator<T>) (clazz.equals(Vertex.class) ?
+                        IteratorUtils.filter((Iterator<Vertex>) iterator, t -> this.graphComputerView.legalVertex(t)) :
+                        IteratorUtils.filter((Iterator<Edge>) iterator, t -> this.graphComputerView.legalEdge(t.outVertex(), t))) :
+                iterator;
     }
 
     /**
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerHelper.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerHelper.java
index 7e6ace0..53c9bfc 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerHelper.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerHelper.java
@@ -18,6 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.tinkergraph.structure;
 
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
+import org.apache.tinkerpop.gremlin.process.computer.VertexComputeKey;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -100,8 +102,8 @@
         return null != graph.graphComputerView;
     }
 
-    public static TinkerGraphComputerView createGraphComputerView(final TinkerGraph graph, final Set<String> computeKeys) {
-        return graph.graphComputerView = new TinkerGraphComputerView(graph, computeKeys);
+    public static TinkerGraphComputerView createGraphComputerView(final TinkerGraph graph, final GraphFilter graphFilter, final Set<VertexComputeKey> computeKeys) {
+        return graph.graphComputerView = new TinkerGraphComputerView(graph, graphFilter, computeKeys);
     }
 
     public static TinkerGraphComputerView getGraphComputerView(final TinkerGraph graph) {
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerVertex.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerVertex.java
index 877d338..be08137 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerVertex.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerVertex.java
@@ -143,12 +143,21 @@
 
     @Override
     public Iterator<Edge> edges(final Direction direction, final String... edgeLabels) {
-        return (Iterator) TinkerHelper.getEdges(this, direction, edgeLabels);
+        final Iterator<Edge> edgeIterator = (Iterator) TinkerHelper.getEdges(this, direction, edgeLabels);
+        return TinkerHelper.inComputerMode(this.graph) ?
+                IteratorUtils.filter(edgeIterator, edge -> this.graph.graphComputerView.legalEdge(this, edge)) :
+                edgeIterator;
     }
 
     @Override
     public Iterator<Vertex> vertices(final Direction direction, final String... edgeLabels) {
-        return (Iterator) TinkerHelper.getVertices(this, direction, edgeLabels);
+        return TinkerHelper.inComputerMode(this.graph) ?
+                direction.equals(Direction.BOTH) ?
+                        IteratorUtils.concat(
+                                IteratorUtils.map(this.edges(Direction.OUT, edgeLabels), Edge::inVertex),
+                                IteratorUtils.map(this.edges(Direction.IN, edgeLabels), Edge::outVertex)) :
+                        IteratorUtils.map(this.edges(direction, edgeLabels), edge -> edge.vertices(direction.opposite()).next()) :
+                (Iterator) TinkerHelper.getVertices(this, direction, edgeLabels);
     }
 
     @Override
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphComputerProvider.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphComputerProvider.java
index 1c46d0b..ccea43c 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphComputerProvider.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphComputerProvider.java
@@ -19,14 +19,12 @@
 package org.apache.tinkerpop.gremlin.tinkergraph.process;
 
 import org.apache.tinkerpop.gremlin.GraphProvider;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.ComputerTraversalEngine;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.tinkergraph.TinkerGraphProvider;
 import org.apache.tinkerpop.gremlin.tinkergraph.process.computer.TinkerGraphComputer;
 
-import java.util.stream.Stream;
+import java.util.Random;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -34,15 +32,12 @@
 @GraphProvider.Descriptor(computer = TinkerGraphComputer.class)
 public class TinkerGraphComputerProvider extends TinkerGraphProvider {
 
-    @Override
-    public GraphTraversalSource traversal(final Graph graph) {
-        return GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(TinkerGraphComputer.class)).create(graph);
-    }
+    private static final Random RANDOM = new Random();
 
     @Override
-    public GraphTraversalSource traversal(final Graph graph, final TraversalStrategy... strategies) {
-        final GraphTraversalSource.Builder builder = GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(TinkerGraphComputer.class));
-        Stream.of(strategies).forEach(builder::with);
-        return builder.create(graph);
+    public GraphTraversalSource traversal(final Graph graph) {
+        return RANDOM.nextBoolean() ?
+                graph.traversal().withComputer() :
+                graph.traversal(GraphTraversalSource.computer());
     }
 }
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphNoStrategyComputerProvider.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphNoStrategyComputerProvider.java
index ff8a7bc..50ba5d4 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphNoStrategyComputerProvider.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphNoStrategyComputerProvider.java
@@ -18,17 +18,22 @@
  */
 package org.apache.tinkerpop.gremlin.tinkergraph.process;
 
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.ComputerTraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.EngineDependentStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SideEffectStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.ProfileStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.FilterRankingStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.RangeByIsCountStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategy;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
 
 import java.util.Arrays;
 import java.util.HashSet;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -36,29 +41,19 @@
 public class TinkerGraphNoStrategyComputerProvider extends TinkerGraphComputerProvider {
 
     private static final HashSet<Class<? extends TraversalStrategy>> REQUIRED_STRATEGIES = new HashSet<>(Arrays.asList(
+            RangeByIsCountStrategy.class,
             ComputerVerificationStrategy.class,
-            EngineDependentStrategy.class,
             ProfileStrategy.class,
+            FilterRankingStrategy.class,
             ConnectiveStrategy.class,
-            ComputerTraversalEngine.ComputerResultStrategy.class));
+            SideEffectStrategy.class));
 
     @Override
     public GraphTraversalSource traversal(final Graph graph) {
-        final GraphTraversalSource.Builder builder = createBuilder(graph);
-        return builder.create(graph);
-    }
-
-    @Override
-    public GraphTraversalSource traversal(final Graph graph, final TraversalStrategy... strategies) {
-        final GraphTraversalSource.Builder builder = createBuilder(graph);
-        Arrays.asList(strategies).forEach(builder::with);
-        return builder.create(graph);
-    }
-
-    private GraphTraversalSource.Builder createBuilder(Graph graph) {
-        final GraphTraversalSource g = super.traversal(graph);
-        final GraphTraversalSource.Builder builder = g.asBuilder();
-        g.getStrategies().stream().map(strategy -> strategy.getClass()).filter(clazz -> !REQUIRED_STRATEGIES.contains(clazz)).forEach(builder::without);
-        return builder;
+        final List<Class> toRemove = TraversalStrategies.GlobalCache.getStrategies(TinkerGraph.class).toList().stream()
+                .map(TraversalStrategy::getClass)
+                .filter(clazz -> !REQUIRED_STRATEGIES.contains(clazz))
+                .collect(Collectors.toList());
+        return graph.traversal().withoutStrategies(toRemove.toArray(new Class[toRemove.size()])).withComputer();
     }
 }
\ No newline at end of file
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphNoStrategyProvider.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphNoStrategyProvider.java
index 1570dd5..095fcaa 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphNoStrategyProvider.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphNoStrategyProvider.java
@@ -20,16 +20,22 @@
 
 import org.apache.tinkerpop.gremlin.GraphProvider;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SideEffectStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.ProfileStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategy;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.tinkergraph.TinkerGraphProvider;
 import org.apache.tinkerpop.gremlin.tinkergraph.process.traversal.strategy.optimization.TinkerGraphStepStrategy;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
 
 import java.util.Arrays;
 import java.util.HashSet;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * A {@link GraphProvider} that constructs a {@link TraversalSource} with no default strategies applied.  This allows
@@ -42,25 +48,15 @@
     private static final HashSet<Class<? extends TraversalStrategy>> REQUIRED_STRATEGIES = new HashSet<>(Arrays.asList(
             TinkerGraphStepStrategy.class,
             ProfileStrategy.class,
-            ConnectiveStrategy.class));
+            ConnectiveStrategy.class,
+            SideEffectStrategy.class));
 
     @Override
     public GraphTraversalSource traversal(final Graph graph) {
-        final GraphTraversalSource.Builder builder = createBuilder(graph);
-        return builder.create(graph);
-    }
-
-    @Override
-    public GraphTraversalSource traversal(final Graph graph, final TraversalStrategy... strategies) {
-        final GraphTraversalSource.Builder builder = createBuilder(graph);
-        Arrays.asList(strategies).forEach(builder::with);
-        return builder.create(graph);
-    }
-
-    private GraphTraversalSource.Builder createBuilder(Graph graph) {
-        final GraphTraversalSource g = super.traversal(graph);
-        final GraphTraversalSource.Builder builder = g.asBuilder();
-        g.getStrategies().stream().map(strategy -> strategy.getClass()).filter(clazz -> !REQUIRED_STRATEGIES.contains(clazz)).forEach(builder::without);
-        return builder;
+        final List<Class> toRemove = TraversalStrategies.GlobalCache.getStrategies(TinkerGraph.class).toList().stream()
+                .map(TraversalStrategy::getClass)
+                .filter(clazz -> !REQUIRED_STRATEGIES.contains(clazz))
+                .collect(Collectors.toList());
+        return graph.traversal().withoutStrategies(toRemove.toArray(new Class[toRemove.size()]));
     }
 }
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphProcessPerformanceTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphProcessPerformanceTest.java
index 6a292db..2d72100 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphProcessPerformanceTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/TinkerGraphProcessPerformanceTest.java
@@ -28,8 +28,10 @@
  * Executes the Performance Gremlin Process Test Suite using TinkerGraph.
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.2.1, replaced by gremlin-benchmark.
  */
 @RunWith(ProcessPerformanceSuite.class)
 @GraphProviderClass(provider = TinkerGraphProvider.class, graph = TinkerGraph.class)
+@Deprecated
 public class TinkerGraphProcessPerformanceTest {
 }
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/strategy/decoration/HaltedTraverserStrategyTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/strategy/decoration/HaltedTraverserStrategyTest.java
new file mode 100644
index 0000000..0943391
--- /dev/null
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/strategy/decoration/HaltedTraverserStrategyTest.java
@@ -0,0 +1,102 @@
+/*
+ * 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.tinkergraph.process.traversal.strategy.decoration;
+
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.HaltedTraverserStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedPath;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedProperty;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceEdge;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferencePath;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceProperty;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertexProperty;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class HaltedTraverserStrategyTest {
+
+    @Before
+    public void setup() {
+        // necessary as ComputerResult step for testing purposes attaches Attachables
+        System.setProperty("is.testing", "false");
+    }
+
+    @After
+    public void shutdown() {
+        System.setProperty("is.testing", "true");
+    }
+
+    @Test
+    public void shouldReturnDetachedElements() {
+        final Graph graph = TinkerFactory.createModern();
+        final GraphTraversalSource g = graph.traversal().withComputer().withStrategies(HaltedTraverserStrategy.detached());
+        g.V().out().forEachRemaining(vertex -> assertEquals(DetachedVertex.class, vertex.getClass()));
+        g.V().out().properties("name").forEachRemaining(vertexProperty -> assertEquals(DetachedVertexProperty.class, vertexProperty.getClass()));
+        g.V().out().values("name").forEachRemaining(value -> assertEquals(String.class, value.getClass()));
+        g.V().out().outE().forEachRemaining(edge -> assertEquals(DetachedEdge.class, edge.getClass()));
+        g.V().out().outE().properties("weight").forEachRemaining(property -> assertEquals(DetachedProperty.class, property.getClass()));
+        g.V().out().outE().values("weight").forEachRemaining(value -> assertEquals(Double.class, value.getClass()));
+        g.V().out().out().forEachRemaining(vertex -> assertEquals(DetachedVertex.class, vertex.getClass()));
+        g.V().out().out().path().forEachRemaining(path -> assertEquals(DetachedPath.class, path.getClass()));
+        g.V().out().pageRank().forEachRemaining(vertex -> assertEquals(DetachedVertex.class, vertex.getClass()));
+        g.V().out().pageRank().out().forEachRemaining(vertex -> assertEquals(DetachedVertex.class, vertex.getClass()));
+    }
+
+    @Test
+    public void shouldReturnReferenceElements() {
+        final Graph graph = TinkerFactory.createModern();
+        GraphTraversalSource g = graph.traversal().withComputer().withStrategies(HaltedTraverserStrategy.reference());
+        g.V().out().forEachRemaining(vertex -> assertEquals(ReferenceVertex.class, vertex.getClass()));
+        g.V().out().properties("name").forEachRemaining(vertexProperty -> assertEquals(ReferenceVertexProperty.class, vertexProperty.getClass()));
+        g.V().out().values("name").forEachRemaining(value -> assertEquals(String.class, value.getClass()));
+        g.V().out().outE().forEachRemaining(edge -> assertEquals(ReferenceEdge.class, edge.getClass()));
+        g.V().out().outE().properties("weight").forEachRemaining(property -> assertEquals(ReferenceProperty.class, property.getClass()));
+        g.V().out().outE().values("weight").forEachRemaining(value -> assertEquals(Double.class, value.getClass()));
+        g.V().out().out().forEachRemaining(vertex -> assertEquals(ReferenceVertex.class, vertex.getClass()));
+        g.V().out().out().path().forEachRemaining(path -> assertEquals(ReferencePath.class, path.getClass()));
+        g.V().out().pageRank().forEachRemaining(vertex -> assertEquals(ReferenceVertex.class, vertex.getClass()));
+        g.V().out().pageRank().out().forEachRemaining(vertex -> assertEquals(ReferenceVertex.class, vertex.getClass()));
+        // the default should be reference elements
+        g = graph.traversal().withComputer();
+        g.V().out().forEachRemaining(vertex -> assertEquals(ReferenceVertex.class, vertex.getClass()));
+        g.V().out().properties("name").forEachRemaining(vertexProperty -> assertEquals(ReferenceVertexProperty.class, vertexProperty.getClass()));
+        g.V().out().values("name").forEachRemaining(value -> assertEquals(String.class, value.getClass()));
+        g.V().out().outE().forEachRemaining(edge -> assertEquals(ReferenceEdge.class, edge.getClass()));
+        g.V().out().outE().properties("weight").forEachRemaining(property -> assertEquals(ReferenceProperty.class, property.getClass()));
+        g.V().out().outE().values("weight").forEachRemaining(value -> assertEquals(Double.class, value.getClass()));
+        g.V().out().out().forEachRemaining(vertex -> assertEquals(ReferenceVertex.class, vertex.getClass()));
+        g.V().out().out().path().forEachRemaining(path -> assertEquals(ReferencePath.class, path.getClass()));
+        g.V().out().pageRank().forEachRemaining(vertex -> assertEquals(ReferenceVertex.class, vertex.getClass()));
+        g.V().out().pageRank().out().forEachRemaining(vertex -> assertEquals(ReferenceVertex.class, vertex.getClass()));
+    }
+
+}
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
index 3e1869f..c3e8d74 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
@@ -18,15 +18,16 @@
  */
 package org.apache.tinkerpop.gremlin.tinkergraph.structure;
 
+
+import org.apache.tinkerpop.gremlin.process.computer.Computer;
 import org.apache.tinkerpop.gremlin.process.traversal.Operator;
-import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.process.traversal.Scope;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-import org.apache.tinkerpop.gremlin.structure.Column;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.PathRetractionStrategy;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
@@ -42,6 +43,7 @@
 import java.util.function.Supplier;
 
 import static org.apache.tinkerpop.gremlin.process.traversal.P.lt;
+import static org.apache.tinkerpop.gremlin.process.traversal.P.neq;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.as;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.both;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.choose;
@@ -54,7 +56,6 @@
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.select;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.union;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.valueMap;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.values;
 
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
@@ -65,47 +66,59 @@
     @Test
     @Ignore
     public void testPlay8() throws Exception {
-        Graph graph = TinkerFactory.createModern();
-        GraphTraversalSource g = graph.traversal(); //GraphTraversalSource.computer());
-        //System.out.println(g.V().outE("knows").identity().inV().count().is(P.eq(5)).explain());
-        logger.info(g.V().both().both().groupCount().order(Scope.local).by(Column.values, Order.incr).toList().toString());
+        Graph graph = TinkerGraph.open();
+        graph.io(GraphMLIo.build()).readGraph("../data/grateful-dead.xml");
+        //Graph graph = TinkerFactory.createModern();
 
+        GraphTraversalSource a = graph.traversal().withComputer().withStrategies(PathRetractionStrategy.instance()); // .withStrategies(MatchAlgorithmStrategy.build().algorithm(MatchStep.CountMatchAlgorithm.class).create());
+        GraphTraversalSource b = graph.traversal().withComputer().withoutStrategies(PathRetractionStrategy.class); //.withStrategies(MatchAlgorithmStrategy.build().algorithm(MatchStep.CountMatchAlgorithm.class).create());
+        GraphTraversalSource c = graph.traversal().withStrategies(PathRetractionStrategy.instance()); // .withStrategies(MatchAlgorithmStrategy.build().algorithm(MatchStep.CountMatchAlgorithm.class).create());
+        GraphTraversalSource d = graph.traversal().withoutStrategies(PathRetractionStrategy.class); //.withStrategies(MatchAlgorithmStrategy.build().algorithm(MatchStep.CountMatchAlgorithm.class).create());
+
+        for (final GraphTraversalSource source : Arrays.asList(d, c, b, a)) {
+            System.out.println(source + "--PathRetractionStrategy[" + source.getStrategies().toList().contains(PathRetractionStrategy.instance()) + "]");
+            System.out.println(source.V().has("performances", P.gt(500)).match(
+                    __.as("a").out().as("b"),
+                    __.as("b").out().as("c"),
+                    __.as("c").out().as("a")).select("a").profile().next());
+        }
     }
 
+
     @Test
     @Ignore
     public void benchmarkGroup() throws Exception {
         Graph graph = TinkerGraph.open();
-        GraphTraversalSource g = graph.traversal(GraphTraversalSource.computer());
-        graph.io(GraphMLIo.build()).readGraph("data/grateful-dead.xml");
+        GraphTraversalSource g = graph.traversal();
+        graph.io(GraphMLIo.build()).readGraph("../data/grateful-dead.xml");
         /////////
 
-        g.V().group().by(T.label).by(values("name")).forEachRemaining(x -> logger.info(x.toString()));
+        //g.V().group().by(T.label).by(values("name")).forEachRemaining(x -> logger.info(x.toString()));
 
-        logger.info("group: " + g.V().both("followedBy").both("followedBy").group().by("songType").by(count()).next());
-        logger.info("groupV3d0: " + g.V().both("followedBy").both("followedBy").groupV3d0().by("songType").by().by(__.count(Scope.local)).next());
+        System.out.println("group: " + g.V().both("followedBy").both("followedBy").group().by("songType").by(count()).next());
+        System.out.println("groupV3d0: " + g.V().both("followedBy").both("followedBy").groupV3d0().by("songType").by().by(__.count(Scope.local)).next());
 
         //
-        logger.info("\n\nBig Values -- by(songType)");
+        System.out.println("\n\nBig Values -- by(songType)");
 
-        logger.info("group: " + TimeUtil.clock(10, () -> g.V().both("followedBy").both("followedBy").group().by("songType").by(count()).next()));
-        logger.info("groupV3d0: " + TimeUtil.clock(10, () -> g.V().both("followedBy").both("followedBy").groupV3d0().by("songType").by().by(__.count(Scope.local)).next()) + "\n");
+        System.out.println("group: " + TimeUtil.clock(10, () -> g.V().both("followedBy").both("followedBy").group().by("songType").by(count()).next()));
+        System.out.println("groupV3d0: " + TimeUtil.clock(10, () -> g.V().both("followedBy").both("followedBy").groupV3d0().by("songType").by().by(__.count(Scope.local)).next()) + "\n");
 
         ///
 
-        logger.info("group: " + TimeUtil.clock(10, () -> g.V().both("followedBy").both("followedBy").group().by("songType").by(fold()).next()));
-        logger.info("groupV3d0: " + TimeUtil.clock(10, () -> g.V().both("followedBy").both("followedBy").groupV3d0().by("songType").by().next()));
+        System.out.println("group: " + TimeUtil.clock(10, () -> g.V().both("followedBy").both("followedBy").group().by("songType").by(fold()).next()));
+        System.out.println("groupV3d0: " + TimeUtil.clock(10, () -> g.V().both("followedBy").both("followedBy").groupV3d0().by("songType").by().next()));
 
         ///
-        logger.info("\n\nBig Keys -- by(name)");
+        System.out.println("\n\nBig Keys -- by(name)");
 
-        logger.info("group: " + TimeUtil.clock(10, () -> g.V().both("followedBy").both("followedBy").group().by("name").by(count()).next()));
-        logger.info("groupV3d0: " + TimeUtil.clock(10, () -> g.V().both("followedBy").both("followedBy").groupV3d0().by("name").by().by(__.count(Scope.local)).next()) + "\n");
+        System.out.println("group: " + TimeUtil.clock(10, () -> g.V().both("followedBy").both("followedBy").group().by("name").by(count()).next()));
+        System.out.println("groupV3d0: " + TimeUtil.clock(10, () -> g.V().both("followedBy").both("followedBy").groupV3d0().by("name").by().by(__.count(Scope.local)).next()) + "\n");
 
         ///
 
-        logger.info("group: " + TimeUtil.clock(10, () -> g.V().both("followedBy").both("followedBy").group().by("name").by(fold()).next()));
-        logger.info("groupV3d0: " + TimeUtil.clock(10, () -> g.V().both("followedBy").both("followedBy").groupV3d0().by("name").by().next()));
+        System.out.println("group: " + TimeUtil.clock(10, () -> g.V().both("followedBy").both("followedBy").group().by("name").by(fold()).next()));
+        System.out.println("groupV3d0: " + TimeUtil.clock(10, () -> g.V().both("followedBy").both("followedBy").groupV3d0().by("name").by().next()));
 
     }
 
@@ -225,7 +238,7 @@
         graph.io(GraphMLIo.build()).readGraph("/Users/marko/software/tinkerpop/tinkerpop3/data/grateful-dead.xml");*/
         //System.out.println(g.V().properties().key().groupCount().next());
         TinkerGraph graph = TinkerFactory.createModern();
-        GraphTraversalSource g = graph.traversal(GraphTraversalSource.standard());
+        GraphTraversalSource g = graph.traversal();
         final List<Supplier<GraphTraversal<?, ?>>> traversals = Arrays.asList(
                 () -> g.V().out().as("v").match(
                         __.as("v").outE().count().as("outDegree"),
@@ -246,7 +259,7 @@
         TinkerGraph graph = TinkerGraph.open();
         graph.createIndex("name", Vertex.class);
         graph.io(GraphMLIo.build()).readGraph("/Users/marko/software/tinkerpop/tinkerpop3/data/grateful-dead.xml");
-        GraphTraversalSource g = graph.traversal(GraphTraversalSource.standard());
+        GraphTraversalSource g = graph.traversal();
 
         final Supplier<Traversal<?, ?>> traversal = () ->
                 g.V().match(
@@ -254,7 +267,7 @@
                         as("a").in("writtenBy").as("b"),
                         as("b").out("followedBy").as("c"),
                         as("c").out("writtenBy").as("d"),
-                        as("d").where(P.neq("a"))).select("a", "b", "c", "d").by("name");
+                        as("d").where(neq("a"))).select("a", "b", "c", "d").by("name");
 
 
         logger.info(traversal.get().toString());
@@ -265,9 +278,60 @@
 
     @Test
     @Ignore
+    public void testPaths() throws Exception {
+        TinkerGraph graph = TinkerGraph.open();
+        graph.io(GraphMLIo.build()).readGraph("/Users/twilmes/work/repos/scratch/tinkerpop/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphml/grateful-dead.xml");
+//        graph = TinkerFactory.createModern();
+        GraphTraversalSource g = graph.traversal().withComputer(Computer.compute().workers(1));
+
+        System.out.println(g.V().match(
+                __.as("a").in("sungBy").as("b"),
+                __.as("a").in("sungBy").as("c"),
+                __.as("b").out("writtenBy").as("d"),
+                __.as("c").out("writtenBy").as("e"),
+                __.as("d").has("name", "George_Harrison"),
+                __.as("e").has("name", "Bob_Marley")).select("a").count().next());
+
+//        System.out.println(g.V().out("created").
+//                project("a","b").
+//                by("name").
+//                by(__.in("created").count()).
+//                order().by(select("b")).
+//                select("a").toList());
+
+//        System.out.println(g.V().as("a").out().where(neq("a")).barrier().out().count().profile().next());
+//        System.out.println(g.V().out().as("a").where(out().select("a").values("prop").count().is(gte(1))).out().where(neq("a")).toList());
+//        System.out.println(g.V().match(
+//                __.as("a").out().as("b"),
+//                __.as("b").out().as("c")).select("c").count().profile().next());
+
+    }
+
+    @Test
+    @Ignore
+    public void testPlay9() throws Exception {
+        Graph graph = TinkerGraph.open();
+        graph.io(GraphMLIo.build()).readGraph("../data/grateful-dead.xml");
+
+        GraphTraversalSource g = graph.traversal().withComputer(Computer.compute().workers(4)).withStrategies(PathRetractionStrategy.instance());
+        GraphTraversalSource h = graph.traversal().withComputer(Computer.compute().workers(4)).withoutStrategies(PathRetractionStrategy.class);
+
+        for (final GraphTraversalSource source : Arrays.asList(g, h)) {
+            System.out.println(source.V().match(
+                    __.as("a").in("sungBy").as("b"),
+                    __.as("a").in("sungBy").as("c"),
+                    __.as("b").out("writtenBy").as("d"),
+                    __.as("c").out("writtenBy").as("e"),
+                    __.as("d").has("name", "George_Harrison"),
+                    __.as("e").has("name", "Bob_Marley")).select("a").count().profile().next());
+        }
+    }
+
+    @Test
+    @Ignore
     public void testPlay6() throws Exception {
         final Graph graph = TinkerGraph.open();
-        final GraphTraversalSource g = graph.traversal(GraphTraversalSource.standard());
+        final GraphTraversalSource g = graph.traversal();
         for (int i = 0; i < 1000; i++) {
             graph.addVertex(T.label, "person", T.id, i);
         }
@@ -281,4 +345,14 @@
         graph.vertices(50).next().addEdge("uncle", graph.vertices(70).next());
         logger.info(TimeUtil.clockWithResult(500, () -> g.V().match(as("a").out("knows").as("b"), as("a").out("uncle").as("b")).toList()).toString());
     }
+
+    @Test
+    @Ignore
+    public void testBugs() {
+        GraphTraversalSource g = TinkerFactory.createModern().traversal();
+
+        System.out.println(g.V().as("a").both().as("b").dedup("a", "b").by(T.label).select("a", "b").explain());
+        System.out.println(g.V().as("a").both().as("b").dedup("a", "b").by(T.label).select("a", "b").toList());
+
+    }
 }
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphStructurePerformanceTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphStructurePerformanceTest.java
index 501de56..f6b8763 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphStructurePerformanceTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphStructurePerformanceTest.java
@@ -27,9 +27,11 @@
  * Executes the Gremlin Structure Performance Test Suite using TinkerGraph.
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.2.1, replaced by gremlin-benchmark.
  */
 @RunWith(StructurePerformanceSuite.class)
 @GraphProviderClass(provider = TinkerGraphProvider.class, graph = TinkerGraph.class)
+@Deprecated
 public class TinkerGraphStructurePerformanceTest {
 
 }
\ No newline at end of file
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/groovy/TinkerGraphGroovyEnvironmentPerformanceTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/groovy/TinkerGraphGroovyEnvironmentPerformanceTest.java
index 8cc2f5e..0a35222 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/groovy/TinkerGraphGroovyEnvironmentPerformanceTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/groovy/TinkerGraphGroovyEnvironmentPerformanceTest.java
@@ -27,7 +27,9 @@
 
 /**
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.2.1, replaced by gremlin-benchmark.
  */
+@Deprecated
 @RunWith(GroovyEnvironmentPerformanceSuite.class)
 @GraphProviderClass(provider = TinkerGraphProvider.class, graph = TinkerGraph.class)
 public class TinkerGraphGroovyEnvironmentPerformanceTest {