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 9a07245..797e231 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 9f5121f..67ae364 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 453b62e..9b54aa8 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 f300e98..6b4696c 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'),
@@ -1133,6 +1133,31 @@
 
 An option to a <<branch-step,`branch()`>> or <<choose-step,`choose()`>>
 
+[[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
 ~~~~~~~
@@ -1221,6 +1246,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
 ~~~~~~~~~
@@ -1292,7 +1348,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
 ~~~~~~~~~~~~
 
@@ -1304,7 +1377,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:
@@ -1321,8 +1394,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
 ~~~~~~~~~~
@@ -1699,7 +1896,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>
 ----
 
@@ -1711,7 +1908,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()
 ----
 
@@ -1724,8 +1921,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,
@@ -2117,7 +2314,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
@@ -2217,7 +2414,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 -> {
@@ -2287,7 +2484,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()
 ----
 
@@ -2322,7 +2519,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()
 ----
@@ -2360,9 +2557,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()
@@ -2394,7 +2591,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>
+			TU0AKgAAQriAACBQOCQWDQeEQmFQuGQ2HQ+IRGJREFxUFj+MD8Ux
+			sUhuPBsPSEPA6SA5+yd+u6VO5xS1xOyYOxnTNnMObMN+Tl+ROeT2
+			fT+gUGhUOiUWjUekUmlUumU2nU+oVGpA2qA2Mj8j1kjjuuDsTV8T
+			AexAcCWUCQR7vx6gB9P18AAAgEBAAEAMEgADAMEQV9319vTAPRkY
+			NkMbDMZeYleM3GM2/PupZHJZPKZXLZfMZnNZvOZ2igjQAg26M2nD
+			THAM6kM3G4vR9PEANx3NQAN54NcANh1s8Aa55AB9v58gB+v5+wUC
+			AICgACAPlg4DhEACwLDYACgJjAACIIikAAIAgMATp+MvzMtCelCL
+			r2LryZ74fH5fP6fX7ff8fme1UGlP/CmNkAjYGMCBidx8HSARqHUZ
+			QAGgdBjAAch5G+AB5n0eCBH+f6BLiosNw4AoBgMADoOkEwJhcAAY
+			gyHYABMCUVOWBB9mPGxjkjHJIltHhbHxH63v1IUhyJIsjSPJEkqg
+			EUmBET8nk+H0pB8tK1lobRRgAYZwluAB8n4e0OgC+kQAAC4GA4AA
+			lhKLQABkDQfLwAQDgAV07FcMU8jEeM+NhJU/0BQNBUHQlCqOswCD
+			NRQzD9Ro/AmCoIguZhzGCABdG8VgAHKeJvTFQYRgiFQACSEosgAF
+			QKhmABkmOZRjDlWI5GVWhlRBDlDVzXVd15XtfMo0IEEPYZDjdYw3
+			H4f59AETpnkQABnnOYq4Q9X4ATKIAQCaAAsBYNYAHuex8HqLlyi4
+			WF0FhI7nRIAwDgUAACgReACALOl6zoAwEgWvAEX5ey7gHetqTG4z
+			jn2fJ7rZceFrXhGFOMneH4a4B9Lef5/H9a2N45juPKMBWQgUTGSE
+			wLuTi6bJ2mgABTGmSYAHQehx4+hgag0H9uBaNjxnqf54DzoI8k1o
+			hNYzjKkgEATxAIAy9geCoNgADQSBeAAG0kAAIAsDoAAsD4ULoBYH
+			7EBwAAYCAK7PrYAXYy57HkdzengdQAHseZ3gAfB6Ngdhym4AB2nN
+			T24HaABzm6aXAnNCp9n1hR+8dmvJ8pysiA7zAOlbzZWhoGvPF6b5
+			XgAWJsFAti3csh4IgQCgADKGY+O2CAUn+RPbkSPXdD1W6ErkuYFA
+			Y6QOhU6wLg+7wPBUG4AAkDAQAADAQhZeIDru1nVINMqCHedBwAAd
+			RxGzmJwGqABwmoY4AHEa8GnkdpzgBiPs/p+v7J8Af8gHzhWif/wT
+			3QiuAAKsaomVrwHfuRAB4BwJAADsDsR4AAIgHAsP0NUFw1Cbg0Js
+			f4CG0AABwE0MoAAVg7CcAADoJ1VnOTo9iBJkR+MIcWp4aYwYBDTG
+			G6Mco2zeMYY1C+IEQWahhiIGETsRxOjMHOMAAIoxowRHy6mIREwJ
+			gJAuAANoNxCgAAmAYDA+gniVFgM4XA+QIgtX6vyKZ+XIj6AAPFwR
+			sRmi+ABDh0Y3hojDb0PVP0a4/R/PyR8DYyZCDJH+A4fIGxDjDDae
+			MfxkJAE+BWBUGgAA3A3EMAAao7Uwg3FKyweo/DjyRSQmUeg7x0gA
+			GlDZVgtBNqbG2yyUks5aFQATLcBIppdCmCaE8JgUBIDIDwAAbQ7X
+			FS1J6XMuYSgTJtCaCYLwABHjOHMAAOQvxuodMyrhDRA0xlwmQQ9i
+			xaxyDaGdJoYYsY6jEXUO0cs2ZwzxnkQ0KU9QpP8GiOl9Qlhlh/nm
+			UEAZ4QAB3B4JEAAHgHgmAAA8SaER5j7lGUxXADi8gABoBcBp1wKL
+			wAYiKYg70wjHHKb8dI9pITfn+QxuDchqjFFkAAYAqBGMxG++alNN
+			5AGsACL6ngvgeA/B2EASAx5hjbHcNOnBQQaM4AAGQGQegAB5S2AA
+			RIy2aFIAdR4MoLgMgADGC0DAAAUgSLuQwco9Y3CpN0AARozByAAH
+			Ma6bVSSErjNgM4Xgp1WCzleOcb1SB+wxrpYNyYRLDBEFrYkWo1R3
+			DLAMJgZggbCUAoEHsHwli6AFa6C0UAzXDj2jcUAAiHhQhJBOAALQ
+			KG1FEGOOceYAAlCuNoPBL9kyGw+QcL8VQABbCaqg917727bXDT/T
+			pHotghBFCAEgRIxQ4ISHkp64hQAYAYB0AANINBAAADCLkbQABQDV
+			lSTwuZAhGBABGAAN6bzvlLF2OJDIUhYjWN7RC6ZDR8t3WgL0VAAB
+			hCrEg+AcQ2FrtIvvgc+oNcFA1GJg0YljBlWPsjN7BBQRJBJnUMgc
+			5kAgipGitelBDwjggOkLUKL1KAlSDdNgAAkxnzVwqTyloswAC+FK
+			s8cI1hkYFh/jHHxkw55BDmIzIgjBSDTwClsW2PygwPgiBEBVpwaC
+			jN4N8eSQSHiZCICUAAZgXVhMle9DIRhV1InBkwiNuBki0E4nUSMj
+			Y25ozkUsVmdRWH/CmH0X4YXwD1HLnMnoOwOhHAAF4F4c7UC2fGKc
+			a7dczkMFpidNQITpGSHOPUyAGxMY7H/iEiauKyFnBkBYBjWgEFnH
+			4P5Dg6K0AAGcOkehbNVS0G+NNaYuxQCCmIM0XmPNAa/Ii0ppRLhx
+			IlH2BsRIxA3JeilsAiAFgFtSD0D0SgABeDiOGE62RAjwENGCFdqw
+			PgNtmMlSXTImRknEQ2REupcw0Avq6HQGiaQNgMRIQhZJAhpDrLWH
+			IYE2RhDkNhNyP7GTjjGFgJcAAsxKh0PHDLZ3ESDAV4oBUcPF8cjw
+			GUAkTQzYt8SIkmNMYhgiJZHMPXUoMxRznH1rMhgqwmneCoCV1xks
+			rHDBEJvdK1CGgUAQcu0tpwkaUvaT6KKHA/jGHCAARlVjiTIHINmz
+			wtxOOyGyMoXK1918gzmEHrwQT2i6FmNwUQBBcDbr1zzrhDENsayc
+			iUBJ3gZCis9We0JCw/A4A+AAQIOgPGTFENZuoXxbvj0eQcA23RbB
+			SjQEOhBSTgkCDKLsbYABQjUHRXOWbFkwi/FOIrGopREnjYt2vHwb
+			/UBvEh6v1YyA7gAGuOw3npiH7rC+DHhwOQOaE5VOcZ+/CGgsAovw
+			YwWTtANALeUpfLgo3zAALIbzhiGBZBQBYAApAlWn+UUwdhaQAA2F
+			LlXK9KRqDDXUK0RwagAPvfj7S4geP4B4WIIcQQwQzqbHmhX9xEAq
+			grDQAACIBCCk++FIN4GWHU1ituIEDuBsa6EOB6eg08KMFIGuHWu4
+			FwfGWS4IISFiCeBWAACcBGgaMk38U8mmz+Y3A2IHBUJ6m+HGGwGY
+			AAFED6CmAAlQ2K/2ro/i/kWIz0z4HUz9ByIeCkBSDIAACOBGCtAJ
+			ANAQIkVwC+BYiuE0CKoU8SJ8H6VwEKGSZo6Se+IgtGTGHeDYuuo6
+			+2Ki8C8G8K80PuVwAG27DKea5/AAA+OkBkTOoWAOPEBEAeL2BAAc
+			L2AuAUOWIg0wY0HAHmOGG2pAZiNcH+G2FqFMEsF4FSFEE02IMCHo
+			PfCEj9B2/mD+GADHEYqvE2IWCmBUhGCMBECrCWABAPASJ+Ba+GAA
+			3eq6CNDoAABBD4IKNcOOFsG+bkE+vEAAF+HEbzCwIkASOSAAHWDU
+			ByAAAXGUMk+gbkCeFeNo7UMy26i5DkB6A4bICLFuBOrIAABgAq1K
+			gmPEIIY0Y07aQsHyQyHiHybkHkHybyiiYUIQoCOeAOAgbOAMbIAm
+			AUiuPAmU6KnAHtIQHsGlIWGkGxIcGwGLIiGKkKGSGtIsGsJQojFI
+			Y9E6WIEQGIkaG+Hg8NI2ISCyBYZ4WyhOBtALFbCaKQ8STG1OLnDc
+			LmHwlEb01SgQsoTGHhDGbO+SMmFA8Eu5DU8OKlDyLmCWBEgaDGBY
+			rDHBH6+S08Q4Y0NkNpJEfGHCHgu+NkfMpMN+1VKqYw61HZJ2IM5E
+			WpIKTG2EOYTmAAVCO8BIAkeoA0AcegkmkqoCLOIIPIGZL+GYFDME
+			FCFLMKFKHnMQtfJKV4C3MaC2FFMgFEFAGiEUAEGSHIF6U/MWTKDS
+			Bqu2BQAouuBi7oAAGyHhHwUKF4CoRU8cbIMkqke+EQ6cKY+UB4A2
+			bICoBObUCeBGAmAAA4AaRIOKjcHEHi8qG2HaqQGsHWs9OKcALaOH
+			CwJ2PuPAaYOUAAA2AaegA+AgoVNAO0BOAoO0ASAGAWH+HXPQHWFz
+			PWFyFTPcFSF3PiF2H1Po7vMWSOBRPyBQGhP4GhAOF8AOFEGgEcYJ
+			Pu1UY0EICEdPEydc96jeLaVyDUBgA0AAEqCEvSKgLSQ4BoFKnOGs
+			k4KMVwB9G8AAEOB8BCAABqowXivKHaHu8yUoGEAAGCHAxoHcHvAt
+			KqcqgXDqAyB6AAB6A+CXOwAbRRIyG/SQG+D3SWD2zsFYaOx7PuPu
+			WCHVSqHUHGHyG0AaEoGSdlCxI1FJGSXgEECCE89gHeOWByk+xAV0
+			gmLOFyCojRRU1KKQ3yAAEEGO6WEKGQ2LSiIm+UBi1IAADWBjQoCw
+			+qbaS8ABOWs8GUHMF+NyN2AArQN/GwiCQ5DyXhO4y40E0IBaAuBw
+			LwLoH3IYGkR0EiFRVSFQMfSkPip0GFVgGEBuB0BsB4D0F6C4/XHf
+			PuVSVWkukyD+GO2KEGGNBxAkUMAwAURIF+CuRUBQAirKKGEsGifi
+			DcF8cBGPCcIEo6PEECB272DXQmABDyIEnyfUdKdOHKHnC8uI3WAl
+			IEtgTYAAB2A8CQLg06H+l2FMDrX4DqHPX+/bVaM6EnYIEmQEDYEe
+			GQDsNyHYllJKCs/8AAB+BBAGCCFQw+GIHPUqY6BCOgmsBoa6CoBM
+			ddWTEGIPTsG0HeYUEzWoAAE6GmfilDT8IZDAAACk5oAAEAB072BM
+			gnEY6WFwG4v6GaHMj1Ok0BLSA6AevSCIBFBqqWZyHOHKHQHIEXas
+			EWE5ayE5ISTDYEMqCNbACMFvbGFuGIHGFsAEFLVNM0/2Q4EazINq
+			HkRIymnOH262coVwgWPEBWAmX4Ag1OOA1m34jck2TDbtBYIcBwAy
+			bNAeehRGbNCAreFkdMWgWkflcvMWBORSAACYBMC6AABLc2GyGxdH
+			X6DqsUFqd7a8KcZEAUG3deG2AMAgACA0EEGE/+S/NQ9Nb/N8ESCI
+			r1NkreDyGE/1WOwPG6bIFkChA+AfCsGMHG6yZcZg1SkhdWILLSCQ
+			BKCxBAmgQ0ACH8UcD9auEXPrPtesKSD5fSD4EHfYEGFOGo2qGAG+
+			pfKPaQIGW6Z5YmhOB0FMZYGQHRMUwPJiu5KeqpROwKbyFWGsgMWi
+			GI3VTBfOIRLSRQRUCoBUDMoOAey4f4iKDDMTgDgiKIJKAddgG2AI
+			bMAsEKGEW+Ncj61+2gakD6B+4UGGHKOGCSFYqRcOumpQEUB8BEAA
+			3kakHgHwHYAAEcGODqAAHTCDhCKEAWAKoyDVM8ABLmjRScXMC4Hz
+			i2OHicKI/nB2FcGuzaFyG6t2znLSCuBYDSAACCBACgos/CAAGaZl
+			DWrpTcAAEoCGBIAA+obUpGmyE8Ge9BXU/1i8IAAIFA4JBYNB4GBQ
+			EBgATROXQARhEVX+u12vF2ZY0ZXFHXFCJBIZFI5JJZNJ5RKZVK5Z
+			BQ/Lw+zZkzQKDAEEz8vzEAHu/HrLaBQaFQ6JAg2DRAADyPUmAHE8
+			3+ABInGXAgDRaxWa1KwEAKuqCYKAAVRMFAA3He1AAk2SewA+H496
+			3c7pdbtd5SAgDXS0LTaAB6HiWAGJhWITMQTHji3jeMdj8hkYKBgQ
+			Cy+k1Qvk2ZCcNl631UAFe107ktNp5IDgOEQAcBwiAAEQSHwASFba
+			mG5cbqN5kgeBgGAEwRRMACsJ7M1nWygAomgjgA8Xy7t71et17qBw
+			GCAAUBTOyAICaAGGwWIwS56S45PY5Ox7/hkR8VTgASebUepiWKQA
+			VBMB4AEqZQ/AA5RmvjBChquq4tBcv4fA8JgAEaZpygAOpgm8ACow
+			TDqVw4SghhIAA1hgDIAGwdhnrWZQ+AAfh/H3D0ZxpGkFgAK4WDUA
+			AghAJ4AFhIJYCtIgrH3I8ZRrJUloGDwVBuAAxkOWQAAYCILBGB7u
+			GCLAXgAB4CrkTBmECABtnctUmSUAYAuCIQRCi7oUJ2ZBznsAApFi
+			awAHWe8kzVJk2IENgYg2ABEh8EIAHSehuAAS5lzKdx7nVQFLUu04
+			EAIBQACyFg1gAGwNCEfxQlCURQjXVQ1nvVq5UxWDJAuD7+DQSBeg
+			ABwJxOgkOB6DkAFcJ4VAABQBrkUZpEeABoHOYwAH9aFYtOhQCgAK
+			YVDLHgQCgABbG+d4ACwWhrgAeZ9n7acljiGYOQmH9FGudcDkyZpB
+			LeuN1X1fatr04IuBcN4AB2DokAASmEEoN+Fjef2HWjfmIpYAOKAA
+			LhAFQAAYCCKySQ4HINAdbwpBYAAIO0ABQGgRYAGOchd4kujtASAA
+			thcNwABuDYhgAap2zuIRVmkAB1HtP+YvgDwGgOABpi+GgAAQAZ9A
+			AQRgjPPh7HPpGua6lQEgIBYADoHRGAADQGBCfwxbYMVTVNr24oQG
+			gkC9HA8E8AABAE4KVCID7WE8I7igwBSomEcJa28bRTAAeh9nluST
+			AkBIKgAL4XjoAAUAoGIAFkbzqDIXJtT5P3JOshSrlKJaxCaENOEs
+			Zg/gAbR2GjDfUd13aCAoBQMbGHRGq8fACngIfkCGZ3lmd3mIgmDQ
+			RAAOxRz2AgC6YogNgZphcioFoABXygAHIeRugATpntgc55nD3O5R
+			uEwJhcAAvBeOQAd9E5QmtSo1C8G2AAeyMHnGoQ4GQFyJxNhFRGLg
+			boqUgDXbyVFDkBYLOoBsBsIKUQYh5AALmEAuQlQjCUw9iEF0ll7K
+			6FkPIoAAAzCORAurhSGB6BwB5KILHgAEACPkAAxRxi5g+NyCA7x8
+			DsWmV0q4HgIHFR6j8GoGwgLmH0VcOaGTmjVHSi8f8FYUGRBWBNTg
+			wQrpeKudQQgwQ0AAHqPsekX44NyAIAJawYgYh3AADIDAPR/hIj8E
+			gXUgRdRxRqCMGAPwABoEeLxvQAwCGmCAsAAAlgiAlAACl8cbXIi/
+			HAlQYg4RbAAHePcdZViroIBEBEsQRgRhXAAC4C6UE2SPGSOgeYAA
+			zi6gCNEdhP5CGnQ4KMJRYguApcsKUaYkQAOIcVL+ZzcVNKcECEAT
+			gABrjPG2McIE2wgD6m81SZ51YVAADuKNcoFQOnFN6hw1RwTjuWXY
+			u4FT4yek/G4mhMw7RppmHdPseA+B2nRoAi9GJA5TkggoQM4BDAIA
+			ILMBoBptASgSfACgCoMgAAZAZDgfg/1rDHHM5ETI0Wti0G9QFozE
+			KDzhLshwHgG2RC3Cm+BRi5RIjID0AAfI/VX0sp8zEH4H0JBYBWGw
+			fwaakBpE1UsTVPzUAeBSDYAAbxMjJRohwBpwCIuAqmDNQzIGRQ8I
+			M0aW8RokD6H6PgAA7B7DoioY2WbJgEATS+AcCQADgNMAkAoCzUQB
+			qcIIOwnoABfjkHghMZZ7hlPsfeVapxkQFRzsJGVjQFJHiJGKHB8g
+			8kNWPs8vwhRDBChDFCAAfo9QAjuBbasFo5rXDms+XQBYDyzBzE8i
+			sB4FV3KxgrF1zcYgAAsAo2IJYIq6AwAs2IBYBTggMuZXhQVvi3j9
+			Wi49dJcFojFHK5EWg3KAjMHVG+wU4GK2xOwGkF6JxLIiAALsbwqw
+			ACsGsJu819WIg9A+EpiwLbNCSv8JJhjAr7FYCCFkOoAAmBpEU7qL
+			yHEOAKq0A2552iurRKjdiKi6R8wEK9KeleAz4Oqh+FkGAAAWgTK6
+			IcYhfx0D0HHiDGCmLlgNAAHwHwl6dDwH6OcGmPQaWvthjElABwEg
+			MAAHMT7uHoPSyFk1NQTwR10FaE5YgxxxyhFGNFZeHcnZdSWDoDoR
+			nLuZAAIHMwgRAZpEBl4kgRQvh9NqGNe+bM6IIxEMQLGJQWATKjio
+			v46h65BzroNBFC8ag+EwtAeQAxzgz0cDMc+kWt6DAgBYDoAA5Cde
+			bbMs2hNPG9ByBlkQwkuoFHWMdg4yc4MUK7p/Vx7wpgpDIREEbHQt
+			a3C0KfXQp9CHzs0ffLer9hGSEIDspIewb6XfSbAZQ5RfbD2gdYEI
+			ECxB2B4JAAArRV7aSKx3LzFIrCeGhRkEb9LeECBiBfIwNgMY0AVc
+			8elaAADJHO5EaY6yfj/w/tGFJAxmhdoxPMrpOSdz/oDvzhBko5rW
+			DuDyZQCB8AOHUCLigIh68Xl9jEFYOwnOXEGKwAEjlrKABxu16YNt
+			LhIBBXdsG+yBj1gIM1RihxlYvFuN86kXuEnxBMbIAA0QvAzZ6OoY
+			QABNjNEM7nnXO+mF0t8EMEYUj+goDOP4LfVwtio60xnAeRMjW23G
+			BMDYI0mIcDkDRdwiAeqKIUUOjpAhJjPQsHIX9neXdNNN2pRQdwar
+			uswwIbw71y948IY6htdA+6IAANIZg1RjA88gDyLt0rPgoBuwYMgi
+			pQ7gSWDQC+NIyP0sjq0uoKxQIHGsO5O/hTUDkDODgAABwBUBEHGp
+			fHq/We5K3F1aJSxKMmH+Bcd4KviAqHR8et1sQrh3NKDYJZO0lYij
+			Il7UONDHi3HAuEJwrxqxc6X7orKbCrj2DeDufIzAACSGTTmx34P3
+			FYKiFIFK2iJEUCT/cJMIYhVOeu0wPoVrF4BgCByxJTdjGgYrEgAC
+			sQyCnYqIGgUZ5oaj1T94uYBYAg4IegNwHQAAWYbQUQAAWgbQUkCk
+			EgrLMDMRzBzQOUFYOQR8FzYKnxuhuwLAPAT4rxvZJYKIEgswVwJw
+			/g3oIYVafYXwcaw8EorAGQCzIwZoLhzwT4aDBYZAciRkI8KooCiA
+			2gP4H6+gUULoUQL8MAL6lhvY4INoS5Z6qCqRQALIFCvoUwJQE46o
+			Jj7gAAWrnEKwogPLlAAAQwHgpIQIYIMwAAcweYcEPEQ4lKrICAAA
+			RAIoUqZYX4YYXwIkSgIjyb76CxWY/jJB3DkRSwJi40DgKBYg3oH4
+			VJoYYQ3URAlag4SoIaSy9B4AOQXIKaNgfaW8VcXIkS0LTAHRlgBY
+			fICQdIDcYgDYfsY5dKQgHIJxrAKgOjRJWAEABw7gaQL7oTCT0gvA
+			dJowAAGIUR5pOycEXQkyOYq4WwKJkrdhdIPgXwMAACtCH0cceQgq
+			g4MoGZFwFYCIGwfACsfoCoekgCN6QgL7j6V4H8WpWCg4T4JEOIL4
+			FSvox5ChCwOgYDu0eYkxqQrocAMxKAdoejcYSgZTOAfof8ZMi8eb
+			yZ+oGB/AGwC4IYfT4oFQbsmZ86FAyhsQPoVgj4BQByu5fQBkC4AA
+			V0UYAAIqJguYbCUcbsb66aE8k4kj0ZcwNr8xlwXAADLJZahMp8lA
+			qJeDjoK4FINQfoxIJgXEs0qyFADgEyjAOIThA5roDYBYhgVoJ4FZ
+			nIDDIwoIaatghsOgcIeatUrYlEqIecqYAAYIcIWAAAVAagS0wUx6
+			WBKANQGgQQf4M8y4M4TczS+iFAHgKQNgAAKIOAppryrCrQL4FYC4
+			AAMqBIAADhpbkKU66gqIb4eSHwWAbaJAToaitwc7eL9sx4k0wkww
+			XwcAVwAAVYasaE4Mk6iZkpsg6APM6QPIRE6o2CFALpjBjQISVyC4
+			AKdhTRXKrQ6QfgAE20ZLu85glU4b8wXwb4Vs5AawTM9Uk7aYsQPA
+			HgSTGoPk/gQs/wQqAoAYAohgN4TAZAAADYEpz0+jpk9gAE90+AVc
+			+VBkeaVI/gO4HaZU/k/s/6ArSrS4PQVB88T1CjhNB04s485M5dEs
+			VYE4CZLwOQHJlgO9GgO4RVG7BZ5wFIHC/TzKZtFjndBwYQcRKgVA
+			ab38TFIECgGQDIHk1YGIPgfwMNKYMML0D55wLAPMGwGoJMdypzyg
+			hDD1JU4SyUwr8wZIcqQYUIaB4crVMb963yBgKo7oEoMQfgItPAIo
+			YFPYYB3QAgygAANISLZ4EAFYHKFBvoACBBE4PEPYDEuSvwq8kggQ
+			dAexqgVp2wAAQYY59wdguFN4gjChnoMDoQfwfqAISAZCPBGE8tUD
+			9y3wMQGSPAGACgHofIElXAEg9o9x1BXRE4PYVJDVP47h3jCQ4ISQ
+			ITsgLoFU1RQQlgbweKtQJsOgaxn84FCj8S+MHw2oEA7gOwXQLKnS
+			tNVz8CJSRIGp2gEwBwGIe4CVdwCQfFeMwJyQC4EBYgOwUT7p3gAw
+			vQAAVQJpYjKEnwrQb02wAAH4VDcYck39MYRwIDsgOIGQDRsYXVOY
+			eYfQ3dcj1g7Q7jhqZQfYdoAIcAEdkgEaEx3QF0g7jzkB3gLcNo5s
+			OBvQxwS6kgAB/5Rwr1IE1hE4TQIhEazCzTwJPdjT1ihqu4RAIhxo
+			WwWoW4WssiAoIILQOzBANARLBggQXIKp8AI0o4x4d6nYAADwTSqy
+			61FgERLQAAboMYGoACZE/RxAWloj1gD6JoAAPQHj34TtvQToMlvr
+			WZ5wJQMtAAIYLr9huS5Y4Ib4MiqQCpsAyCE4KwWZcoVs3NFkjKAT
+			8tB899f05Sg1uTphHrjoLAFk0AjYMoTl1Cap5wLQPcD6GCGRuQEw
+			CBmgZjgAAEbA04NoXx84SgaDQVBig78lJx8r7oRYYp/Fz7hMlJmx
+			nAHoDoJYfwIN6QIIYV6rop5wNoSwYoAAEAFkDZyQEABo7gaAL6jA
+			39RIyINYXp84SwaN39FgZALRzzPZaIP4X4Mat95LaAvQrrG0xwAw
+			fABoddXIEgeWAxyJ5wOjJLcjcxuVRIbQMaqVs57Ixwe9SYHgU7cY
+			Zy8NN9nYAATNn1toaTbAYZxKU1/TT4D4B6S1jwAATgTQToTINGGa
+			NZ5z/rI+BYCwD0OJ1BDgSNZIAANwGNiYx4aDfEbsCFjRk6R4coM5
+			KAcQeB3D9SnMkkk2FDLslILAFpHYHwDgJofksj/SAoBIBo1gOZ9I
+			2IDA2h3ieZTgX6ygC1xwrbt5y4W4bIAAUwbBStz4XR74AAIYDxkQ
+			QIYDWbFtXmK7LrGduwHwSs8xOwbwFGSIFBJBo53VD4AEtpA8AUAh
+			3hDgJQESu4VIJg/i50bIoQQYZAj4QIYx92K1uQN4GRQwSAIB6VCU
+			+YXgb0+GRDLoFYCpqANwG7pISuYYSoNmY00CFGHQsQOATQ5gA4BT
+			6yC5DmQERYSuELnpmk9Ig1SpGQUAaiLYPoYob6LmXYE7nwZgLijC
+			WxPYRoY4OZaFMGXa8wqIL4GBzQHIDYIwf7/D/KEKL9BJzyqiq1Ei
+			Z0CwroJoEYswIIDxAAFq4YAAcYeaHwYYcgxoV1yoc1hmbV5JDhYR
+			YgJxLIAARgY2d7wLweeS2IBgAxkQQAIA0ocQbYcgaoG2mgGwe2m7
+			3CCwD4Fb2ANwS7VDAdJNa+lAkoGcJUw7UocId55skMkckuoipzWL
+			WYIoiYf901vY0qQgEIFr8wNgSoYmqD1hDgWwKZkoJIEA1mked5M6
+			fesKX4CYBM1QPoH7HAcYbwcwbQF+vQF9eVeaOGrerur+tz3MHUHl
+			bYaAdF7YS5MmwaQghxuwJgEoLhC4OuyoRmy5sycJJxKGnzVDzmxr
+			naHgq8hcOMNg1gT4Z7BYZYc1Pu0B3RyivulqaobQawbYaYH23AHw
+			eG3cIyZ9BLEtAugdAe1zvADh7gAGdBzwBIAaW4QYYQNM8wfJcO4h
+			iRG4KI75HgDoKIfQIW7oIQYu8F7apydA4uZgqoypkTGO0QAAFS4A
+			GrkwEttAfIfwqKWqW4ZwdKW4dCNuod/RDgQAHULIHKHAXS97bK+e
+			6hiQDgBx6Rsh4YVwVIWAUoL3CgL1k6py3JQ2TN24CM1S+wCYA6R4
+			R2IFlyvtZwkYcwepqgPiT5lIaqt2oVjQCXELeYLZzxpQgUQEQStj
+			5PBJSxmduwpg2IAoC4fIGHI4GAbHJQbC8zIsRYOS24AACQDApKz8
+			A2PB1oABLNYgoEBrowaatwOwYRDQnsp1ohXySQWYKMuwbYdoYYAA
+			TwZ1q2KvHxG1nIJ4FEdwJIElcISwTYTgToNgM4MwMsS680TwOgUB
+			oeZSpxsArrPDEsJJsQuwN7ur9LuWXZDgQ7tYAFRpd2WwAAXob049
+			N3Oo94EgCUuw1w2FTwroFwJAKQL4dgYYWlK7GOBR3ADLcqcKg4Ob
+			tAAARZRIyAp5qgF4URA4eDDeRGJfGpzwEIBwruxbNYaodT9HUw63
+			BZ6QOIHFq2CxsQJQVwtQZgRgOSVwaAX40LIWgVsKqKcN85FAMVth
+			wrkYyQLQW2O4U4a+PejdV2agAAXCmaNgfQ6gQ4Yc0Cs3a4yKvKqY
+			G4Q4qQCRkoN8ir9IZocZaISgNdJwcAauoDGL5b5r56cOcxmgbAMJ
+			qA3oU4bKUoLYWvJnGNz4HDUSwgKx+gq6HwRukgAAcIeKAPhIrYCK
+			hx6ba924AyvoNCAHOE3ggQfofhGQQgKo2geQdrSbGII4MRMoIwMB
+			AiZ4GACpsQZ92w3tyigNyJPfM2qAMYFp4AS69itgj4TQZoQkQZ9v
+			nwoI1Q1gNNdAADaZYgQoZLF4P4YsQ0pwfoffFYJY1gfQfGnLEDAr
+			A7BNHKZwD41QAAcFxY6qcxSoL3e+/ulCg4MgFpE5ELshPw6im6Dw
+			csQvuokwB6uxsYHZ4YCwBRQwTyLSRIXaAIfe+ggwdYcZ0oRYL5kv
+			pmSrAYFQHRCQMYRAWacK5w4IZfGxzZ8Y0wJgWBPYWobrg/fmXb0h
+			QhQwRReA6Ie5CxZLbAbQdpof1Ygvu9mwGrNbaY/gTAaKtwOAX5R2
+			+eoQZYXC0oVIQ4gBhAD/ggAg0HhEJhULhkNh0PiERiUTAAVDomAB
+			4UrZikdj0fkETf8GMQtDAATpGEshkDXdz3AA0UjOAD2fj+lk5nU7
+			nk9n0/iIBg5fFYXACXIkrAoCfsoZ6IADNczCoFVq1XrFZlgLAoNA
+			BoGh+AAjCQvACRZzlAB5YbfAD6f0jiK6UCCAC5Tx/rV7vkSBoRox
+			5VDcAAHBIMvuJnYHAYCACuJ4qABKEARq9wkZfW7aACobDqg1CxWj
+			0ml00LuRbFIWACOIIjAAOAr6ACnaiUADKcq+AFxnGn4HB4USFIUG
+			QALYuN4ACAIk53YVuSbPtT8uURfz+pqePBOADXZC24fjnQDAoGAB
+			nRq6sYwH/k+EHDYM9C0KIsAAwCoLnb3fqRjgXxugAThpnO3r4wTB
+			UFocuQUgkBQAFgKAVgAEwIgQABem+VwAFibBQgAfJ+phBkTROibG
+			gIAAgA+JoACeFCBAEAUMj+YpwAARBlHGgaQH4fZ8gAQIog0mp5Hd
+			FElIUK47k6AAbCWMUluEBwDAGAA3hmDgADCooAPm9ACAEoSCgAfB
+			+pwX5xHgABJGecwAF2cJ3ypO07uGEYHwyTwkBOAAfA2BwAG8d5rA
+			AV5sE8ABuHcajen+388UmxKhKEDAGA7GEZAAGIMB2ABtngfAADcX
+			zCFycE6uukJ3HRHJDiwEjeu1SkThGGIgAANRIl/WzhzIgwNAWA4A
+			A+B1inofamm7UYAWUptf2labEsYxwwS+PYcA8AAOvoABpnUZIAFq
+			bZSgBOjOJxSVqXahrROYBAKAAJwUC+AAbg2IYAHifShEgZq1EktN
+			+H0figGgX5VAAUY/ivd0FgeCoNrWUxtgAArDYhjeOY7jyG2G9BMi
+			KjAmBEyyRpGYxxlwzpqEst5+yFj9bAGAMsBoDT3ikFQyuYA4JgAZ
+			51nrLpcI4aOiL4WxNj3DRRkNmlgAHFY3EuY1uhQGupa5ruvTuAoA
+			qEJgR6COYaS4HIMq8dh7rUYpxFyABlnLXx2nudOvuE+gHgAF4Lhz
+			QAQCVYwHz+c56n2ABBmQcQAFCau8num7Rk4Owlu+8O9ODJsnyjKf
+			NzvM1WIPeGxdD1EErlK6hCwFDWEcIARAACYERWmx6AAY5xvYYRwF
+			oABznpHuxXh1KOoIkbm6CHQOiMAAhBCKDYgOCSa8pyG8kJxoAHMe
+			jaAB4y+nwep4gARQvQqeJ1rV47RhwJwzAAKo6Ez9zhrkDNviuE4K
+			gAD8DrfQZAWK8QgaY7GijCHG+YU5nwADjHmzN8T94KF7LkB8B6xQ
+			sAnNYFcFD/gYn7TOP0eyhFDLgHSMoAA2R2DRAAOkeo5AAD8H6+B0
+			7H3SIYf9B8GIAAWgWBsAAE4FIegMAKoMb48khCrGyOthg1m8jVHb
+			CV0hwByjbGeAAR4ZAZkDTNBUvYFgPAoAAHcUg14wGmBoBcrwqwmg
+			pAACBZBIRyPfAAFgWkaBjDmHkj6NMfy+FyASmMAAQQOgQAAHAGbF
+			AggekQAQ0ROCmjlHkW4ZA5BegAG0O2Fw6R6QycnCVSz4YbnCJGXE
+			kZSz0KYS4B8CBGHmvPA0A0EAACuKDUkM8dTRRGDLR6Lkb6dR3j5Y
+			O+FEwsxKh0AAMAVIjZAF9YyAkAAexVFuL+UaZ5VgigfMsKkJkcAI
+			mMJ+v0poWhajYAALYb6SZsztK0XJMZQgUASmkEIDxloAN9BwBlQY
+			GCuEHJxFNvL302jgHgZwl5oB7D7dy0ROI8B8jtREPxEpH4dAAAuA
+			xLiyJELIesCCV4AAGgHMsBQBJJ0xgFAAO5EajB3kwFgNsdichxJ1
+			GqOyErkzfwTQWPp8ibg0g6eCN0aU7i+hiEOLEAAKwdneqMToBUhB
+			lBcOOCuehexsjvVIDMmYAHErRqfWEvpcqomOCMZVQEAQABLBC0EC
+			cgwAIYRWY4+NECmjyH0U0XybAAC8ToAAX4402vCNoP+ni0h1DiI4
+			IkLkZKxF8B4FINgAAohwEnY8jxcgzgvAyAATARFZmlDYgIAAlU4G
+			hsxak0cVQLT/BKBCaSyEVgepGAAESewAT0pVYcidOpNUvAAs2Er3
+			ycRJVIOaCIAD/uldCMQVxuBXiQDbaorIEQMAfIyRsAABGM3UIaAg
+			xsywrAuXw2s0wy5PP/FRC4/y7LvXvvg14Swbwg3BGeMC+JQAAo0A
+			AGMRAswAApBw4S/JB3aorHKGgHBhVgmlMwAADgmFxjrHw4rAuF8M
+			K/HYORi4jgxnHHyPd3OGSfAsB4E8AAXxCCtAAjRLF8QJAHRWN4Ms
+			QQHpXNNXgpoIhNwqHbMTEmQchInF2KEQYABcCdLFkMnwAmqAAD4K
+			pHLEmKXxAMsEWoUj8BEkcaYX0CwABJFaNMt5ccmZnzQaUe4806iQ
+			DODcAGG2L5pJ8FANwkAAA9Cocu/Jcg0gwSMJYIZsDShttIJS08xs
+			6aLJ7PBYM8WYrrOvbysQ2BkC3AAJsO2BNGE+VwroNIj5M37rpfCs
+			oABkhbh6CwCaEStDWJelAUkWR6w007rcigAS5TzQiGgGFnQeAbb6
+			UsoWtScCwG5TMU41jQDiuToqsIqhFM+GSLQTmuCe3cWKG0SwxcIA
+			ni7n0gwSAQvWFVG+kRSyfjzH2TiPEaBbDenZpTbGtwG44EKDuWoY
+			AWEnAbuoig56FvnR4AATI0UD3tkBmxvIjgxQ9HkO1A+9SfAkBkEI
+			AAZRFC1u2AZDOGLXzSEWD92YSK0GM3oQZEZIxcKqAAHYYQ3rf0Vr
+			GQYxpQtT5XKFjIxx81i1yltIR4oALfUQYOOse7ilRuK3aSNxJOCb
+			xV5TxQndtFii3CmC0AAKqrlWFANU0AZRdGcOtFV1F0bp3ONx1QrA
+			bWrxxBW4HNANgMFeCgCRechm+9NAAMSSiHtk6oHQPMxQC5CKYWKG
+			QkyFgIzSjWV62h6CtTDKaMcc8fRvjxVIK0bVMxmjp8IPOvMfu2E8
+			EmEJWYbNfmKCCKqoowByPmdSq5HPDoe4iTb6UqznwAOd3rTzs2TT
+			Rc+AByZ61ZzLRrMRHJYrKblD/YPLtONOEDsGVJQt3Pok215SF86V
+			UtgDKD3vIgpdKvGv+bWtz75QjHDqcmVH0Ey8wJzTqNSBAAO+e6IW
+			BJ20mgxGtsDjFBShsInAuBao0JSHNhghUhHAABZBKg5v9CsgFAHH
+			rA4hNhmLcgMgQwJCdsGp9lBg8AbFNPjGMNSiDm7h0IUIVBlBzDeP
+			YuZCbmDi4imvnCfJRmxDHExkVgKAFCTm/nAgZgNAfFugHLQiDrli
+			oh1HcpeoZBYhuqJK8r3N6gxN+kCCVNoDEhuvNAAAUBPQMuynNhDg
+			siVh2ByjCQOitAbgmAyAAAqA6BMMWsnQ0iHpIChAlgRHrA6AalNJ
+			9oCv8ITI0BqB1IVOwQMpPIZCbnFQbElqUl4nrAVgKmtgWgLs4ASA
+			JEKsZDEBsNYhSIoAADpk4nvloupsChBAdJag+gcFNDSv3GDgYhQh
+			mnuh7HwGpBsBkmWhOA7nMFIwpw6CfjzD0A3hMBkEwASoexfo/AYq
+			MrSghlZu6CvCCHFBnBzhhskBuBUnuh5kcxGHjkMF5giARApgAAdg
+			PAjgAJBjEBxo7A1heDCBaQoCBxSrvBBAdrsA+gbluRWuBgYhRiaB
+			zB6xamOHkgABQA9gogABqBiKlRkjEvePfPSi5AQIMuXw+DkAUijJ
+			BmDhpB0hjp0hthTAAJKRuPSKxJ6DWAcgOgigAAiAQgpAAABgBjEB
+			cJggAHthwgABmB0MRx5qjAuSMAABRAkiMSeiehuFnAVBPwMh9ovm
+			OBwBqGsBLg3uMEgGZyGi+ADgFCvGrSPAMAQkKtGNSgiJuAABPgkC
+			MGQoHh5EBhTBphJRAszi5D9rOgqgVg0G/HAAAMdJphiEchNOEC3y
+			mrUt7ksBwgys4JwsXi+uvjQAwmjrUGNyqizs3nuhuIXSrjTgTgan
+			ngzBGm5Mhi5TCAAA/gdLsA1NALlB+o+hchumFm4GWnEvCN6vvtfl
+			QAmATAuCKgFFNBXhuKJA5BfjCIIIbLVBGuSAAA5JFi9wkgiBVvXv
+			YmPhlBbBPgABUhEHQTMDySuFjAVsFsMAhJDxQRnIhAIqVRqBiDHh
+			rhNqVh7onTsqoj+AigSAqpCgQMUNalijoC3BPhqQVPgpnsbksShI
+			yAnCyCfwkg/BjScBDhknHT/lfh6B4InMPDjn1oZTsjyALgQDJA5h
+			PBoSYLuLvAXoRBiAsAYAAIjChBWBrhNE5BuMWQs0MCFC5AXgMHAg
+			zgaA+pjEVgoBZFDhZx4rMMGhHAfjYA1gYkjJICPFlCcA5BguZBPE
+			DPnmODtGDhTBCAumhBehUUZEEuhgnA2QGgfAqg4LMPHzqpviKgEi
+			YBVBqhLychyr8CcUH0uiEF4APAHiMAvAYA5AAAFADLsA0heGLhWB
+			tInMzKwsGgZo2EYASGggXAKD+FrAAPRCmhkPLgAUgKJKsuaGPhrh
+			juOBOg8jvRe06kFgGAIH/A7BRlDgFgHl5pnoBjEBggrizLwGDhIh
+			kg9JNB2qi1TCeq3jAgerLgFgDJEArBZo0BWqZE7GbChAQrcAfgOG
+			+zRBlPBjc1ruoifnTJI06GpKfIShKg2AegAByBtCaVfklAUAbgkE
+			uhChXuOuPnjrbppBcApj8LbkVhThprLhhhxNMV0irgTgJizAzAZg
+			+Ezh/D+JzJ0P6D4LwDHAvAVCjLNrOgWQewTJRiDDrCDFmiYECwVB
+			NBpEDy9sC0qskMlENBSBD2AlKApg5GYAdAoA0nUP+EVhh0TOtqrh
+			VhrQ4hehvV4Ru2WirGTo4A3gcWWCCEMgdBTUPhoP7jS1nAABKTxg
+			0AXCTifBdBwk2gmBXlHv8rvBuBnlfBMg4yVjsqwWhkqGJEuA1BJF
+			fAKANwjmPQ7NMgjCMFsDWBeBvsWBWhrT1jfW1DRgfgPgmI7gWg1g
+			ABihymignBXhqgAB4GDC926zSLsA8wRyYSiiOwBonAxTHsHqw1wL
+			Sg2wiByBsxZXBFpAOgUAaAAA0lejCjDl3F4CiCjBPgjiMBvB4I0B
+			Hhjg7GYyrXVDFJRgpmegAAigRAqSgtmL+hciOWOCrvlG5tVDTAmB
+			YXIBat5KxBhBVBHkPBKU+3hmNghgu1dgkgyBCJSXNj41FjEBgArC
+			zKFwVXfXgKE3xjhvvg2Ab31RL0TgwTHhS3m0YiWC5BDgewOQREuD
+			ShRXmjNCOYCIKVzCaBOA6nCOGX8GIGqKVAmg1BGAAAeAprpuhklg
+			GACEsBeLxgAAZgLFihJhlWEBsB2Is4MkEgKgFLOg6AdwGibCvAfL
+			1rgwuCdi5BiAs0TgdpZjTBoGlAcBS0Ph8jsoKhzTLLPA4giKvB4q
+			Z4amPsnEVgxBDBYMAgcnMElg8x8gABDR7ENBv14U2034tkUAYgMg
+			eCvgZixBeBxHzAjhWqi1ECdBkgtIeu6DEDSyjlSR+iaFoHjzJBLA
+			3FdBwhqxi44GvgKAOCVmrGsVXVYD4gDlgh0g1HAukk4hDhhrph8B
+			+IS5JkTEyDHCwC9AVgLHAgohY3IBaXtiQi5BggsCzFAlBjShmL0g
+			dhT0P3Qmvh+KfDahCl7hohgBVovVvZVGOAYgiAsgAAuA/SQjyC5H
+			XH/BTgloyDbDcBgBwBZZok7xLkKg6gdXv2tE2gkMxySiKYDAfYEg
+			a4FjSBUoWI7o8zIG9BdhRX1BcBOUdZzH7sXFAUyDJgz2WYNjSsYk
+			VqpoegIADE2hDBhrJnvo+6CklmbEVouA8gAAWALY6AXhRCaROZUi
+			P4kFBhhVasW32CcgnBY0f0gmpVSzpFFhXhIg3P8MQ6NowOhrKjcA
+			dgog1DSgqASl5o3I4BRBpQGzX6flbFMFNA+gfw4hE1rMoEcCQmbC
+			DBEgfHZg5zlCtBY3tgq0fP8Y/GaSFKlBQg+3l2T6opsysivQ3w4g
+			Ygh5q4SCqi5BXgoDJUCpEA4BbyXkR1O65Elv2AAA2AbC7GqOtZEE
+			RE0iQpBjHBIDXgAAzPFifBbuXAtpzgAJhpimpZIRihQg/T6ULbEL
+			HtSAAAjgwhAAAXy1d6DieuuEItUoeqDQMhJhk2EbVlp0anAg0gaB
+			AgAAxBcjOOvm8idW6ggK1M/kjAbu6gAALU/wTCDB2ZTgABnL0hN2
+			R1Mx44oZoFphnheBTgANpQ23R7gLvaDgkgyhCkWAsplbaiWRTxUx
+			VgABIBkXgBrh2UP72lfpBkIhGAjZnPLCYAhzna07yZ5CRpwqVJ5p
+			pbK4glSBwolZ+mvor0PhKA146KfGi8BML6DgjAxbYgiAuVd7WiJ1
+			JhsAw3XPDEkhCBhS75T7D8RkqJR2j2WAUDjCxhOBlgALjOqcOSgg
+			/grM4sOccsmbWgigvWEAjAwC9cWCHQQAAWcCzBoBzr8BNBm75a98
+			mFKAjgR8kgpAUw27kGLhPhqwVNb7SuDA5SVsQsR8xM6Ohge6EgmA
+			0BE0QKVCFgxwrBOQsBUhqmYBfBv4w87Fpjioeg4AcCoBLBowVR2w
+			0aYKjVShphh14O0S9OJdFvdAgAsJlYOhFiGBPXckukvhChh3E48s
+			59QFbT4AABFgjmF1LiYAf4gRfMChjhZH7BXBHXE20dYwJaDgYAhG
+			HgoA4BJAAgFgHAJheAqryFAppA8hezcolPc9ilJkyEsA9VhrtgBr
+			sAWBQQMqWbRrqcQplhUJnBe2VoZ5kduTsgPzugCAwsVh1A8AmgNI
+			p3ehjg7oZh/MLd5k73i3j3k3lgShO8hBuYhLMd1hShBzchqBh9Fe
+			C2AgJARAUAXBzBrhohlhpB2BjADBOBnGo+MFpnonpgrgV6jAjBWl
+			HhduXYIo084adaeXTwMyCeU10gdefgdBg+hBghbhvBTACBaBshRj
+			Q9L+ejgAQgIE/g6gd3vhFSdAAA9OY+mIKzJNqknhahMeA86enXhg
+			w+zAwhO+0hOhMhmhAgAhnh0GseyFKIMnrBCghhRAABVhtHzbPwEJ
+			SnQh7Ekb0tpyEhiYw1S+53xg9fGA9BC/HhChEhijllCwEfFE7jGE
+			MhGgj5ne9o++/etmuB+kgJNBlj2BaBMA8AAB0BvlH/L5Jg9/Yg9h
+			CfaBCBBhggz1yh5i3fXk7RHBHgkEO1C/PwD/QmO+x+weAhihXmYf
+			e6f/ZfZ/ahAhgmfLkScfnaOAAkVhIAk14fhjkfiwElp1S5mZnBdB
+			P7jB0hw/LfsCDiAggAAgUDgkFg0HhEJhULhkNh0PiERiUJPcVPaE
+			jCEQbCNAAcjyb0TkUjkklk0nlEplUrhoEAQFACPJCuACsbTyABbW
+			rXgQBAMsoEJfL3egAWiXOwAY6xTAAf9PoNRqVTqlVq1XrFZq54rh
+			4Q9fQ6LYxyADcdzUrVptVrtlthQIAgKACMIypACrm85nc9n9uhr4
+			es4Zi5UQAYCoRgAd7ocN+x2PyGRyWTtxayxaUeZUadaCHATMczBy
+			mj0mltoRBAVACEISgACqbTwvU8AE+0jSYKtACySpzxWM03B4XD4n
+			FtYz5AzY/LY6+cSuAquaycvnG63X7EDEoSFgAOQ5RYAQDHcoAQbH
+			cHVtb6wAAarFWYAYyvSwAcLXZIAfr7fXZ/z/wBALiAdAgHHTA50m
+			qd5lAQTZmkIp0BQlCa2iOEYrAAKQUjIAAflUaQAGEcZ4p6q53HOb
+			4AGK+gAGeXpUAAeJ1nJCkaxtG8cKoAcdgGccfHGfQFHoDJGLGAB9
+			H6fMcyXJiIp+n4sBaNQACAD4ngAEROGWABvnkfCpHWcZtAAYhWkn
+			FsXgAep4nZJs3TfOE4oQW06FsI4kiMJI8F4LcYnwd05UDJoBgCAb
+			xCC6h6n4CgABgURmgAeUkIkf5/H8AB7HnQBsGQW4AGiYBVgAbxom
+			GACiNlQVVVXVkJkrV5KjVWQ1LEsizLRVtcwABoDAeABECKU0yHKe
+			wACFD8IoWfj2ABGZtgAYZVkiABoF8uyhqLXVtW3bjisuLRS3CUpX
+			Gu6hcm6VVu3U4QXguHAADUGpBAARZmPKOxgG5S59vacBqmPUZomE
+			9z4AAdBvGmpyoXXhmG4cvwW4iFplYoZRunmagEEiZA8NqAIBYfkK
+			2CcE4vgAJYSz6LJGE+WpUFPmAAGsYxaAAfJ7Jwp5/5Fnme58q0eA
+			GaehmmDIRAqFJBmCjp6H0nGf6glYBY+AA5h0xIPgYE59g8D+vHQc
+			+w6jseybKlgw7QMJObWThWmwTQBF4byabNuqIgoBQMNWIRQgAUBP
+			7+MnBDJS1Lbtw/EcSgwF8YBZv8eb59gQeoKkAYAy48vvFc2IIQyu
+			KoUDQfoa9IGpn9OZ/N9V1fEE/1xPjB2IwDoXQqgAeZ9RJ1mzUJQ2
+			rMSdptnqZQd+KHZ+eQfnd+X5meiH54hl56ReFibLXFsbRSvV5ueB
+			GCIVAAOodkeAA6Dn8xHfSR3ufZ9t1gV+AFF7+ZehYGYUhwQxhDWA
+			B2nuOp9zDADADAOAANwNxDAAA0AcEQ9QUwPBSj8ccAYKQVVaEKDA
+			Qn6C9FmNowotBtCkgstxdoOV4A1ECAAVEKxUBZhcFmEcMYZJwAFD
+			UAQ4YcDhAWBQA4HBEDEDcAAeA+B2wzTiS4mAcQciJAABwBIJB8BE
+			ikEQYsVRixGixFlG631xClGmOoZAABKjKD+hFncWkbhCBCFAAAVw
+			VpTFBHEUDaQwxojtHdAABY9AFFhH0WASAlSAE+M+Jgyhyi/jwgED
+			4DwSnePAfYbo4xsg8koDwdkl02yJk1Js4gIpPAiisMUBYEgEAYY2
+			HkAA4x5Ddk4cIBgBgHAADiDiJgEgCAZHsE+XQT3pi8lbL+YBwQgT
+			DCALiYwuB7D/HkAcQowkpu4d1MEtwBAAgEAAGYGgfAALtB0AAPs3
+			w+kZQhNKck5TIE+J8IWdQhQ8ztDyMsc0iBQDQMSPwfw+5zFWSeAB
+			kjJglAlhgKsVYrBVheoMF4fFCUvz5oZQ0tQCKIAIoFQIJlFQmDEH
+			Gp4Uw0kzj9H+8qhxKwdgeCQAALoLg4AAHEOEcY4XjA7HLTE8tIaa
+			U1KwBGnAERY07FiD2nwPRdLoAAK8a4ngAKXUvTYiIOAOBEAAFylE
+			qRwDkG8FCqwUGiMJqVVurhVAPVfA8cwY4GqyAai8tMYQ4Ra1dIU9
+			58ESomL8H6PaKYRKxVsrxXkqLXmvCur8K4FoMAWAyg6YUXw3hXgA
+			H3PemjU2QAxAwDsACUQ2GKHOPIcK3xjWbGNXqz1nyggYtEBiUMnw
+			RDDHFWsU40xKn6o/OSfcao2BWBWGlTA9rcU/B6M63gzrQW/uAUAE
+			1wwTCXuMJeDIQhwDxGwAC1YlD7DwTHGeOwEwEgXQyCpDgMgMg8AA
+			NsbI3BshovIGgYF5xgXBvVeslgBL3AEcGGSdYhQHgRAaBIYw4xdg
+			AqCukdQ9RzQUV4BAAAPgPhKAAEUEYVDaj8AIPgSeERJiBwoIEeuF
+			x63sw1hsqNphRYfFFS8eo+x51DGwJ0pV+gAT2nw4gqAKQLAzAAFk
+			Fj/ALgLA6AAbuOxu3xGDj8YLOrqYcyJkUlYEMkAQC7ksLoc8nBza
+			610cA8Lmi2G2KcAA1x12+H2P0/ptWGWOAACACAJ8CgfCWAAGoGwg
+			oxHcPIdons5CeElnUSQ5M8I0yNnvPhVgM5/AyHzQQfMmBdAYA3Q4
+			5R5khF0NwVi1B0RXHwPwe7mU3M7amoYE4EwXgACQCQLAAASgTBaA
+			BQk1haapFoHbVgdhr6vNpn3WWsy1Au1sC7J4cwm67CbTkCI6x7YB
+			GyO0aOWct46HcNVSI+R3n6H9SA2xkmdk/ZBK9XwHAHAhAACkCoMg
+			AAsAsDYAAGQGAeVOPYwF6BgCd3YJ2ngsXC1J1pvPehbbRgYDPvkM
+			4ad+BpApv8CjQcWFlHcwkao61IDVHUlseQ+TZaTWKkhJRKgCgDJg
+			AcAZcgFAFAXqICYLgAAtAvuIFIFNvAJAJx3IQ7uWDuFZy8VisBK1
+			Z3rzXmxpgE85ASDrngOgi8/CKDToQNAcdFBxREBDQR9D+S+Oweo6
+			NlqAIJ0s/o+dKRmABAOAvGAE5gIEAqWAALrXYAWAUBtR3Cj67UPo
+			aXbRpDM7gMwXXcxdDE7sMQdveYi837531AMewCgx8EDEEnhQSTEC
+			BLsJ4FvGAWJUPTyA9Jji4TqLYcXlxxDN80M0ePnR45C793wgIAAP
+			AQAAAwAAAAEAyAAAAQEAAwAAAAEAyAAAAQIAAwAAAAQAAENyAQMA
+			AwAAAAEABQAAAQYAAwAAAAEAAgAAAREABAAAAAIAAEOCARIAAwAA
+			AAEAAQAAARUAAwAAAAEABAAAARYAAwAAAAEAowAAARcABAAAAAIA
+			AEN6ARwAAwAAAAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAA
+			AVMAAwAAAAQAAEOKh3MABwAADOgAAEOSAAAAAAAIAAgACAAIAAA6
+			DwAACKEAAAAIAAA6FwABAAEAAQABAAAM6GFwcGwCEAAAbW50clJH
+			QiBYWVogB+AABgAGAAYAJAAtYWNzcEFQUEwAAAAAQVBQTAAAAAAA
+			AAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARZGVz
+			YwAAAVAAAABiZHNjbQAAAbQAAAHOY3BydAAAA4QAAAAjd3RwdAAA
+			A6gAAAAUclhZWgAAA7wAAAAUZ1hZWgAAA9AAAAAUYlhZWgAAA+QA
+			AAAUclRSQwAAA/gAAAgMYWFyZwAADAQAAAAgdmNndAAADCQAAAAw
+			bmRpbgAADFQAAAA+Y2hhZAAADJQAAAAsbW1vZAAADMAAAAAoYlRS
+			QwAAA/gAAAgMZ1RSQwAAA/gAAAgMYWFiZwAADAQAAAAgYWFnZwAA
+			DAQAAAAgZGVzYwAAAAAAAAAIRGlzcGxheQAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAA
+			IgAAAAxockhSAAAAJgAAAahrb0tSAAAAJgAAAahuYk5PAAAAJgAA
+			AahpZAAAAAAAJgAAAahodUhVAAAAJgAAAahjc0NaAAAAJgAAAahk
+			YURLAAAAJgAAAah1a1VBAAAAJgAAAahhcgAAAAAAJgAAAahpdElU
+			AAAAJgAAAahyb1JPAAAAJgAAAahubE5MAAAAJgAAAahoZUlMAAAA
+			JgAAAahlc0VTAAAAJgAAAahmaUZJAAAAJgAAAah6aFRXAAAAJgAA
+			Aah2aVZOAAAAJgAAAahza1NLAAAAJgAAAah6aENOAAAAJgAAAahy
+			dVJVAAAAJgAAAahmckZSAAAAJgAAAahtcwAAAAAAJgAAAahjYUVT
+			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>
+			TU0AKgAANmqAACBQOCQWDQeEQmFQuGQ2HQ+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
+			kGuWAIAgHCQCgIAgDASAoDAQBYDgMBQHAOBAFAfEIGAgBIEAYCQE
+			ASBsVgTFQERSCIExaCUQgWCAEAPHIDAPD4DQ0BgCgLDYCQyBMKw0
+			AQBAGAsmSagUIIEf5/n9K5+ywfZ+H4fR8H4fZ9HufZ9nwep9S8eh
+			9Hyex5HwfJ6ngfMzHge57nmdx8Hweh3nwe56TzO53HvPZ3Tmek5H
+			wex4nyfU2zDM0uTEftKH3Kh/wdTNNNfCAAgFIkNxZFwGRMDAHAcC
+			oPAgCIMhGCQJg2E4KAqDoVAqCwQBdJQENRSR8HWdRwGkdh1nGax3
+			Hacpsngd5zm6eR5HWcR6UQdE/TxMkzSrK1N27by0QgA4DgSB1SAk
+			DIIXOElbg+FoNA0EwbA6DwVh9UQJPha53HGcRqmEcxzG0ZVgHCaZ
+			4Hcc5uWphB8nye55Uvb+JYmlsgxSBoGgoDgKAsD4WA2DgUB0EIRh
+			kI4KApWuKIAAIFA4JBYE7HY42s326zly5XI2GM7HU4Wo83m7HI+n
+			0+HpBpBIZFI5JJZNJ5RKZVK5ZLZdL5hMZlM5pNZtN5xOZ1O55PZ9
+			P6BQZwBgMCAYDwgGBEGg2JxuIhGMiQJhQOSlQqxWa1W65XZ62mwx
+			1c3oauHM5WyyXi8HQ3o5Hq9cblc7pdbtd7xeb1e75fZ0AcAAgYDA
+			kGQuGRGMxGJBqSxcMCIYgEAgGBL9l8xmc1eH8/n6/Gk0F4nm63GW
+			tXS526zXo9Hc53/sX9m9ptdtt9xud1u95W8AAQEDQcFA4HA6Kh4K
+			RWPSwJBKNibvelIgGAwEABwNhAAOqAbi6XVH2y2nT0/NM2422Us2
+			u1WGqHJCmI83lGti/9n5/1+/5/f8/8ALuBIEgaCamBOHAVBaIAth
+			UFYfCzAMJAAFwWg0AAtCsGa8j6QRbAAfZ9n7CcSJOaxqmEU5rGmY
+			BSrObJkHue55nbEsbRvHEcx1Hact+AQJAkDYTBKpwnhuqw7ARAgJ
+			R5EgsiqFgABeFwQgAWErq2KEtAAfB8H2ABAEKXEmzIkZ8RmdxkrE
+			RRtrSWJ3HccptPu/MyztO88TzPShOqAgDAsC4RBgFoXCEL4YhoJQ
+			1T3G7JuuQxAiWgoc0oABkUunxd00AAiU6ABemAbQAF2Xps0ZU6Qm
+			eZhbEsaZpF8UJ1HSbxoH6z59VRXNdV3Xj9MmAYCgwxAZBgGQkjQF
+			oXiGMFex2CoKAYAA5jeIKCsHaJ62ynQC24ACOVwghKEwYYAHIcp4
+			WbdKCGmaJelAaBnFuTB0NUZzOn7L91X1fd+X6ljAAo4gUheGQjjK
+			GgbCcOF/TK7IPAAKAmheABsYqAAU4wnwVY2ABq48gsOw/EMR4Zhh
+			mGUWRIGihxNoQchroE2OS5nmmaxsBIFOGFDkCsIwkDQSubT2NYzB
+			uAAOg6CwADhpgAEjp6faZhZH6oABznQeWnEqYOha6ghdFwTA1mwa
+			xiFUe57Prr217ZtquR9A4bh25g/hCqIj7dPFuAGABBj8JSC42FQA
+			GvwqfGzxAABNxYAFiWhqAAY5km/vO3IYhxiveQMXmTOnK8/0HQoE
+			okCOUHoriQJY2E30VUA6DgIAANYzh6gqiANEEQp0BfeAA1qPoIRp
+			Il+AB1nZ4HW9AXBakoMr2mGVKORn5PqerU7hOIGobieOXtCeOPrV
+			2IQfSqIwiyiXX0gAI/2J8HH38iY5joKPQ/loADOn/8PqGWZJYiPf
+			6LERx9CNP7gNAc8wEwJgcBQD4IIXRClUKtAhZofw9hGAAAkBABwA
+			Bbg8AAU0ISfCIhIAAO8J2KDZPKKAUgyoKQILAWIYQvxRh7HaO0iM
+			L4dQ7LiBUCwHwWhECOGYSQHogBAh4r0BQCXcB+D03ggjSAOrlHIO
+			Qnw+YsAAdvCAVQzgADSGmOWJMOhxDhRYLwXImg3DrIqNOMcb44Er
+			AmBQDoKWfNAA8CAFq1Y4rpBMCRpQYgvtGIIo4AB9ydQKAmAAhA7C
+			CiGEWLsAA8h5D4j7EkcQ4Bpi/bA2IdpCWYSXlFAgBxwwOhBCKGMR
+			oKAUg7CrKNfoTQlAmAADsHIJwACel0AAMcvSfBJmAAAW0wyCh5D8
+			/eREsI4DYGuMUVYvxdidDnJQhMyprM2dIA0HIPAqh6BwDoKgeJrr
+			9N+AAQ4ggmEFfY3h9IuifChngAAL08wADKGWOEAArhZDSnHNcZAx
+			hWCIGOMQVYhnpDzn7QlPZgDlA8CuE4KIdRT0KZmA8B4CQAB5DoEQ
+			gsigAJwHcX8wD+DOkFE4KAZAABuDdHXRShQshXiLCye0YgqWYv6p
+			dTk/0c46hUCuH0WYEAIgYBHTpmaUwNgASeDJ3xrQAANqgT4D1UwA
+			DhqsQUQIhkxoyXzUafo8B3ltFYKkQYTJPjjlDV6tRmTqgFAPNubr
+			cwsB+rW0ILgVwXAABYCwD4ABCV/AAH2wRPguWFAAKOxAAKuAAqym
+			OutanMioEFQOgqth9j5sfZkroFylAxDAGQSEXl0u8g4tw66PDPP6
+			H2PxEZHERq2Tqbo6p1xCiAUkQQG9uZ6jKhcT0XlvwABDuEp9UIAB
+			ljNHET5/IALYAAH4Ps2Y+kRSHZkby0gALTJNtSiC1i3h9WvH7bFX
+			ooBOBwBkOktoz7NXrJwYEAYOAdzhB8EALghF1GDg4HwO8GF1PGoQ
+			eOlo2huUtXMugew9lwF3AsBVaIcg3R8IG7wBYAMDj2W2t1b5tRuj
+			epaNsbyNRwDgRq1drMWB+F1vwAC/V/F03+ABgAAGAsCLnwpghO4w
+			hgCkD4MgYtATZMkvZkEkz2AOBZvqL4CIEgNAlX6CsFQGQABdCyDR
+			trxiPi5F4Nhig2Dy2svEUEHIN2HhPCYxMamZwAAtzUT6Q1Vp8HFA
+			4ecb+IgADCGIN4AA2xujqucPzL5PMnZQyllRtmVgAZYy0xXLt4Uc
+			jvHcOYbYp8dBCgJFbIWlyBAhBEDEIwVgtCBFy0IKoUQUgABmDIEg
+			ABIarAAHHVyOYtoDoxVABoAAMa3AA4IAARteQdg+SkVQrRoAAGgN
+			KK1yyehtDSDkAAGwNAUAAG3aQABKbVRzhIAACttAAAht0AGcM05r
+			CZuMAARdzEqFYK8aIABnDQ2PSUnOo9S6n1TqsSGrdXo41igOp9Ud
+			bgY1yxzXkGIPBbJVsHYexd304RuKoUwfwjjfG8M+d2mK1GABzfEP
+			MDoINCMmd5SE6SCA+5IAAYfJ1/Ai5VPKegf+XEiHeO/CwmxQPzTh
+			hYmpRG+CCD64AggKOgYvcSuo6rfOgAoAAGDpQAA6dNJEa2zAlxOD
+			FABDcepMuPgA5CQXkgPuTcoX7yoEXLAvAA5cH/mHMgAc05sO7nCN
+			4Zw1GPj0Q9N+LSwAIn4BITwph2FSc46DbAJgSwmHUOIQiCylAcAA
+			jFCGhayAAGfyQAGqCPJEJoTz8xvDfkcTEDwHQIgADUGYHhBVuAFz
+			7idoW2gFAADD6/am1iQiVEyuQcY5F0Et8H4Xw/iZS+MIw13yHkgz
+			+UaqSHzHmvOI5PSesWIrRFBXH4PwfQ9+7xJ20A8CoYYiDRMGBHKD
+			eQagzimFMKAMAADi/UAAD/7XW/tr6pelO/yCiZE6MYAGc0aktCGE
+			DsYIoIYFaYSYgJcAp1rcAXMBLgJwYggRgSIXyRgdjq4lL8b8r879
+			L9b+D979z+TWzXAgj+z/D/RHI1od4c4T6NQF7A4eKlr658IpAC4E
+			INB1bPB6gMoMLKgEYETKCE4O4AARUIB6wBEIYAAX0IwABSjZgggR
+			ARoXgAAeAeD6wlJvwJK7AAoywLELIAAVMLh6zbDEIcAABgLaAcQc
+			Yd4AASwTQYglUG8HMHaEyFEIARUIUIkI0CEJIgsJkJ0KEKRHYTB5
+			oEQtYdJykFxz6BSBgMgNISytJ1rvJvgQgP7nwgYF0SgAAacS6A8I
+			YBBqwc4c7bjbzEgAASQSwYS6jhggzbSJoPKKAgbcAcsV6A4EsWTG
+			IbRUQgkUZrgcwc5rIkMRyv0SIgsSivMS6NyA0TUTkTzbp2MUMUcU
+			qZJHYTgS4NQFKG6HMQpoRgI44MZoAaqAwDQDQB4AANwNLrwggA8c
+			67zBKBAEcdilQbgbggoUQUwZYAAawa4dAkQE4EwC71wLoGwgqQ0Z
+			6BBK4WAAAJ8g4AAYgYrPAWgXEbokMb8cMcccogcc6DjDKF8diosd
+			8eAgkeUeke0fBOwTpsQFYhAhUa5frJLJYMwNQTEWyBAH4HpKoJII
+			xKIYUnAAAH8naPoQMnwAAP0oKYqY8UwgoJ4JaXAHIHCWgTcpoAAM
+			0qCMYK0qcLcLrEzswQgW4kUmQ7cmoFrOsnMnYH8nsn8oKuggiYyZ
+			C6pMoTQSwNAEzRzSElJXYBgBrJQNYN4UCMSHgPQOrxCUrCbpRZie
+			AUInzyEb5C7xogqcqi0cKRD6bE7DKLCzBGT6xbMCY6cZQADmMM4g
+			gTDqYAAcAcKkKcqc7kQgbcwIoAC38JyJMDUMBkBDx3LIAgUvsv4B
+			0wLpcwkwzfkxD4Dxwgcxii0osyEdIAEyaxRGQAEy488zUzggsz7q
+			k0SkJPQSoSIMADYegebR8uZPCbINwOYUgdatqDiCiDT1CCwJAgoE
+			E9iqqq4noaM+JCkSorRwpmEDoYM/LdgZyLwbc/xLhLovIUVAbKIL
+			oLrYgaSMQVAVaLzbqjAPAOajgghIBJk54nKQyRoAACNDYuLM5yAV
+			tEAAAV9EaL4aSfkgQrZa834goQYQ7UIerG0Ib1AQAPc9Qgk9g7bN
+			wn0+LdcYQrc+xSxTE/Jrk/k/s/5LqSwvFAYUVAtA7YtBVBhPaywf
+			ISQRoLgCqg87pHJHwLQLoQwYADgDw5aJMHQCoAEG4HAgroqkjP4m
+			bbB342sDoNFOYAFHguIHdPEhIYkNYgh+p+4F5CwAAK4KipkKBdFD
+			b0IntHD/Ib8Qgy8WpUQJFSVRlRwrDyDCogoQoRSdwjCzFMtM4MNN
+			IglNYztNomVN6pw2lOVOlOwr1PAHdPVPggdPykkU5O4cgcQ9wUwU
+			YPQIBz1LRCa+a+qbYKwPaOIJYI7JgHoHjpAUtZwACwoLgny3Jo0D
+			tPoP4WtNglScrnQADvI66DYyy66BTCYwzxYFYFLgFcgkwRNdoAAP
+			FeArbWiSaSkPMJoAAJyWbXIFJh8nwQJMAQAQAnz14MKXKXYeYeiz
+			EXAAA71ho7wgSkakdhliM4NiNh6coyo6884AFdYFoFTgEfUfgkNR
+			EJ8KAoVVB5AgQQYRCdxbKzFZFZVZgAFZwUtaCwwntalIKlNa9bNU
+			tbakdbtb4AFcIAFcYCdcoC9c9dNjlo9dld1eCcQrVeaSkXggcPVk
+			sPpRigYVQQrHDHVYA/7TTTjTzUCUYRAQY6IgjcadIWttonwQ1uCj
+			IPIPLF48gAAT4Ua3oudoQClpoI4IjpAFIFDgAgj4gAATVxArdFCk
+			6lIMgMFUQgYGtyQAAZlyonzk5cgHlzQAAXQXrLQXwYAbYutDb1oO
+			4OQIdFgQYQcoEoQoICt14AAdV2QgoP8rM44fLE9s9tIgdtYAFttb
+			IntuAQ1uVug8Y8tvFvQuVvlv1wBi9wYgtw1xATVxUtYgVxilSlhX
+			rhziDiTilsA6T7ICoNoOQUbPiUQBwBsTYPQO01Qgl19M1DInsyto
+			cIgU6LtOqMIzIIYIKWgIoISXAgj071IoQX+AoAAIGBBxpx8gwJhK
+			Igj1k5NrIm0i1AFJIgdhcXVqouypCpQKqpk5lFQoJjDUoa2Ep+h+
+			wAABgBaDl9d9ogd98CLzonl+cY9+yLwaN/IzF/d/t/70xbs4ooOA
+			p4mBCJBxxyByVSpXoSYRwLoC0FcFt7424K4LQQQXQEBQWFyPoFoF
+			hC4LYK5DZEJL6LYnqj1+IgYQ6SIAAeKSozIAwArnZv4guIgAFIYo
+			V6VM4MoMsIoYBUwIQICXAaGQIAAGOQgn1H1VogYPgQJD76c2guoC
+			4C7WoOINiJFUY6tbQnsg4J5KxLAfF3BMF22LeLuL+AeAWMiBWGIg
+			uNCSWNeCwv2N2OESQgWOeOooITOW8p8qIYAYceAXAXURhXocBWgX
+			YVIUwPzFmKIzIEgExhIKYKwPgWKa5J5KJKZKtdoRNd9eIntSU9QW
+			+b0octVWwzAL4LbKlwTKAPWdKcwQ7uooOa4AAO2eIAAdAdCkLW5J
+			gNWfIAAS+fgn0HoACEgRD9MM0NENQvrBbBrB9NWS9nwnoRmh5aQO
+			YOYAAZ7d0LYVq9QLIKkAQF4F7scOUOEH2bdSeb0rUtEolFGcect5
+			2dGdWdmdooGd+eIOxSwZUMIWAWcYpfgVoVQQgJ4bgbRlGZIvZbgA
+			4BQOQO4VczCWDrLrYggHWqB+J+YnoUGqoAAL+rCeoZi5IVwWLdY3
+			AI15oIQH7JgT+swAAMWtIoWkAOutokRxaWk/10Qnr9S5KKSfIWKf
+			gZQZifAvgEQELaAMwMUJVith4oETsTz+gVOjFOtBLrQQM04gWqAH
+			WqQn2swT7pLpevermrw3OsLpGsesus+tIMWtcIOtoOumum+nJmgR
+			wRIKoBZEIfLt+oYuYHShwPgHpBl1aaxZ5aJabCAgVFU5hHqkehog
+			YToUKlIbbAY3IIAHzJgJAIrpAVW6tQQK4K+O1xOPOPQkOAWIAnFq
+			deoggRYR4XrqrtwvqWyvqWSvMnEUssQn1FUxW8gR8CDrO4Bawwc5
+			ZbW4o7244gW5IZLPIbl8w2+5+6O6YAG6oVW6+7IoOO+7gAGXeXuX
+			5mgYZFoPoYymq+22orxAZAs8AUuGScYG4Gph4KIJxidSAAAE/Fwn
+			2u+uqrCrU5Kro2wIwIaWmPyXCXQTyXiXwoJTSSRTtCQgYWXI8g0h
+			AnoHvJksEUta5+7ZAvZ2dNJ19MwNfLENASwSwn0PAY3L+E5+8CoA
+			HFPFcWvFvF4nvGL9YgixvGuz3HIAHHdg3HyXoMYoXIRThTwWYW0b
+			oYoY8Gpm1KoLYChGRGnDwrW3QLYQe24K4PihQNQMpoyqZpTVx8De
+			wnzgoAAUnTlABL5MKxw3YKwKUAQGQGLsYPfVLrVuIoM58zQggKvW
+			IAAVnWgnzyppZpoaYagc1mYVIZovpvZvuOIggFfYseuEwnumWeQa
+			4bEfAUIUsenSPSYD3SrV/TAnvTXTgUnTxMBMQ3vUfUvU4AHVNY14
+			QoXVzb3Z8enZkkRm3DYVIQnDAUoPvRAoAogowOIOwVU4CcfYJv2W
+			UBZwhwwnvPPIi4hURUhUw3i/SjgwajAKPiGTkgontNe8Ag032xAn
+			1FAUYU4Zhjoa0TwvgDgDZ2INgNB2ogiLeMIn04tNYUvXyFI8vf5w
+			JjlIHghTfgxUHhBUo3oPYO6jgBoBnh/iMggn3ir6YgoR4SgYAAAd
+			IdPfhroR4RQKwBot9lPeom4FhQoLwJZhUwqhJ152J2flAgflR3Qn
+			OAUjAgZcRcjAo3K2YAC2q24gfYsAWEoawnwC3vXpvpwkSconuSEf
+			mendogQQgRKdzqAvoIJ8h9Z881a4E1In0MZ4odeKAgQQwRSSQBwB
+			8TYNh2h2woh3PGwm3tIjggvthcrGg3HuHuQgvuvY/vAnvvRpXpw8
+			ognUHbhtgWplIL4ahV9JnrAnIOAOgU4d4A4BABZ2KhOsbsesMASd
+			p9Z9onrXRj0h4gZkM2Y3ICICF0oOd1Agm4e/onmOeIQgufgS70Wf
+			WTMhHooggPCoAzIPwPM1TbUTdaNmdZ4nsApSQWggC0WgAgkEPB9W
+			YAIQ/EQAIxEFYAXUTABHi0FjEZjUbjkYFUfADVkUZPqCWwAfb7fs
+			dlktl0vmEYCIQBQAO5zIcZBk7AD1n0xoEaIFDAC/o0ZPJ+gb/plB
+			p1PqFRqVQfL4erwSCMLIRqddr1fsFhsVjsgAB4QCwgNBsTjfstvu
+			FxuUsQB7IwABAIA4ALd9ACmwFzOGDACPwwAc7oeQASKVYNzyEEGA
+			vDQALBUGYAd2bAATz2RgiB0QAP2ljJD1AAX2ruaq1wAKuxADFY9u
+			Wa2amgqIJBIFAB/PRIjIe4gAcfHuak5V8vzIZTgACwWbT392AAJv
+			XMLd/wNywZwwuHxOLxuP3VxyeVy+Zzbuzuf0GiQOk0zXbDoAChUr
+			L8/9/ygEwSgyBCeJ4HU6D/wTBUFwYjAZhqJo3CII4ykjBsLwwqYF
+			ASAzSD0I6Mg7EQAHJEq5mzFAABNFYAFiWjcmOZK3QyqYxC6GMVBM
+			DgAEBHoAPk3UUGzHITIyCMjgAeElLeAcmgAfkoIyTJOmMABvnAds
+			aI2EoSAsAAxi+G6MgFMgAKYf63zIAQAH7NqMk2T5kMQc54w9ECMR
+			EDsSRMuUhSJFsXgBGMZy0qEbRxFcdx6QEftG0E/RXIpWlgaIAGWZ
+			pxULTSyl4XJNjeZpllmSVN1LU1ToIM41k0boIAiDCG1RWUGhMEsv
+			DEL0xIxNUzKasoF2AAB6WGjJGkiX4AHWdh6VmjoDAMAgAEEPokoy
+			F1rgAadtLmBtugAeVwIydlxgACtzLmEV0gAbt2IyP5CFuAB8nyfl
+			TiaJMih2HQTgAUF/AAMOArmD+CAAcGDoyQJClwAERK5XFdILXkzr
+			fYAF2FYiMWNZFlWZZqN2faNp2qjFrhdbNtrlboG2/cKMEYSBfAAd
+			h2nrj+bpceB3nQbxMkqMwR5xoWhrEAoCgOBQ5DuVebaJpy5CcJUi
+			h0HN+E7q4ADJrS5hxrtBGOY6Mj0P6Bn8f00adWoKgBXAcIyAm4TZ
+			Ny5CNuoAFzvCMtKPwAEHvy560MgAE3wgAHieJ7gAQ5GF5U4A8fxR
+			BCYjIk8qABccwuYv83ft/p8fW+kQXIAajqeqgAT3Uy+MYx65r2wb
+			CjGx7Ls+n7VtgvbcjG4WjNqV7pu28dH2WyABs20af5JHESKoFpSf
+			J7eT6Xpo2CgKA6FQxjQSpq+p7yo8eAPI8mjCLRAiZdLmRH1psO47
+			gAbBsnTfpSGV6lcUQEsdkb/gADo/83TmGGPmIyDKAwABnwJLm7AA
+			DXW3C4F2NcAAwBhDcVOA8BwCAAB5DqEUjL1gKAAHbCMuYwITAAB/
+			CkAAuxfJDF8MAbb4yMwEfQ+p9j7n3vxfmKB+r9wvP5R2I6IQAA5x
+			FgC5mAiMToIuOo99p4nRMBrBWuMcY1onRXaICkFYPQsBOCiHUU8W
+			IxEtAeA8BMGw6BEIyZ4CZmjOFyXmPkACz0OimFUM4AA0hpjlafGW
+			M4eY0kZBRIMACfi5RsZmuQjhvIzj4kcW8A8kQASOHwRk8piDFKnB
+			cC0yoWgrGZHvKEAACpSFzjovJeZGRJiXGEsIeroJARqIxIg9pc44
+			xzWeX+O8eY9x9jNGiWRBZBgokKimQ5n1xjsIyJISxjxzDnMXGNnA
+			shXiLCyNcaowxUTSm4qcIAQwwCKBuDkKQdZuznAADAFwGzLBVBkA
+			Aec8QAAOnoXOREySMiGEWLtlslWnBFCCB8AAQwhMnXYN0AAJKFG6
+			DXQ0AAlKIEZGZRMAANaLFzBhRmBECiMB8ECLVJ4/B/Knk8C0AEmw
+			QAAENSsAAe6XFzBZTFlETSCh9ECScFYKgMTtnfPEec856zHjbPgj
+			E+p+Lgn80SgFAqCMnG9U8AAI6pUModRAShSClK9eROhU4yRjiuEW
+			MAXooA7VcrMhcKwWhAi5BCCIGJd6zxiC6FgF4AAVgrA831v7ey5u
+			VWqLawFWClq+ZvBiDUHIPEYCJYsAAvbHFzd4SglJHQz2VAAJqzBc
+			w9WbAAIWzzBhwnuEwJwYqpwBplEKIEJZGYHAAGTa8uYdbZAAEVbV
+			Eg5R4UPEwMMAFc6613ry34QZ9G+Fyr8ACwBJyMFJsHVtZthoNwdI
+			zYuNVjhe2QbiSkfZGRWKUAAMxTFcVZjfG8M8XQqhTB/TveK9hui1
+			ltLOWm9r00mprEKIC1ZGAbX7UsMs/hchQ4BAAF7AlrhljhAAK8WQ
+			0mnhWCkCkAAMgYgkAAOLCwAAQYZq0XMKGHcEivFeR0EuIwADcxMX
+			Mc+KQAAYxYAAVgr1KjMGcplUy5gGREDcEEjLFgAD2x8XMb+QcMYa
+			wVgzGQ47O34IzfsG1/b/lxwCKHAeBRk4HwTgvBuD8I4TwrhfDNKW
+			KFyw6FDD+ISMB+EGvEfQ+l63zVKgVA6AUB5uzoXEOYeBWD3bgAaD
+			WdWiAWAsywOQbQgEZlITWULiSyvheM2YjInBQJyG4N0dbQjJgXMs
+			FTJpGIDTvgSM8uaTQByTkfZEjlkXfFvjKA9JKSyMCKEddcdw73oq
+			mBwDavIUAm11Gvr0ABHwVLcW8uCaJBRFsxABfUAGg9CkY0OADRJb
+			9GNmpGRjSGktKaWBfpgy+myC6do3qAuWotSSVsiLwX42gAC8hbn5
+			UyUB9D4EaIgKkZ93b3K+HcPgsrnb4ZuDoHFeQnBLrqNLgwAAX8JL
+			mcSvI4eHMJEMwyUN21ZgcA3qwNgaAfNis4IfjxunWOtE5yMjuIMQ
+			hS5QXMoehSjLIuXVnMKpQ2BnbcBwDjaw385AAJLnhcwec/AAMPoT
+			Yni63T1wPgvB+E11LlwwAHDsEEYEDxHaA9+KKy4txjjXHA9OK4+a
+			DkIAORicIyIIQ7o8fOg38rIRIhAnPi7X3EmGd8857z73JVAbw1A6
+			AABkDMbaGhrAAJbwhcwueHAAKPxXVbt9TYYrMFYKUvBdC0xEgjwg
+			AXH5iXAC/nQADo9AS8KfowACu9MXMSfqQABs9YAAaI0o+CnFXHhU
+			wBgC6jEEH4JRGQU+9fgNgbBc3+CN2WHIOQABqDWHOAAUgpxmAA71
+			3zv3gKHeEEt4bxHihR+MR/1TyHkre+VIz5jzVhPOee9AfgjCLkYI
+			y7woXeG8t6b2/f/Ujt7xv3xpT/ZLTIVpFqCMgTwBAABtQCi5rrCF
+			AhAhN1t0t1t2kMNGALgLMbgjAhiGgVAUq8iMBiQOPMnLFhmPDIoB
+			CKiLl5l6pIloiMO/AMvPvQi5PNj8j9gAD7P1FSgOgOAIAAA1gzge
+			iMpTrtC5wYPmvnhtBuNKmRwAwBwCt1C5QEQFQFt0N1N2EhwIHIQJ
+			QKQLNfwMiMwOBiQPFqwQIjoBwSl6PunRtqP+EMM4BwM5AQw0w3iC
+			q0q1q2q3w4EMAPgPAJAAA0gygdiMmjDfEoM2iyRAAAM1u1CChKBM
+			JWhyByk6i5G4NRlui9gNAMNWAQgQGLgeAdMICXBIRPoiIjQ0DQMC
+			AvD8sBCMBRQZAvAtgaiMtGC5MWKdsUvliMBCBEH0h6B6o5FTCFiG
+			iHiIvMAkRhi5tAEvB0xkCMhChEn0gJAJGLw+Q/CMRCxBC3xCxDiM
+			xFRGRHLsRJAGxKRLAARMRNROCXxPhIRQg5tGtqjIxSxTspCMJLjx
+			w7EMLyLzL0L1R6Q0pvpwpxpyx9EGKAGgqCNghZyDHSAnAnC5q7iI
+			hqSHCMhNBPHYiCw0NGNlGjNRjsDfCdkOgHgGjfALAKmLsRjKiuhb
+			yTx0wZtfD/KYgWKZiMoIIJAJgIlogagaASqHqIg2ydi5uUApAABW
+			ygiMiDiElZhAA+EQC9EOgtSmAABTyni5yEyFBYyqShiEAASBKBgh
+			SCyDypSFq7vkSHiMSIyJiCSKnISLvbjrgESNgGEOgHSPgAALyRAA
+			SSCvSTl4oix1NeoJSWKZFtKaCCSYoJoKyAEMqvKwKxKyTDP6otIu
+			IvIwTGEEhDLVAAFeDYgqsXBWBWC5ucg3gARzlNRsBPzSDohYBYAA
+			BlTVI3D3EFlzG1h1TYiMhyxuBKBMreBDnJCMuVgABgzfC5vTBXAA
+			AoziOghihvAABahcHulTJSEOg/A8r1iCE8k9hyC5hUTsAAArztgA
+			BjBkC3BZBajczKLVzLjZTNzOC5TPTQRQFCzRzSzTzUTVH7JazXFz
+			zYh1TZzazbsNzJEGJqJrJsJtT/O5HrHsHtHuUCDIlgEOg+g8TpAA
+			ANUJE5xai4sRycBV0MuEOFCgRsElLchzUQunuHqnzkQlwCQDMgi3
+			P0uqtFFSmVkrMhJECMOzHRi9Fog7A5CciMNVmWtiixtyRqiMLRrS
+			hwLQlTlalblckxkywYCwleNUyxyJAAB0h1DF0HUIUJDKxaC50LgA
+			UMhV0NumCY0PEl0QhzURsEUS0UN1UT0VQWj8NolTUYU30ZiC0ase
+			h7REUFEFooIpIqIrU+N8GjGkGlGmVBC5AUATtMAwAuNvCCRYVEC4
+			AIVKCQiR0tCMhGBImZFxmbAZgYkdgqgpEcUuVMC5KFMKBt1VF3F4
+			JURBlNnSgAGqGrGsHAi5gQ1cAAU1iMBAGFsMAPw9VG1HgAVI1JCy
+			1KQciRHu1TCC1NVOB2Gm1jEFnlnmnnta1pN3FVFWFXFYVsCwAogn
+			JiAbgaycPrQdKHVvCvwV0Yi3JIi9iMJVpWhyhzRHiClcJ3lap2KX
+			A9qVKWC5LKgzgABMWBjNNaLaNYnHHITcnyCCoaCKC5AxWIgAGrhO
+			lvh5pKhDBFJ+VwVxVyAABL2QAAA1WR1011O/V2AAV3JVJWAAV516
+			2SjzmdGeGfGgWYN7kHkIkJkK2bCnNGWFiMwniiij2eCgtgVLTmCN
+			hIBKBgPPh0qfndgCE1hCA/r8iCqMgYPXBolKi5KJvngZ2vrkBcor
+			BhBiKEFTI/JgI1jPz6i4hi23VZAdO+BchePgoKILWfiMWguW2iWi
+			iQVlCO2lWmB0WnW+D/FOlPlQlR3Cs3P9P8XFiXkjiag70dCM1kHD
+			HD3HiOztgrgATsJtiONYNZWDCOAMgMAHPoA1gfiMi8oNJbiy3WUW
+			iM3A2m2nlSp1J2AsJ3J4J5J6XTi5WVJKJLJmtSF63J0diC3LHD2X
+			3MiMXN3Ozs3QWENZ1r3mDQQ2w13qr5g4A6BTh3gDgEAFwc3stv1Q
+			AAMHEcT8S5PPXszXnUHVAmX4CM0Qk6hOhRE5HPiXgegdqUglgkKT
+			BkYAAAAc4Bi5twBm4DiMg9hAKQE2x2FNguAsGTgWAVqBBCYLAAA+
+			4Mi5ulgABoYPCMqPKQJNjK3zgAX0vOtMX2FznUhPAAX4WGCCX52J
+			37CepX3xjQCqirisit4bs3AWAXAhAvAlgnA4R4YbgwkbgAATkdYM
+			YNYLBCW+CdsbvAgAH1hECOhfhhIYhdhekhnjigg6g43VAJgJXT1b
+			WKC5q+EgBvBvplSyLTLTsk2qiCMmMnC5g8Y8OvBDunhxB32PhNwv
+			YkEcYlkd4Mg+gAYn4oieYqYrYsYtIV4utGt+4ei5BahZBIAvhqBp
+			BfBRZKL2lngEAGA4g7BVXa3Mm4WpWqICoDtP1ERCyGAAAzZZQ9g0
+			g0iO4GvBhNQvWXCo0bkeA+GSCCqpGg1di4p8JEBVBXBoAABnBnsk
+			FTSQsbg5McsdlgsfXqC3kSzrAN5uSgLvBnhozrWp45sI5WKOU+ZX
+			ywZZAzZaZbCOZcBLZdWW16ZPEFhHhFArAGs1h8QQ56r2AeggAthB
+			gdAeArg+XHsWXTg4XUiMpGNyu8WVXLZhgAAaaKztTuW4u+CgI7I8
+			BqBq00YviuxMI2gzgx6NCCtyRRiyXLB36WiMhEhGnGh3h4UXFNgc
+			gbq8gngmK6zAKTlsC5Xe3L3lhFBHrrv/aF3VCMaHXgu5aI1K6J6K
+			gaaL3OaMig6OPkaP5JZ/EEhjBiBUhCBhhgBS5D6ts6DeAGgJg3A5
+			hSplXFgeX94XX/LXLYLWi5XYFF2UpJDQNyWVagxZKEqFubEdiwhu
+			hvJlBeoYLQEs6QiyAkAiMKAgAfsIUwWWzaDdDvrBT+lSg3A0gc0I
+			gNIQzQj/bMHZKs24qBAma5LXhkoGmva7C8keEfWVa9kna+p66/1U
+			AAbBCxbC7D7E0jbFna6ykLhJBGgtgKJQh5ks7hs/aCaDaAaBWiA6
+			A4ONgKAJtWAy7suxOSC5AsbvSnSoInUjD3Bqj70YplUqlmCUnfj+
+			5xgAZUEMhnhoTrBUhWtxFStlL75yEMBpBqU0BTBUhmn/bqAAbrbs
+			btOxi57vAsbwIw7xUj7yj8Mg70B1b1CVbmFN6w6x6u6v8MVBmjmk
+			ml1o1sQUEf5gCM6J5ii4QRoCDaFCDIB/naqRKRs1iVh609Yao5B5
+			WLlhB5o5cbnQQTFm6RgAAWAVQWEMBhhjKEElaalTgXp1gAAPAOCu
+			EMBiBjzkO08TZgiCcUqoC5cWCL8XDdGKB+B+8aB9cbccCfcdceB6
+			cfCe8cchcPHpVqHnB9noc6O1gSATAbAnApgrA+BY1pciaS6TiCNU
+			G5xCGjRDM1iMhKz+BxhyLc89dKiM9C6TG3m40o9FjfRsCMdILedJ
+			dKdLWbBWhVBCAnhuBtBlBZVpCAiAACBQOCQWDQeEQmFQuGQ2HQ+I
+			QgrlpBLoQCIYEWIxuOR2PR+FkgiCQAEAfikAKuVAArS2QQ4UzEAN
+			aaQU+oJbAB9vt+y+fT+gUGhUOiUWjUeHSKSSaUSpVyyXUgATGUTR
+			rTacTqeVKuV2vV+wWGguBvNBdqlTH4jWK2W23W+4QcFAoHhU2nJR
+			uq43uhIhBk2ClDBABY4WuHDEABH4sAOh0PIAJBKsG+ZXLZfMZmIX
+			7AQTBFDCYapYg4YrGY7IZLKZrWa3Xa+EpNHF0LPZ7PF17DdbveUM
+			QiIYkYrFpArne5cGAwDgA+He1wQL9EAOrqVxs9cACbtYRaNQAMdk
+			t/j+PyeXW8nl83nwPohfp9Wpdds9ntrHu9/w+b9fv+QtVFMP4jm+
+			bxnl0/sDwQ3YfCALhCByHgrD3BKuhWFQMgALoshogoAw6rgFxAAB
+			6RGgpGEiXwAHYdh6wnFsXRehcKwvDMNoJDoAw/EMRnpEsTxTFcYS
+			DIS2mOYhVEKYRgFIPkhybJykRuAQtC6QxgA4DwVh7J6QCqKKUBmG
+			SSEhMYADjMyuBzNIAGNNiCj0P5aAAfx/H/Lc7Tu10uy/MLIzJMw4
+			zRNU2GNN04TlOk8UTRSFnIcRqmGUxRj0IB/0qf1F0xTKEgMAwEga
+			Nw5lIdYBgGArl00ggBAFHBDECJiCh9WIAGHWiuEVW4ADrXSZmwdA
+			AFEUpl1RYdiKHVVWVdWFZVoYdbVxXQ615X1gWFYtrSEfp+n2fJJE
+			aLgKn0fR7nna9y0wBgGgkDQ1jeUBy2sCYJAXXI4iEgoHXwAB532r
+			lsp7VQBAAUpUmaABpmoc1zYVhaE3jeY63re9833cipX8AGAYFgmD
+			YRhmPP0SpIjADZ6Hmd2E4/lMtgjdQSjMNRMG1VAahmDoACmKAYAA
+			cWeAAD+fq4CuhPevSCEKRRd30eZ8ZVptrZpm2cZ1nhxZ9oCpaECu
+			iILo+k33pmnbCzBNEsNATHfk5t7FtcmgoCgOhUMY0EqatFjMMMNh
+			EEULjtvoAEXwCuCbwYAFlwyCjwPpZ7Zxm7bwAG9b5v3AEXwXCcMW
+			XEcVxvOLYTpMDWFcVHGq/O9NF4JgmDgUDINJLGvJwCAIAYAEIP4l
+			IKF3dYMaZpq4U/gAALHhu+ZBwMIWvfdP5cJ9l2nbdwgndBd3nlKR
+			4BT+F4hj+N5HreZ8CfE4S41BSdp2nIbHw/XCYHggC4QjQNhNm9II
+			Ng0B4ADaNIfIKA7/wALhH0UZjLFyCCaE8McAA3hvjsfZA88b938v
+			7f6QR/5y4BQEVUACAxA4EQKgZA6CEIyFiYEoGUEQ8R4DpPFCSFx/
+			C5l1DCGYSQ0TkgRQuf0H4PQQgACSEYFgABhRDAAD+IxXAQxJgWN5
+			+pBBACFFwAAfA+B9wvisZmHcPYfxBiGMKIsRypRJh7EyJpA4nxRi
+			nFWK77ERjvHOJ8TQbgXm2NxGuOx+3ZKdCeFMOwqQSAlBsZ08oeg6
+			r2XwvMMEiQAChkYVwMcjwACckkAAeQ8mmCGEW0mO8my4yEkMA6RE
+			ipGChkdJCSQnJKSWABJiTUnHTjcG2MoWYsRWiKCuPwfi4pXS7P2h
+			0HIOwqB5B8EELohTdgJAQAUAAfw9hIIKCCaAABwzTK4MeawAAcTZ
+			AALgXb6hgDCbVLycRSJkTKmZM4gk0AQTSmoVKa0Cpsg4m3N0AE35
+			wzjbCMIX4ow9jHGKKwQ5AlKz4oIfs35wThnFNcCMETWgyhhnkQQI
+			tEywC7osQUSJkwADnMfQWjxP6GUOogQWiZGiv0WlaQKjJlKOGQo+
+			ws/6AUBoFpfTU/oDQHAUA4FlBovmWAaBKZUKATQWzYBtOszIfBAi
+			1ABLhS9NqoEPqHUUHFRzNVKqZU6qKmG0DmG2KdJYQh5jyHYOSrdZ
+			5egBAEAMHEwA8ILQaXAEwJQLAAC8FoGplhgjEG4AAXYvT51osEQm
+			udda715MrXuvtf7A2DS2klJYyJ/iIUsT2x1lz+AXAwcAMAZBIDOs
+			xaG0Vo0tigE4HAGQ6R0IEtJa0/qpFTIPCqHoHYPQsB+tdbm3Vuy9
+			jFGGKgQSRRViGWytu3lxz+gTbeCkKgVw+i0AgBGzdyLqXVusQoeA
+			7x0DdFYKkv47R2Djdhde8iB0OgpBWDwK4Tgoh1ezeW+F8bHCyFeI
+			sLI1xqjEFTQJOt8r/IHU4p62QegcA6CoHi/+CcFQkGQMYVgiLhCG
+			XCuPBeFUYL4beEEIoYxGgoBSDsKuFsRYjWuNga4xRVi/F2J0Oclb
+			w4kxgk+5QHQUhGCQ3MDwIAWhBxjj3Hx/BxDgGmL8XQuHQXgvFj/J
+			SigKgWA+C0IgR4aAeyeEDJeV8sFiHEOEaYwBeC5jiOsdWXMs5lWG
+			6l1cw5igmBQDkKWZs4ZxIYNobAxxXT6n4+d9Ocs+LmpxToGoNwnh
+			y0CE9QGfdEYjGWMkWIj9FixEdWOsuidKNNwCA29APQrhICW/PSun
+			7ci4FrCe/AwxU4TYrqDVTjEogaA2CcG9tQsB/BCCMGQR9V65juN8
+			bozhc2+FQIEcw5RsjJUqP+p+utlQPASAqnIKAVIQxs3PZe1W15Fd
+			ANgayRh7j2rJtbcE4kOtuA4CkF+twyg0BsE40u4d3JDGYMoWQkBo
+			6+E2iocl46B7v35TZVSpQMAZ1sDAGQSQ0AtBeEMMG/eGGYGmNEXo
+			oBoDOFuJgdA59epzW1w3jluVSAEAMBYC5GAWguCEF8GINAlBq47y
+			0kAzxmC2EsNMaQvhQjqHSWVbMueXc9v+lECQEgN1z1gE8G+bg7AI
+			U8BLn2yx8LjHcMnOwiht7FFiO4dw5RtbH2T03r2ZQEqeAnq4E4OA
+			VAtCAFsFQKwfBZ6/jEaw1RhCnGtl0UuwxsjIHuuMdvb+/b8Sjn8D
+			gHG4A80yFiP8ge/2OlhLLUoqByOkGJpIcnXPF+X8wjZDoAjkgSAy
+			BfgQMwRgkBqEsFwMAiBi3+ATzLjeND8GkNAXgnhujcGWLUdPGBmo
+			jHcOfy3rfgfBKApwBADH3Wb7IDcEWtgkZszd8JIedM7De16LjvAy
+			YVWrXCPhHn0PvffMx8RdADadAUycCwDbqwda11u25uH4CjujGtrz
+			Xw5X0jGHZmMai+6y/b+6/hABACSCQ6f+ASAc86AyAg88BIyayeA0
+			A0BMBsA6SwB86UXS466eZMHGUcGEHMHMG0GUzEy4Hg96G494HOHy
+			HyHupc33AFBdBe1Y82AKAKAQAXAsAkOSAgAwXwAqA8ui4EAkAm1e
+			AoAqbgyaBABcjyAQswlwH0HwzEHAGkHYHWdIHcHa2Iuy4wkqHWHE
+			RGHgHRAyHcJ2HwHq9/BhDPDQt4Q6VIVKjyASAKANBqAOAM2cAOAQ
+			LpDsAYAgmQAYAlBu6VD6AQ+KAi7CXTDsAWAgAQAPEQAMAO2c/FBn
+			BqAJDgATCU3+AKYAdoAAQ8AAUs4040H3CaHwH4H2XFDGHq/8H0Hy
+			28HwHyHqHgHzDIHg72ZMimHoHe6eHoHdDCHu+4HdFiHpFgHwNuHy
+			H029FLDJCaHuX8jVBbDTGeIAAIFA4JBYNB4RCYVC4ZDYdD4hEYlE
+			4pFYtF4xGY1G45HY9H5BIZFI5JJZNJ5RKZVK5ZLZdL5hMZlM5pNZ
+			tN5xOZ1O55PZ9P6BQaFQ6JRaNR6RSaVS6ZTadT6hUalU6pVatV6x
+			Wa1W65Xa9X7BYbFY7JZbNZ7RabVa7Zbbdb7hcblc7pdbtd7xeb1e
+			75fb9f8BgcFg8JhcNh8RicVi8Zjcdj8hkclk8plctl8xmc1m85nc
+			9n9BodFo9JpdNp9RqdVq9Zrddr9hsdls9ptdtt9xud1u95vd9v+B
+			weFw+JxeNx+RyeVy+Zzedz+h0el0+p1et1+x2e12+53e93/B4fF4
+			/J5fN5/R6fV6/Z7fd7/h8fl8/p9ft9/x+f1+/5/f8/8AQDAUBwJA
+			sDQOliAgAAAPAQAAAwAAAAEBLAAAAQEAAwAAAAEAtAAAAQIAAwAA
+			AAQAADckAQMAAwAAAAEABQAAAQYAAwAAAAEAAgAAAREABAAAAAIA
+			ADc0ARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAAAAEAbQAA
+			ARcABAAAAAIAADcsARwAAwAAAAEAAQAAAT0AAwAAAAEAAgAAAVIA
+			AwAAAAEAAQAAAVMAAwAAAAQAADc8h3MABwAADLgAADdEAAAAAAAI
+			AAgACAAIAAAq2wAAC4YAAAAIAAAq4wABAAEAAQABAAAMuGFwcGwC
+			EAAAbW50clJHQiBYWVogB+AAAQAEAA4AGAAsYWNzcEFQUEwAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBsAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAARZGVzYwAAAVAAAABiZHNjbQAAAbQAAAGeY3BydAAAA1QA
+			AAAkd3RwdAAAA3gAAAAUclhZWgAAA4wAAAAUZ1hZWgAAA6AAAAAU
+			YlhZWgAAA7QAAAAUclRSQwAAA8gAAAgMYWFyZwAAC9QAAAAgdmNn
+			dAAAC/QAAAAwbmRpbgAADCQAAAA+Y2hhZAAADGQAAAAsbW1vZAAA
+			DJAAAAAoYlRSQwAAA8gAAAgMZ1RSQwAAA8gAAAgMYWFiZwAAC9QA
+			AAAgYWFnZwAAC9QAAAAgZGVzYwAAAAAAAAAIRGlzcGxheQAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1s
+			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
+			HSv6HNc5hXnRRzDWHSHubUs946hUANvSUpluTwyzAoCoM8FA2Rwj
+			3Gy+uC0F4MQZg1BuDkHS1vtL4/klbin5OMe058wzo38NhUBCVTjZ
+			YRM6SJAKFr9ECP3exDeBL8zxOnMSCkKozwUjYHAPcbEHokRJiVEu
+			JkTYnPoaqyNCUJIFswZTDpaUBloPGhqeaHzl4Ywoek2mLsJ4Rw4g
+			O9mHcJnuQMh/EGIcRYjxPjpHWO0d48R5j0q1PIASbxhRA914kPF5
+			PWjS/aGUa3KQuatDBfr+oqoGgJGKLMlZDSFisdaL5jwVBWGeCoa4
+			3x7jXj3KWU0p5USplVKs3hMAjkzAK74+kVIvSEMu/WLSDXow2e3J
+			F/sU5APCkhD2MsiiWuQZ46KM0izxnYMmCsKw0AVjWG+PYa0rJsTZ
+			m1Nubk3ZvEcHwNKV6Oj5y0kHGyXku2vSHkTOloLzUsKMmCfqF7Y5
+			JQsWHLmS0W4rwKlquwy80JpTUmtN+g1B6EUJoVQuJU4Zxp6howie
+			EzJ+zqhTDmdtFZ3yMl/GBzMjZ7M4knPmjE+6MmUS5L6NxlAWBXGg
+			Cwao3h7DVoZTWm1N6cU5p00uhzvV1v8gDOeTMt4sTspMSyebLZez
+			/nqu6pM/qO1Cnu8uSk65EUWMnSmplEjPAtCwNAFo1Buj2GpTus1Z
+			60VprVWtNtPZyUhqDG2oZlpcUlqtSeolS6JxjX5ACqNcqpxcpI8m
+			i8ap3VzOBM43lXqwVirJWyyFkbJWTspZUz1bqIVSmG9WYtdKi1Xr
+			vVWTFga4QzqdR+v8zbO0amFPo3MCLD16OPYo44LgsjQBcNMbg9hp
+			2Wt9b+4FwbhXDJPZiWRxF31btXSiz8uqjSXmMr097MrT1+njUBgV
+			VLBxosLc2z1ULASCOtba3FureXEvRem9V672XAuNT+7Vm6R3Lqzd
+			60N95+TLoBRG+S/6ny2tNRx6l85jpWIqPIeo/R5DbdcNsbUExtQS
+			HsNkbrEhujxHoPweOGB+jxwQPweQ8h6YKIIA8BoBAHgPAWAMB4Dg
+			GAEAcA8BmLASgeASCUE2NgTAmA+AnHeOgFgJAGAu6V0aN2qv2egF
+			4WhoAvGkNsew0r25TyplXK2V5tXvnxf2+OR7WV4LrMm2DjaKV7d+
+			k6/89K40quzYK1tdiBjuHiPwdwvxmDwF+LwZI8BeC9GUPAXuDB7t
+			6MSCoEQCgVBDBsBAIYRNFhEB+DMB4P8ZYoK3fqkVmqVnmBgFoaIM
+			BojbHqNHLGpdTan1Rql9eWsjYByRYi5kBc4XOvzq3JKurUyzzTIE
+			heuyAACBQOCQWCv+DQmFQuCQiGQ+IRGJROKQ6KReJxaMRuORUAOl
+			2vp0qldOxUqdcOpTspqvNlP5/ACYx2aTWbAACAMAgQdC8HDotEgK
+			loqkUKFUJA4CBKb02mxqnQuoVGqVWGVOMVirVuuQwYltojFoNp6t
+			Cu2e0Wm1Wu2W23W+4XG5XO6XW7Xe8Xm9Xu+X2/X/AYHBYPCYXDYf
+			EYnFYvGWl8NIjvgDgYBAfG1Ks5eu1qn5qI5y46DBaLB6S2abPADU
+			ZnU1vV6rW3R/6/Y66JbTaw/cR7c1e7bu7vx+v9+KxeOtWKFZulQr
+			tkPBdv1/P9+72ugYCgEDEgdBEkGAmhcwE8fhMngIBAD04DgRz27n
+			3wL49aH1+w2Oy/T9fv+f3/P/AEAwFAcCQLA0DwRBMFQXBkGwcm7H
+			siybKta3D5vpC7MP5DLbMPDi5w+m0QsDEb5QehreROi7ZxUjbURK
+			1MYRNAEZRWwx5Hqfp5EeUhyEeS5WHOS6QJFFqrBADQEBAOItg0OI
+			yiiDAygSA4BASusaoNLLFuBLb9BkLhohkZ5snqZ8jTRNM1TXNk2z
+			dN84TjOU5zpOs7TvA8IskyjLMbC0VRrLy70E9zEUIs9DohRMsLRR
+			bCNfRzrRZO8X0AzcA0jLTBOE4hLFUcxLEQT5xkQc52H0c88KoD4M
+			gOD4+jIDw+jCJwLjC9D1LTQ9MxJQs5IcGQuzFMkzVVY1j2RZNlWX
+			Zlm2dZ9oWjaVptjPUJz7QzWQfQL+15RVsz8vFvLfLdxr9SFKXNCr
+			b0srl1LddV3oe5x3l2NZEG4NZtnEe5t2oqgYBOBYYEuPISEuHAWg
+			aHF3UbbdfTijSEBmLxpBmZxsHqZ1/45juPY/kGQ5FkeSZLk2T5La
+			0+MNP8T0FeUOr5mCMsveWZ4dRGH5pO1J55dmXUvGjfr8eJ6H4eI7
+			Egb47E4WBzk4mCZZQmqcp2NosA0NpBjSDxBgWBIBgWjty51bU4Yk
+			goaYqGhm4yZup7huO5bnum67tu+8bzvVp5VClextoFdQxc9wMZmz
+			/7JB10Z5m/DZ/I0R8bnDZL8YpoHkYosDya4sHIdJ8nJvamhKDwEh
+			KVREBQVWA4Gz/JwZLs57QhW1Gltm3dF3Pdd33ne993/geD4W877b
+			C9vfyUQLV5Kq5n5kNcdQfEdfBfFzrnvr8fFvI0xoa86ifxBk2cJB
+			kIThxEJTh+eGmlrkUN4QEUN2sDcg/qQV2NfxQiAai+aYNRmDXHoM
+			x9kBYDQHgQmwgICAACBQOCQWDQeEQmFQuGQ2HQ+IRGJROKRWLReM
+			RmNRuOR2PR+QSGRSOSSWTSeUSmVSuWS2OvhpEd8AcDAIDy6EP+LT
+			qcT2cyaeT6S0GhACiUWG0ekRGlS6m0uPU+OVKoSuqQar1WtQR/1m
+			t1+vUav1CwxCy2OJWeRWqSvl9P58mFANowqdcOpT2i9XuSmgqBg0
+			JM6iNJgQBgECWu+Se2QLG4vGVyIjYwNMbMtrPRl5DOZ3PZ/QaHRa
+			PSaXTafUanVavWa3Xa/YbHZbPabOYTKaTahY/HbWk0DZbyQ8KnaT
+			iR3j5zkwvl6qz83fQeu9HFb/qUyo77oRrtxV2PB9uwmG5qExktR5
+			snr+uSkMbBAhq5FilXA4FgMHdz2QXH93tMkijKMszDNP3A0DwRBM
+			FQXBkGwdB8IQjCUJwpCsLQu0Lbpmmqbpa4T/NHECsOCsjPRElMTr
+			S2kUrFBj+ww/kWNqsMZNK7saxKpccIWcR0HycQkDWaYkGub57GvG
+			EYBoFQGBoWpIBWWoLAkAoLRVBEXyS3qBuSG4wmmG5lGqehlS1M0z
+			zRNM1TXNk2zdN84TjOU5zoxcNNzDqUQ/Bcax2ns/Os5TjKRQE/pJ
+			Qq+SzLTpzXGkJxu/8dKEdB2n0dAeDCaIeG6ch7m7OsHhYEYFBYYR
+			NhcYQIgcAgIoVRCwIpV7TqI7YcDEaYcPOej1VBXtfV/YFg2FYdiW
+			LY1j2RZLqTvDjgIrWVYKHElJM7aCN2tAFpurPlYzPRk1UdCUT2wq
+			zdqEdx4n4dwejGaAemsbx7GtZUEBrJgal8TAWl8BgFAGBktwPRUk
+			1okNbVxXVeXpheGYbh2H4hiOJYnimK4sntmN04ad25aTY3JbLIZA
+			i+R5HZ1twVgcYW/NNwwjcdI0Mnx6nufp6iGM5pCG8704u64kh0CI
+			kliRwUliAoCACAr2ZVDGCpIHIxGoHJkPQZGfaxrOta3rmu69r+wb
+			DsSXYzPNr45lOTtfk0WtBtizUJFdDwbpsL5ZNC2bfaiQb1uafbYL
+			Q9GwLS7LxsbaDYKwMjYSY7BESbo7rC2npPqOp6qeer8PzfOc7z3P
+			9B0PRdH0jU7K/Vn47vzYbZvqH9chmS7kkfYJxyUK7vb0r7plFtds
+			qBGlGchGjoR5vDp0rYE8PwSk8MInAsMO1ox2to4ClQdDGagdGOaZ
+			5mP5Pw/F8fyfL83z/R9NkdP1P2wTPvfXM0PqoT2TZxZ+iWdvp38r
+			RvKD2YIzfkUgYo0B5DFCAGUaIQB+D9H+Px9RpQEE1AQMcUALhjgw
+			BMAsGCs3qMrZCS0HYZBqA7GMNIeYxoIwrhZC2F0L4YQxhlDMk77G
+			4PuSw2o1zrTRP9RGUWHxGX8O8InEF/0RitP/QdAF2bMikDwHmPwe
+			AMgtDOBkN8co+Bvw0NECsEQCgVjKFEC8ZQCgEACAUZ848SIBttKF
+			COEsJ4UxcjpHWO0d48R5j1HtZUNnXu7hyx51iOW3SFiBE1jaLlur
+			gjZISP8S3esfjaVAMogxtBlE4K8dAnI+GgDqF4DYdRFBuBAIpkUH
+			2nQhKQDwMo1AeDFGiPMYsnZaS1ltLeXEuZdS7L1H5V0gGBQ6NbDx
+			+chpJvTdoy+G7LZGt7kfERvjMXflbGONIeQxweBiGgDwfw/gATel
+			4WMwxiBnClBgM4FoJAFAtK3GuECXC9SsldLCWU4Z7T3nxPmfU+5+
+			Q0l8fyYCBn4SSmciaYzf5ETRQgc9RszW4nYkhImhKHivj9H8P8fo
+			NguDPBsM4bA9BnT9LGD4GQDgfDAEyC0YAAQAgApbE6HDuJVFjB6G
+			YagPRiDQHmMSkVPafU/qBUGoVQ1fz/iU++YRrJiUHUEVWh1AXUQA
+			mW3ip8x3Y1Sok/eqxVRPiyHQJ8MRcwxVEK+LARoKRYBPB+BIJ9FG
+			STvh+XwHwZhqg+GHAYYdZK9V7r5X2v1f7AGefZUeQLq5kUPqZKep
+			1E6o0RIdVVQlkKYWPqxQqxi5S9D6H2P8fQJAnDKBIOMdI+Rx2BJ8
+			CqL4KhpioBiNMAQAgAWwsNItuxPzPVzrrXceVebTW9t9b+4FwbhW
+			+WYAFsygbCzJoJYiNViat1KstY65C3rJSHum2mrL8a3GLFCLMdIo
+			QwB/GyGC4ZPmiNGCcD4CQTrsxFd1PA0QPwzjVB+MIZ48hhXlv1fu
+			/l/b/X/heTAIyG2NHMdVcqQdBVqqDutdqxs0LrqLurc+gF0jswCo
+			QZCbs3wVBUGWCobI4B7jZwASkGwKwGA2GSKEF7CsH3uTM5Q0gQA0
+			DVCAMEZw8hg4lx5j3H2P8gZBj6NLAaeH62VI/hOX+Cqmw9uZgnC+
+			SKryMTYy6RV7coTTM8LMYQ7RZhODgNW9mQiUKmBaMIHoMQHA9pjj
+			BRdM8Z41xvjnHeZM7Z3zxnnPWe1l5EwJcfJRyJI3QnbQZEOT7D6C
+			oXVO6mVbKYW0VZclVVcwDUCdlwdws8+EhC8EsCwXhQiBBKKHNuj8
+			33wNaEENI1QgjAGaPIYGm9Zaz1prXW2t4a5+yNoEqegzVuuiRVV+
+			2DtI3Y1NVTR2Ebk5Rq1hk0SlB8joA6EgZQHYGwP1wRkBYCQBgLHO
+			LkGo5wGr+AbsrKep3rmvCEGkawQhfjNHiL/bO896b13tvfPWAiZg
+			FwLsbBGv3rWKydg25eWKBaMxjrw4u5uD8Gh3hRQQkBTDlEgHERg3
+			g474I0KAQAJRQBfCYBYL+R83MEzhurdm7t4by41y3l3L+YcxqAPg
+			aORVm7L4cjbgJi9haI4fv+pEz9kKN2PgfZmxNJmmKODcLw0EwnoT
+			LzIiQSGghIFuJIFQt8K1Qcnyc2QQw1DWCGL4Zg8RfdS7R2ntXa+2
+			PqTwPYZ4RR7WvADbI9dA9CRJ0NwPiBqYh5X6LwnZO59F7F6QijpR
+			BR3jyH4O8CgQhjgUw3ODtpCgEgHAEAkd4vwbjvAPvy4/DFH9eNqE
+			QNY1giC9GWPEXvlfXev9h7H2TEQQgcASCEbwuwfjeP33jRPfe9aH
+			4Jlm6PQfA4S8HgZcXR+C8LwYQcWAvx2iwCiHMawUfZkNGCJoFowQ
+			fZqB98fruqEE+m9R6r1n2f1fr/Z+39yGAYgpAcDEZwrgdUhcjUng
+			GTC9c9+G9+ySwg8I0a6I9E5wlQ0k8Q50IYDcEUG6DcEmFQHMcg/e
+			IKD6DIA6D6EEDOA8EEyW3QjcQYCKDYGsCKF4GUHiF5ArBXBZBbBd
+			BeNKB6BmAiB6GEFIBuvy2atmmGkc54+e2c+bAC8Aog+RALAG0hAR
+			B0/+yaIcBeCuGcBeGkG2HqGlBe++pM+2+6ri5M/IQgCMDaGsCMF2
+			GSHiF3BhDPDRDTDVDWJOCSB8AqCSFsEyBmFs+I5yNQqW4EmLCXB4
+			6BAPAMZe4Uu2+UmU8NCCsmwWIgHwLeHwAWB0GKAW8nBeX6X+1gBw
+			HkpYH+pfC43SQnC/DDDHDLDZFHFJFLFNFOIGCoCOAwCoFWEgBgFW
+			7zD9Fk+AsW+FFq8TFm4a64dxEEf0/E6NENFpCA72IkSKSOBUCmGa
+			BVFGHMFuBoHMAyAoAMAylTC6QuCODaGuCOF0GSHgF1FRHDHFHHHI
+			9iCyCWAyCyFMEYBeFNDw/0OdB6UTB/EQ5+1896toYJF8sxCPAFGF
+			ABF/D2IuFe+kFeCk+sClFGF8EuBWF8CCBoAeCCQoxkTNGyGtG5DJ
+			HBHLI3I5I7I81wCuCSAyCuFQEcBeFRHpDug8/4f9JS+dEPH/Hw5K
+			ZXH26TEBF3CFAST074I0EQE+HGEQDyEmHADzFGEuDwBEEuDQCmMA
+			8LE6xiAACQDcGwCQFyGQHgFzI/K1K3K5K6wACqCQAwCqFUEeBgFU
+			udJzIAy0ubLZFxAXHuaZHzJo+TGBJw+ZDtIDLQIyDQEKG4DQEyFa
+			HOEzFGDuC+A2DuEQDYA+ERCHJrAUIGCSDeGwCSFwGOHgFxK9MzM1
+			M3M4qICcCEAsCcFiEqBkFjCZLhHfJZHnLbGJLU17CG4QbtMdJ3CJ
+			NhJjD7HrD0JCCyDyGwCyFQFyHXJRDZKWMBKPKSuTNmMiIRMjMnMr
+			MvM7Oi1kICCAACBQOCQWDQeEQmFQuGQ2HQ+IRGJROKRWLReMRmNR
+			uOR2PR+QSGRSOSSWTSeUSmVSuWS2MkAbBIgL9QjZfy6IP+TTqcSi
+			eT2CT+gRShUOc0YAUWkSGlR6m0uXU+GVKoVWEP+qVatVmD1ytSev
+			RWw1+iUOx1uUkw3tUmLVhu5a2S5XO6XWVlokBQtKVBiZS3amUHAX
+			SqTwlHFsEpbsZ4LfB4/IZHJZPKZXLZfMZnNZvOZ3PZ/QaHRaPSaX
+			TaeyDIVA4ZM1Wjpm1+zxbZ5PayTb0vc2akbvI76HcDP7nhaiFVjj
+			U6JcXhyLmYPnxfoyzpxAfmRpD9hM54sLk9/wXUmj0JE1ZI4ULLjU
+			Lq+HCwYl4glrbGLbw/f8fn9fv+f3/P/AEAwFAcCQLA0DwQ0QSA8B
+			QSG2XIfG2qD2q60kKNoykLpLDTltNDikv+4kEuPD7RtrErbOc1EU
+			KnDKgBmLRnhmZxsHoZ0RxxAwgBmB6ZkwFabwswUcwqhKqPibD5vr
+			IkmSbJ0nyhKMpSnKkqytK8sSzLS5AYBQBgYeZmiKebeQ3ITdRc37
+			ew83EBrPFkTTg5qIzkx8NTrMqezwwKehqLhnhqZhrHoZkt0My4hh
+			qB4hl4SwVl40L2Sk96GiYORsLaYp4LjQ9O09T9QVDUVR1JUtTVPV
+			FUs4eJliIeIHAYAgHJVFE9upCc0shWyF12n02wFN8ouRJsTwDO8V
+			zyyteoMIQzmmIRfmWeEg1VaqUigIAJCgV5FhQV7O0lYTjolS1MFr
+			TVOWtdV13Zdt3XfeF43led6XqixrlqHprhQEQFhQneARNXEUzUqt
+			l1okGDrnYMoWHJliwBY7T4VhSNYqgwnjiawnlkYJ2vVe2QoYLolA
+			qLpRECEpRMyp+L4JFqIiaOZsiaWhiHeWmRZ1neeZ7n2f6BoOhaHo
+			iFF8UAbF8IIbgkIMVTNgU0ZfOyrZdqDlWAo+G6tgutRDp82KBrix
+			LmLY9myLZTFudRTaLew1CoDA1EqO4RErZSrycsLfCcOhsicWZhne
+			We3cLw3D8RxPFcXxnG8cnBOEIFhODGKYODHrFftFq2x69qmDbDzO
+			I89YnOslvdjbA0uKMx0yDjWQ5uDWSxVnOS3H3UPQwg4PRCjUDxC7
+			wgfXLt1CM77v/A8H3Hmeb53n+h6Ppen6kcjoMQQjoRY6hOReLYDz
+			eB9Oy2L+J0SOfNsXSYf9LAeNr8+dCnH2ob+iBJ4SBTHKSA4kabwc
+			XqqiE+H8EgnwwBMAsGBrqIFiHBI8E9vzHHBMggDBWC0F4MQZg1Bu
+			DkHSDhMCABUJgsxLgzcIRliT4WpPjeEsmFT5z/MMSew6GcDnRvxd
+			XC5qZhCDC3GKO8W4Sg3DUCVB5LAxhPAtGMDkFoDQcvuSGw+GxIAo
+			B1GyFAWIwh3ixiNF2L0X4wRhjFGOMiTwSgfAUCUbQuAfDaQxDg0D
+			pn7PDfImuHJH45q3IfHkskNG9RThi6pM6enWnQIUN0cg+BugkCeM
+			sEkZUnDsF4DYdgEwHgEAmwuKKRH3kjirFeLMW5ISjlJKWU0p5USp
+			lUSIAoBAAgFTCmMA4BgBAHkBDAz0cldR1KNHyN8gj9Qyb1L42Utz
+			+QpjvIQy8cywj8H6P8fgCwdjFAWPofY/x9SrP8BIBwBAJDtF6DYd
+			smo6QNfqSoKIdhtBRFgMEdwsJtTxnlPOek9Z7T3ccMgVIOBkA3Bc
+			BAG642rrgmK59XL6pkxwmC+uTkxC0TnhuwlZFCJePFIsDsMQ0Qdj
+			GGiPIY0+DwBKB2BEJQtRIApXS+KBjDaBEsCkHcbQUhXjAHct+kFN
+			6cU5p1TunlPUciVD8CoSoagsgeDUQZWscaCyGhbRRqMwD8zCdKpO
+			Yx+5kSDfnIWKBGQ9CUHAHoQ4nxxiHp8aMRQbgPiKDqF0DYdYV0rh
+			qkYoYVg9DbCsKsXo7RV1lr5X2v1f7AWBsET0MAUQNhgE+IYFon37
+			vgoJQ+plB5lVYolIGPawqHNVqrZZ9FE7J1Nh4R0XgyR4C8CKGoaY
+			RbBmaGYKIFwzAZgpAYDOp1mXQVyKWGsRY33ZisHS7e1dwbhXDuJc
+			W41IAVAjAYCoaotAdjVoHUqt9FrQVZoTZU/tUn2VUogm6XCkYdQs
+			l2R0fA+h/D4JkMcCQ9x8j+HvccugFAIAFAoOkXINR0gCAEAC/cer
+			GritwVYOgkhwh0EaKUc4jb4YLwZg3B2D8IOMAGAMAIAx3DICEO5W
+			CsiO22svdMuuHnyvyuxMehiOY/TmZhd7DtnrrUVoMSMJAbBqBIFy
+			Mcd4ucIlQCyEcCgWRTCEBM22/1cI/4BLIHkSw4g8iIFCOYRGO8pZ
+			TyplXK2V1DiuEmDAVwUQiAXCjCiylTrqWSxfU+hVUcTo4xTFK7rW
+			cWsTpVePOhJxTi4HWKcLQexsBaywS4XAkgVC4CODkCARyUrhpZkg
+			ugfhNDjD8IMTo5RB5/0tpfTGmdNabM8GwLYHg2CTD4CkSbZM0Xhn
+			JmYqOJI8PwQ7dvAGK84WdzliCyOMSVD1HuP0eoGAjDJAwPQew/R6
+			acI8BYCQBQLDlFsDQcoBMKAEoHh7W05TIaO0hpLSmxtubd29t/cG
+			4SNRnjTGsHsbs1mbc5nW8WZLwEj2pq0ie8So701RUhAp1d7Wb1XD
+			urZSAxCBG0GIT4sh02M3ERUOQWwNByEaHAEGCnNZGxUkUygchIDh
+			DkI8U45xH8J5ByHkXI+SZVHEL8H44gOgYAQB3Ric47a33bZ+F+aT
+			8Ii1hovWTqebXS5prjf6aDtndB+GUaYP+SkLACAEAAARnilBeM8F
+			4JQFgvhxvvn8mzLBmEON4MwmxYDqE30nsnZezdn7RPUTwhQWCeDC
+			FIDYYSC9YbztUuWIuY6n3ldksvOa487oj3u65LbMzEbGVKjA0qN0
+			do/2gJYPAIhLFoI8FLOcS90373UzlL6Y0zpr2n0HofRej9JAEJYP
+			wK+SEwDJnPmN8d2xDzPM/NcS1W77Q27m6T71X71kXdnQe8kJxvjn
+			GY1QkdpGUKEFwygagqAYDXON/+dcWM+DkMY1AcjIGoPQZHpfvff/
+			B+H8TIpZy1HUMQII6sNqzsf8HoGZd3c+56e72+KPXe+zf3z+cud7
+			+xgW/cV4J0H+BkC2GeBkGgGyHqGg5ICCBoAeCCF8EuBWF8+i4ozc
+			80NGBCCgGeBCHAHOHyHA/HBFBHBJBLBMUMFGESBaFGC4CaA0C4M0
+			3W38/g6y5g/2O+5whm/uLA1e1c8EzG/w5k+Al6IyFmGEHcFmCcY0
+			Cc5A6W6aGEE0BYGEB4BgAcB4zE2s7++oNEH2H4H+H2AUB8GUAUmc
+			mhBPDPDRDTDVDWP0hAhEFmEsBkhO1U9m/e/8/6M4Q/B21NB6mGyO
+			90/pBvDzDw1TDtBqIyCmDqGuCmFcF8HaFc3ADICgAuDIE2D2BG7G
+			Iw0VC09eNQGuHAHuGuBUCuGiBVDZFPFRFTFVFWMi/KAOHSGGCCHS
+			AeAaAIAfCFEPDvEMJXD261B+s4/y78xRD6/09q97F4q1BpCIJIHI
+			HSHyHIBSCoGcBS2E2I00AqAiAKAqGwFYBiGwm4m9D5Ask4paO+lC
+			Fik+ChFZHXHZHaIAAIFA4JBYNB4RCYVC4ZDYdD4hEYlE4pFYtF4x
+			GY1G45HY9H5BIZFI5JJZGoUOLVCXieGi9Jow/5hD5lM4/NZtG5xO
+			YPO55PJ9N5/Q4rQYVRqJSY0/6RSqdEqbCajT6VU4vVqpHaxJa3Wa
+			PXobXZtYo6h0+5EOeko4D1YLdb7hcYYlzwIkuaCmGDRRYJZLlVKj
+			fr/GESonMiTwlXEeMHjcdj8hkclk8plctl8xmc1m85nc9n9BodFo
+			9JpdNp5yNxcDxuyFQOGRccFI9nWdrTtvItzjt3DN7pLFv9RC6Zw5
+			DfuFoOTBuXvKfzaJ0Npb+lEX8/gA/iKamoRV8y3gvuN4/JCCgQAk
+			UFcihQrgCAQB8IhO+r5cD5YYUju2ikr2AdxXvxAUBwJAsDQPBEEw
+			VBcGQbB0HwhCMJQnCicmYVYcmYGYVgcGbnrA+qTRC6a3RHECQRMz
+			Dgwq4kUuAqEHPrFyvRmr7NRqjMcIdHSHHKdR9HKGAsmeGB2HgfZ2
+			RZJSeBADIDhAZxSBeZwIgcAgIoipEeM8rctsGDommcDpyR+cklzP
+			NE0zVNc2TbN03zhOM5TnOk6zYMwrA4MxMkAFZMujE7LS8mLqOG6V
+			Bucmk3OLNTkRi3Tx0QgVJJ0yNKOYyBbmKd5biWN5qiW4tLzs0QCg
+			IAICmITgWmIGwVgYG0soRUdBR3BhzHYfRzA2JZnA3UlgWDYVh2JY
+			tjWPZFk2VZdmWagwHAYAgHHIX4fnIBoFgIBsRUCytaL4wFDRRCEV
+			zbRlzVtBsZUjD8b0tQrLjsSJwDsRZRHIRdnSWRA2A+RA7i+DY73B
+			Sc1y7CBWl+dpWioPBtipfWI4lieKYrN6AoAAIFA4JBYNB4RCYVC4
+			ZDYdD4hEYlE4pFYtF4xGY1G45HY9H5BIZFI5JJZNJ5RKZVK5ZLZd
+			C0ofBSlDWWg8a5E/5fB51O4vPZ9P6DAqBQ5JRY5SKNS6VCqbS6hD
+			H/T6jVYRVILWKtKa1Qq3Ia7JrDX4JY6NZq5ZIjUwA/zKhG2ZU6sH
+			SnbVd7xeYUcy4GjmjDeIEZFaLaL1KrHhsPHZ0ZEK3jInVk67ti8t
+			l8xmc1m85nc9n9BodFo9JpdNp9RqdVq9ZrddmhYJQYLGksB20gCA
+			QBuoziqPmt9UeDIOHl+LTtfa4hx+TCbZzY/iehUpzruZGuvQ+zKO
+			3YNG+n0/30TTi1SaumQ8F10/ZVioQwmVFShhOqQEAgB+OXZfbGOk
+			/qFqQEAnmgEBwnQfJwwBBcGQbB0HwhCMJQnCkKwtC8MQzDUNw4qB
+			XEkGBXCiIgLiiizuo9FCTxUlkWMI1kXRc0C0Rk17nw6rKHRqzkax
+			2q0fR0z0gMYskhxagx6Hsfp6CKNZqCKZBpnmZEcSqAAhhqB4hlqS
+			AUlqA4DAEA7lIHIzTP/CakGycJ8GyFArGiFErTnOk6ztO88TzPU9
+			z5Ps/T/QFArIGQVAcGRmFWHJmNy3cgx+y0zOq7UYN/B0aTrG85zR
+			S1JUon1IpHUD/SK0ixnqe5+nqKg7mwKhcGMd5cUE6YqiICYqlGQI
+			SlHMExTIok7KxUTjISRxTHORw5kicQ51nZ1n2haNpWnalq2ta9sW
+			zbUAFgSgYlgJ4hAsJ7kUexdhxSs9PU7BlLzpTMrU3BseusoN0Oiw
+			970dM6JH6fx/n6NhEm6NhMFadBMW2zhADMDpAD8MgOj9RjeIewtg
+			3LNKGhmLxqBmZxsnqZ2FZJkuTZPlGU5VleWZbl2Xq+HAXggHBjlO
+			G5joNfUA0hHl1NXH2dq3d1NaFGd9wlFWjMRe0hXzUjTuyth/j6S5
+			wj6QxPnGQ2p5glgBgEAIBkONgPEOOoug2OsXzLjDnQqsJunIfBuh
+			IKZohJr29b3vm+79v/AcDwXB8Iw5bEyGZbCSHoJiTc2ns3pa23W7
+			1OYtTHJM7eUIaVetP6dYjhNRoIAGAZp4mALQ9m0LRznYfRz8Ki4Q
+			g0BAQlURATFUGgUgYGm2WBTGM6SiJBE6cpBD+TRyD/2Xnef6Ho+l
+			6fqer63rwYHQYggHRiFIGxiYpz9z59SegUreb93fzPyupCnOtbo3
+			2ROzH58nqP0IMcUEHELA9DZCwMcaQ82cvYIEEQGwDwiClEGCYUoF
+			gJAFAs8B+673hoROGCwLI0gWDVG8PcasBoRQjhJCWE0J4UQphU4M
+			VAjQXCoCuEkDAVyWv2fccBn5qnSOWaQlVeEPoeucXS/Fprmn6lVh
+			skRFZDR9j8H+PsSIpxzCREEJscYgh5pKHm4QCQDgCASEIGkDwhAz
+			hSAwGc+5+YKRJdCVduBFRhjQHmMMHwZxrA+hXHmPUe4+R9j9H+QE
+			gTSgbAuAcDY2RbA8GyAsBIAwFkljY29yMOTUw7fSROSJd4fo4c2g
+			9+DlIixHjaUx0Z3CMjuHkPwd0VYriUFSOcSi/mAMsAIAMAIBA1hV
+			AwGthjDgIANAIBA3p/HhSSY0RgKoeRthVFYL4dwrJBTRIAAIFA4J
+			BYNB4RCYVC4ZDYdD4hEYlE4pFYtF4xGY1G45HY9H5BIZFI5JJZNJ
+			5RKZVK5ZLZdL5hMZlM5pNZtN5xOZ1IEEbRIgj6aREfZC/53CaNR4
+			bSZlTKVGqdIKjT5PU4dVqpNH/WKzN65Ba/XZLYYnZLFV5tZp3apx
+			bJTbrPA7hF7nE2I0HkxD6l3EfWAzXiwLjg4mSh2ESUgjOHUEMxSD
+			BnHaddcJJq/lMrGcw53Y+3OHyezw++34/33mdRqdVq9Zrddr9hsd
+			ls9ptdtt9xud1u95vd9v8yCQQAgS11oO2uHw0CQ/mrjmJr0I90rP
+			1IZ1thlOxv63wOnaO9S5F26V5KhmfNb7btfTCvbEmi2nq0UKnnIh
+			VYvXYrO77/CAABgEAIBi2JIKC2OwvA2OwVhEBQVqKgj/N6y7/og6
+			w+kwcg+kIT5ykJC0QxFEcSRLE0TxRFMVRXFkWxdF8YRjGTci6JwN
+			C6UREBYUSKwm8bUx8iMgrSkkhsG7UZoE7skrA8EUwnI0iJjKMIyO
+			9baSpKiKmUap6GUUJaHUUJVF2dhVHYeB9nZF4MgoAwMiuIoJiuMA
+			mgsMAXhKBYXrHCUmSapEXuse58H8e4RCkaARHQdp9nRP9IUjSVJ0
+			pStLUvTFM01TdOU7TzdgCAIAACYxTBuYwcBeB4cPE6sgK03Mgy0r
+			skSTJdIrVWbCSg3ddIPXyOWA5yvPYlFhI20jTFyY53lyU5cnYU5d
+			GQeBdTRNTdgwCYCgwJAcgiJAtCQCgtCEGoHiFAMBvUuVJwrFzsKS
+			SJUnQSI4EecI4U/fd+X7f1/4BgOBYHgmC4Ng+DBUEYGBUZpWBwZo
+			EAOAQEUBXeLpnY6V1lEtaxnW9ILnjSj143WRgBk6LZSssrtnLLcH
+			8fwAH8aJtvmXhkngXhemWeBemaa56mba81p2C4JAKC4ahWBgaiGG
+			oICGIgbAeIkGwfUNRynP1JXfFt4oEfB9H8fARikaIRnMdh9HNhG3
+			bfuG47lue6bru277xvNIjqMQQDqRQ6BMRWUPRjCm1jIuOopldd8Z
+			V8hRPkvEa2yvHQvlrZZfCyvneeR+HebRxHubRsnCe5sm6ch8G6e5
+			80MeJ6H4ePW0NsWyIIBOJuEA2KAiBwCAiBHeAQEoPeIEwPASE3ke
+			UB4GAGB9aa5XD3UE86CkmVZ0EmNxGnCN29fD8Xx/J8vzfP9H0/V9
+			dPAFAQBF6TwZl6IAagkICxcsh+V/1H6Rv9coRKABz4BlZZE5F/zk
+			yYQFOu4Y6KxSqohOpAwnJk13PVXg9cgg9lCj2UQoodI7h9jpfZCW
+			E0J4UQphVCuFkLYXQtBMCABQJhnitByM8BQCABgKJ1BQhD/IFJVR
+			Gx5P7IEZQHRM5I3DJ4fKBSssRLCxoJEYialJJUF4nNfg0QcRgpRz
+			iMDqJMcQdYXxljNGeNEaY1RrjZG2NxqQ0hYA6GkSwfQUiWisq5jM
+			QSpJPcuriKsPYBQIiFEtw7lYHKwijBFzcVEYwWa7BiLRkiDDgHOP
+			kcAKwsjSBXBwfw9o3yhlFKOUkpZTSnlRKlu77gAgCF8J4Ggvgfg1
+			AiD8l0gXpwBNsxxFBbpcFrl/FCP7ipCm3iYauQL+pguQkYf+Ccj5
+			cxFkkiw9JXwsh9G4FkVAux2iolVN+cE4ZxTjnJOWc05zKgXAmAYC
+			40BXA5GgBgCgBwMGWkTHuRcCYkzDiLMuB8zJiR9ZNIdx8BnMGxc1
+			M6RyMJIPUizNQ75CRbDGHgLYJYchshLnRRujlHaPUfpBSGkUqAgg
+			2AkEEXYnAZi7AGANdclInx5ghRGQiTp+zSoAiSJUxqCGomTQc7MU
+			pGl0mgr+nEDUVTVIU7YfALQtDTBaNx1Q3KR1VqtVerFWatVbq4pc
+			RAcgSiIDuGMEId4tv5qAy6gVNVWshn9IqfkQ59U8l04V6UwnM1Co
+			VUShkP6jkLrfXojZahBieHKIMPwmhyB+q7Y2x1j7IWRslZOyhNgC
+			UuAILqlQuqS0nkHT6uEu61z7f212wNMqH1ymLaKusiK72oNfQk8M
+			z1bTRqLUiP1MCGDNGw0IHIZBqg5WSaeytxbjXHuRcm5Vy6rO+AKB
+			EZIqAbjJBKB8BQJZpz3lvHywduabJMiNeC76Iqd2sgXMitFeKEWC
+			O9bRj9tq+1tl7TQhY8x7D9HmDALo0wYDeHKPkb1zMBYDwJgXA2B8
+			EPqBOCEBYJxkCnBuMgCADQCAQivaCfFdL6UBvleC08/7cU6rneYl
+			+H3CWvgreuZt5HF3iXbi7ENbKzkNDSIob4aRMCuHUJjBOPcfY/yB
+			kHIWQ0ZhQCGBYKArRIAuFbKwAVMbW1qf/hzGKtsTYZsBjK3Uhso5
+			QKfAXK7Fk+4iZZbXF+Zsq5UWGRAXYyh4i7COG8bARz+5EztnfPGe
+			c9Z7z4UcNwXAPBuEiHkE4kcUXny5iOvd42P5hy6QbR2W8N4ku2aq
+			n5a8VT2zJZ+9+Z2Q3ZtIsEiQ6h3j7HUDML41AZjkHUPocmfdYax1
+			lrPWmtdbEEEOHEEohw8BkBAHjFOWKZ2r0Xh3K0WM01DtHhrEt6ND
+			3qqDlPTdObb4nodX6pOkyGD5H2P4fIQA0jXCAMgag9Bka33RundW
+			692btq7k4VAjAWioCqEcC4VdHsbu5tq2dcdjyR2Nmqhe+99aWvTI
+			KfOxN+5l07hfa9Rts6SIiGoRQ4A1CXFcOkS+7uOcd49x/kHIY2Ut
+			QGKYRQLRTBWCQBcKy7Ke7D2XsrgMR9I7N5narUVA988Hj1bA10vO
+			cbUvjw7T9qdQ3dIq9l7b3Xv8i6d0/qHUepdTbgAYAoAgDCtEjkwJ
+			gPwKhM4USzmvRt+Xt39o3ZGWeI854ISrE0y5lcw2lsXs8GdPV/0g
+			iupRFRfjNHkL8IwbhsBGH4P0f4/OqeJ8VCsgIIAAIFA4JBYNB4RC
+			YVC4ZDYdD4hEYlE4pFYtF4xGY1G45HY9H5BIZFI5JJZNJ5RKZVK5
+			ZLZdL5gCwSAwWuE0MlwPBkEB5GX/MIJP6BKKFIqLQ6RAqPDKXSad
+			EH/TafU6ZDqlVKBV4tWqxGq5RK7Eq/YbHLLLYatYLRKbPBrba5dR
+			7fcKzCrndJBd6rFXE6H04hsYmoNnS7n26bxicVi8Zjcdj8hkclk8
+			plctl8xmc1m85nc9n9BodFo9JIgUCAGClilBgsSIOQkRIjepDtMd
+			tofuM5tN1pbdvd9CbPwM/xKDpONG+TZtvVOXWOfduDB95069x+tH
+			a50czz9xfb+PTQ1R74HF2fR6fV6/Z7fd7/h8fl8/p9ft9/x+f1+5
+			ICQQAQEliSbWiKHQJiK4Sku4rsFoHBrIOq/ilQe5C0vo70KqdCiS
+			Q22rnM9DqlPXCMJLlCTqOk/DiNwwrDh8NBrB8bRxHwbUTxvHEcx1
+			HceR7H0fyBIMhSHIkiyM/iZJoWpLhiWofhqCIfgBEKGyoocKSsxM
+			SP4qMeOG+sGyyuKnzE7TmqnMqVSpNLoIpNjKRNHbtvzFaLHoe5+n
+			oIo2mwIpkGoehkSPQdCULQ1D0RRNFUXRlG0dR9IUSAwCgEAxREOF
+			ZRCuJAMCvMbQyw98tv3Ls5Qs+cwwymE3p9M8yRAtT01G/U4x1OcV
+			Ouis7zyIw3GwIxjmmehj0jYtjWPZFk2VZdmWbZ1n2haLggIAYAgI
+			TRABUTQwiiDQwpNVk1Q5UU3RvUtbLE+NUtHcMpwhV0NVgk92wVcs
+			T1rHNbvvOqKn2fh/n2Kg8m2KhZGGd5ZWlhWF4ZhuHYfiGI4lieKY
+			q0Y7jGEA7kQOISkQj16Xncb3VnOmQsmu+TzQo1VJflV0sbl93M7N
+			cRoxmS4XxHF9PtfiKHmex+nmKA7G0KBfGYeRfYtpmm6dp+oajqWp
+			6pqurRuNQsA6NRIjyE5I2pa2YNBUOSXtEucXhU+zQ9dkr3fmMP5p
+			WL0N7tK0Z1c0U33XKKHkep+nkJw6G0JxgmeeRg6vxfGcbx3H8hyP
+			JcnymqB2GIIB2WBJBgWAKAiAoKb24uRvbksubuvGU3Vlm3Lqx/U9
+			Heu55E9W7VI7F0QTXFWoqcp1n0cte1+axvnua3K+T5Xl+Z5vnef6
+			Ho+kygSA8BQSFoSwYFoE4QAWE8RVB0r2dPUnY5zse2LzltP7VLW5
+			N3ujs9vWnc3z2UL76iZtnGfBtvDCMOAc4+RwPTgNAeBECYFQLgZA
+			2BzUgMAUAMBgVgjwXCscu5l2jrXWG5Tk+ctbqz4LrNEu2ECVTFMy
+			hOVt+R1n6J0fszt/CqGQESGwOEe6v1fBGHGOkfQ44HxBiFEOIkRY
+			jRHiREk4Kk1KtdBMJENAVgOBoMq2WDra1zQrQY+l00HHxOvMlFqF
+			S8lwM2IvFp2b4XdEIjRGA5REnDuJCqHkbgVR1jwH2OuJUe4+R9j9
+			H+QEgZBSDIOFkJQGAsicEECkThpzUvvJHG1cUHlbSSVebOK5H5LQ
+			sjc3B1T8DNs1dszd3CDkvQzPkhgho/h/AAH8IMTw5RBywlkP0fw/
+			x+yEl1LuXkvZfS/mBMFhQNwXAPBuKgRYLBUAgA2AkEEIX1ypKhB+
+			GUmIRxebI29lEKZQGalErKUj9UUN6hQ/lMxDR7D4H8PYM4iBvhnF
+			ILgdgpJhT1ntPefE+Z9T7n4egBoCwBgNEsH0FAlguBMAyFxeMmoa
+			SUXzJuNNDn1UMdcqtOE3GVwbJLRCGsZ5SlumqXuhpHCzvFeOFIPA
+			2gpDZHCPgbM/SAACBQOCQWDQeEQmFQuGQ2HQ+IRGJROKRWLReMRm
+			NRuOR2PR+QSGRSOSSWTSeUSmVSuWS2XS+YTGZTOaTWbTecTmdTue
+			T2fT+gUGIl4nBkvJY+ihLAsEgMFyl/yCo0KV1OHVaqTh/1iszeuQ
+			mv12Q2GN2SxVeZWaqWqtW2z2iT2y3xO5Qy63OSVi73iR3e93yLX+
+			4QxXMB3K4wIJvGB5vZ+vPAZHJZPKZXLZfMZnNZvOZ3PZ/QaHRaPS
+			aXTafUanVR0XicGi9RogVqMWiUGC2x1LVwe/4LdwWt7/A4Pf76Ic
+			a58iPcqvULmSLnz/o8fVdHp6W9cKI37tcDlwp/P4AP5DqJyoc/pp
+			yn9+v5/v3u/H5fP6fX7ff8fn9fv+f3/P/AEAwFAbPAIAYAgIOYwA
+			+OZBDYERBAMAoBAMirroNC7Lt7ATgw44jdwzDDQRDCzARIvKeROm
+			cVIRFjkopFzOOy/zuPnEi1G6cp8G6LQ+x4ZRrHoZUCSJIsjSPJEk
+			yVJcmSbJ0nyhKMpSnKbatuURDhWUQYBQBoYIbGIATCsUNwDDszQ+
+			1cXTG5qYzYk03rLFLLTjOLnRhGiCTtOk0uFG6FFIXB2FINZFnANZ
+			5Hqfp5SpRtHUfSFI0lSdKUrS1L0xTNNU2jAFAQAYFEKN4RkKNotg
+			6NoBgEAIBzFFDiupM09szGs/OhEa0xNO6d1muKUV6nzkWAyMZzQs
+			D6T+gtE0WOZInEOZOFkdROU5atrWvbFs21bduW7b1v3BcMlBcEwG
+			BcThAhUTgahYBwau/WCH2GykzwBWt4t0z95oHfaOX67c51pV8QTw
+			/ti3shV/2DeCCFkYZ3lkM5EG+M50HafZ0XFjWN45juPY/kGQ5Fke
+			SZLJUJQoPAxhAPA9DKEA9AOAwBAOiWFTbPr93q/97u7ZLPX/m6Ma
+			FMGAsxMOiJpYU835Aa1aSnNknqe5/HqPJLHGPJKFYdBKODqGTbDs
+			Wx7JsuzbPtG07Vtb/BUEYFhUSo9hQSogBqCIgYTW15Q5sEyZzgiO
+			79W83V0ruocHOS+73m2mIFxK171G14FmYh3lmNhGHANhxHQfRxbZ
+			0PRdH0nS9N0/UdT1XVpkJogAqJpIjwExIhCDYEBDfGi1lp3ATVhj
+			O6Dwys8QzU6urgr+YPnnJPlEJvnKfJv8zzZbGMeBbdZ7Xt+57vve
+			/8Hw/F8coAYBQBgYPozhCPo4C6Do4ZRCtcb53kPd353gRlXK+chY
+			7OENK/eQXRxyrn7otWQRkfY/B/j7EkKkdAkhAicHKIExpj3yQZg1
+			BuDkHYPQfhBCGERIATggAUCcRAcQSCICgEICoUGBQEYM/4oLPTtM
+			/eCTaGj/3iFuaPAI1LS2DJ6d7Dw+J0xdjKHiLsN4jRwhvGuOAe41
+			4RxVitFeLEWYtRbi5F1bwOgYAPB0ImFQiQeAyAgDxF8MnlQ7Ok76
+			Aa/n6NKLfG470AE+K+iC8lnURIDm8PwYIb45npB0EkOIOgrhfmHi
+			9I2R0j5ISRklJOSklTNhEBwBIIkKYVgzBUA0GZPYhRtiKXaBJuTN
+			tEjsiJw8PoAx6NRKOPrTY/ysPsXUc47B9jnEAJscggBPCzHWJ4fg
+			/R/j8ktMmZUy5mTNmdM+aEzFVKsC2EwDAWw/BoBCH4EYHQEgjcLG
+			xnUq2jELnISxNccyXznlpD2PBlXjx7nEfp5cBZbH1LMPYfA/h7CR
+			ggJERIohzCJHiPQfo8Zo0JoVQuhlDaHUPog2UAoBAAgFKIUZ9T7A
+			PgaAQB8kssp6Tsai42G7hGgP8b/K2d69IgSxj5PSPyxoEH3K4Pkf
+			Q/h8rRHWJwQ4oBzCHHKOsfQ5aI1FqNUepFSalVLqYgR+QYwpAaDG
+			y5mAHALgHA4RmkB+Wdz2fw7p/UqaUUqndDp41LTTnWphO1hERoE0
+			2pxToTgiBQjmEQOQdQ+hyVNr5X2v1f7AWBsFYMn7MmaUXC8HYMIH
+			w7AkA8AkElX1Yr2pFHRgFJZUUnnDSmspNbKxwcFHFEtXKY1tpmfQ
+			e4+R+j3mDMOuldq8V6sJbO2ltT9EBIAAIFA4JBYNB4RCYVC4ZDYd
+			D4hEYlE4pFYtF4xGY1G45HY9H5BIZFI5JJZNJ5RKZVK5ZLZdL5hM
+			ZlM5EAQCAACTB+FCYejKID0OBcDxwAH/FKPNKVSKTS6dDKbD6jT5
+			hU47VqpV5lWKzB65XYHX5fYrBELJWrLKLPULTT6ja7bM7FcLjIHK
+			6305UWo3Mi0+tHWn3k9X68rrh8RicVi8Zjcdj8hkclk8plctl8xm
+			c1m85nc9n9BodFo9JpczNpwSh6FCUdTAHjqPxoER/Crppoc/9vuI
+			Tu6NvN7It9j+HH+LNOPMeTws3y4jzsnzuhorfwI3c+tBXC6Hy4Ue
+			pnOj04snUnHq9389ez6/Z7fd7/h8fl8/p9ft9/x+f1+/5/f8/8AM
+			sEgPASEgyCkDYyDOKoNDOCAGgICD+t0/7fOmy8Lq80MMotDixsPD
+			yNRCp0RoRErFOk/TqwC37gtNCh/lqYp3lqSJUnQSJfGYeJfH8fwA
+			R/FkhSHIkiyNI8kSTJUlyZJsnSfKEoylKcigaBYBgaLIkguLI4C4
+			Do4BSEQFhS+MKP9Cz4RPE6szYqTIzcj04onOaqrU7MUvzFcAuw0R
+			7nyfx7lGW52FGSxWHQSxom2exoypR9IUjSVJ0pStLUvTFM01TdOU
+			7Tz7gIAYAgIJwggoJwzCoDYzCKHAIiKAQBACATqTqzM0vfNcNq3O
+			EQLc5s7utPL8K5WzMLhYyWnOdh9nOTxZnUTxMledJMnGdJ9HHT9t
+			25btvW/cFw3FcdyXLc1z3RdKMAyCoDAyLwm3fVINDMEQOASETLTP
+			CaJWTXyQ385VeMhgMO1+zVbYKqlhvvYsKtyyZ+H6f5+FeYB3FeTR
+			YHUTUdR5H0gXVkWR5JkuTZPlGU5VleWZbl1w1DUYmiACgmjKKYND
+			KIwdAkIwB1kAa633AFkTU5jQYUgmkrQuOlxNYCT6cpWGRVpWHobq
+			SMWXZpSFwdZSE0V+OG4ch8G5l+0bTtW17Ztu3bfuG47lue4giBwC
+			AiKojAsKt4XeHYYgeHep6zXusaNgFd4Fgl/qXwujpNx/F4Nfiw6u
+			ti6noe5+noUxcnaUxRlsdZRmMaZ5mNkEg7p1nW9d1/Ydj2XZ9p2v
+			bdumYZhUBoZ78LwsiVLgKgiAoKpLofLoXyXHcgz2peWivoNtg9b2
+			C4GqT1q00YgsplGqehlFF0ZRFOXR2lOdx5H4d3cfb933/h+P5fn+
+			n6/t+8kgKAgAgKJAdgTCQ3pvipVTgPAYAQB70XpGLaKrl5pnXnuG
+			aaWCBZGGEnuOLBUtqez+QNJoM0bA9RmiqF4O0VQqxejtFWN8cw+R
+			vv4hhDGGUM4aQ1htDeHEOYdEOAOAYAQBwjs8CPAIKoTmaBOAdAcB
+			xBXkPbcPA5xLSGBnEcawtDD1j1wZicQKDUG3uEsGcNkeozoUQqhJ
+			CYbw5R8jeh3G2N0b44RxjlHOOkdY7KQAQAcAQCIggSCOFMIgFQph
+			LB6BMJYEgHgFAk1WJ8GIHmcgi4xoUFGoSPeuUiLaLU+PTJC6oY7p
+			xjivGCxgVwvx3CuhZC6O8q5WStldK+WEsZZSzloTJmIBAfAzAgD4
+			J6pgny9AoE8D4GQEAfTxF89quopOTMdF2JklGEEkmcSyLTlYuJCT
+			6RgfY/B/j7GCM4eQwRXMXFcLCUYsGtjnlrOudk7Z3TvnhPGeU84Y
+			AxBQAwGMvQKhPiMqcGAJwGAwNQTdfUyHEEcmm0xD8koJldoS5SSx
+			vJqwde1JtFxEC7l5FuMYeAtxcDHHgLgXYyh4i7MGYWelKaVUrpZS
+			2l1L6YUxUwBgCgBgMR9CPTgIoOQJBFAoBAAoFIqycPkh6h514pzN
+			gY9RY80pHJ0kzUcss2SBzbm6MYaTqBcDIpDRujqi1G0yrEQAAQKB
+			wSCwaDwiEwqFwyGw6HxCIxKJxSKxaLxiMxqNxyOx6PyCQyKRySSy
+			aTyiUyqVyyWy6XzCYzKZzSazabziczqdzyez6f0Cg0Kh0SagIBAE
+			BDQVA0aEcdBIjkgdhIkDcXA4bgOkAOXP+HV+iyqwxyyWKJ2avWeC
+			2mg22ZW+1we4yC6XKKXaFXm7yWzXu+Si0v+vv9ptx7NNest4r1eM
+			p4rxhM95sJ6Pd+vTAZrN5zO57P6DQ6LR6TS6bT6jU6rV6zW67X7D
+			Y7LZ7Ta7bb7iiA4FgQHD0ZA8ekAahAgD8aBAfjIUg0ZVsA12M38A
+			dPX9WH9fAdm+2vtzTvdzReC8bPwePZX7cxFuON7tzJPJhLxlvJeL
+			7Fr50u59un1f5/4AgGAoDgSBYGgeCIJgqC4Mg2DoPhCEYShOFIVQ
+			Nu29D4MwPD5wwRcYM3JDEKQMDFz3RQR03naeK1zamLUejBL4ySyN
+			EdjZOo4QuOndeSCXpbk/T+P8/TQNo9jQMQ0DyMQxDRPOTZLMQ6Dt
+			Ps6IWliWZaluXJdl6X5gmGYpjmSZZmmeaJpmqa0kA0CwDA0NwtVk
+			OVYDkOQvA8OQ4VgOARA4BARdSAI6jxPaGRaiEnopJKMRWjlwYF5Y
+			+giQGsO88z8O8yTUPQyacp4xjSPMxjHNM8zHPM9j9PObKuq+sKxr
+			Ks60rWtq3riua6ruvK9r6ZgBAEAABCkIQLCmeAODkOgvA4Op8A4O
+			AoCACgoUdSYsSKkE3ttDLdSG34xTi4Utt+5E8eaCqWZs/D9P8/DS
+			Ns9jSMg1DzMioKfNWnjaOI9zaYOg6/wPBMFwbB8IwnCsLwzDcOw/
+			EMRxJMoYA5ywMDINQrA0NQ2CwDg2DULMcB8GQIB9YqKudMcrQbLU
+			by9GMxQnM0muak1ouqKVBkKRDXN89zXM02D1M0zTXPTRtEM2Rj1N
+			A9j4P49sT1TVdW1fWNZ1rW9c13Xtf2DYdiQgFgSAYFsaxzaQ1ctz
+			QtCUCwtCAGgICBargi+kVnzWj7jaPN3opSB7rS09z5P7QdANc0zd
+			YjR9J0PRdN0/UdT2Pl+Y5nmub5znee5/oOh6Lo+kQwBQEAEBQmB8
+			CgmCoIgKCoKwjAsKwzUzt+w68HAJCJEsq3nLI9UXfMu3+kuBRfxV
+			D4RGDrO8+zrNG8jRNY3z2NY1TePc1fW9g1Td9ymKa6X5fm+f6Pp+
+			r6/s+37vv/D8VnB4GAIB4Kgj7HrwLCoJwgASCd/0AFirHbKAUCx0
+			ngkweW4IoUDCBwPLq8g2KLYIk/eaQNVSrBsDgHuNga8HRrs/aDCB
+			oI1hvPYG8OUfI3mej9flDCGMMoZw0hrDaG8OIcw6h2rlP6gX/AKB
+			O692MQIAv/BOCQDoCQSAiA270BIBwBAJeO8JvbKW/HigmbCCp6h8
+			j6H8PkcA54wjeHIPgb0KozjcjMNyE49xrDYHDB4cQ6B8jih5HiPM
+			eo9x8j7H6P8gJAyCkGTYDYFgDgbBEBwBAIgRu8BHI4BEkIlSQkeC
+			MDskgJgPAKBMmzfILEQlAQ2C0oiyxaOszIzy7V3jmHWPocw4x0j6
+			HGOGMY4Y0xoHLGeXEKoWDlHWPkco/h/AAmJISY8yJkzKmXMyZszp
+			nzQmi5k3YAwHAdfqB0DoFwDgdkMAYDc1wETZm2B0Dk2wOTmAOBx+
+			gBwPAMAUAMBhYG9F3lKi5bkVGbM4USTGVY/D9H8HIOkfI5Jfj6HL
+			LGWcdI7UCH0OQcg6qCS1HyOFKiVoXTSozRqjdHKO0eo/SCkNIqRo
+			WAeAwAgD50gcAyBQAwGaWUuAuBMAoFwNAVAOBqAwFqbAGA1TIAwF
+			6YAZh8oKBsVi3RYNC4CCkqSGOGcQOweA+x2VRH4Owc47B9DnqxVq
+			gw5asD7HOOUdVBxzVZHNK2V5+h9DpmHMWklcK41yrnXSutdq714r
+			zXooQBwDACAOBcCVNAMUtsIBAAoFAKWHApJoAgE7FWIbK2eyFiQI
+			gEsTYuTUnLKLBWGWOB1STQVLNOPIeo/R5DuHiPwd1qR92sHlasd1
+			sLWWqHdVGqY7bVDttvVSqQ7B1jwH4Ot570beNQalXu5Nyrl3Mubc
+			6590Lo3SumQ4o4AABUmpQBEBqgQHUnAdSYAYD7s3jpOA+al4LuXl
+			vEBC7gEL2gDAgxUAwBQAgGvIAe+oBwFAJAGAoBs8AGundTe0AgEG
+			8T4iyosiMLh5D0tOPsfg/x9mWMwPhw4+B6tRHqPEeg/MOqrHoPUe
+			4/h64jH6PV8Y78R4lxOPUyw/h6DwUyPDF1srY21xuO4d9sB3z+up
+			kDIOQsh5EyLkbI+SMk5KIFX2v4CgEACAUAy/oDL6X2wLgcg9RCEX
+			bUCQjLFnVhEDvJdYAREAF39AWAZ1ABigYRwnhUzJA4vRguO5YgWF
+			x/D4qePcgmds6D5IJnHN4+7S2nH6u4fuMx+DwSHMXRY8Ml6S0npT
+			SultL6Y0zprTenNO6e0/qDUOoiikBAAADwEAAAMAAAABBAAAAAEB
+			AAMAAAABBAAAAAECAAMAAAAEAAGtDgEDAAMAAAABAAUAAAEGAAMA
+			AAABAAIAAAERAAQAAAAgAAGtlgESAAMAAAABAAEAAAEVAAMAAAAB
+			AAQAAAEWAAMAAAABACAAAAEXAAQAAAAgAAGtFgEcAAMAAAABAAEA
+			AAE9AAMAAAABAAIAAAFSAAMAAAABAAEAAAFTAAMAAAAEAAGuFodz
+			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+
+			GXn4H2Crn/SrMlfLoHoJoLoNoPoRoToVoXoZobodofodRQaCAPDi
+			HWAwRoHwBWdEHiAWc8HeAaHQHQHSAmHjZIAghMASvG5eOm/UK2dY
+			OiAkO2H4AejoSSAEJ+KwdyK2AMeJSkH+ZeOW6KH/qEi+K26WOIQG
+			7fS/hi7rihUZTMootaXcg+w9VmTYTNOO/5UafWJXToKSfohTKKjS
+			Xai1M67hl9YLVO2fiBULUrB0xSRRqdhYALbJGSrQKfkejkVQJBUr
+			YPVPUxisQC1ESrU8sWK1AcOyfE6w82ha81VUXdORUIYUQoVlU4d/
+			WWTara+pNoUjLwWLS9kMhWWMTG+SyUOnWGuBWMOPkAWUV+U7kVgt
+			Udja6iXiYII7hCjLirLQQpW0yuVLV8YPNmRMj/tAXiWbW9ltW4zQ
+			glXQv9KUAIxmeHYSkEkIkaKqAM/U/MkoAWIckqKqAWAcIyAcApX+
+			ASJDYEnwAqJJYM/JX+qlbUb0zZKDYgOLAeQBBKHuO4H0sLmyIMmW
+			AAGQGrDqHMHYLwG2G+LkOOTtBNERBGVBwYVAmiU6qKVBZlEQMLg/
+			DXZxbRw5ksWC1vVInbDEflC8nMownve7C9CWohxWoRalCFCFavCz
+			aTaw3MkfxsowoQo3a6hanMo2nNOo7iv/bLbTiIV9w3w9ohyVHVbl
+			bkpgHTbnDqEyFiEyAAG2HEG3ysG1yyOqLlEGIRcKmpcQbXcVEXOQ
+			sqAbcgJQBBcnEqBFcwJsBLE2fkAqA3q7FCrNdE1LRIQQrhAWHlA5
+			f4IcHOHAPvdhY4GsuHFuIIHMG6mTFpd1d4PcKqHvdzLjkGtwbUwr
+			TuTVTreOXcAefkAQAYJ+DACMDBeqA5ewBF1ZeyAAAv1hC1aTDCR5
+			rg8PfBmRw7yVobfOWRfSz1HYt5fcS6PJHkPoPrj2uJWMO9fzyghH
+			FcHw9quiHNILH+HvIqPxF8HkIPJWdMP6w9gYQTgGWeIyvXS4OVI3
+			t1AHg/g4wtmBuOWEpVfDMrJUOYOGlwP73s1FhYNcwW0bNDbQxMTQ
+			g0rQV8K3OdtxlXKKjIX9TaxljUTVXJFLUViJkKjfiRkxKK2JZ6v5
+			TGS9jxqRipWvkWyAvJOx5Ni6H9ixM2OaPQURLjVk0/jM6RLtqRjW
+			+q+21pOiS5ZtjlCHrfDNvlsO1Y9KlvH+zHkg1kXlOWbR6VDPfFB2
+			RaVUTOToX5KJkdNNJDwyz6gv3bOGIt0wtmKbk40rljJj4s2BbYiP
+			1zmW7axF4PN7lXJflcm16+YqerlnOTltKNtaYeYnl3rIKnrRyK1y
+			WYY9mIQYPJmPFJyM9f42StN8R+H8RYH2tWa6I/m9mtHYHgOwHyHi
+			KOmeAEH1PwAkHje2HkBABAA+HgBQBQBMPaIKHiR+l8P2GIG59uHW
+			Fv91BV1397999/+B+D+F+H+J+L+N+P+Q4LokAcAOHZ+cAy8jo1pK
+			AUc8HaAbf+HQAppKHnpOPyeCPSeDpYwFpeH1piPTpoMX08fgZMdy
+			Kxp4Qdp9SkH6ZYeQeUYGQrqOTe6PuKYAIAAgBA4JAwCAACAYEAoZ
+			CIIBAIBwABwOCgAAgHAoHAn+/4HHY8/39BADHo3F4aAwGBABKgKA
+			AMBgQAAKBQNBo4/4O/n9IZNIpJBYLGp1CITRoOBJrNKXKgHSJRT4
+			TAoTB6rFwDT6HKqNGoPQgFCqFVqFI5HBY9X6+BIxUIhN7JHYPIAA
+			+32/QBPI8/X7Zp4AH0+X2AJFI7veLTLbbDIXTaPCoXbYzC7VR8Lh
+			I7mIHPb9iKBdI/mJ9I6phNNaMzhJHX9NHrDao3j7DRpNBI7I5FeL
+			4/AA/H4+gBfMHvuBmp5Zr5prnpn9yYVWoJr4vXKNF4dWNFts3ftx
+			mZ7eNDCJ/rtnCoPDYRs4zB5Xaa9agFIbPCfdPrJBgH8u16b34LC+
+			qWgKjybI8AgDQGA6PAMBSRgKBCPAOBKRwWjwEAWjwFggg6ZIGBgI
+			IECAKJYAyJAABIFKeBQHKelSrI0iDWKFGUZxpGsbNO8SfI+2rMn2
+			3i8n6jzAuQjx7nqwZ8n0kZwHMeoAHeeLgG6cZ5AAep7N4cBySdIY
+			AHueLeH/H8vIIs8yIG8DAIJMbBs2gk2xxNLazMtEbztO88TzPU9q
+			vPaSKPOzGKEpyoUIq9CUEmqXogliKIlRgAAVSQAUgBdLJgmIAAdT
+			YAUsBdO0vSSLVFSNJ1IBNURNVNUASAAEVeiaKVdWFHJarlXpnSCY
+			pvQldpQgVEIbQSr0goaGz7P7zvQ6NlxtQTUNqg1ANs1M/Kha1sWz
+			bVt25btvW+oS6Loe1yS8e57gAdF1XTdZQlsUIAG8chvAAaxrmsAB
+			4ngeKBycgc4OKvKCTTcEZ2mh4DIWrQFgal6ZIEDIQVbDyXg4EWJg
+			gl4NhKiwFgYp4Kg3VqbIEBIFqo2aDOrguWZblrUuavZ+I8eh4sGw
+			K8HScJ8y8ereG+a56AAeh3t4c5vycex6rwdhzuAfh8pGex5t4v7g
+			r7cNo5bGLo66gaXoHEoDAam8LJmJwdicAAQAwEG1hBt1NgcAAM7r
+			UFPgbvKmJfXFf0oiC3cBQVhqPQljI1G9n2prVkZdx3H8hyPJcg0E
+			bsu47soKwOeL4z0dyEfPOLvfJ4SqfR9uB0Onx8ABzHIdDAdOAHQ5
+			4fXZHOcp3diwdz3Q3y8X2ezen4vGlZ4vWrpGviPSTNyOLFILNpMv
+			qPM5zL9+wtLH2mqzYRkunMNrwfCgH7qD+IvHMds4HOryntBra6qr
+			65+jKqGqAC/KoKw8RNzuk+Pk/99xo4BmtM0ZhMxqygkfa4WMo50n
+			5MHgWQ4osEyPl/WijEjxkysLKKoZZ964h/GDfBBgzI/B/HANu+5M
+			xHniQqO9CmBELDVG8R8wE2pniRnEewaE1Y/05GmLwjE1hJWVwNgv
+			D0oRNSWEQKe4Qua0T+megAdouxvC+QtgOaFQC1SywHcqjaLxG1hG
+			zIgS9wZDXkHCO1Fk5h2jUxFgbBksj9DrxFZVA0r8UoxNWWy/VGRK
+			n+sGgpIRYy0nvLVH/IMjsQWrOYfaT16sfoFn3WSVBQRGStGVj298
+			kzyHwwneJDNGUUXPo1WCZGRjWotplhNC4fhg3kQrZVFAlERpPQAJ
+			ESAfxTh+FOH2oofMwjbu0HyO91Q8COgCH0VUfQFAKATHi3UC48QS
+			glBGO8Fs2x4FVHlN4eE4RkDTnIO0W854cOTnVOudk7Z3TvnhPGeU
+			856T1ntPefE+Z9T7n5P1cBAQgAAgUDgkFg0HhEJhULhkNh0PiERi
+			UTikVi0XjEZjUbjkdj0fkEhkUjkklk0nlEplUrlkKQEvAQOmQHeb
+			0egZfL4fIqek1BbweLxBjlcrmCbvd7xCT6nQJflPpz9foLfb7qb5
+			fL3Cb8qoPf4BAIFf4AAIHf9fBj/fz/Az9s4Ef1xAdxfoCuL/AVnr
+			4BgQBvV+skCtd+s8FsF8AAChF8w+JAIDvt8AgEBAAA+XxICxV8xW
+			FAGevsDsd7x2QAYEyGoAwAAwGyuTA8Fz1rgWevUDxG4AObxNk3e+
+			yQFAgAAgFAoAAfJ4GZyGcx2IsGBxUFzWBxmB7Ga3OM6MEf2fw3dx
+			ADAXHxvC4+htWC2lPfoAuPfqvf+IAfX3+G0ftx5fJ4YBOiALiuRA
+			Lqs0xTyMVADuL4/bvrPB71rU0baLHCKxtqz7CwggzPQDDbwNy0be
+			si3DQu43EMPg+D9w0fgAKfF64xefh+n0z7+K4fcYH7F7wAA/b3qk
+			97yMg0IBOVJDmoG7TlrGzjow4tcMPWukNQe8EARS/oBwYxMjMmgQ
+			BOG3qxyRDMSy/CkTMy2rvx+3yxx60UnryxICLGAoDLG4s8gQ74Dg
+			VPKzNYBKxgNQTLUSBQHIEA1DAABgHsUB4KMg1y+ASBTFUk4blTuy
+			QCNylqIttDbCn7HccLG+cgLcACsvefB8PebxyHoAB3nnG5hmidAA
+			HmesXnadcbn8fcMHwgb3oEetloGfKBx8AB7oHN4AVVIFpNFayD2u
+			gkVVJcSJMailyyY6qCOS5ro3WzLFMnTzlNa1d4gABN8OJMIGX4AA
+			FX/e983+BV/YBgeC4Jg98ASAAEYdgOGYPg7Ltjd2D3thd9OHhzXz
+			Dd0DgA4zj5Be2QXcxt7IJkDG5W7rdM5dM6XC5dwNBcmXIVc9x53n
+			lxNu257aCAGgnsABz6Po2kFSXZUgAb5ym+ABomoaIAHgd54WbbaB
+			RuwVnpNUaBT1BUjAYBzjtcxQMA/hgGAg44OBFtu3gADYSYIBYGMg
+			CoOYZsd7gWzctRPsOe8Mh1TTlV56nhF59ny751nPZR8Hq95vmrXB
+			6HjHeoWqex6Pedhy2UfR7veep5RlN6uW/DSR8K7HZTJkKBAQBzKg
+			QBTKh8F4fAADQKg0AAO+KAAG+QAAOeXhAAAh57LMxjORZC413tY1
+			vr+o8/rZY6udOXkGa5n8DF5xw/0fT9SDtuhi1Po/n2oGfb8H8qUg
+			VPVlZxgfcXqQPM+w+UblYWUVVF45BwjmPsPpHY9x8LVPujscw5R2
+			rYgY0Me61T3LAHlBpGoAB6j3WiXdFh3ypGKKkZA75ih/GPPghgty
+			FkJJUZqeBmaGTGw5Os+dDJtz6oqSagszKXkhn5O/AxHaDoXp0QId
+			N2SKCFszZaXwApyocvnQsqtDRozCwkLWheLZ+UqIjSwmY6C3GcoB
+			h2dB2MbDQpsZkeFNKCjfECOSZtKKEk3luRehyJaI3+o3Z+P+PphU
+			ayFfhIJKp/ErI9WU16LKHCqrRTQtw75flrojPe7EsidXXGySpJ8g
+			ZxjhykeuY1+RYynxgkGqx+kRk4uvRMd1mx3pZR+iZKAgz3jFHGNW
+			yY8kYlXLZcUliS8uSCQ8XDGdsJ14nonl3NAhiQpKw3TguCXb547k
+			LREQdsK6Yrm1mWbJOCFk3n1KkjKLp/DFuyMil5kyZ5ksubDD5Cr+
+			VXHvlaQWdj8iDMnOi+Iw03iCxFNuU9Hc+0jpaiuYCdxekJoQVQf4
+			fhkwBD7ZEPcyYAx8F3Pufcd0GR8QVIEPtdY+gJgTAoPF5YGR4gnB
+			OCYd4NaaDvIGPQw4811jLHXT0dxLxATEfXUOolRajVHqRUmpVS6m
+			VNqdU+qFUapVTqpVWq1V6sVZq1VurlXaj1AJiTNGIFDCgsgyPYBA
+			9R6j2ASNwbg3gLjoHQOoCx9x8gJH0VivD/QEOPH2AqEQ9wKOPH0B
+			FJ55jHlnAEA88ABkpgELcP6yEKUIADQmdtKdDiBSbn9HWO0yTwoI
+			hcdg1BlTLmVN2bwvhtJZTRN2zBBCYzkADNXac5B5USmDjCeua88z
+			pGOjwdxeD1jisjitQGFx13B2eRIy86yaUmJdRMgCJ0kKBxnOIAOx
+			C8LtImnsqwp6LJVD7fge+ASO0pwlP6mGISAjjpdMYgY6qCTnnLiL
+			F9K9rX4ogRVFyLib1wpPVG4W3k5MBppjaYCQaL77j+wYnM/aNCuJ
+			AKrC9xWDIP0CL6mdk5A76GOlldQz9Dp1z6hngBDCdju4isTbNmCo
+			SxmnTElrGSYkxGASQhYfp0IzHsiYb9IC00QnTxyyFPZyCxMhAOoB
+			RIBVCAHAWodRIB1IAJUaZZSACwHGKAcBMyGTlMqbABlo0yZEkKhk
+			4+vAM4pzRMR6g9Zj9CxwMO+O0d6yh7D5PeN0ccAIQo7G4OJZzQUX
+			jlHOrhx8qh6wwIGs4gS05KLaIEtVr2j2vrYjQitDumSETWq8RZ8G
+			oUAw8XQgo6q9jGruXcxS2ZkGMscYaw/WGs2H6v1lrcyrGddL51gv
+			Zg71GMsWYAvZejGnsS/OrsUxuxZgGQZBFN6p6dSvhe++ehtuzC7X
+			IZtCeaXtrvludp/T89jvk2c0TYAA5t1NJHOAAWQwBZAAgSOEAAzh
+			pjOVyUggTRdLNcW7pUkrhW/zyAWA1tACDFAZBA3NuAI2GANbo3YB
+			a/m9AAeEZVv4CQGOCO3czcRIDbHgfsWMew8z3v0O+O4cy0R8D2cu
+			NdzQ8UXjmG6s4eo80XjqHItEnJ73NoyR8/RZkyCUcds+QJMgCAGW
+			mAQbEF4JQXgAAoBACjdQNgbzGAviYGOudZ4mBHsD0TY9a4nsBfLI
+			NYLueoyDVjKEwy8evty5y7ttsxnecvcHdyOd54/VKzpCD6w/n6WO
+			ASN773hPrSJGF4R4DuayrNaNa2i1+AAOUcm7aPgAJstUqqOx0DnH
+			XAtHcD1owbHkPRosq1YD4WMbSEih0NGrLIcMr8KkMLXvwWeepoL/
+			Rv2+dKLE+PcroShi++z9z6wGSBIxU1wI4XQ06QbaEVbglkuWh2fD
+			P/XKnfh72QaDzAF8SfFG5x2zxdGOweK0EujqRQtUu2484kHx7wdf
+			mTENj7SvfliaVV4UpB/JFJzJCj3inlopcMTD5HHluOQpjpMjwJNj
+			FkMAApRDRMAQKHqpSjhNWjloSEMqDFTj2P+oRr9psk0vdFvJZD6t
+			NjvJPogjqpfHrl3ISCpKhCpJjHZPxv1o3kRrQJmv0k2DrpnP0CFr
+			8JykOrWCEwJGwu6PntOJyKFu7ohGbPdr+olpYJ0sLJYJ2pmtRrYJ
+			To1wkvbp7vewPouCDQbIwiENUKAu7Qmo3lln7jbwsIfsUrqkGC9w
+			7n4k3C9IWiwC6kkB+EDh9jWgCh6o7h8DCqPh9h2oMh7qSFsDqh9A
+			LxJqWAOANh4gVRMh3gcROKbCBKcCwFcCBBmiiByh3qgKhO+xVRVx
+			WRWxXRXxYRYxZRZxaRaxbRbxcRcxdRdxeKlKwRMgVADq1B6gHqPg
+			XCsB8gDqPgDhpBoBpAMBxhxhygMh7FZgFD7h7q8B8B+AEEeh+xhG
+			ggKIRB8AKjCvaGWCvCxk/i3p9C4CpC4C5C/wJH3vwjPi3DCHyInP
+			rrpjfjNElukDKDLGHmQC1PxORIWo0IzmyDTLZDJjVjWjKj/EmQrL
+			eOQsBOOsWDfiwPqrijiHrElDfLVHwtSLqp3JnjcjyonPip+KCLsD
+			hDVyNrstpEGkWr8Cqj3uRvFycH7okQrRvPnDymRjxkBr2kDDlL6P
+			zSaScMTtKqFNNIbPuPsLmIbkVSDSDIgDoQ7OPJWB/khPkP6n7MGP
+			6iuEbqEJYPlCuEXwmDOJgykP4DppaMZjOyoQLQskcN/o2EzLpMaj
+			yS2IqPZACADvjDWpzGYMYk8MgpsMgH7JdkjFUopDpiqy9MYrLDiM
+			ljWAEE+MjlAixzOTMHbAGDvgDOJl7gFC+G3C+DXCBAEgGjFOIFPE
+			yDWjFFHkoO7sgKiyqvhCvpxMgs2oLD6FXoHj3h7B7kXhmBtIKh3B
+			5EbhkBqB1IMD3h9B5kHlpt+NMNJn5iBtKNJD7N/zuuAOhkVQHJKp
+			sRetuiKu+O4GVL5EEEkjqtYHqNiz5HstYNWT7DMNaHctcHmnqGLk
+			wnpnrGMtfNhz/l8u1SPjqmMmQO1tTr2UGjhtUz3T2kjNwtpnxtqS
+			SzztoNrtnz2O8QumaTzKjPAj+B5UTFgB5oAN1IFRSgABdBiBdAAB
+			yB0ByAABlhphlgAB3Udt9tLlsvcCTuBADGyCBOCuDuEuFnjm6AOG
+			7lI0l0mgFOKgJgMuMUhuKOOJZs00RTeJLDaHKjvnWgAB2h0OWOXA
+			ABxBslnB6B4EdhyBumiufgAB0hxHSlaAAB5U2TElsM9DZQLiRHYo
+			nOkgEuMHrARG4gAAHgGrGALVGHm1GALGIAAOwAItYjKnkAGuxFIl
+			+l3UFT3yB1PSIjlUGUJnrw1wvUIl2NvQ2PqtoO5Js0tUK1X0ts1J
+			avAJGPkENj+CmFlIlPMoih7ziILEbh3M7AAPIFgN0K8kbhyBxPMD
+			8CalcIIgAB1h1IKoGEXh7q1p8lgM81timL0LWIXDFLUABDYivjYi
+			wIVDAofIaDdQ0kfkPV3IdDnLsHXr0vhsZyVkmjGsGwEyxD6OQr6p
+			ov01aobvpjUUPp2weIx2APvJF2HJxJ9EQiGweO8Nwp6QSrmVYTbI
+			2LhDiKGDEL0wPE5j6paD1oGGuobTGJ7JEPFwAltkrCnllEOWaD1n
+			+2ZkflvwbnXw/QkkfwJwnS7yDCEJTJTKALVwkHFScQxowiqvWpRS
+			LrPQTmakIv5JQGZ1ajuptjjV0DfwmHFKElUEWzyWM2KCEwhQgLn1
+			6y4Iop7s2U+prQquPDMnaPoIewVwoETS+qCDvJatyVt2/iFIb0QE
+			iwvo3NOpQ2HJiwFwQFXIwQ1O31V2+KBiCQylXJCnyDEEPCwQ8EUo
+			us2Czh+DDw/gBqKgCKLpfB4jDh9PdB+D7qRlZh8B2CBh9RIuuAMB
+			4gP3dB4gV3eh3geXgRPIQC9B6GOBnCkGsAz3lFptPVZ3nXn3oXo3
+			pXp3qXq3rXr3sXs3tXt3uRaRfxMjYiBAH3YgX3YgDxkADhnhmhng
+			MBvhvhwgMPUB8AFFZxspVzMkegDmgh7gLPWB8gLC9PaE3HjjaTMi
+			3k3gBkhixR4i+i/j4x6yuivkRqHLXsbqCIhSQCCDhGGLbSYrdWap
+			nPfIXNVMZDkm0TVSJQTrWHEx+OOyY100PjgjjyOqAPqkjn2STYVw
+			JI4ExrETaw3yTI6mSMZR/EvkyPblXkglsLyL1EYkeEhCrH8WqyQj
+			kEBrUrsyGHBYtQvw34lWREWmf14ERpQtsQqv7jSLNR6pKp6rPIdW
+			4uRItC1kZEWwaXLvFkdyzH7LzCcsgj3kxkjQ6jJMZMgYio6nvHCj
+			uw9YyE5DwoVqGTKjkvjMqTUgEC+JgzLWQk6k8vZH7jqTHB+V2sis
+			JsQkjM5TeLRgCLHTMZNlHFEndE/TOsolFCBTPAFgH5KCBAFTWlIg
+			HsvgDS/i+HdI8V8vrKjyqpc2FsdXNJVFXreXXToh+Dv0Zlqh6xtg
+			ABuBxh5IQB7EXhvlblqHTgAB1B0INREEgB7EMFsztuhpHkYFoNMl
+			puhlpzxwnre3BXpNRQuEvTz2jtotjF7aAEwz5yHns6Btj1MtWNek
+			wtfnrNWGMF86HmGaItjNmUE0DF5nsmQNlDo6KtTVSZ+trwmW31UW
+			zjo1TO40PGP0PUOvqttVYiWu/iNnwLO6Zpa6a3MwqCGvOvFkX0TZ
+			tafN0t10VgABhhlhhgAK5lfhmhqhm0dPGzsN+53JK0/CO0hUiZeU
+			jgAAMm2FIgIjjgPASOJlJDjgNASGI0pUqMjDFAFHAvrYXWNzzTcw
+			QoAoTYmB2h0oB5whyhuFnB5uZAABxhuGih66/h0U6FYUzB5B2loz
+			JVjB7nXYImeR9FHAEF6kwngnhgF62VJOwtYVJ1KnnHoNiiZFGtWO
+			yQNmDtVjMVOOz6LGGNmwNmS0HntHu0QGSXI5LUJJT3JNv0QO4be5
+			9UQ1ZKiu+KmrOp9w5LwkesJJ1CxnKvJrwidFlYnCe1ooBUdB3KbC
+			cllB5B4oACdFooJ1nEd1oILEdh2B2msy0lqH9oivSXHFYILjPbKg
+			ILZuJiwPZLusYk4WkzyZlwKjZDESMpoQfEMoykQZibfjon7H4D5F
+			UpYEJprprNrJ2Iaz1yObcLmrfNsSrr8r0vtIZWHWJQcrn2K2KodV
+			3aSsESUDwpv8U5DWvWQW3pNE5n32pWTsKk0JCIwsIr8yzH5HVwCB
+			+WcJzP5wCB+8iSmynkfXPwIYgQjWyGvWhiDpTF7KAcZoYcavsjC6
+			dwVMDNR0uWqJbyn8wyDpujcl3RCYqSQIyZOlUb+8psN0MwF0uXmw
+			3o1YQ4hEjc8pLFmIfLe8IzcoypZmVR/8n8orWkxIrDrTKpoSSwip
+			bQr2Vp1pPs1o5NUkznxPzrnwwlXPepIQxQqw0QOiD1Ww29DlvL98
+			iv7I8ouC/Pz4KYwrxFWDDh/F1h93VjLgCh4C9XWLwEah2QaPQjEh
+			9Doh9AMgMgNB5XdAOh4gW9nh3gf9pB3j4h6kDh6l6Bp0Vh43lAz3
+			mXu9wdw9xdx9ydy9zdz90d091d192d0qwdkUqGBgHl6AXRG3zisA
+			DhlhlhmgMhuhuhv34vUAExGgEwbRuj9gERGgLpJgL4Ak3CuB/gGi
+			9FCDiD+C7C1E9x4knjRi/D92gQ9wJtstwrl4Q4r3Co6jJjKtlEyz
+			d2A2BT1rbzYDUraHsDKjNPaPboxrXPrDeDI0KaW6THrHqYa4gQgv
+			2CCCrYpnYj0Y2tq16od6PLsj/sODlDPCpWlSddPH+EaE5oN2RQ6j
+			TYiNTgDL3yNenbhHZIlPA83dB+j9PveNM5j4111vyWh162TJbC1p
+			9TGJD1tkeok8HkauTisD8o+pzj129u6EtYir2w2SrUQ9PkVpcJLy
+			s9FMYkDEyAD5KmGmGIhslE0sasqNHshTDrx0uDyM59izeFPpXv8F
+			0sisnTNFHAEsmFBx1eJFCnbFEsrC+fNTV62gFgILhzUzBfODNkjY
+			MUKKqTcwzcyIusd8eYmer6nEbvUEXhihqB00dTlgABqBtGs1gQCB
+			6E351GtlqfzZ2uhtIlr54zvZ6Ty5687Xobi6X0OaUyj7dF3F7HqH
+			qCAASBAACwUAAaEQeEwgDAABw8AAqJQSDQUCw6IRIFACBAQAAmQR
+			gBx+QxYAAeUSKTymHyONAABTGKReYgIAAicTCZS2VR0AAGgTqbUA
+			AxyB0QAP6lT+gz4AU+oU+azOmUWpz6eVmIVqR1OvTKp0io2OyWWz
+			We0VB/2u00+1v+x2K1Wyo1Oo0p/WO7VC8XqZXel0ikW8AYSzPnEA
+			DEPkAPHHY3HufJADJOcAM1pM0AOx3OwAM5rs4AO54O6nveoP2oPy
+			1a226/X0WxwibAIB0UGBCPAYETYMh4EgAGBGLh4SgvhA+LhkR8EF
+			AyRhQMgiCAabAkF0MBbKf0zYd/weHxePyWnCPt83B+Pu8vJ3PvFP
+			e8uRuPUAPV5axyt17AB6Hk+BznCfAAHuejVHgdUCH2fa4HserVKS
+			p5/H6uDywusjuNkkzbJsCAHAgk4DAOAAGxMhSGgdFSVxJEwGqpFQ
+			HJunKXp4BcbpUkDgp5HUcpCniGJVIKkKwiCURIpCeKnDidohIqRq
+			Qr7arBKkpysoUsL2p6eLlDKgy68swMMqEwLNMsMTRNDCMIvs2qW9
+			b4H5OQAH1OoAH7PD7nmegAQY+B6ns/s4AAeTHnwxJ3Hcd74sYeB4
+			ngAB8UkAB0HOdc6H2fT/T3Ps50TRb1tUfNMqSfq8nwe7GL6fZ+Ly
+			wgFASCaDgJF4BgI4IAgHEktsKAKbTW7qntkuigrWvK3V6q0vu6ot
+			mtk7h/tkfy2WAp4CNvYSh1zYUJqWwh+vWpNvMLZFxLauB/2msilq
+			iAaZKCoyLsEAMLO67a3LpaNyLhadXX3al1WndFqXTfbuwtfV0Nbe
+			qou4uNn2bhtnptbi6r/Z8LLFe+IpjZ18YHflwMLgt4WNPsGYWf7V
+			W+fzWZMfh+vhhSktYvtWtRNl1XS1k5ZxckJXIvK8tZkdyQjMkyLY
+			ot64YvmnLMnyCo8h9taXglu5dq+RrzP1xZm1t74rXqx35cuhNdfV
+			kTlpt4Q7ESGu2q1sXrPN8XFY8yXpiqYygss14Lhmm2DYWHcGn6bI
+			fiPC2RPGFcdorC50ti8wjhmPO7KENLLnWkbYiG4p/bFuYiqN08fs
+			d08plvIL7slyrjvO5K7i/SWZpCzb/kGR35dW1ZhryzrDL94LTME8
+			aOsnc93oto+JeiiLfgqnn4tYAvh6fEn2oh8o6eCgH+9K1watZ1Kg
+			dSYgJ64BH0DQNAweQPA8Dh4hf+p3iJ/HvKAeyif4oA1xuwBHkGeA
+			jRGfppgRAmBUC4GQNgdA+CEEYJQTgpBWC0F4MQZg1BuDkHYPQfhB
+			CGEUI4SQlhNCeFEKYVQrhZC2F0L4YQxhMICGgAgMw3AQRoB5DAXD
+			3h8AcxYBxkDIGWBmAI3gMw+HuAlQMSy8AITwP4BBiB8AXTqPoC5b
+			wCFvZa9QBjBQDoWAGW8AZeADRkLe3on5eF6IWQotFkzP1fGyXc7Z
+			DROzbOEI4AM6iQSpOscE8QmBMI6lZAE1MAZFyEHUfQUlhLAHbuKX
+			e3kkcf15lFAIRUgyXFfHedu4ZyJZGYKucEVFqUnlfOZWew0pjiEm
+			k0jyu5X5q1TJ3TynJyirU7pzTkapVjK18lSK2rZLABADEXNu1Uqq
+			WHkp3KWm6UkpC4PEd6v+aa1IDuCXrGqT7r5IudYqxFsrpmguRNUn
+			g1ipp0y8XDOhOhiSlGqTcXBd0mFrrkcQthKLG13l0L/Nkty/ppxy
+			mmAKei2I8kcAMUUiRNgEAMS3JUBAC1pJbAKXAA5wQAJzbtJkuB6F
+			ulSI8n1AjkJE0fpLNsqCDC4UJIEXAAoCS80ZLgASMJJwF0YAUXAA
+			1GgFxfIIcgk4CSbAMAdJgA5RScFFASAw2slSBOIAK7VYMgoWUqde
+			XR5jTGQu8NOPg1g+R9F5G8OVPg9h7msHCOY+w8B5KaHIOQ+ygTVD
+			rQUYVTRSR7oWgNSWjZUDGFPaPXlO5qzUtPoBVk1xZ5SrnhlBhMEl
+			5lz7SvZSYpAyuFGI8SYnxPipo9J4k8iJE2okGJ8Tg6hPkglTtQlh
+			HpU7VkySPZcjySyDWWSSRCyJQZOLOt8ihLJMrOkDuHIgkdokpJYs
+			kmaqyY3COFudYyrRaLopiaU8NqzurLM5LzdtyZS3hFFL68owikkC
+			XmUIPIeV6b1jovcAAdN8QADXG0NcAA7x4KLGoN0agAK3KQUjYiA1
+			jYIuLNpIQooDTdEHN6AADQISNgNAiR4DhxzkkXA2CI4J2CRgSAwd
+			QAp1iPnZcO5qq1j4TGEXDLsuA8x4GMH0PgvI5xwIEHoPA+B+zUD1
+			HiaxAVc0IGbHOYw9BeR7DzZcsdxszbIFkVs7MmwCzsFUR6T5G5yC
+			TEvJMAzLhVEakQtARkiaQCEk8JeVO2ZPLZlTszbNIlmCIWxnySMk
+			ySkmkjsznmYeUCVW9s1Mu8Nk7sFnMHdOZhc5plB0DbtwqWplltTP
+			Ai8jBD1TsnTLdOcV06J2iUndlF6r11iU1kc+w+mUX/MUpMd47VFq
+			SMYPFQpiqxAAHWOkzzXR6j3UEnMeVbqNp51MfAvpiGZLqVaXmY5w
+			QGAKAoQQAlEFbEbIeQ1aJF1uTVYlkxZDM5OrwcU0hy6wWBSOaatd
+			iknXDsVX63Y9bNTAr/QnoaA7QdsUhXau82RAl5PDpUxRgz1TW7rb
+			+0JhGlGtoSpa6XbbCyyuLj0d5h23t/aNYusJjLbdvsdk88pCjWVj
+			rDYKoPbbgLvsy5CzFgzNG7p9H8gRNa3nVqsZ9G5ZDZ3KsKeQXEth
+			Nm8Slbw3gslpZETKb+1h5a+eQrhKU19ZHEZWcKWPwXnrI1oUbeow
+			+YRNrV28YovVdjRVTNsc1cpv3BnAts2z2ndM9XbTN7Dv9rTKppIS
+			6jKzby23nObX8Wg2xXUvth7a2RhDP2EFLVNMBbvQFyylQ1oq3W+H
+			a+Ruk7rjk1dKzAabP7yGj3i1Wdbojo/BjXPPe/6Bo71FowGH6RAf
+			JQR9ExAKO4mVgR/vjAA+Un46yaj7fQPqG4Fx4ghBCB8eIMPjDwfw
+			EQeBeD5FKHtFcawzPpDzhoIBo+BMUfZ+19v7n3fvff/B+H8X4/yf
+			l/N+f9H6f1fr/Z+3937/s/VhtDgCn9QHlvh7D+IIwxhjFAyG4G4G
+			6iSVSASvMpkQoAQniimrEAuUyH4AuZGAI7CQoVMi+owKWjGMKjGL
+			WAMYEJGeqYyQoH8jasEVMja8G3SS2KGjskISmb6nsj6AO2oYS7qo
+			CWaoM0EzwswkOXiIokZB4d6eklAjsqsKAkq260GkyIuzqt027CG8
+			CXYYU6W6OdKnslVBalabEWYk6kMuMcOV+WO2Ol2NUl6lsaGTmXAa
+			GTynIW476j2tqJ2AKanCQt+0ccYmfDw4I6i0SL44K5SsS8IdwcMY
+			cqwnAm8k8dKekYK3G46XEnOZETwPgeOT6TsZhEkTzBEJ0KKao0A7
+			+KsXuO2ShBxBS3meS4+0Su6NkJimmkqxCqYogRKAeJsIGI+ReXMI
+			cpGoyemH0QsYoIS02oCoOKeVQNckyKeHypS4/BwH2r8b0W2wY2QA
+			SpgV2AOpyJup2wYoxFhF0qGKeAUqOOqKeAOAUOuxIIFE2AIkwoXE
+			G4e/O3kLmbseBGQ0qLyMcQIHWHeMYGYGuHaNGHiMYGyHAvWxiLyH
+			0HoVceuH6Hor4sAsPGOKgsIeusKsEsQ5+sW68sW4UNg+w/gNg0YY
+			et+YlDq82uSsysktazsmUtatUzKIhCYJGzWJkSCzUJStgISzRJqu
+			EzgzoIMXbCbE+mVJEJUtyz5JeJ6uJKQs2tNKTKPDgSuz8uYug0Mu
+			tI4Y+Neuquauut/KxK24Mu8d4Ly0DEmvGu+Ly06UCP6HnLUP8HoT
+			4HXLe9uHUfKHAHEHAABLUHmAAG2HEG3LuHrLyTosQ5yyaYqmOnyN
+			wAmI8AOwawyOQOGIuA6BIwiwWweI2omI8AiAsRIILFfKDC3I6giL
+			ojelsQcPyT6HyxmHGx2x6AAHMP4P8HixyG+NQHsQOAAHaHOQIHyH
+			uNUHkHe2KsE6udcg+bcKjBkRItCIGtYJyJ8zSIgtaJNOcJczGSNJ
+			yJtOkRmOpJoRJOaJTKIz+taKQs4IGzkKouKz/OTKUmQz2z/KNJsb
+			gzuJU0CJ8uWKg0C8+Kk82agKO0HO/J9Cu0dPqghLILhEnEm00a6a
+			60006vQHrLaZOPgvyUXGQMYHlLWMWMhIGUQHdH6HuUmHoHm1KVIH
+			YHaNMTkNYH1Q81+NZLaPtEyH0ZEnIQYZq6QJWOQAeAZAgmORkIKO
+			QkOOoKAI8WiV+bSqqcKLEmw4vBYlYbCLEb0568GpqjqKsWyj04EL
+			YZi486pD+lIaSbMl0dK6+WsY2jomMlQcW388JBQ4PBGYHBq3G5eb
+			OoGbQoA8YuYj04iYmm6mYYwueWScHE43E5gLVS0aaaGZQ5G7mKU5
+			MPUH6U0ZnDwZ45abtCmKUNY5k8EoEoCaMkdMGnA55IysQ7QWtKQz
+			xSmWKa1Us9CLuZOayaZVC6wm25IQmADD2ci6qlw6wSwtjPzSJGCL
+			G7e7Sssdw5I6ZKm7U4eKAlc7GbzQLD3TckcLclqTYaA8ZSo3O6em
+			3BqYUedDhBU4mKY8yYTTUcjWdVceBOHTst+V8O0mUME3A3Ab1NEc
+			lS7XQaNDXD8L9TS84PEui0md0NcoMWLD6PVYIesNSIgHwKC9aACA
+			IUWMKHwJk94Ns90JifONsH0IeAI98Ayfe+E+IBjZCfufzROr2LWH
+			uHrZSGy+kGY+oho+vNBZjZlZnZpZrZtZvZxZzZ1Z3Z5Z7Z9Z/aBa
+			DaEgu/kBVaMV2AAAeI6BavMAQT8AOF+F+GCAyGuGuGyA1ZQHsAUr
+			QHwI3AQiel0AsLwAsKgAJROl2H8p3AuLWi2S26WouXSkqJ+aU8Oj
+			avFBM3WZ+40kIcGY4oQIgj/DkxAxDS3TgYzM/CzDdY0IwkRKUOoj
+			+mC9GWK4cXsIccwxLCzCUI5DlKGk7b3CeoqYNLI3jBQS5PiLklXC
+			yXdB0dmczA+YC2MTyQZEfdpbQVKnPcPPyI9c0WuKtc5FDX4b8LGv
+			GZ0XGm1Wgq3VeaXVCpUbwWHS86ePMYOddD8ZynkZUl20vEkQoo2Z
+			RVUiiXEwG0eLY7YO8bcK+2+Ya66cC4sO7FPXDFxHQKeoeKeAYAaJ
+			tJ6AWAedfcII/Fg5QcOowo0pA3JFwLhZReeKNGGNQQnSrNOa/FWI
+			4V2N4pgIapw2RGwAKpuATFsALcehyKeqaKLg1HEwaofE2WwVskwq
+			nEQby/JELKrRqKUaWXUMQNUUONUHaxePvN5LiNQ1gU0G0HFLyHkH
+			oPgriUEPSToyDImMVIhieenIdiagNItIpitOGaAgO8U20lLKrVhZ
+			pQFeCsljGt5cAKhJS0EntKcKozZPYs8JkSZfwtuKCJMKQta0DPTj
+			FjpJ6L4vBJkISeVO2uVj3CWk2ScIGJNKMszPpP6xOdjKvHeLRPw9
+			C0TKk7FcpjTJA8Fkvk2eXESd1EnbPQxQxZSPtLaT4M4M9RLH6HEH
+			KHFh4Ps1BEoevIlVehANlMWcRHSAAAcAkIblyAAwrMcAgIuA5MlF
+			iI8A2BCODMvaTM1c2qUATJDcRaHkhUMXUQNDIQbNuHPNoHmNUQEx
+			tNYHMG8P6HtNMHQHIQIQeNYHarudWTvF4XWhQJ4WCs8k7jeznV3J
+			bJ4lg61Jvj/Phn/oFOySxjzJiSvOXB/n0zIIaJ5PHPVPRkPd3kRK
+			XopovPak1n9oLjaz5jQ0cz8MIzepHkelMINQCKCzc0VPiz9nrjPj
+			MS8uzeCmgltdrQSZRlGMSvRLPZSABLRLvQfQwHfqG1kMZRBLyUzQ
+			iUcMUH0MYHm1g02U0HpZRQgU2PtDKUOP7EmUO5Mly8QZHq+Z+2WA
+			iRKAZbIAQAPR4AMReIEo0AE2tSK3OWdXA39CkWWdHhbT88AorpkK
+			iAMmIY0lZCmbUW8YJUU7qmvHjis8LVGk9dXERTQZKYQ6rTk3+lC3
+			+YDSTem2vizTWNjTxWFXAYtWxbnT9EK3TVk72sKcriqLY5E8I7mL
+			XXOZhUeZ/UimcpSX4u/UuH25nssjc6ntlVgjUjVRqvFVCO4IEuOn
+			vE40KYGW7YA4QLYQYaE6/D4V7FTrwq1VneZs6l26qWCO2NqKOXuN
+			vgS2xeRkeXhUCb9szWNi9KFvFFxCPBubEXA8xVu4QVKyTXNHi3Qt
+			48aduQsQrVthmLHDkW0O1FEbEdqa+aYTfExXm8Xv1KsSi65Bc4bk
+			HX2MA4U6RIwLpVyuiPJI/k/k7X+TI6mLcKIQrYKJ+H49cLc9RMDG
+			GKCM8J+ryAEH2IkAQHQAeAeAaHOIsH0IEAMH0AwAwAsHkA5yWHkf
+			qBeHgCXyiHeLwr8HytQG+HFyyHqCDy5Zhmry/zBzDzFzHzJzLzNz
+			PzRzTzVzXzZzahTaLaOyuAfROBaiUAPaeF4F4F8A2GsGtavlKATN
+			2HuAUieXIAQLZbELyAsXRAkZaesPZbUH8jOpq526WjPA0XIQ0ijV
+			qLUTwACVNBqjmcPBelQK2oSk6ILO4kTsuWmatgcdA7WmGtqScAGI
+			byJPs9CugqrHbcqSgH/CvXYoUIukzC9WVE1T2nE4KZDXq3GZ+yfd
+			Unu6xSp1FsfcXDcdAXZ1BdtDLfBbPlClrFKJ1ojfOnvvlvlCfFKd
+			TgKZN3ULMnjtKYNBI6bD/3nEPI1T3I5ltESnLEz3enVv3RXe6ay0
+			vuqmBuzU33Ot5l33MoQZK4eeaac9K6ab0YukqVtgEwSAgqYooRLr
+			Ichg9frf3e6mEoxceTtXLc3gOHn1cIc2sHwPscg3RGYdeL/4v5aW
+			souJOAYpnGkIJ0OJvFgp6KeN5G8AYqQKfg0OuI2wQKNE3hYxPkdZ
+			xVSQjVyUlILRgv8HeQIHareAAGkG4HivvH/L0HDIGxkUjNNngH6r
+			3IerwsNij7gT7IrMFVFil31IwsU20sdZ7jDKi0JjLblT9WHpez4u
+			TkZhHjnhQz58Oz/JwRI0CKvFpvUKb8lBKNUJ4taW+TzoVkySDkVJ
+			do1PlPjnzj1mmupkieXudk89BxLKF9bPsn/T979K5xM9E9B28TzQ
+			w01lLLYT4NINN9+AAHJnTp810nfUeQr7j30g6XgN5l0KKAiAoIap
+			6JsA4BGOQwVmKBMI2AYOUAAA2BBmYAUJGAcArO5HXMXJDrvzW7PH
+			l7YH4rGvurvNqNUHTnUPvNiAAP2QIPwIA/AA6HC9wA9nrAnS6HsA
+			H6+gBDny/4jFQA/otGY1G45HY9HQCAgDGQIAwIAADKQAApZKJUA5
+			hK5bMAHMgEAAJOZdIwNPZ2AALQZtQKFLJuCKRQ6NOJ0B6dP5TI5o
+			AKcB6VLaXSARQ6nPQNRAKAKnOZPZKZZZ1QbDZrNXrBb6XVbFMbNS
+			6nS6XUbPP3/fZ/Zr1fYperlerzKrldpjerVP7xM5jHL1eotgoc/X
+			7F39GMxmX5nwA+tFodG+dMAHxqYO9oa99dq4a9dkAHjtQBpnyAHf
+			u9vp9k9QA+9G8Xg8dvo3m9HnwdG93tBn3oNZBs7x3xmow+dHlu5f
+			n+/opHAwFBEAKQEAABgKDaICpQA63KZvFJvEZHlJDKP1IpHln8lQ
+			Ar8iz7pQkTHPqyr9PA8KKqCk6bpG/T9P67wAIofjNws8LLIiijNo
+			xAUBQ7DsNw2jELQG+yIgG/MJJUjMIIrDcIxQjEQQqikBQXEaLu+i
+			8UQRGkbRRGSPslAiKxfFsJIqpcXQZFMkw7GkpxLH6BRHDkUH6fZ9
+			yLC0bxyf6BMsfiHxQ8J/My8DMn6fzrx7HsPTG4J9oNIkhxylDwRr
+			DTMo08IAxPAMeRHAMTx/KKmJqnKaphIMNSgzUxQZSTRTJH0VUMAV
+			EI8789RVG8qx4zFKpc+z8gEk1TpXJcSUkvtOqgl4BwRQEMx3KERS
+			NVD7vyAYCpqkUISoiJ+wxSNkz0f0zOwh1mWSyj9VrGlixHZsis3B
+			iRgKAliQgASTxbF9FSJPUysxScwVlWMeT1JSVJZRyWxUwyWvlDUE
+			r7GlKXzIsBM+zMtV4kFyI0wNd2U71d0rCqIv+kZ+r9LyVn2lWKH/
+			iS+omih8L8daony+R9gYBgFnOCYJggc6vH2rx9ArmJ5A9mh5BZm5
+			4CRnR3orjh/nyshwhJoZ6qjP+CaRpOlaXpmm6dp+oajqWp6pqura
+			vrGs61reua7r2v7BsOxbHsmy7Ns+0bTtW17Ztu3bfuG47lue6bru
+			277xvO1EBvgBBVv4DgXwQHqqFjfgO1x7gOXBcF0DZqmqbANt+BPE
+			gVD4EL8BEIAsioLMEAjMH4AR9OiBdtAKwaaoxTi+gNHMWMHQLNn7
+			QU04kAM3YFPiQpHVVxQnCIApjWqawKnABq+nKws3CkvpXXqXJuqa
+			YJP6q5pPbqrPpOOHyTd8pSpAHod8qCWqD5ShJMmt8SdKXoxCv1jz
+			D7sLKlbylVr98APzAi7qrLwflHZmDOJuAAmZNqyFmGZOim1DKRCL
+			LyJwUIkJNzFQWSWhEvy0kRo2YWjZNS0UFI+P6ShhqX1CL8g2lFAR
+			KUNvvX8kxSShUEr5TYutZ8CU1rQM+pggUBDNECdowp1jwiVFBgsg
+			YkKwkootX2S4wcKYUgCPpFQlbxlVnpKsAABgECRxdJGA4CTD0TgF
+			K+AABQDyIj8H0RSLIBwEkROEqA9MZx7D0I0ToAA9zgJgIivQfKd0
+			BRZXoAJ1JKyTnmdOVQBRFACxbAQAwiMcJHSQAWSMAkZyek8ASVKL
+			ABX7q+YOtZvTXFtoyhejlPiXFjQGO0dkfRGDdm5HyPgzI7h3G5Hk
+			PRLw3xynAHjLwAA4RzR4HsPMgQ+B6p/YpAciqWDgkVaPNOZ5FVEK
+			ImaohU0a3nzbUSRmb0M4IQ1lK28yb/JSPRg4T8ixU5zq+d8vdeM8
+			pPPGSbPQvc7yhlmMqX4pZZj/IZL1Pwjc/ydGHkwTosz1C6UKoOVi
+			iESaJIHVsrOdJHTuxRQov1IzA52SoUk+6MhGF7HzYTOujJGS9HVh
+			6woih2paGnHnMcAFMzlnJpuPU5Y+B7HXOqmNNM0m4RGkmAlRkoAA
+			ARAsV8A4CiagfBKAuLgECwgdBKe4BYDiTgYA+e4BFTgAAPAiWEk0
+			nJ4IolFOVu8LU0J8NGRdiQAB5DuIgc4zI7BzG5HoPBLw5RvENHsP
+			IgQ5yC01sEAAcY4Y8D8H2hce9QXvKAbm71GCrihz6L1O5Wj7LNkk
+			J1QOh6xJ4k3LcRwrpPp1lTK0RkqZjTGl3JaWwnVsCblmtcUItpPi
+			slJoYsJ88FJ50ToRR8iJgJ0FDLcYy4C3CiktLda25ZezFWctGrxM
+			poKW3ZNAbg3puTWWANYbCPZr7v3iHlec0hEDanGH0b42Z0SBDyHq
+			PK9JqDnnBsYaRLyaiMOlS8dxDJ/oDEWR3OCcRIwKgSA8AABICI1A
+			HAMA4oABpJEwi28NJr0j7LEt8jGEsdEAvClRZdAxLK00khiihbsi
+			XxoEo2mhOS/kPEZTUv3GeAMXoWMzKRF8FlNSkQNDRL6eVCUeT4sp
+			XFaIYLnX+0xJCqMNwwj+vRfko164pe+smG8HURIevyu5+hnFkmYI
+			gqBjKPYfj9NynFHcN0uyCTnkzD6PzvtHhq7ma1KjKp/UzDAoKjCS
+			kyWqR1dLz0SStzKj4wa/2E5CU/BAkaon7JfiAiPIK+Hh2cejP2Gc
+			M59KqoqkJXDCaPLlSTEo/Of1W4eIyPtdK7VMrLNAtqHK0XxFiyCk
+			xBI+sB1tlOt2zkSVxYlnTBpUy6IhJ8Q/gaF6yV6q0gsYt4NZ5zka
+			ebs5NCJVJa01LNaB7SJ10dYXRxV5glQZ4WMRVigAnRk3kExpn5fh
+			8IfHYo8fCjx9gO30OcC+/RzlVH0VUfIEeCDxAxwceAKOFDuZ0Ehn
+			hESIcQh6OcF3FR7lRVlWrjXG+Ocd49x/kHIeRcj5JyXk3J+Ucp5V
+			yvlnLeXcv5hzFrjfBAN+cA4IBbhCnOGNk4g1zixcC9A2NYaw1wNm
+			sHmAk2Q93LmbcyRQBLnD9OfL66FMzpEugLL8ARfYAzBdePBIcsT7
+			x/u5TcgE8Kbuy0/d5iXaR9+3YdWmUwr5JiT7Xz7npFpj1HKreuTA
+			sL2slZHYZjB8uT1fIxtEgW5j6e66BfbEpF2V4nr5iBm3I5FbYO+M
+			ii7xaBFVLzQe/pfGtE3EYYCQ5ZsQPWLp24oE/dDdhxJMGqoubxuy
+			kbSsw3MOikQokdZP3Q8JtDJFovouGiulPR0UNjDG0Idlui1qse/c
+			IXdVwTIj+FWO8RERJ6fXaE7F40XivFE+nXvyxXuL1wsRYTzAKJGA
+			o9lU8XxwIjF1h7tf2kUARVIhxigkIigAwraPaPBJh5IiIe45ZfzI
+			I5w+w8KQxFZ4xcKP79AAyOI9JzInCM6SKR0DSTIiIBL/yTJbiTRz
+			aRECRFYAitJAb8jmRpjLpDxPhLpiJZAfYfAgSxgigeiYSYJLwbAc
+			K+gdweI3IbMII2geIiCnSISNoi5jBjEJohyoSbiOTPJQriKb5o6a
+			555o5BibUKbGj3UMUF5qidbcIjcM56KkSiylS4K1jzqdUNyzCI4o
+			TAigQlSgDcaihgqhJcS462R6x4kQTQBB6fCkr28Nqs8NZpLbrazb
+			75ZSSlCDcNygKkizoiw6qdomIyw6q4a7RTDJi9oiCmCmsBUUo5Ye
+			qPgg8ByZyyMKRQrjJtSogqgBao4kYCQCwrar4moEAEw9wBisYAAD
+			YEarAB4k4DID6OIA4BAmoB0YJYAngA6s7srJ8Mhr8PSxkGoii+au
+			oewzIdoc0JSw6vyPAeoeIgQcwcI64eQeJLwcAb45aNhC4eyyEV6c
+			Buha0aoocFrai464YqaCKfC4a4YxojgpYxq1ImIwq4624sIx62q2
+			cQcREQAvYswxK5wn0ii0EQp6cOAq7z8OSzowgp8jYoYxouIp604r
+			8kq3on8gD3UPRLpLylsmROpLy7i7g368Q568Enq8QecoC+oeYeQ5
+			Y4QiEni/AgQeinQ0I4S7quC/p0pHoziEJcyuMe8rBQBSRWok4CAB
+			4DLBgBDCTCCNQnqqRVQ+J6A95ArDglxRx/qARF7LqGRaaiCeJJLS
+			J6AyxGhRrKDxDbBh5HDGBPCAzJjZrGr4aFRBRTSKj8BTRGCjp7xE
+			DIphLzIvzNpICccwaVLJ0x5chSEgMxzIRVkrI/TspKyG5c8uZZj7
+			J2RgR+UV5+RM5LMy5OhNQgxTI8CDyBgfbNZH83SGhEBRLAKCBQML
+			RJhKjM6PwjjVUvrEzKRbLjLRrMjGJXRMScj5hPhERQRdwja/kNsv
+			AmTTSP7J5LTZrZ6tLUDPSMjOLRicUx5AbVAmrVRYZCZTTVx3ZEBE
+			7WTZIij65DjW5bzQayTXkL7R5FTYDDQljYc8kfT4c2hC5Y7GLZZc
+			xhZV8+yzJ/T0M+xU4wx/kR0rU67Rk9j4pHUR5pUNMwFFTc1Fk/0K
+			0V4ALiIALdo1CawwRjwvoe5D4dYmgfLfACVIAc4DVIYc4rQfNIwB
+			9JId7ggCIeAE9J4dwJNKQdwqIfYrQfQtQdQDlLZkQlMWMa1MFMNM
+			VMdMlMtM1M9NFNNNVNdNlNtN1N9OFOJr7mjmwFQA5mICoB4rQFg0
+			QfQAy74A4WIWIWwDYadQxyanTpQ2QBJfYBJbVRg74DAzQDBHIAgz
+			71DVyRovoApPj9EAIzZ1Ivp4wlQwZ3TtBYx5o6rWjvlDDtzaKe0+
+			cEFBYzU0dDCeZYUQUQNXQmSM884/xh1DB8jz1BSfB9DCbx7YLXD8
+			DKpAjvNVBMSDxGYq9XDVk5EtpR88VbMO0/xDKxj1FCTy6AxNRNqb
+			Yx4spYLQUBlDSDLQ5hrY87RGqEJdpFLRdZhAZ2TOSJqkE0zJTLCU
+			7Zr5hL8wTWDM5Y5NpdJNy/aAz69cY+yaBEjPhVCR0FbKAkyDCeNj
+			BfzHsCYAZ1iKxVSNyRKLJYAiKMwiL/r+49AoEAgBqNSLgCJYxLFk
+			jBiST/7DcASLcVQjNkwg6+ljRCKZRQtmbQMFAmRFb91mZYD/gBgj
+			EAa4qM6ptp64qpEZY+9jiTCez7s+FOR59U47o/pPgz5DyuJ0ojA4
+			QjC84iAfCWIAA4pLwdgdw64dgeA3IdQd464dYdwgw4oiFtwi4fhH
+			KaFwUMBo8LBRCaBRE48KpQtxFF5BiaCcNF6clyb4trkPkRNzEfhX
+			kRcvEftzy4ly9zRpMQ8hLvq6kj8RC4bT5ekNC45rKlMvZg1FUSSj
+			QocSsl0Tc2T7ierMZdMQ5M0HK7FCRDAgR0oiF4yA94dcBZs76b5B
+			jOxulUY+sEU+YAwkYC4Dg9wBKsADwFCSQBqqgAADgESOIBIBomoC
+			oDYraOAmt8EhxFgoh+B8dyy6zJc2pDquIeoel4reY2gdS7wegzId
+			AcQ64ekc4ACwggyXA3IagaodyA5jwhyPse1yFyTkcM12UNdzkOMR
+			UQ12V1bxdzS4xYosaz648lq6d1IyEQi6UjAr+FKg0jlFS5OD8PGE
+			xYskYq2DQloBOHsky5q0i3S2K0It9zVFLZcT8m2JUnA05xMVYhoe
+			cpinAAAeohGKkVUpaPBLgzI1I694CA46JZxLhMjZU7Uy6B7bTaxq
+			4kosIBoBgCssMsbCLCbCsBAlNWEtktwmSsj22O7ScwL5yf1W6K53
+			xABAzRb5RRdDk9cMdEZHhXLAhSRNxLF+7Q7W6Ez2E0h77A7JqjjK
+			rOjGTJL5GTUrTQxWE9aDWS7XUfeT8FuRs0xQiGzM81TbaVhd73MT
+			g27Q9hrG5HyG4zBO87TUaBiNhbM5SD7w1eSb5JMLYjzPjHaGAmCh
+			JcDUMfLyYjqBBMBDcLo4Mq7XzSFYDGZc1yk8Cdgf5YkRlrsNh9Yj
+			s79CjbM97KCCOQwmonshxcZ95Y+Mk9pPWLZZxDC/87ZKRYJSGU46
+			NA2by5lZJ3545Vs+FUiE8TlCTzEw8PStkRVDUgV10tUvBMTKo7ue
+			VE1AxKylzZl0FFLTgjg75DIzreFxLjBnqZ4mhOEe1HAf4exD4dAt
+			Te5YAfVIYDQc4EwEwEgdABWo1I4pAfIrwdYqodlPAdALeqIdAzof
+			4CGqwfzfoC7i9L1+mrur2r+sGsOsWsesmsus2s+tGtOtWtZrtOhv
+			9OxmgDwBwrwFkoAewA8mQAwWQWQWIDYZ4Z4aIDcoDpI2Qe1TQf8A
+			jBjOoDIwVSgijqx2tS5y9TbrYwSKg8FjqNxKQwZD87hDp5q+EqGP
+			J67Fzt2GR45bslbseNGVbvZVL22dh6+hhFgsIkIk5DmkmSCKNap4
+			Jb+PJfA9Qr6M1ZDDUgB4RKCDRQs/5E7Aov20hX5/TH6ogkV01bM5
+			6J705Z4zhZGbJZkqlg6jhQImcChcKJJ5yK8t6ErYzGVCswdeKEBG
+			4zI/hVrOZGjXLRqtDIsrCb1e9WpCuVtETMBDSAqHdg7NPAqILPJc
+			5aB8Gx9rK2qpAkruBYWT7DAucCtkKNz9D2yCY+z9Fnj+yNFlwBoC
+			KMKMYAABoCQikp3C4qlmsG6KtktnKPpF4AyLamiCDIKnkK1mcCj9
+			XFvDnCyN6RcC9kIkdqLCcFRbiLaQt+DztrWVetFCwjJUpOuz6/qW
+			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
+			AAZQZcYIb4cBxhtAnRxwlQc4dD+Rd5r8ZI8g+olRK6RLQiKdvKV+
+			xF+AsRtRnZhJ0yYaMsfh6ZnRVqi91hiSD6p8NmzEg0hlCLvGyqD4
+			vRDBmcz0PZixh0Wx56OtiJ5xkpTu0xgqmTdR9eo8gWyVHAz0z1iU
+			ScSSRBjWn5hhfOohkrzyY4Ap/h9G4r1wixkxeyDxhRtGACvqA9Js
+			atQbEC9A4DDWQIAE4QyE4RQzbIuiFj8Mn4nYBsncJJaYBBQ04RuI
+			B29aDACEqG9YyAAzjCKQ4FN6SIEAEhrTfxp0yaX5bYepeAjrUueB
+			x6apAcmwAAcwcwdAAAXwXwYQAAZIZZwAdgdod7dpmM+KcW2l+sih
+			7EgtEgxLEceE5+bymIq6cag58yMUd1FCNmyQrmeChpWZFToUwJ37
+			HTzrEBfxVdDXFJApbc86KSm5QyCqCYDIDCSgDU18vougBQl61Qcf
+			D4aoaocfCIc/D6iFTRsqZZ3WkQhcgpnJ1hkxhydapqWh6Tbx7FyP
+			OhmpkJ3MR87hDNIcxi45Xq9CZgewep+5tDyCaQwSaqiUbKPo/zzs
+			dMyGaIn0RSZnSbion0vkMHN3N9BtFh2q9N3E/fUKeVGdAZ01C3Td
+			BY3pik6ipqXighihFF1hl80EICKkbJ/Y/iHNJqoolY3hHZ/Ex1Ek
+			eGaB6BhcAHYsOM/fHnY5iLofFsPKMk7Ri6kMdJ3BUhfi26ciLmas
+			P8LowENrhpMC8jSaD5Tp4ZNKPojJx8Loo54BeXdokWgonVOcHSsx
+			tXeL+wyOLZtgnrAyswe2NQ0Qc4h4dQcRUw57bJTzZQ74h4BoCYoY
+			AwBIkSvAloCICwmIBjZ8naCgD47xQwhg/5/ElFQdRAlQYgWJ+6Zg
+			DwEogYEQFSrTAQAAFAHQh4CVPLJVQQkQcwb4rYVgSB+660ItOICF
+			7rA1dYFay4AFWKvrhzJQ2QlocYaogZbgloc4cIkwYQWkLQrQhwHw
+			KJCS7xCUqzWoA2ILJYbgaQxAW4UYlQboaYo/NhLd4Qh4DID4nQKg
+			NxuICSx6piZhiAexs4AAY4bxxAdYeQkwYYa5vCVqaoeghYDAcJRI
+			BIeQyBKRBz9R2WVA8gdYE3ClthFvalAScYfYgYCgc02xVKD1gIhg
+			dgsyJvv3QB3howBbXWrw/xNEgwAJwr66QESQpxDDSohoBAf1X5Cg
+			QQbYXIa4RtqH5n5v535/6H6P6X6f6n6v636/7H7P7X7f7n7v737/
+			8EUAJgKAGxyIfYBYegegeoGf8wGrRofgB7WgfIEgqwfkI7Stg4B/
+			0gfq04gAAAACAABAb5AgAAj5AcCfwBAD9BL8AD8BD9gQBf4AAb2A
+			sKhkCfcQAD+gQAfcNiMCf8tAD/ecsjElfkYe7ze8vl0ngoBkknn0
+			QAdDnkFogEolBo0CAQIgkFlgIjb/CL7gYLgQMBcNEwfBwABoMggT
+			BYIAD2eUzlzvdUUbrUnLudUYAwHggfFAKsAPj4FA8CCwegQJBsCo
+			cbcjdnIBp4CjU9n8Cfr9iD4esQf79gj4e0bbTSfQAejxkwDAsEBg
+			OhoQCcfBQNhoYD8NDwmj78fcmdblqzmb74ir6k2Tjb9fkmlsbm8E
+			BIJj4Dx0ZoGRl8lmURmb5e9Wfb3jD+fsme70oEEjcCfT6iD8fXnq
+			AFBMNCIXs0GkT5kzudHA8EbvyIAeCSEqGzB/OKfLQn+kyKuOAB7n
+			kijkgABYHgMAAOhOCAAL8hp9vwAB5HeqzjJMBQFoICQLI+BIGIgC
+			gOIgFIcIECgOuooscRygR4HYkxak6jBwmwjDwo2ep5NCfZ9o3FKC
+			CuOK9A0EKGgVFsdKKfbwgAep8ooYJrHSABkGmeEQHmqx5HWjABnD
+			CwCG2v5/gOkx8BGnJ7BMmJ/gM9ygSuoqNIgBJ8r0BB8L0AR+IaBJ
+			1qwA5zMKAKHp6nipgIkx8gunJ9gqfKSgKkwCHuhoBHwggAooAB9H
+			hCJ1MxJaOAFKgCqwxynvOf9YUq6p/AKmbpoggiEqgkoHIwfYROBP
+			aNn8ASTJSfiWgFBQCH1CwFngBzGH6hp/nu852qgnIAHwCJ6n+eAR
+			nUf58Alc5/sekzkMeiDMOrW0Nn6j4JngDAAgOfKnAAfKfAEb9Tno
+			giJIoe4WLS6ACHwALNI2fgA1Bah+AMfYBH2A2CH2AsRgGjF4Xm87
+			HqnHKfvdetcMe6SeWnYJ/1IgebqYjkNn+hICgGiFfvMAADKQAAIA
+			WhIJAOBIABAAoKAACYBgYgefgACQNI2BoJqElR8uBVTcpZrsLASA
+			QLI4ewN3Id69HYdZ3gAb5tHUAB1nXup2HZcJ6b7ch8OAydf67er7
+			AEp+CqKlt65xHKWpmkilZjYmUZkjbGKfSt5T7U6fMgk/LureECwW
+			naocO814Khy/MqLBbq8TxKX87oSNoJxCWOt3Kecl1V8PsooEASvQ
+			OgyDIABiFwXAAIojiKAAXhkFqaOAeh5TLA3bMYiNmgA5uqAUBwHo
+			4pKTvY4B3HbMJoGaZoAGsaxrtEe7QnkeZ6gAdB0TDvp7YGelBw+V
+			PJKRGcYko/jkEuSURQ3B30DIbZ8+Qj7knPMwIG0I5ED2TEFZaQ0j
+			RU2UOeT6S4pSEneOeJ49l1ZKypkkAIrIyTmyTOMOqzGGh0SdQHde
+			ywoq+GVMqcYS1BcFiWQkJITsnx7mhNCOkjdBToCdQhdOS+HhJUtQ
+			5dQ1VmzY3bM4Ru4lCTh2urdhqdaASnh7xpJ6sI0ysSGgFAMtcrQA
+			AHAOKwBECBhQJAQK+AsBbVADgILMXUv7PiEgHjiAABiVQAAPAg+M
+			CAETCllL+P5DyWx7v4j8YUEQJwUAAAoBZ45pVKElH0TkfQ9kynsU
+			8PxaK5B8prAKQkeI8Eyi/GCMIAEuRjP5HUOwiI/1bugWY6CB7sXE
+			HnQM68phRIcxKhOdZ7UGCIoNWJB4jLkTqGRJcP0lyCpmQXdScUzM
+			UzwwOhm6qE00iVk1IoeCGbno6mFAxPUAAGp8R0fFFYgg6R0v4GmN
+			Ib4AB1DrJiPpBBFUtRwL/FkAwBYJwVOjGIhR0Hdq7iLDR3SgHYHR
+			hpBUn8KHYI6pE5NShSosqyIaARotD0LGMIgkqdBZx6v4H0Psih6V
+			PIkQZAwycVl5QIig4d2xKkCPkWCU+o5PKLTZKhNqjjkU+qAiPDWq
+			aV2VO5o/SZ0DkU/VfUCzlP1JU/1iZu4xzCxJxSld/OpSRHIjxPJq
+			Rg3BFJzknNC4Iks6lJkCIS4uA5yUFTfJ7YB2CBoRTEXg5WKkOUcK
+			4jLRisZGbIWUsnRdeyEmC0wKGY5wzo2Bq8J0SYmpVqKAJj/IqOcz
+			ntxRr2Rgy1O4DIScAVaeAAAIgWISCwHTTAGARIaXUjYDAJEmAM0w
+			ABr1SLDH62IcA0iBDdGgphccDbXAOAmQQHgUyGgZBEsFq0cCMuIO
+			iAMAjLSSkjn4WceZGxhCvJyMIWL/gEAKIgDIIbTAdhLaYYQiBryT
+			RwRvWWoSDh6EmHKNsigphFDyAAPMd5GwTgxKxhMrBryCAYBGSYDI
+			IyNgEI/WVP46RxEmGMLMjA9R4kCxURscQ3lPQoBeDwswMMaAAvqR
+			ACYGiMF+ds5lehJDcECHaOdTA9iTDjG4RgYot3/DkyWRyF6E2kPe
+			LEAAGgRCPgzCAX8CAFaquKPOkVgaWTRD4KsMQbbdR3D0U8MoaqZQ
+			HjaA1jgeReiVkvHqd9ZzAwHE5HQC0chFQFFWxEjoAjIQAAYHXnVg
+			B9WCERHCvIzpA3tqyITDRYYA1tWOH6PaumeyXwPgQvOeJEI4IWcP
+			B5xDTIuiZACWYQA2hijUTDofXGudda715r3X2v9gbB2FsPYmxdjb
+			H2RsnZWy9mbN2ds/aG0dpbT2ptXa219sbZ21tvbm3dvbf3BuHcW4
+			9ybl3NufdG6d1br3Zu3d279oA7ByD0Dcrh/gKOOP4P7hyzlDAGNx
+			nhmR9KDAqPQAw8wfV2Bc54ApQQDEaKe6V/BL3/EOJYAUqYEzzrTI
+			GPghoAz1GSXq91SRKnXoLH8PQqfKInuAJzOs6agKJ8NhszeWemaQ
+			FMgi5QBRyAMmhtQQ0B4DSEgvBM+MBpW5GgKQtaxzw6BwmhGiMV/A
+			5hvGhvqVwGDVAHgTkOAkiAIgXEEAaBKZpWSqobLMlc8Zw71DxHWQ
+			0fg+SCDxR6AAXQqX8DrHNaaiwLAamFAaBEj4DUNT3BIRQDYJFQoW
+			IqrAfZ7XFTMI33AjA0himhGULo0I+h8NaL5HQCBH2lkEBEC8iAI/
+			UIbAORA/s1YM0x7oS8fhBDtEQG4NMig4htEYHiO0qwBwFdfgmU+U
+			5GB2jrWVA9KpDQOgfLMf+1x4CKDyHYaE3BGx5juND68A3w2rgYao
+			aYghuCTJHQjA8AzApHEEAWA4hIE21gABEDFGgGzMOmiK5eCpKilP
+			tiNhfBUiMDfDipXnrlPKECNrciIArg3isARgWucOznFDqh7pXKCB
+			5FPBhhskwhiG6CzpYlyB3CTAGBikNABh3K/k+GBgRn/B8AVH/Flt
+			hlJK0CBiUmjBzgKmjBzGoGOiVD3NSACCMB4ANlwh5gLpVgEDQoLH
+			VHdKwwaiBvaiwBxgIkJhzjCiFsQnIocCflho6LGCKiWB6FuoQOIg
+			EnsgILmiFJguwCrABkFFEjoACh7qHlEjHB/B8DNB8kRFLjvFpgFD
+			jB+AKh8B7h7ANB4sDgDDwiLB9DjlQKhF5FJIuiBh+gCAAgLh4gNA
+			GADiLGmFPRLhugBgEAAh5DHB/gEiMB7ATkIABgDABh5gBFuGKgAr
+			ziXmRAClrGPB9OQGACItEoqFmK3tdLFtcoeIaHfKnxlFhGdIXl7K
+			vuMCGvWiGgGgCizASAFmoAYgNQdgCPHAEiviFOHpqsWOVPHimCnr
+			6iNscrkgFiPk+AJiCh8ALgAB2BsAMR6m9x8h1gAB2x/R+h2h3AAB
+			3h3sVh6h6H/JXLbJvKxIXiVKPGXpwjpHfntqsnXocKrosokrRISr
+			JuIGYqsmYLCHeRlmYK3nQiWwgKsnPuOLGxlHYqLIgHKnIp4piLxm
+			bjGnGCCC6iPgMALG0AZAYAXgAAkglAkHkAZHlpLFPC0MVlonICSL
+			zEJvDMcDCIoQ4CrSCR+BuBtBsn3hqhsAAB0pfkth7DQh1m3gAB4B
+			3sHHXiaiTB7S4yyqbIAIEEiEtS7LHCfFSABNMmXiZDkCTrzQJiHJ
+			yFfimHgCTodnRIaqhS9rLOLF4Fbv8rKximZCSS8osS+q1MCy9Rno
+			VowCXNStLCSIcMClbonoskJIhCoCGoHzCnJmWHCrHnYHVF5OLKRo
+			KGXIWnQkcIbomxlFiClHJCTtVnPneDokPPOu5oeuOChkVnhCwAHD
+			CgLAKwdgKAJwrJFi9GlkLAEADi/miE3TNrzLgpEgGOkmrgInxjUm
+			qCNCTJTn/CtC9APASATpGgJR6SQCRPPFVB8nsB+DgPItDAAkLKbi
+			KBhhhhiAABbhcBeAABxBym6wMIoClDwEiDqjoSHzFIuSSjzIiHPv
+			XCXyGCClTzFE+zFqTqozFRIsCptCCLzJhvHp3jwLXFKInjsK6B+v
+			uqhTvi/o8OzAMANR8I9wdqbiNyCH8BoBoKBx/MHS4jQt/I1iFMpi
+			lJCAATwTvTwEGHIJsiICkHWsxKMrCzPLMJozhLKooUVLxsBl6qJo
+			YLOkNsQMpEBt+HQxDH/KcCbRDJqiMD0irK50+odIiiMtToLiNqj0
+			5oLqkx0P8x0UwomjIptpuTfHJv9D3KrooTequK1KOTgqpKoKRKyE
+			cUTKQ0pqKIUTjJuFgqQp0jhqhDcH/Dw0eFny8K+maieiPoEJxoop
+			lLIDGLAInyRK9oOHZqsK+oamUnKyVocQKzGE/rMiBokCflZFZCDR
+			nOOHtCrIfjq0SI4SdpEMcPwVrMpIZleB/iKB6PuCaCgIWp4iNgIA
+			LiGgUAaC/vDUYQWAFgJCNpAjBjYUqCBPzAABtBmCKBtn3FVPP0qF
+			TinrsCIAegqiIPFnbqPWKk/syB+B7vZCCB7L2gABiBZn8BihaCcs
+			MAAAsg5ivgNgRiEkqihAD1EQ4IDjrrHRvCWEFh7RzByhuCKBRhDG
+			4h6G4gAAYAejCgYgfT2AICIAHAKiMAIgMiMVFNfBuhpirBWhJjgB
+			4F10S0vmigCPWmmgUGmAPgTmmGliBAKgNiTEXk1xbRXJsvzkygAB
+			fBUCchyhuiKB6h5iKBxhwDyElCTAHAIi/gTAWuzAF1/gMgPiEkpF
+			FkrVipnkFh92FPPCNh9EtBwh3jyB6ElAAKAiYh+RRCBB3tMrysph
+			/FLmBgGtAAVhxtCNDNetEiPgLh2njgElDj0FmNBs9FmOMCIgGEIn
+			EFhgBL7EcDLsWOIq8CWOQjMj/JEnfyHxxmbx1h/g9htExhDt4XtX
+			t3uXu3vXv3wXw3xXx3yXy3zXz30X031X132X233X334X435X536N
+			oAdAbgehHDch+gXjjB+iviIB2xvABhhh4gVB4M1gFB0AwNEgDAWA
+			DB+ACANgBlFCFB4C7ACh4PHGLCK294OtDIht+K0jpJwLR1CABLxV
+			VHKU1HGwtgIDzwvwvCpuORGCUAGjQiOHLnfB9IJqnh7lhB1Fhr1B
+			+gIjQgFgalPAegYmoCpELAPANkLJEChQuqNB0hwiKBnBfFPBzhwC
+			KXECEgKgOFruiMrCIATAaCCAHmoClnvAGirWpKyoDDRQVRzgAB3B
+			ziNhahRu9hzCKKwgTAXisP3iEuyiIAPATiMPVMe2wNfD9CMBlhdD
+			gBghWjgDtGtAHCPrfiPgEETgAL8CGgZghxpAFVIUWCBB8h6vyuPM
+			DCNhphjCrBshm10jSCFIIvyCinrjQh5h5XYZLiPgUAXlCuwYWF5D
+			sjvKCBxUBPJIBCTB5B4mgEFrPUOVqCVDm1WJsqiiMSNriCNh8Kbv
+			Hi6AECE3ETuADiEnrCNh2BziMZ0HXJhE/Hh2HgmyegPKVxxgKgNK
+			VrkJYiMB0EjgABYBnhxAABzh3DgB7h1NVYIiBh7IPBqFgh4q/3fB
+			9ARCch8gSwZADLSCVjNFUsBtcwfrcBzG0AIhywdw5TcTGwhyBgOR
+			+B3gOG6lezDkrqwnbwb40hwR4gGBxnxlRMQnWyoiMvHAAwrDDDME
+			Eh/B3iSDKDI1zGZCkB7kqgFhwnUB8rBlpkDCVCBvPFCJah4AM0Lp
+			Zihh8AEpEB5KWCF23htgCgJADBagEgNE3vOh6wsBxhzhzgEhzh7A
+			PB2AUAKANB8gMAWh7ACB7AbJTh8gOh9YugigAxYi/uTANPIkJh/B
+			2ntjjmZl5Y3NEtCmACFgDmJB+RciSs+yVk/zLNe7UGXKNK1IXScD
+			onQl7ZpGfP3LxANADivgogUgSNLDmAHMf03ZoCgPGiNrhENvHTNm
+			qiBI4iPh/h7ENB9h6DCh2hogWS1M247SAx8m4y0R+HrsHH7iYy4y
+			EwMX/JSrW0pHevXCXSNJvptIQMw1Ov+QbGcqs1MmUzSqnqQIeKKT
+			XrDSRyWJ1Vk1LHtziGc03P+UvKx537WiBKIXZzqnoAWHpyigjssA
+			aP7CKlPSDsVpvF50vvvi9wrI4j6pyxCjySuSwhohphpgABzUJJMD
+			gB5B5DySDiYqeB7RCjsDlIBS1JbG/jgJXFU0MmimIHuMxzimXIYm
+			SzWoUKyTWThHVmXr0TWCdyWovVJViTjpiJwplq1Vm4VmxpgplIZt
+			+IslK8AIPqnF7Tbqtcnp1JvyGRiqw858w7TK1ieK7oLKPIREtIlN
+			+TRmVCkOcHCwbRimfv/U3UYU7IjYpvyh/KcqEIDiKI4kLI4i/60L
+			cAIENJ8M6gKzsMqFCgEELJZiP0TVyGflhJZ0sdRpGgGjCgII9scM
+			pjun/AB1+gOAQARmogLM67lDMiKDOEylnMYj7RatVWbH2BnAABUB
+			UhV3PBqhuGwyoHGjwnNww1NScRgoOb80y7z72RanXKhTWK+yRSaK
+			L4SilMQYYnuZtIUIH1A2Z8PJqiKVyI6nxgLgLm0JEGqKECCByhzE
+			yhvBvBzAAB4h4n/IBYcFgHP9K0pqWIPHPTwC/gHuh0sADiPxDFPT
+			R70JnHHFcVMKprQaP9s1nVioKWKHcXITyoLo3pEpEahiCTRoFkth
+			6CY+aEEK8ia0uDsP0mVJwqiILjDRLlY+hzZ0poUcrcnVJ+ScoqMK
+			vVMv91K1CaaVOOaqvcGqoKTjInM1SqnF8KKZpUSoOIQMP9AIWdIH
+			uJ3j2CULZpypXFfwvq/mdPXrBnRLQJiVgc4JvrKzh874SJn+7/Be
+			nKsUcVOnHKxoxdEatHUJhCfcykImUIYeizwIPWZC6iM2ZRrO/Hci
+			Nh3BylPB8CYscZOuulrjVJGswJ7gTCKSrMpCBP3iCMBLk/UfJh5B
+			2iKBrBjichjhbCY+HAVgawrLci/jCCNgUgdWnHj7znEcsieGviNh
+			qhiPKlwizsDm5BpjQhuhqjgDXiIAmAwnxgLAO5xgG40gKiTPhDlO
+			J475u3jjLCMLsDlfrhnhgjgBshljQpMiBASiAC8FAASi8FgAFA0B
+			AAFhB+gAGhSHgIBP8APp9RZ/v6LBELgMAAEASOLSNwtd9gBap18A
+			B5OyLAMCQsCgcCACawsNCEEAANCKegUESIJhaUhIMPwAAwISABgd
+			/ACKRZ5O6orlQy1yNyHvh8Up2u15gB+v2LBAJT0UjAJgAEgybhQM
+			SAIhKFgoHSAAxWQwsAP5+RZ51YAPx9yWRTgEyKHxZoNN4ABys+Wv
+			Z1VEBASRAUFyB/AWovkGvcAOcUOPCgmUyPWa3Xa8CPybhd3BoAAh
+			8gmRvyRAF3QsAy0APjRgB1h104UD6vW34Av6FgvRUt9AypPyFgJ3
+			AYAAPtyGoyN/b3XgB/yXWv8Av9AN1pNJA+X5fP6fX7ff8fn9fv+f
+			3/P/AEAwFAcCQLA0DwRBMFQXBkGwdB8IQjCUJwpCsLQvDEMw1DcO
+			Q7D0PxBEMRRHEkSxNE8URTFUVxZFsXQqGYYBySACAGAQDMaEjxAS
+			fh+n86z1nqfYDH0ch5gieJ4nuBx7iNGoCAo7gCgY56RAGejuAIeT
+			uACh7Cnqh5+HkpS/pGAK9pDND0y6v71zMiyKAKqQAr1M6SNY8KpN
+			ZOTugq1ibzMkgBo0vh/Rw4YINIAACItKrun0m9HACeaFgIcDuAAf
+			MrAwlINiOlIhBqC4AAeBiQAwCyRAImbXMM15zG6qJnF4pVYKiBAE
+			pABwJpuA9cgACgNosEgZIsCYNtfM9Gzs+zzosfx+oWjaqHekZeFI
+			h52HMkZ7HmqJ4ncfNFgMkQHgokQoDQ7gMA+hYEAWvz+nkdqomyZS
+			LGKWVxHueqon4wLCn0h4D3gAAciVOQciYA7b4K+VnLIfaFn0eybn
+			0fCLG4aKlHEbKlHseKRnkeSLHqeN/MOAB9nyiyMJikFSAmhYUBi3
+			QEs61j0WfHyLnyqJ2HGlp8nuix8ZY0pwqijE3pGik8pGAlMAWBSF
+			pk8WAH3rLzPCjCUnqeh9IufSUgMA7uAWByB1w7h9zIe57X9MjW6i
+			m6KJFsqRA8EKQAYBqRAOBSRBMGuGAMCKLHWeh7AAdh+siXRrnKAB
+			6HmiwGHTPwCn1hgBHwvxx5ge6RH+0GVBRxZ+gclJ+ALj4CHqAB6g
+			KsZ/r4/wCHw7gHnUtoInMCzr5gkrzvEAiHngDZ1AAd4NeUz8vWbQ
+			KRAE7AAAgc0/AcdQIu6e85H8e6lH7n2mosfoFMCfASq/RZ/HmALe
+			Y+AB7AQdoGyo6GiOgfYBn8AY9SQAGOIAoBhvE6HoN2VIjQASMD4A
+			WkkeIHzDD8ASAUmY+wFAHAQPQAaNlokUG2AkBACBZgMAUAkbY/io
+			jyHwtAcg9R8j9HlAQBoEwGqrBUPRJAKh7j4HqB4ew5R7BUAA+8Bq
+			iyRj9AyPkfAAQEj+HUP8m48k0nPLIQ4AY/AHObNyPk3ABR9uaL/F
+			k80ZU1wIP+eqNB9zEnNT0RQkh6DEgCTsjUkUGSbgbbQAAMANQUlu
+			AMU4Ax4T1F9MQlZRh3U+NRKiARPhrVmF7jk8Usg9C2j5HSsgeg5V
+			Rj1ioS4d7ix4DuLGO4dw7XGDtHYAAeA8Fqj1lgpkfK4mskpLKQ+F
+			RUWIEUarB0qUdC/rQl+mZOh5oERtmJHF0ZHCSRzekoFpp2U8RlPW
+			081hwE7THPIoFnRIZIEihUYlOwAkbEhkKeJOc4k4Rwek7U8ybp3n
+			dVYBUChbQVgpj+EsJYSgAA6B4DeJK4h8D0ZC7UkSPSRAJLwQwBwD
+			y+ujZWAAcg4RvgAGiNMaYABvjgHIAAdI7B3KZHuuKDpIADgFO40Y
+			0g6R0jrAAO6VwAEkljHw0taBSpeHdl8tBL0xTyQTL+8SnJezszZe
+			IfOo87IVFkjM8NNx6zextPCVEh6zFGzGTNMA4Exk4GJquxBZUcZr
+			zUrExCb5r6jyRm8RqYJUarRmPHQ+aFQZ4zerFXeYCZYyrLdHXssz
+			TC91Rjis+ZkdKikgLMl48KdHpp6rtOQ7JfiNziOA8Sokv1pVpVVO
+			WrA/DATBqqnakpDAFEHAoBVPwHgOgcAABcDCo4TG6AMAVOUFi9Rw
+			r7GacxOACkgAVaV6wDgHFLgqWRpYB2+gAA2B8EREAIltsMpkecVB
+			2DpHOcOiIEgLAYAABICYFAADio2AAUwoxSgAF6MEYxZKj1rPS+ap
+			djqoJlrdIWNU5nRzIsHe5M7VU0R0MY8Q88uqmp3ZzXNM9+iZW3IW
+			tCqg/yHj9H0Upf6ZE7AIbMAChsRwKAUeAedhlE1qjcG45IdQ7JPm
+			sv0fShRugD0nJxI4slnr6Fkr/CMnuGE5EyJuRyq9c5yMwNcs/AVf
+			8CTbwORqy17sfzJwTFUvsvTnPTTRShOVszuU5nInIwzYSvLiHy0u
+			JhLV/kPbaUowGEb4kbr2mmdbTWYV5JlVFK0wE1TxsCeWwVY67X6M
+			RNw1yzK0HlrZXO9tusVVXv1oKs55Jtp20FpA7uKk0zYenHBu03qv
+			VSaZdFlZjB+zgqXCpcSPnFnnKUs81mQseyEwFe08+kaj6zrZku+a
+			acmaDWcxDJR8s/TB0ppSvtYLLTFwWAO0SZzoZPwGmZPJMbetQJFh
+			gkE5GoAIrcmxgiy9skWHUOIlI+JPgJIUAACoGSegMAiTcCCowAAW
+			BC2HchIwBgFoS1QnC5Db74WYvMh40xij0AAMcWpY6cg6CTdwDAHi
+			euAJGCAF5KQHXgL7sGZGK6BkWGOLMh4xhZ1UqWPcejHx6EpLwQsI
+			ATqHFIJAAsB5CwNglIsAoB5Fh4PKAANYZBDx8j1JEvMlI3hpuwTU
+			YAhY/UyaxAAwQkDN9qqAxeo0vxZSojwHaSmJmqXibtsyRYfI9iRD
+			oHEs9iRriZTYJHuROUBE5F7rc52X64tlAABEC9hkbR9KKG8NIkZg
+			zds8umuKtivibgWAybqlDfC8kMb9m61oHjuVUa2SPnuETV5PpRfk
+			iw4hxUrG614d9btkKLARg0Ai3wMUhHmBRkI/AEHM2DUhqA/SbgTH
+			i8AA4+CewMenz4kI+iFpLcWOkEa2x+HLPmc8hYDR9XDAaPu4b1Cn
+			DsyyO1LmoZ0aDPM9DVyzyM1OG+NwaeK0X/l/N+f9H6f1fr/Z+393
+			7/4fx/l/P+n9f7f3/x/n/X+/+f9/8/+QUCICICSVWVWBIH6H2H6A
+			KHgHkHiEAwgH8AmLMH+IGI2AOR6fOqoASHwwkAiH4IwAMH+AOH+g
+			6AQJuAIAUM0nYmeq8JINWH+H3Ba0CqMWeAUlwAQS8Zg+UgUL8sWH
+			0N6HyXiJIAYKiH8AUvqnEqymaWeeMUyAcOEOcWiUWHwUi7KAAUUH
+			+G+OyeqAuBGIWB6CyiOBCBAIGg0JGhqKUxkPuHOG8KiGeF8IsHQG
+			+MwTsYIM2AKIWAiAwIsBEBgJHD0jWxU0gjmzsMSAMJ6rmNYHmWqA
+			AF+FSIsW0JEZMKiHSHGdgYuIeAeAqJECuDkOsJ+JAAeAm/IPxEWK
+			iG6GeJEGuGQMEHgKiHaHScWHUHGNIXeJAB+CmJ6B8CoIGgJCEqQ1
+			emWZaHuJAH2iaeWHWIeGSF0cWGiGMJaMGKioaYYAWAaO4ISIWBeB
+			8ZmBqIWAcAkPoqOZMJG5ENCcWeWMuAAGSFsIeoIZ268Hy1Sr+AyB
+			EIWB8CiYYAaAiJEHAGqzQxoqOYuIsHcHWKU7yZKZIAAHaHOIeHqW
+			8rGs8UATQjaaitubuAOJEA6A8JvGqbuKGAAAyBQJvGIbCGOG4eUH
+			YoIcYHnHOYYAAAmHku4AMH2c4H0M8HMMSXEPMkSH4BEJaH+AWTCA
+			IJSHgAQWqYkltJmaYscyHBkAIHyO4AcHYe4AgHOT8+kwMPQH9Cae
+			YeUHgeaL+AKegP4epDyHaT8AeHeLaAGHwTkH0HcbCH2HkbCweHsB
+			IHkH6HwA8HqHQH6R4FuqgUuHkAWF0iyAISwGsASUoNkH6iOAmAMx
+			aBUhOAUC4TTFGOuWkNITO6QH2H0AeHsHsHuBGwG9KJCHuAMRqHYL
+			8aywkAQH4zCS6H+N4RsAMHmAIoUHKkdMUwGAOwAAdNIPOH6AYpqH
+			uBCWeAYH2AIH0AgHqA4XCnIACHEPWAEHeUGf6neAWH4iyAudYH2A
+			mH0AQHwOWSIfgAGJSvuvuP1PSQCnOwNCSnU+Sm82sABNQJAAawyD
+			qCFD8AmAYYYaiTgUGmMN6L9BWTcasKlQC0YQBBhJcH2OsHuHSVGH
+			oHEBAfmHaYYHoliHeHepClMpDQ2WqZGioHpRIfnNAlkXElyxsegr
+			41wTSyEkgwOsfKYdGm6xqThQQ0cv4Tc1g0saYPUyQtymoq9PbQGT
+			rRqqmmiz+yg1warSY1WVWesAeiOBQBMBMAACiCgCeAAB4B8B0T1L
+			oH21OTsLKJoAQocg0N0PUKUHYHONQGsowAAG0G4oqHMHQlQayKVS
+			muGAiAiAgUXSjTsHQAAG2G2G6ABTsuvRINJTyq4O6nZB6Z4I4N6e
+			IR8KitGTUzYygrArOx8nMgW05RcPS7QJIl0zY1qZyncqwzurIUCs
+			knQqqwPB6kOyhU82Avk01QVRUrAXieHPkvcTvRZVqmY14sWrWngJ
+			KpyjMLMqmTgRqT0oOqW2RQGxWjbWSTUOcmu9GWTV+4qjayewAJCl
+			88m0dQDRUOa2swwJ6LrHABEBEBC7pXfJeAkocsg+2IfUweHU0TKP
+			QbMJ6fuIOt+N0mq6WhGtauXJetOMkG+HCAAF2FuFuvCHOo6B+CIC
+			GAAB2B2B6L+a0FYFOFSAAFIFSFWdiprQQL0gQIsH2mEt0Ocvsza0
+			U0qnesksUZeq21BLHQRV6r1Pc000IqXSArqI3CKmEhEN0AyAyeAA
+			wAwAy3MAqVGHCHAlQF+GAGaNKHKlQhUjQrM9ikhBWmiaqjgxwt0R
+			sOAjgJkO4g6IWxekfFIzavfVKsJWNUda40BBmrsydEHQGUqxkww7
+			ujgtpb+JFM6ls5DROlqIubaMKVcMBCKwgqwmmqseJXGkkp1R0zmy
+			g0dCEz2wQmg0fETSG4tdCyG0O0JGBSW4uPTZ9c/dWkinFR0TPIkq
+			LVIRtRhcgjMMYaaTwJFNCfNCkgSJGdWH4OEqZbUrG6VV2va2HaCm
+			8mYZzU81ldS0DVS13eqkJduyHdJEC+0wMpKwSsYsiUHVfAwOGHub
+			DQOAYAe6e2mYLPmxeMwL4AQLgnS8mAAHUHAY/Lww0XOAABIBqJHb
+			YAAI9G8AsYGMXcsYaOyZgH8HyJvJUJcHcKUG0GccWGoGIdgsmAAB
+			eB4e4AmAuYY4mJGA3SuIgApV9VuWmmCIsW6K6UUGoGMIsGrhgIuY
+			w+25AIfGwAABiB+IG3OSzBCAAAwBCKiLeW+pcAAGyGYKih8JGk8I
+			eHGGzUYIynkUq2i0zOgJDIkMSto2Cs+lYXCZ7ZyR9ha2yqiUxdVb
+			wekl8MzgXZUH2NI6QcWI4qpZW6WcDZkkDYGmKYhM60K0DWy3oM0k
+			UskZalnXFPOmu0hkIiTimwdPotmw0AguGr+vZZVi8MTB+bCOxPOL
+			4mKJC3syGZ4gQp6HsL0bDV+AG+xOmLJAkfmA+dgH8KhRkzsJLJmJ
+			6Rw7ueqAEHkJuAGHkZhBiL+bkrSJLW3XMeII5POUIOgGYAEjCHyG
+			6GqGhY3ABmrmtmvmxmzm1m3m5m7m8ROICIAAIFA4JBYNB4RCYVC4
+			ZDYdD4hEYlE4pFYtF4xGY1G45HY9H5BIZFI5JJZNJ5RKZVK5ZLZd
+			L44Px6RwmBQIATE+34/QQ9nu9RpO38FH+/38CX7SQc/wC/gO/n+/
+			QS+n4/Ac/Hu/JuAgCAAGCwGAQJYIEAoGA4HXILRoFUX/bYEAbfca
+			6ALMAH8DX7eL1Zbi+7QAX7dX9cXvXQC+Lvc3+DMK/gVe69A8KAMQ
+			ALnmAJe30CnzZbeAX5ZgM9wPln3d3vb323r2/XxbwqHwMACCVgmA
+			AuGNOCwfAgsIX2AALp4a6nHb2sxYFyLe93pe3Y6OH0L2BQNXQuHr
+			QBwTcbUA7uAfDNwADwoBAABgPZgDdQIBfHAnzsQA423hXa6Le/X0
+			t50nMfAAH0fC9gUByzB8JoEAACQMPUBAFq6CALLMA7jIIBDHMwfy
+			unqeS3nEay3m4Z7CxA6R0QGdRyHsAAFggroVBw04YiA74FQmAAKu
+			4AADgQxD3sstC7LufyoAAfbFAA/y0HserCmGWR6AAZReReeJ2LeB
+			4JNOBwHwa3yzBmIizBYHSugeCa6oXJCBH8fiunweq3nac63l0UJ+
+			AAeJ2rfOK3nqex9Lwfi3hCFi0CiNbvgiC67oWex4oEcRqrQfbPgA
+			cpvnuABml+eFNm/AYBAG9TitPUz1AE8IDrRVqux0swLAstAFx3Dy
+			4gQ55/z4cBzyqeFSQIea91MswGAkBgAAIA71SagR+neudCoGt5/g
+			Uwp/yKf4BMKfoCuGr1t2gf4FsqBjJIGwSzHsA8XgEfTunkBQAASd
+			4FssftI2xa4BsKfAInqAGBYIfwCr2fAE4IewFSquyFAE0YAAidoK
+			vOdzcgGfACgAfJ3P+fZ40K15/nwER5nIeoQnmaZ+gifRcrwAByAB
+			PhiAA3NPEAAGIIEGYZiaBQCAUfgQAEAh/jUueMLizDBPeuSqn0Br
+			6nwEEkKcsIAnqAgBgGcquACfR9H2fYIToeYTqKfwEaSAp7AKBAGn
+			aAgDARgiigEop+6Uv0kW/m9tH8foDHqCJ4gOd4OHSdTBAAdQE4ce
+			4DH4A57n9vgFn6AZ+hAflxA0fYDaqfQDnyAqtOHzTKswhqmMyiXY
+			odNqCdsuC5rqtTiPEAAEAM9Q2CAFIAA2CN7AoB9VSL265dey92II
+			wupJCoqun+zsmnkCklHiCWPnqtB7ni2p6HVBp45CAB3/b9n3Hcdx
+			258eh5AAetB4KfFCqrPikmSKYQZIarS2lFek9UrikU4EEd0kOAxX
+			nmlzKgaFiL1SCr9aeZlbZBS6pDPeYGB0Dy5wEMtB0xh5IKwld2WZ
+			XC+gFAIQaCgEoIwABcC4FoAANgcg0YKPVSidH7FiY8AgBIDkfxFg
+			gWYeY8B1gAGwNUaYABsjaG2psc46XXq0VqecB5vwDgGfMPRgg1Br
+			jXidFMAD8h3v3HugNQLNDKwNK6kgvaby7FhLsAFWEDoHFJLxAZ6s
+			FoHJvKKaFIZcDLFtg9AGQsiXZGUeg9KCbT5EmVSS3uFUkJJldLNI
+			2RMiXsOvMxA0y0BoAsRLNBt2ybUkpJlFKVbBTZRllLrI8ykHU4Fs
+			Ki9SAkgZDwolfKaUTzywmBLU7KQEHoQy8K62BIscSztgSMWhfzzy
+			/SllCW9U0zVTJElTH5wpb1TseAYApewHQPgdAAC8FoKwAAiBICJG
+			ACV9EEKSoVOLrE4l4kuvxqBAoYMeAbC9H57AAAOAg+ChIEVPjHGU
+			AAXAtxbAAHugUAAPQgA/AAEYJASAAAQAhQwXIthdAAE0JwT4ABzD
+			piadg9T1YRM0LZJRVsnZTTJSFKFa5jJDSchRKynczFrodMyYRQEw
+			ptO+hgacBoDAGgAAsBgC56wBoNJ2WY+pbxsDXHBFIbQ4WCj5T47Y
+			xkDHXO3gvCQtMBGxnEjAkYszX5jVxOxEk9YBmPSUmDH97ED6dqAT
+			em1fxRqzwlrQ86DtOTiV1VOequR64iSfekP1wrHx8GfbMcMfNm2b
+			lUSaP1/0hJdV+kMWVvlNLT1tm29I8RiHeLskPKCVcB7Y2lkpKG2N
+			sIGEJmrTu3ZBqi2Gg47i4VerFXDjzCBj1qnfJtPfJ1XTfahmWMLJ
+			2fhXSfFdj8W1AZRU+FQOHAiaVM5GpIMzT0uMl6/r+LjLEukjIVWC
+			kQVC0UhSjFsuIWustwS5KAeg7KuIBJtlhbGvw8h77/FJMKPay8dy
+			BUJNqqcgR3pOJFSAXuaTvwFKqhReYAA6xwqFRAW8CAFy3gpB8W8B
+			wESzARAqWg+JbzilmVOV2Ih7iBjxHUx4dI4UPjxL2NAYT9h5DtOH
+			aAt4CgGG1QkWgCAFT1AfBOafJ7HihWWT4PofJhTrAAG8NdTw+XM0
+			UHqWYfA9CunsLMBQ3jFQLXLeeTpccdmaE6U8khPg+x9XYHjHMyoB
+			SbUHAgg2ZzBR7FvPi7jA5djzFwmzAbGp52nNzgyk2opbxtDQM+PA
+			dR/R9u4r8QM4rHtAKsAIYUBBnl7gNULHOmVRAAacnFVVZoBD1KZM
+			KPQeGR7Cx/keAsBsLAHGBde2XTY7ruuv1tCB7BlR7Dyf8PswoCcN
+			o8AwBCWmli3j6n3fcvC1h/j5keAEApiK8vTspAXWA+x7us3S9XQs
+			gQFnuR8cSXF7YOK6MwXcwZlh8GIHsXVOReNDmYXGcQuIFnqINSa6
+			pAgC1PXUK8PsAg+AGDtAgOcaovRlzyJhx/kHIeRcj5JyXk3J+Ucp
+			5VyvlnLeXcv5hzHmXM+ac15tzfnHOedc755z3n3P+gcmB6DsI4PL
+			6BnbOPooiSDalGAKPo/z4CigFgm6ps4EkPFOLPIVpRlafu/k4Are
+			9tyuj8cs/cBj9h+ADT5KcAo/7HLNgOAZbAB3orNdSV4e7HpZJNHe
+			uBEKzQDTUASXPws15AyOWuAIvY/AErjeeYLGDHVmx4AGtYfA4I6j
+			9LeBMDBtQehOfAAwB56gEgNLeBQDyfDi3slGW8BIDCzDtHMQIaQv
+			0P+Bh8nwdQ5sRDxT5pE+ONDzTAa/M2PGqcnAWQiAmYxXfhx3NYuN
+			Fpe0oaeLeOscxn7NmFOwWYEYK0xANLRPQswHwUflR3MDM/ZU+IEP
+			sO46gAB2DnT5mcvY7R1KeHSOVF6T4BgBw9QBoB5jw9AtAEoF5BoF
+			gHJBo7wsyIovYA5dQgofIejMxrzMgt5K5TwZYXpAYfLgqYAgj2Ir
+			oHoJo2oGgIg9QCJCx2CAxwrspaweYdwroaQYQgTIrXIeQvYbgaBe
+			KvIDQEQtAKYNpBpR55ohROggQd4cw9Qfhaz3pQsDwdw+4bYz4oo9
+			S0Bj0LJIwup3ytsAgswDYD4tABQBq7AnQ+4eRF7qDXId5hQcQ4Yf
+			geQwpU8CACZexucLiSxagvAfaso0AgxXQASvMEbt4zADD95DJSIf
+			Q9zT4gTgZj57DgIg53TrYzBXggQBRQAzbWICaJoeACSJofxgAhJi
+			bFodhjAB5jQYBjgAoYAfRkJ7IeIfYZptoebxwfgcofIDIeYcptYd
+			4z4DQgZnqWwhQIQJgKrBA8gfps4AKNpAYeQeIeRpQooAxWJ36L7A
+			RVrqhXzfQ+QozzgnQCJqgEDrjuAA4JMQoBIGAywAQ7MSKPQAMSpm
+			4qJcKOhg5woeoBzaAd4DYdIZQfInoE4BQeIBgCABIfABQdMUphAr
+			QfgDpvwfoD50IfYDgfQAwfIBcizyTtqaxa8kAix2giKWqYa6ayRd
+			gu53xZqAgNgIQFQAADwCZZgDICZVS06CzlaWp7BzpIgyRcJm4fJe
+			wfwexfQewdICx+4dhBoeEhoAEHTWIeBSh+JUQeYeZSkq5Koe0rhJ
+			TLRAgfbzbrywB1y/iEJp49yZUkLsibJDoui46YQuCaCPMlbRSRyE
+			wtKTkY4g8bMd5GABaIwCgCI34GgF4FgAAK4LIKwAAFAFYFAAAcQb
+			4bgAAaoaQahj4wAAAFgF4GIAAEYE6GgqJggcAbIbAAAaAZwaI+4c
+			6JsQo2oDADEpQCICShhIA74qovaKgbRKwZAZI+4cr2pQZAbPR1iQ
+			ElKUDbMty+kuiSIuSnR18OyFEkiOKQ7ULdQpgxEGCm40KXqv7dRi
+			IujXyFK+a3R6qyh6i2E56waURJI989AsyyibST6EiQioaniDiT6/
+			KCRmif6/U8Saq4K4a1ynzHCBY0K+CWzr4gQ8Q8avq6q5qRxJJZCu
+			B19A53dBaPVCs8LARaAgi1JiIfiOyAzQCgQByIwEwEoEwAAGYGIG
+			YAAEgEwEiLhZgqJQofEJZTJAZ/pm4nZJssNDQBoByp4DoDoDg9Zr
+			4AAbgbQbIAAbYbiKpwovYEQEKeQFAFsw4CQCZjAYAYA5gTYTYULL
+			wcSsFEjxC38Y6mC/9C6BaOAryn4+avq6a+TPyApY4tS5grrahewC
+			6LbahfQrhjxQZPgbYbIctJIbhmwdwd6IKRNBk8M46Wa4CAQg6PSB
+			SaaPLNJDFCix48iuhjxsA0jQKDM+6V6RCoKz796ZFSk8Iy68TGjC
+			TWw9SxpZrQArybtWZrRAhs1XRQqzYz8KA4Zs7XiwAvZtslC2zBBI
+			1R6YCtrRctAtUnUt62i/JIR6TxSX6si4U6s6yyUvcvb165FbS2s5
+			C4tVq4xISxwAY2qBFDKWaB51y7TfCwiSqfggQehiDdKRJQq7z6SE
+			stItqS60dUzUC+066RB56U53axMk1A9gC8y+y+kS53M66WzUM9c/
+			hU1BiThfZwRfiL476bqz76wfReIu6hJjw+IgQ9j5AgQApzkd7G1l
+			KcSfgt4dgcY6rwIB5pwE4HItABwCQroCgDaUMO1O5Io4q5xPodAs
+			wdQcRJ8HlJoaJKr3ZJpQ4rzWyCArtn5jwDoExBoBwmovDdJsozja
+			QAAdAcJAb7VYI+y0AswqorpIAswC4Dg04DQEBBtdodAcBhoejdww
+			p9RghTL96BgsyEhCQ2oEAEzbA7B5tOitKxRfy0FYpJMEoAAFYHY0
+			5B66w8B3Acwbw4YXoVAeZnweAwoqot4na4Kpw2rJSgQCIroHwKYr
+			pB7G0TlBa95JQfIswcyKqzoswdMOQAAYoWyNZECwtwyI4roGAIA0
+			95hBpvCAox5N4bIZpTymq4TMQgQcAaQvcGhOAypTKAqvqWJbEGCR
+			KtoqIuL4tDogY/1yhbBJIrE4q6qFAAbQKCxIIywCZVjsTfFSB6KU
+			7fRAbfwurfofgexbb94AI74ux7oyyepvxPgfICD/6WQAQwAf4BAe
+			ABg0Y1IfIA4eoAwWEG4ZILroOFGFOFWFeFmFuF2F+GGGOGWGeGmG
+			uG2G+HGHOHWHeHmHuHwmAHIG4H4Cy54SSD7frfzLQD0cQBJJJgAf
+			0QC+k5wf4A7pICZDwfqp9jYuzvi56U44wALhi4qtAfeKpPoCcKod
+			wDCJorwt4p5BoBAnibAr0oItAwJXQAwel6GPQgUSAfYddYIdr98Q
+			CO5Vi5tO49orwApItpNDQta9K9qoxJQezg7CYBI9QDAD0PWRJpIw
+			oAwyMd5QFq1G9+AtJJofVDquKPAeDI1Hy/xbAyU5aQ8bKQ5u4szV
+			KugrsFo07Ww9wu4qogQdwdYwpJa7Vqx9TLLLdWg7QDo09uV5VF4F
+			j0zea4Url1OQhJb7IceCeBJj7MYdwdhTwdodLO7P4+Stxj1n4tAF
+			AGY74FwHhBtyxuhPhuiwsCw9ROmfBOsygZJQoZoYBAYfA1Zm9H7B
+			TDQgQH4KQ04GwIo2rz1SwiAfhccEIrodIbo2rEb+gcw4YX4VpUQq
+			owoDYEY9QLIOxexB8JIhIpOUV8lqogQn9yggQdI5IAAaYYWiumgf
+			GbuVg4Zsot4DoEoswGMFZZoCpAYdIeRAYYgbQdR+6zweAeo4Yf7M
+			d9Q4gfZjwCwcydQA4qVSLcN+KEZbDuiShbl04BS7rU6RQ9bsxIkn
+			gyxedNhJousSB7Mk1/9DwgY2oywA8TovYeICB+YeBiwvBz0tguw0
+			Yf+wACYfcVgCYQgbYYIaQQeH4AAHYIAJAFQeofAfgGqQoHpVoAYF
+			Jr4AQdqZweqFAc4BQAoBIZr4bHoCYbQDYcoBaroegAoeIHICgc4C
+			1IQeQB4czthjkoYfRcQBAfYFJcIfgF2q4fQDJ0kjLiifGwskgh+6
+			h2ckQhS+Wskk8LyPIgQMgHwEoAADoCap4EwDJZkllaOGIfwfCIwf
+			geip4ewdbbAegch8AeIeBQoecYUqAd5Qp9qNYdodl4x/Bj6i1G9H
+			WiVSNXKEWJxpJqGWE9dAFAaTIhiT1hQu4xavyn2RliqvS1atS2TP
+			wt4BZHQAAKAJYJIAALwL4LZnQC57oZAYYYIAAYgYQYegg04HQHoI
+			oAAHgIAG9sRUQagZ4ZgAAZ4Zsy4AQA5fQEFKgAABvKRH9TQqgvYa
+			oawa14YYYYwAAbobwboAEriNxmi59NyVKmVgKCh7CWSRo8WRgxel
+			qBaCwubzk9Du87F8E/k8FUslXDdcFYytNgE8JWBJpN9XNTrxSB9N
+			NztcDPCyQy8+KUq3S34trDDDJ560FeHQHRd/89FSJ6E6qRU+XNC6
+			s8BSM6lCy26XozKAhrhqDZpY6FFCfCjRlwyYC/dmC5NcB6PDRIfN
+			6V7D0uXOrzh396IE9FIAAGoG4GszQFadwDYDQDJ375xAkC3MXA1G
+			4z4nxF6ygvYCwCg3ICncKzpQqioz4A9WtP3ahew8RjwWykgAAT4U
+			IUzD4dp+YsV//Wh6difWs/NaBb2ryWRNpfqQFaCROgwy6cxR02hH
+			4BGZwA5ewpIswcgccKoc4cx+Ycgcmpqy5AaZpJRs6vQs9DKmC4lb
+			mR8lKDx3nX6n5IZIBBt7FjNCgm1WSPDQGvXXK88vZbYtlyYhPMyX
+			yTibt7FWY+I2o+NlCaVWaRs3HkKzTBuiSzVXaOlkSfnnqOJ3SbVB
+			t3KYC51aCAa16xUnVatadSfSCxPrvtMlDUCSPC85HQK4noVcO7Nc
+			i3NW1lBZ1AUt0//MpyHQKs1HggRKGUo99YpyCEnMyUS8qESR7UNi
+			MQPCMkKZRqSOa19cCBhtqwl9VbiRvz3Dk+xa6VyAJWJWBzQnYfIp
+			pwNIKhhpK7GnROAz9kJNaxw8xCVwzCwpAgofgfDW5Jk/geOYfazJ
+			JBIAD9A07G+SFG5ktEPQCyogjMQt4ewennvral/0Q/r99ESA32jR
+			gro7AroBoCKl48yXdSN1D+gc4wr+vT4ABWZe72VcRPkKB6mwpuY4
+			ZUzXvgLSI9ggAEAAUC4LAACAYBAD0d7/hbwhQCAQAg4DigDAkRAU
+			KAgHf0HiYABEGAApHIIAARC0TAMKAEOhUtijkbj6AC6Uj0ADwdb9
+			AD7fcOflBAEthQPCQFAAOCYGAAPCcKIRZiwUDMKkcRAkOiUUfL2i
+			jzd1KfT2hThbL3ACyTrtADydz8g9zmQABIMiY/KoKABAKl8BV4im
+			DwmEezzn2EdLghzUYcUdDfhz1ec2cLaeM/fMfwldoshAgJgWhgT/
+			l0uikuf+rn7xfYAfz8zmsfT8nz/f0fhEWBAHgUtib+1mvmNKl/H0
+			2p48SgQDhFF6AB5PSim4h1luT9f0+AYGiYFB/NB3BBM+fQWesXhw
+			AfvffEeAPtfABfAAU/afaEBrxCDraRimU9LCwHAkCwNA8EQTBUFw
+			ZBsHQfCEIwlCcKQrC0LwxDMNQ3DkOw9D8QRDEURxJEsTRPFEUxVF
+			cWRbF0XxhGMZRnGkaxtG8cRzHUdx5HsfR/IESBYFoZBsAcjkwloB
+			rkl4BH62QFtWf4CqMnqfE0foDnwER7AkeoSLkfQNn2A59BqowCgQ
+			fgFSOf6LOk74AN+ubCPWor2vYAq5HoBh5IWB54JelwDH6pwCyyor
+			konRZ/pYfyOHrQ0yIofiFH0dbXn3TDqovI6QJYmQBAIiwBAKkMCA
+			CjcBs4l6uJlKTNLkuqMImwKnVSmLBn4f8mV02wAHuea5IchwDAOi
+			wHAkp0j1OijcvW9Z9H0nzDrkflptSiLUJkuqipi1DB26wqFH7Kai
+			086CXtfbLCgJKjP1yigEr4kFnNyAB7HqmzAuCziOWdTiKH0e7zHy
+			xLjgHU05Ocg6BAAAoDI+EoYgPh6nTlioAAMBM7IUoaLO2pR+3Wdh
+			zocdp0I/kaHHuey5ZauQDJQAAYB6pQUBqpQIAoiYGgjnoIIUjCNK
+			4AdiM4eR2qUex3oseZ3oodRyteXhUHcAB9M2AAMhAiwpDYgwIArU
+			mHAPekj3BCRzG6hxglah2nodfKPnUc6bHueqPhCFiJhaJKfGKeRv
+			gAdp6JscZ2vS4SHOFA4CHwpwNG4EK7HiBl0yamDBzdYgGtuAvGAG
+			j57ggeb2AJWR9IUBJuAeAABnq35+Im0yXWbXO0zrO0683o/GNgAF
+			d0yf6bTW14CAQi3kTeopAHGX5tEDIPpwgFojBkBBvA6bIEged4Ig
+			iBJ5gUJXUVMeoGnqfZ+TUFR9gMfYYH8AR/BWfgDH0CJ9gKmx+gGb
+			cAKrEDmmd2g6AiDzVHHQMackKuQtA5BAQMBjFQbgkAqAAA4BXmPU
+			RUo09g9QImtAgQsdZKB3jidcPAdJHx3DuUCPQeZYB4jxUDDNPw9Y
+			cPBV+PsfJrzZGJM4uUxMBTokUJCrAlrHToQNc2gOA5dV4qpQGtw1
+			h1IjLsW8t8hSsDekoC0FcK4AAvBeCwvhvAABgC+F4AAZwzBmAAHy
+			fUAAMQYg7AAEoJ4SCBgSYqNgag0wADiHEOkADPgKAAAgBMCQAAFA
+			IASQseh6RgDBGEAAXovxfgAHQOeQjuzTkuVGw4lxsSPrEXCbAf5P
+			jUO/NWRMhJFlvSoJgbheEWTYL3canRQRqloO/OUtl3JhXGGsTsqo
+			l8uXbRSNZLdVhMFXuNUfEpApuFWSqmUo+ZktiJEsc3AFVqdppHrc
+			WwGBUAl7u1USetbhISNzcIUcKAUtjCFGl/Ao5S2zPLcOOrmA8r5a
+			ymn8AEhM5FoHUI2qQusxnGymVSRYhJMSuzjlK6855QCfD7HwTZRY
+			AAFgNcuB+kEcwYAzAADkHANgAAhBCBxOShAAD4HyPkAA8x4E6YAA
+			8BxBpHMVW6eshBEwDMbAAZSmQpBSCpAALAWQtXggBLkQiUZH1WAC
+			k9MIwazTPL3VS7RU8vZVHQWZBhiAAAGAOAaUsBzlwJVrAAO8d5YB
+			yjkagOYcxbhvjeHMsAe59Z6RXI2QpiEoiJlAV6gSdTmHaO9iJPZb
+			KoCNTAJAm8mQB7KKfdewwiTQqxzbTku6JqsJlmrYPYteyB7OVhOc
+			RMAlnmElOtWaOsdqzjGsnGPtaRPx9GvHzbdaTxR+HZSeq1e0Q5TT
+			OWyTCqjmIpEHihEaYx0Z9SfltX2ebuFx3SW9caWN2ZbUMcxYuVcR
+			VOK4m/cK69kFwTBcxPeetYGEsLkfMeW51TqTFuSnWbxDifG5ZUr9
+			rL/SiQKuXdQwdC5aS5tBaF3sspwKCXZX92q2lBRMmXMeVJuDtYXV
+			dOQ7axJiYVNVVKYi/ryQBaM1gAT6x8qiAIU6jsIyDkfHqPk9KozX
+			kIIcBECRoyMkiAbK7E681iEyHwPApRXyJlDMmPEoQ+SHAKAaRYDo
+			JiUMQdovcdA4ywMjI+UNlR2ryj9zEezMdqyFARAqShmWVyHD5Hvf
+			pJjWSfDvHWfU58hQIlKA8CkwADClFWIEBIC6cyFDcGlTIbY0TXj6
+			Hw6NlxsMwEYIoBgDhSmzEUAuB8iwKgdEK0zLCw1Cx/SwTdHDN4AB
+			qjFJsNTVR7EmALAcQIwJFgFgPIUCkHZEwJAYiNLBnxHADRalk1gf
+			BDh2DlIcMAVJrx4jsIcPAdxrx8D2I/Z4AAIgWlOBHtmsjQQAAjBc
+			QrWBF1344lstcrw9SLN4ImN8ax9RYCXHYW8dpcgI6DkQBQgQCwIE
+			WBeD5ioMAfsVAQApZqDh0jhIcNUx4AB1cKJ2O0mw2hoNQjiT7FpF
+			AGAPocw4AQCU3gHImPIfC63bD8IsdYn5lTYD6maewfWHiuHPN8Uo
+			4EtzrmyvLaGKsoL3kYN+7Yz2BTWRxPrmLjABiBAGAWUrFpAh/AOL
+			kPsD6AnQJ3JDyhQRuR7AJHoPFSI8hyAPHqA8LA6BPjoGtBztnbe3
+			dv7h3HuXc+6d17t3fvHee9d77533v3f/AeB8F4PwnhUSgpBUC4Oi
+			RwCBpKMrvra5TjXMIUOQe4DB6h/HOCYcY+B7gUHuE8wYIzjhLAKP
+			liAER8SLAMP8p2KSLAGHtTwfc7pfqNWgYMxNTiKX7KK6ooo+YEsA
+			oIdVXo+4tmcWua8fo+EmU+0kRLUGC4CzOsddO6JFSNEKAPyD7RFS
+			KAHAQc3HoBWM73VJidrOzx14ALCa5i0ojquNWn7nCxmjZ/hviA8C
+			pE/xCFB3B0rCkDMKldPkF8B7CBGRuDsCDCmzLHrtgCFTiZJ4KXh7
+			OjsxjcLVL3p3QKFypUIsFRFOvks2vnKXqMrzMSqBJGMfjPiBDmPv
+			uCiBQZJ7B6B5DXh6B4DXpluMmNADisAEiJgdAkmKgUAZinGdiLE0
+			ifQll2B8B5iJmBiJlgiHB0Bwi5BYhNoXh4CPgHGfgAAXgdiDFkiL
+			AGAIiFAVgeiFMoL1EHB3B0CKBphiCJh8KbB3B1C5BohkD0tpiPgN
+			ATiKAPghj6hkh5hxqZuSgAB2B6D6wCnHB9M/hxgNiRB6l6JsADB8
+			nZHaACiPh8AKCwB/AElhnRHggFn+n/iivaiRBuKzgBwExUqIGHLl
+			CDnZr1jkxHLPsDsDL+qpLgorvzABgviOgDBplVB0BtBnhnBzvDEf
+			w0gYAIj2h9gsjoBxh9ADh8gGh7AHB8AOEyB9gbPcAbB+ACB9gNB+
+			ACh9klgCCbH5p4oDkKx3kIR4kELsF0goAZAOgAAKgHCUAfATgLJG
+			OlJTlxRmEJCYlzDYt1h1IQh5BzIQh6B1CDB4h0ClB3B2jMh5h5id
+			DKD0h5B5HTSPk/B7SRodC5L+JUJSpzngFYLOL2Prlxjbp5vbJlp6
+			SaoBJTLIKflWiPjnCnAsowAAAyAygulvDXhuhthtuHB0Q4DpCFAM
+			ANgPAAASATASoMLVpNBxByC3h6j6gGq2GNmKyjhugABYhYhZgABj
+			hjhkozC1GIGLjjqpGGyDiQohorJkItmOp4ngHgLrJ6LRLyp7IGjk
+			l6jpJfRbScJhIql0pRlwCYKFpymASeAAuPKolBJZlyJaScTBlwSU
+			iPrrDgp9mOotpTsRFZIpLMlWlcnaDWEnoAIjLlppHdJSueiImGIF
+			IkDoInlFTbMCnGqtvKLmNeuUpiGEQVzEDUlVFcpQoriXwPqBINom
+			jnGQTILLrElnH6Nhr7ubn6CFH1ifB7o4rzAJGdgAAPAOgPgAAVgW
+			AXAAAbAbKSASARSogGAGPXrkjpIgTTJXFRrLilBkBkhoAABPhPhS
+			gABuhwHBiOuoD2Dqpeqrp0rnTgLhKJF7jtJVCQgFAFpHpFIQgGgG
+			gHFWulgCpHyMj6hnhnhrgAB1h1k/NGC5SMqbLqrtncIpL1DnoorD
+			ECnczHopputhDnLpPpJbADqgiQGhNJJ6DuwXiuvGTEneDVy9MFwC
+			D1kjnlT+UqmNUigCvzHXyrrZJazWifrfmsLeLdifigUzvmLgyTrh
+			Lip1JvIoOhICryK/pf06pf0aluL0p5Fw09IprsU4pnFvppDTrvlx
+			1DS/JaCEGHLaDtl2Sa0+rwr20epTjlFRilEjinVHNhiip4k2jUmQ
+			MDy4VHB8F9JjyTVN1IlElOHGDZpzpeuZDkUG0oJ5sIrrsTKBok0J
+			TCjUlnifEnldwCp3sRzZvqziP5jZpXFTJ2tSqmlcJtz9y3nfjiTs
+			CJFimLpqFzvwgECHMWjZzuvUOYDSv6C1DYPICRiJgMgPllmHLfm6
+			Byi1OVAFDxoMAElvy4nGMwIlSDpglvoGjuADEmJvNGCJgPAUC+AE
+			gFiJgKgMinAJ2GtICKBqhki1BrBlj6s3M2mDTmiHUuKUgTrXF3gM
+			ARCLAegpCBSvODjCFnngsVifh8Q6B6iHBnhfD6hnWazmiFGfCLDA
+			ilCmCFAcgo10gRWVEGM3CPh2K8o0BUCfNmsZDECFh4ifPuiFAagj
+			ClAaWrpGAGCOGMm0EFLQS9BtBnCbBRBCN5h7h6CPgdAmnLgc222t
+			iJisi7AFthEIiGCKB2BxCJwciFBzBvi1BdhTh1qXh7iPuBHLgVgb
+			i+ACAGCHB1h7i1B2PPAABmBv3CKMifB+B1GKpaDYWNsLsY25B7pH
+			nUV2rVB4GHB+y8CPoeyYiHABlj1HnbNJTpUZk8IrFYB8XdsyCfFR
+			CLADump/gFqpAQKZGNKCzry4B/3SB6MaACh6B2gEh6gEBAAIh6gM
+			BwAKB5gKBrBkBeBg2lSC3x3yXy3zXz30X031X132X233X334X435
+			X536X6vCAUAUAXgFrKACghUqnQCHAVKBAAgdFBKeDcChh+KznNmj
+			B2B1AQBzhYB0gQBzHLlHg8vWgCgGj4uPnRFkB5IRk9QXutH+ObRa
+			y7L7zbiYuTRVUGCilKiKQDp7FWMEF7V80Gve0xjYwdlwrMOhl7JS
+			3jjOjnrOSa09FviKQvCnONlltylVGhmLCJgE4NgAAPgTiBPzFLNT
+			h0ByNpNqI4NiysFMh9suvIB6h7jXsO16iBAKALCUF3V0gQCFOBY4
+			2ionD1h3Bzr9jOBzhvCPhkheibBzhvqJpZ1WClgJCJghgsCUAOAR
+			xZCKBwBqGDlnDaGCJjnRh6CHRkCfOvr9F1leTZtyCjgJmKsxOZ2O
+			k1GHgD5KNXDgk8MxCFNpiKW0p5oME2JCgIGMjBoYE9wdLzKoKKCF
+			GN45gdinAUAaCnCoZhgEiPyvTPCQiyrBxMlgB5iPhmBei1BphjC1
+			QciPuCspAQiUONiLAIteAAAeAqGe5EkLB7B5CJh1BwClIeCFByhv
+			ibBeBVmoB5h45vgOKZB/AXGrhwABh1D2JoLSED4PIMB+3SxIHXh8
+			iLAIBvAJmNB5GKn2DXh0gSq8h8AICwF0lG5CmAgAh9KgB7mKn6Na
+			B+xWh/wX5qADYKiDh8HmCImOCLven4CFk+00omn6DRuUAZqnQlB8
+			gDBsBxBkBr6QX7EZgUghAWQJaTAOj2h/Afh5AJh4hyB8xTAPh+lD
+			gjngAhB+nUAJn9qZaxr9knIDIrEGR5kLInyCAjgWgNCngFClAigV
+			gMpEX9nXpPw26mEEFeGMh9pHkniJh7SFqZhyoRh4N6i33CKZh3Cb
+			B3B3mrh4B4nTB6pIl8YzqXivySry2WE4J6vhlxp2XcvprxbVL1zk
+			KungibAAAiAhgkgAA2A2gwYqgO6KtGXjswUhF3GKy3Khoz7NMaiO
+			i3uSAAI1JMhXhZBZAABxhzBxZVlDL3l0qJ1D5Kp9pTlyzPDBqBuc
+			TLJdF76SJlTMpzlQp9U+l2Vs721VUZ3kp6S402DOOhjplu3WOdsP
+			05iuqeqCVHLvTVsh1kZgKBqHsyTZzPFX1YLpzcomsFp8S8L9Jlzk
+			k6CXbwSmy4FEnbTXrGwQa+lFmGWWJTTl1E1BJtU4zAlXjTvoSZ62
+			CWVcpwULqHQVjlST1dJTLflMlsFpC5AEgEHLgOgOnKAYgYAYgAAc
+			AbgbgAAVAVgSJEAICUVrKhh7KZBmhlBpAABVhVhWgABrBsBqk5IN
+			GGpYb0DVL9xdVfudTf0iClAGKPAAAMAMa9chKWAOc7qOAFiDK9i5
+			BsBrBwAABchdDHykHBqYvmFfp2jPvbUe4jV/IsUHwJ1KF47Azb4c
+			U/sHsBdHp6KgvXlQrPJ6FRqIcQugkEjb0347lQFO0lvY0tUtmHrY
+			rNzbD1jbKLreLc0yCbLcx2MwMxFhxdIiTMqrz7pPuZ1CvsG0yWro
+			G0wG4jODrn1AU/LuK+qDTF5bEC06nfqNpTQYcbB/DiIoFF6/oF5b
+			J+UHtQClaRrnFWJ361DpDS0GSTr9NiKZJUuXrGLSv57wlYWWU20e
+			Hd9hLqjpvtE3YnqqDTLnkpVfFnrfzTFtsyVW8E1KpcDkb6mhqgqB
+			FRFGlmeD19rnlw5oJ4p3tIFhjjrbC5NJTUnXoMVQVVp7IrP/iUgM
+			unMTh5B3qZKaCbTBgTnsSpAWpHljFyDOY1W0ifWLCdB3h1HjmFAL
+			gNpHiR42RJgAAXAhMngHCFGkiP2EvyLAQfwfWYiHBhhZCwBihYiw
+			LbCFAJgLOCDRKOHXKSgmiBALAPiFCGCHAQG+V647NICHB5B1iLCG
+			CFB65+tUBjCwBqhji1NrAaAjmwgLCLQnw0Q1AAAJAM+9kEiviPh0
+			hxiPhchQqZB5B2ZoCLGBiHAHGeepgeCLWswZ2FEJFriHOvsZB5CP
+			5BjXhXhJmoVSiPgggsUQAhArqzsofLkKW0iFB5h1wFQDhwhsCwBX
+			BMJCNGCfAfAonXAbgj0QAIN8FSs57Phjhu6DByh3i1BhhsaDB+3j
+			3PDCAEB9CUAHh7IQ/2GZh5iXBvnaXj2WCh4ePwgIiAAYAAYIAcAA
+			EAv+DgMAgCDw4AP2HP13QoAPqHP+NAB8Pl8xF+xKDw0BgIBRCHAM
+			DScCg0Cw4FQoAy+DgWGxqFPx9vsAPx8vt/REAvgBvsBP0CPkCHtu
+			tlspOUVGpVOqVWrVesVmtVuuV2vV+wWGxWOyWWzWe0Wm1Wu2W23W
+			+4XG5XO6XW7Xe8Xm9Xu+X2/X/AYHBYPCYXDYfEYnFYvGY3HY+sEM
+			hkoKgQCAIQv5/P8PyYAhB9Pp+BCdvkP5p/hCET0B612AEBxd8gZ8
+			P9sB5qvd4A14BgBv0BmEIvkJAgDPwDgIAvqTgdyAoAAJ8ScAvybv
+			aIP6b5sATueQOgygAv7qP+GwiSAiTgMD7EARZ/PmFP/5RD5v2gv7
+			8QfL+8EPmA6gn+ASFHyBJ8ABA0EIs+z3o2lDPAACAFAQAACnSBIA
+			AUfkKnueL7oaBoIoEBgHJeAr2gAB4KIaBgIoaA4EoaBAFpODAPgI
+			95+pOfB7KCdZyp4fJ8KCfT6nQcieH2+p7HuiR1nQjB+H4hQEATHI
+			LAw6ACgM2IOhKhojC62IHgmhqsM0hz9Iy8JvmsfgAF+ViPmuZaeP
+			nNUBPeAAJAuk4tjsBgABKF6BTQ7h+n4k81gAdBwzgWZMnnRpxIkf
+			B6Py7kHAAAgDIaDYQgaAErRzMqThCFyFBOGyGn0e6FHqeMcnqeDY
+			nkd6JHCbEEG2aLsHzV6eqA7r6ochsuINTtDIsAgCtiASSoWh0Yok
+			BAFIkAKTgAAYCIkAYC2w7J9Nifx9tiDYRtidZzIkeB1SK+oDJXTk
+			coGBCGgcCaThgIKDAWB6GgNDM+AwhwDJi6LVtgoL0AAe55oadhxo
+			EfqMAAcBuQQXRUHgAB6HgoIBgwj5+hqdoAHSflJ0VOCJJFM6sAE8
+			iBgAg0COaeEMgabwH5rnKegTOB0hUcmHAieqovNBitZk2IHH6CNO
+			H8l4CHul4EG3noBntHLxpOAQH2YhzkIweIIZOd4JnUQJ/EmfpAMh
+			uLF34GICnyAJ9gdKh+gQe4FnsBbencIYCQ4N0dn4FCkJ4fgDJ5xC
+			s6UsPJLByiptWqIbhGCoAAuB8KiMFgNAACoGoNZzqcxuXVq8hKXn
+			8e4HQSeiXnqdsMnocwJgAd50okdp1Oxj6Pnp4oAHj5AAHkeVJnwj
+			rutEiJ/TgzaLI2fsGO5bKGuoiHuYU5U92Mh+GoUoKdIkDwOBIAA0
+			DSMwACOIoc2FpB+n2iSToEAzjOjaJ4WHD1QQM4Zo0QACsFYK8AAy
+			xnDOJ6RteTXXVEZZgnskx7k9ppIeRNPaD2YPdTwZphhG1smxe4AA
+			/SAjxrbcwasnEKEHoPaS+RYxNyNmbJESYqJCSLQ6a+e8hMKB+KZW
+			8tCGqOmXnnhcRuF5KGlqagqfZ80UlsJnPMmxpZ0UBwofFDGChCof
+			whItDyI8L08EMW1FZM8AIXnKa+atbUMGGPkgqeFbJD1nuYh1GRBh
+			Jmvx7YVC0kkgnxQbIc+FmB5yDvhhkQyFh7ntQrWzD8k8XiZIEkXI
+			N1K5CNj8eiPonZF5QM1RioMD4IwAApBOCgAACwFnQHEOJoo1xsjX
+			AAPBj6FkuyHIm/dBzDI7ryIFK5CoEgJO7A2BoDbpALAWQsAVCpJi
+			BDpHQOwAA1hrjdeOPEegAB2jtY6N4bw4wAD1nM96IRIjxLGh8bAk
+			cipEw0YadF1M8Z4SGKlIqdcUT8tJizIVCEUZ2TvU4AUl7DQCGtoI
+			tB1LX6FFWeypsqMfltrcoIZZqhliBgHdOlyZ5L1oHuIslNOB3kEm
+			hlElIfacEpp3humkf8GoOoMiCRmelA5DPbh3HCO8fXwvip0g+N0R
+			5FIRg3ISgkepAxZp1POmiDSRw1ZhGM8rMITLaM0TxhtW47kHes5e
+			fMO5CkkT2bEjUAJDyYIkjl7B32lkiUQmt6ZPD9QhhpGY8JqIUUwO
+			5GaDqmomqbhtVIfxJXuSOsNTc7UUR/khH3TFNZIXvHbfMfuLyAqX
+			vWqep0kq3FsmWjvJOfci40kZH+9QntUaKw1jAtqxqcKdJGXCQaXl
+			NYMQbf4Q0B5lVtyYHzSgfTzwBE0BIC06AJQYHQW/HE/KVGHDzIkM
+			kXakx1DkI+A0B6WAOoZAYA8l4FgPENBsEshwDDVRHK4Owc6cBjC0
+			HuAAXoqJuyeJOB0ESogFEuAAA4CRDQiBdJOBwEscbTEygmVGXyjR
+			vkNHSN5Hg9SgjaGe0gbQzZugLAgQ4KgcWegYBEjkBIDKHEOWbQIr
+			Y9h5lBGCK4eQABki6aQPMd5QQRArwyCMFLsmBEKA6CYhwIAWkKS5
+			iYrQ5Btk8GAKi948B1kSWAQocw3iPrcIUEAKygsrKCvzgQtI7h0E
+			KGsMQhyIjYjmG+ggYQsB3E9iGAAH4UnZAzCGAsAAEwMo5W+UEeVw
+			QADXHPi0co7mkC/GuOico+SJDyHsRhBgBx9IVAgPZqOjkKvKPONl
+			ep9TtIFAGR86LBrvED1CbB7lhXxwchQRU9+nqYkKH2PgjD060TyT
+			PSEgYCyDVNUMAFQxKB/I+hQj6Jh4z92CWyhxCg5xrjVGiB51mz9o
+			bR2ltPam1drbX2xtnbW29ubd29t/cG4dxbj3JuXc259qhVCqGMBh
+			mh7gWI8Pq8JCdIpNA2PffAKyQj8Aqasj5Jh4j9AKPsAg9gED2AaO
+			IDI3gcj3AOPcBpvwCASAiPpF5x9cj7WOOdDIAR7wmThCg2qasCvQ
+			1imuoQBZ6n8IbZxbYCoTRrWCP9BCDj5ppM1yEAj3L+nRArJUApQR
+			4AKzWPEB474UADswVIAvO0VAKJeFUGwIL9gCIMOsZhLxrDDTgPEd
+			hQQGgQJeAsBxAstypBwqcF6IUXyZoLVLmxEeQoPHmO0oJHiFI9R+
+			OUoIuRT3vHkO4oKEUURvIaCIFhsQrBuOgBEC2XCqV4sHLdd4ABuD
+			TTgO7yuXiJYSI+O4dJQQPAnJeEgLZ0PEECp+AVhFGu4khkqeFj5C
+			hhCtm6O0dBEh7DyKCOUbtLHsKckcBcDaggDgINiBAChJwfhXJOBO
+			ZdFST+7NiPQd31R4JwG0NFBA1xmtIHupgi6wWHzq5aihC1HLenNA
+			S/oBS9SIDwHaRge49dPVlAGnAAQBNZj+H0XqKMnoJOAgAmRyAaAk
+			zwAGIUHoHkTg/CWwkwX+RyBSBoQyAUAcNiX+x+BaRmzof8IUAOAW
+			5CNWJ8IaHkHUJeJ0IaGoGim6FyE+Y6H0UmIcAiTgH0BaOwH+QCIu
+			KSeOAMzWR2nUKuh6W2psZqHWZ0Gu0nCQhQWunKBkHiJ6Aq0YT24+
+			aQO01mKoISRmH8OgQINi06JeAgG6AuQsHqIEOqAEGAQsH8GCiuJ6
+			AQH0EyHCF8GsHO3RDwK+A8DAA+AoHuAMHuASHsa2BsAIH2AMDQ1a
+			B6PIH6APEOSlEMaSpqLGTwnwK1EqyI1O1OBcA6aiA0AiOgB6BOmc
+			A6AkzoAUAMzwp/Dy2yH6HqwyHyHeZ6HwHqIUHgHGVEHYHCIMHeHY
+			xaHgHem63wveHuHwveeKeEHmaQNCIkqyr3CEp2iiq4qKIyIkH4JE
+			BsBqCEAADWDQfgBcBeA+WEm6PeNiAQWsIgRyGkGoGsgOFUFUAAGA
+			GAGEeUHqxamgQqWaRyPWl+1OQirOjkJGtcUWhiJkQaiU5u5KtUiu
+			UYI0fyjitKsYhk8iKkq/CIoksgIWWeIeewryqep/IMr2i4iktMiA
+			jWPyhIj2hvImKsiCq6jMhiO3E00+5IiAJlIYT2qKhccwpjIq5I8G
+			juZmr2ZCnkg60+krKM1mngncOUJuYUsmn0qIh0JK5WnnKgoqrMis
+			P2ootEn6gunohMTSIQjAoVJ6f8ochsQEe1KOiMfKi7JIpWTgI8ce
+			eiJ1BGYMXk/SRyf4JeAaAcdkmaAoAAAyAwYKAmAnMEAeAfMAmaAA
+			HmHmveGsGsG8AAHCHCHMz6GsG2AAG+HAaK1aO6SmnKHrByrEJuYS
+			iUsmIePXKYncq5KqTOnmwOkUQGhNKKPFNnEshEoBJ6QYsCTyn+Km
+			W+gkpsiVGoQhFXJKKyYaXkJef4IMNaNio4o6avHROjLA7ipIpOIw
+			H2lGNCSkUShQskJCJEpejZKMqEwItavQqjKakLK4grNSQce/KQkO
+			fAg+puoWwIJIkdGkWNJCnynvNwnRNXIOomWMjzNOiqe4kBPkidJy
+			Ieqe8nNBPOqmPeO1P/QuIaO0tgPhN6TSewTgte7jJg5uPmPgP3N2
+			U3Iys1N9RXPmjGnoISsSNbRmkch0PCfMNQ33Qu6XQgr0USsxRPRP
+			JQ1m6aIYAIOSs6kXKohQ6dKKuGXqTONKJ6VcKiYOJeRiJeAcAYxA
+			AaJOAURqJAIa81BsHwPOkxFSTgoeWiW2OSo2IUA4BSTgAuBAKCww
+			IcX+Niu6PWXqHsHgkqiuxkTgFyFG6QHGG0I+AuA4IEBaB4VEAuA6
+			QqAYAlA2IUYFP85KfuIaUTTI9CxcFu0GFZHJQxAowyAiAoJeAUZ6
+			AABuCWIavBEyKxO6IUHIGuIaHHVuI4wgAAG8GqOwHAGqm6RcIaCu
+			DqwyAyw+AAxCOpAVIXRcn8TyIc92xUFexaGSFyUmY+KCBSBiaiBP
+			W8AAvMIaBMBqIkX+IUU7VkKuG4GgI+FQESUmHeHQ/6O4RoIaB8Cq
+			OgCACoOgATS+LaHKG2IkF+FMUsaQI4Hsd+HOIxXUAABwCaJeByCa
+			IMRodTEqekIcHQHgveGCGw0MHOHiveGSG6HWJ6+CW7VUH6OhZSW2
+			+uZqGgYGO+HqA1GEAuveb4/0P6uG8gTOAUHrA8esOw1QKTL2HkWS
+			/+Ic40IdV4qAh0AKAWoOp/Sk16Pg2AH62AheJDSEneH8+OASHaMs
+			AGEOpCHcGoGkGYFDFZbXbZbbbdbfbhbjblbnbpbrbtbvbxbzb1b3
+			b5b6MM3UCqjjS+JNDKvKHIHIHOBaHgHiHmC3PIBba2AEpaAKH+6U
+			H1cqU4H4AWH8AasLcqPOW44Ei0tcJSKQq9GkZg+CJRO0jNWcQlGb
+			coPe/4IuAYI+H8W7QytOSqHSzoAChyHya+4+5YIOaiOiTMJ7EceU
+			AZCiHgAczWsKmAxIkcA2AgzpFMIECiBs2czoJeG6F8IaGgF8IwyZ
+			TuRNWXaiQ1YABaB8NiBS7Sv2X07ifKhIiXQIrFV2ygG+IkFUEgaQ
+			vU1mckkUBGBaRyC2DpesT8LKJCJyYsUYG8GmJ478OwG8GoTgA0BC
+			IEBuCGZ6VAdOP/MGBEIxVWiyr018+CxQJyO+9mAAGQFiIky87y2A
+			Hm4Cl4QkAoNiCaDOIERuf0RkJ7eBJEIiseYcHoIlAYKDhQAAHMm0
+			AAGkGGI+SMIcH0HsIaUuPWJsAAA+BUJfi0apWchwJAZcudfId4HW
+			IUHeHUJ4HwxaIuHqjUzqAyJeAiAqaoJoHm+yAAxQnUIUAyBAIMAo
+			A0xAAZOlA8A2BKKCYEJSAIIUPZPOk8Ia+sNiHgHgIkHAG8veGOFa
+			ftioPeAhGaBUI/B0QKAIQQZyZOH6Oqn9RirAQHkQHUQqAcGkd2AM
+			HWQqH8ApBsBWvflueohXEGvnckK7C2KiKTh2HAA+Ey4eASE0KGAE
+			HOG2GQGfDvb9buACDeACAsAUHyAaDUaqAMDMsKH6AzEOZI4GIiKO
+			K6csK9nULTeuQk1wAACQBadGBbE6zqAYf2oTmo2k1NHKIib9jyHS
+			c4HmHYNiHsHsaQHqHeIMHoHSOgHiHaQQHfkmY8HoUnoOOxO+pSQS
+			I8O6lCgmtdQ2XK7kIEBoBifoC2C4CuAABoBoBYQsiMHaHcY6GIGK
+			GMAAFdpy8sG8G0VGf6WUcir+tbNjR0Uykue6hNJYiAgykKeqTYt6
+			RzDe1ki48GPtKe7gic5wi4sSp1qdRZqukLNAIQ5iitJIhfRUqhNQ
+			kMPNKiU3qdPIiOhBNig6iDRUpojXQeqdJ/CMrGitYxPbqsPgIgji
+			iCppfoe7IIjnONQyPEi3PzsPRk7isEoUMuOoh1adQEfCoYYSe7qw
+			p+kIpqP7LPPFrmIXNpQ1sketRBJ6P0ZcskWhTRUuAOIEAgAewyAq
+			Aod2AvMKAAAsAqAyAAAxMIYcHsQQHGHGHUnoJeHUHUZPpqGWABuP
+			MwSmIkpNFSIFL8UEleQyHeHfCiHSHWmsqGYaPwjmrTsWnujfDAkB
+			NhvQkDPwPFsvKKhbDehaqgiaItI6QbWgiQoAKm1tJ5KfsWtHrWrA
+			W3n0oMIEoNOdtml0IEAQlKMsRzwkiOUTGtNENCSFijrgUSeo5xRS
+			5Qq/Czv8OVlWhbFXQY8nPdKshrPrs5r68NsjthP0tHtLKXlWrDKW
+			nWq8IyjTJvxaWNH3NdlTrGf8e/NVJ9E0fMezJQtNJQn4R3CMjFa4
+			M2eosaIzytRzRNPFyXLU5vLUT1SGwKerRiI1rKO0fCNaPXzSJKPJ
+			WckYpjI6siphRbCNgWela5NBrOTWp0AMAOMvXUgukmIQUXqihpiv
+			KzaU1fo8veqimgauAZL6AdANYAAhAQR0IcHUHO7uHpP4yEOOXotZ
+			SuASIUBUB51KB2KDTCdTQQkuTYnjjQTgFQEVZMG4GiI+xqQqCmDa
+			mcAgAvjqIVAu8GkcKorqYcHkVmHiJOXcTgGaGEm6GSFwUmf4JOCY
+			C/MEx6QqAQAYIV18TgxDOCK0Hy2AGaF2IwGd3NV2KCViTh3ZfgNi
+			CYDNUqA8BSZsPdX+KCU6UyVbTPQvil0aHcXZjy/EGiGMm6wq/A/E
+			A4BGVEx6+MtpUoIUBABZdA1cH1Gai9vuIdiWTgF+FOeIxnrUQity
+			AAX4QqB6CkQrBDpFIUhnqUqicwHOG8IkGMFc0SHbR1AWHkIk+OIa
+			BqCQJeBqCSxBTFIKKkHkt+AAGoHIY6HMHgOwGKG5uSHu0QY8HwIl
+			1IOhmGAGHYJeASGZd6OsY8BKxaHqBAUmH7BELDcldIKjEEOgAmHb
+			MF7ePeWCH6y+InLIe4AVwGpFSeO4H57tazvyYqhgwMWOoMOAWgH/
+			bEHKGyGwGo6pn38n8p8r8t8v8x8z81838587898/9B9D9ELoBcBc
+			B0AdMKAZwgo4ArOiAWHQHQHWBceYHqC1PIBda2cKk8ATPIJsoUml
+			SYtNVke4U8oIqOgxsJfsOzdmH43uP9GsAKTgHeAUmsOY0YZlr5HS
+			HxS2HcwyAeHRUqhAYQH+AcJznMHkAXCiHiAbef+woSXwASJeCuBu
+			BCdIAaQqBQA0dkIuIaIAy1s+gAyVq+wA93q/gA+31DH6/IYBQOAQ
+			ALR0CgAJBfGgYEAHDXy/wA/X7JABKAkGgAAIpFgCApbMwA/n7Fn3
+			IwA7XS/QAxVq+QA8nfPn2+J86XO9pLEgAHxQBwASS2CwADwlMgOC
+			pkEwzMgIBZa/5RKYtZX8/Is+HvLZtFnK3aEvFRbW61IQFw4BgALh
+			wDAAFr2AAcEpIGxPPgcE7LNMdj8g8nbDGCqoY5m7EH5JHY54I+Xz
+			DAeFJkUzeCAAGhDIQSDJlkNhjno8ZI4GnLW0zYs9HfDHY5n4AHO4
+			oJhZkLx9YhyStQCAXMAFPgEBJ8/IIAG+1Za4Gta3rJHO3YI5m3Qp
+			bFg2I9QGQ/qALfABs+C9npPrJJAmFwJhNIAAIAiZHadB8AAd52IQ
+			fJ7p8BoIIsex7uCmqZn+ix/H8mR6qQAB7Hqnx6naiySvOjSWgsmb
+			9gAfIHKYewFnmmrorMkh/uolLYMaiwCncqQEG6ByXR2moFJ8fAOn
+			omoIuCfYCoIewGHkhoDOumkQtiyACH0sQMHED5AnIWZuEBK0xzJM
+			szTPNE0zVNc2TbN03zMOIAAWAh+AKKQEHyBQ9H8f5/BRC7gn6Aqf
+			H6AcIzPCjGzTRU4NiAUqgAiwehPEwgBSC6NgvH4GAQsVI0dUNRVH
+			UlS1NNh/U+fqNOskh9nusR7nTEx6nYjR6nrI55HlF54HSmR6HbYB
+			6SgeZ5KZXEEH1I7QHqAB8HshgCAGqwKAkDAAATT0CnidqdnYdbzp
+			Ira+AEAaLAHdIAJkmU+pIAVIXWmMbIYkiGLHeSzwnCiUn9KqLXi8
+			6Wn7CzYz6nyYUleaaT8kkq3umqTYUloB3MsyzptgSZoYAOF0kmuM
+			4ZHGJpmmWOwm894XXjcJLShiJOCAN+AHaaUpQkyfXxjUbLLP170i
+			mGT3ct16rLmWP1BG8/RtjFF0gs+j4S2Oj41qh/3Zk7HSrpcbJblW
+			ZX1lOAYXo+uazcz9tfr2x4Br+A5WmO2pkkKYXVheC5skkANfEJ+n
+			2hCT6IkiTIRPt7pRiqLAPxdsgU1AGcgAAJAkCIAAoCgJgADAMUyC
+			4LxM6yWnmeKmACsIAGybRvAAZpmmsAADAMqR8HyhBuG2bsCnhF6a
+			AYBaNAVx2PpkBFtnyfTgnp5V15UfnnISe8CYFjujYUkNIaxk2T4T
+			eF2bdoPuYV7WTZXKmTgH6qZ6lSWLenrN90Xn2bLdo4EAOsR8H4o3
+			Q67rVQNARC+lnZj14NhP8f92ABy+OLKk4s1DsSpOyXKAFujJ2CFG
+			H2kofRBG/pKH44ViRNiGOGYivVCRZCxwoUgShrbDjXllae+yALbY
+			DNSe20hgK/IYsTgK+x7K6yQs2XQ2+GDzEqLiaQ/5pLH2JqgYc/1k
+			zXz/AAXS2o6TbmsNBMfE9+aM2IluaWfeIRNSUMNZBCmL0I0+r9Xs
+			P8hBJEIj/Ps0tCy9nAwkX6/Nfsc3Dxtf7Gdnr01JNXXiulmUVXmA
+			BH8uktCfmCRkXqwVnpKCbODkfGJ+UJo8wsP+SEAgBmKn/bix06B0
+			0URcX4wtq5LR9j+KEQ8gijVss5LEnMBhFgEgLJCCoEJVgBL+OwNY
+			4I8B1kMASto/wBVpS1AOAkiwFAMktASA0iwIgXkkBCC0hhW2+NeN
+			fGsAA/B7sAAMSQd5PQACpEaO4AA3RooEBECs1AUw2gVKuBU/Z7yW
+			gIAYdJFBaSzr8IiSQeo8CQj4HoSGYhwRZCcHYAAdI4yCTcAAE4MI
+			FAAAeKiS4A5DAFgRJ8RRiB54lkzooPcehDBjCwLaMWlizyFk1M2S
+			WNYDSsgACUGKjAHASlSfaAwCRPpPuDH2TIew8l2s5HmO8kg3xoJN
+			HmSQcQ3FnDiG6W1rgEgLFSPyAmJiz0NMhAHMp3SBHjnBjNTRvNMi
+			ZD5HjAEmTwT9y5L5KIABziLAXBA2otaGh7j2hAq4tMkIgLsZquat
+			p30CjjZeeaC8KT/AGIsCYGRqLKHusks9BSKR7MIiCBMDBUgCgIJk
+			O8epBBpDonYPEe5BBvDjSORJhEwABjyP2AcbNXkRLPBCUwfFvSUg
+			GhGAMiCMYmFqrQ1Zrz5SUAJHqRoCY6XM3ORIeYfw7ZKFjASvU+EV
+			CUMBRQAIfJMh+j4IheYlLOR/D7jmWSUh/qxryUgWEAg6QIAPAgMM
+			sIBZik2EEMgYwwh0KnwJgXA2B8EYJwVgvBmDcHYPwhhHCWE8KYVw
+			thfDGGcNYbw5h3D2H8QYhxFiPEmJcTYnxRinFWK8WKmBoDUHIFh8
+			D4H0D9dwEHug8mOAYdbHQBGbLIAeD4/3MyHJmAZvw/AIFkH8BUfm
+			PwIMwn6AEfoDh/rnXgf97CkJFwjAM4W4jCl0Dwp81mYBJZKIhzVE
+			G5lZB+galjcIkoBTgjtAUOohoA43yKNiAQfJYgGjsAaVcdDlXyD+
+			t0P4BTL86AAHqAlF48QIzsdMQwGAHQJAAAiAwvgQAULYAatsCACy
+			+D8ekM8XhCBnC8OCPimJ9CEH0OCRQmQKga6DBIC4wADAHkhNAQwn
+			MkZpS3ruAuw1AZvFuQiPWqIABwDYIQrknw9B5kEGwNCdhOTggHW2
+			BgDRgACgFJkBwExIQkhfI1TYixJt1nXa4PYeZMjMEhIcRYdw6Dgj
+			YGaUwdw6a0ISAUA1vSKAPAnJCDgJZfOC5sTctAlo3RnEyHENchhC
+			ifDWGSkceY8Dg02JkFcOpgANAjJlLl71JTYkKPAN0iw4xruiN6AA
+			cY2yEDdGsUIBoDyZA0CKVIHgTjUGta9mGsbLyEAA4mRYcQ2CW8qo
+			gN8gg6RwdHJUBcqRo66gFQcPPVtMV8ATA0fsCAFHrxBoigQdY5ih
+			D5WjOEfZJB5DucBTOFDCj9t4Ma0YmEtQAkgUlEEf2csqoERojMAZ
+			1QDHBkWwiJjIwBDxLEAUckvh5FijNY+Mw+AJ8aBMuHzSRyaKFgGl
+			bw4BBgATHqBcQI6hOjlGBi32HsU3gBDeAEDwCh8gNEQAAfQAQn5X
+			0UnYgig/FZ8VPF6r+BkqgcAkRoIgLCWA1BFRgCwDjULnpJyj2X2/
+			uFjHyYAfiLfePHQ2O81A9h0ImWCSHaiRx6bMJ2Oopg8x3HBeOQQf
+			RoCGwZRT/ofJ2icKS7upfaQTHxjRSCCqI5uKQaLZrKFCWSFheJrZ
+			CaNaLy95fSOSLxtRfBhBfj5KI7vJhx98Ahkh+CPRs5rJk5watZhJ
+			giSKJ8DBnhnRKyFhnJfZKpkxfiExqjxsB5phfhChjhrSMcBkDMGR
+			7plD0Z8zNRlh/omJd5oSPqkhsSJJSRiEESF5fBdCCjv58jNULCJM
+			BxnhvED6Hp7CKgAo/Zc7NTkqZABoBwwACEOQABz5TICICQCA86tB
+			fgCMOYCZy4kofomQZgZo24cAbwcRlIAAcIcDAYcIcQcwAAA4AgqR
+			miKIsR34qQeJXYAAdwdweJFKDcD58CwhqpMx8iI57TNRsZuaG8Uh
+			eB65i0BaHpgB8UW0Aw2BgJ/8KcWB9RlEXaLytJjaMJjZjMEIxykZ
+			NZd8GZEKREBaCUSRxh4qrx2S0R05dIkLusFztwhCDYhCDKEA6p57
+			y7vCEcB6FEDDusVZGa78LJhKGkE5lRrsC8FUdsDaKhisX0JEC5eM
+			fa5TMUX0BcWsBkd6AKVcJaJAsxhSLkgEXrLMfBFBk5abk8gMFRrq
+			FBCwiBjJkKEiMyEy9wpqNK9JwZgsjI88czo5ERexohiMkiSJw6Oc
+			CiMiQKOqSbM5+hlRxKIAixvZC4AiIZngk7JhkA+0Ypw4ix/Re0Cq
+			SSMsAcj5gQAQA0NMNCAqxAmJ7oAQkiRhlZGcHgsbPgfJQ5FIAYgh
+			fwnwfIA4pgfYAIoQAwBIkh4omQFIEAjQAIew/YeIbo/YdQcQ6Rec
+			h4BCZxywDYmQIoLgqQCAC4iwBoCJxS3UJCJh9onIiwdAbYsSo7Xx
+			/IAAYQWIeA4QcIggwQ/YHgJkPIBbXpOZH5zQEYny+JDYeI/Yegdz
+			dbo4ekzw+KpicJ54YAV5bze4hE1wGIHxH4CgDBT59AlwBJhErMfA
+			ix2ThgkqVo1IEokIfQfAkgawYwhE7L/E68GYmbgImQFgHojQCgDY
+			/ZrIBQBwhisaOyuLTicI8yo4hgbwaYgilAhgdIcooQdQch6QlArA
+			qQBwCK7p0QeZl4h8mYAAeYeoph469RGZkKFiVYf4fU9Bk4BgBosQ
+			BQBYsSQyRKIAlp5ycwdqV40JmwhgfIfssppZcyT0SaIDwA87dxe5
+			CwnyDYoReAkgvQwADADwwCMzjYhBbogjWgACeLQYB4CYsQk4hlCw
+			+aD4AAbgb5KAeQa5Ah58K0ngfhuj7AAQC5h1MAlqcpFIBIoQfD3A
+			kpGIeYAZF4m8DoiyfowAAhGglwd4sQBga4wAAQe5kz7AAYBEbM5A
+			eQCZKAegCK2LxIx5h4iwBQdoqycJdgm8SQeirzPSIMtbK9PqEhc5
+			ioeyBQAocRuYeCRwaIe61oYIbwbwa4U77tV1V9WFWNWVWdWlWtW1
+			W9XFXNXVXdXlXtX1X9YFYNYVYdYjA4GQGYG4JLGYfISg85vYAQep
+			4oAwcp7oh5CzxJ/QB7w0BAfC/ah8rIAQey5wFJg7KImxyrLB0w15
+			eIfoA4owBgtofrJEKwmQAweYjTPRFDqhX4lIphihrw55SRFBdZew
+			B5nNgc5gfxOsGSr7M4lAzYhAAlUQloexvpGdhLw4lKF7OQf4BBd6
+			IIDwCowABMqYFIGI1CMk6KODt4AAdcRIAAdQcaOAfQkk6zYE6Rha
+			mwls8IAAEAFBVjo6gataZpdAA6KK5YkJipdpe7/4kgdIchnJk5Yg
+			oQbIabbNFR2AAw/ZygqwBQBgkLsAmQIQLIvgBgCI19SbeotxgZOw
+			AAcgbg/Yo4ixbo4Ib4bAplujtxQtrCD4nwEIFg/YIAKoqVv9DY1x
+			Ns6wlodAbgsQeoeImTjY4IXYU5cIcob4oQrwkILgPMPIDYEg/drw
+			6D7JMqR4htfzdlmFqAAAZwXxAgYoWgttrwmQGwI41AHwKB4CaiIE
+			rSsgmltRVrR0UBZ7tofQe5Vw8wcIaokjl145RcAwigkgEwGokIEA
+			FgmQj7pQa44LZgo1BLVwlqhAkhBIzgdohAcYagoyca5ZdbrRtdjR
+			d7vw/xGdOgkoBo805kldvthiHRdUectYlwdCXweg/Zrhvw+1pgCJ
+			ZweQEZcIfOBKJCTVhJGqP5ilhQQIfYSwfJMVYuDjBwOByzOgAwP7
+			PQAoLkIICDxYmtjJC8ZJNCWTDTUIsQIQFZbAH4E5TIDb5ol0fKHe
+			DuHzEIfwfDQYfoebTN76sAtri1BYc0PIeeJgkQkge2KQocThXBZ1
+			ZZDeKeKUtR5E3SOBiRmS74sacCARpB7ciyJ6FibxoLwElaMp9cBb
+			5GNUGKr8ppNSTEdEJqQa78hiVCNEZhfC7NhhKgtCPUhRrpocDSAJ
+			9WQVtZ9hfBotpCGUGRjpopd5t8lkgCMSI8bJ/sIRfEHJqFCN5xqK
+			b6NcJBdKU5f4x1pVrIvgig/Z2Ivh4oqQBeWwAB4IjVIx4IqQBsN4
+			wgBwB7TUO7TS+4AEN8PKY6rwcwcwcAAERAb73gfAhAaoaobQAAbQ
+			bOaKv4oTuosNHoC6aMM4b4b2ZwdYdZI5yAwABSY6sBAlBpAhnE3R
+			RCI8IcX2QC95MkA0d6JkJkLZuUgC98h5iqCsiiGOfZecXAyGfJ80
+			fWM8UhkR+Mi6P0GQf4p2iQmi2QxxReesX5fOQ8bAl0qaZo5rblrK
+			CJ2J5ke8baDr/YhCD+l556OsQKOMlytaLsAeNVRaMqQT5OiCVJeL
+			uqHcMUfEVSwsKZdEnchZeWP65Z9+hKJKKOVcB0dEFOfh6mj5Khi0
+			JBaZtOrcnMfMEagLZCMgnwmxQskqPuSytcodKKwkk2eUocKwmZRB
+			l5iVlMk0oZ+SLpCVtemcCiTRrqLKQiIaQ5AGopC6X5hRw0piNUZM
+			cpgcAWMZeprcGx4b7JtEWOrBdZnIAUNJxSUBeUkWvxo4fIAghAfB
+			KQkoAI4Ie4AkUDJ4+1hbcIiwDADIvgBQfRHgdIwEvkISF54gBImQ
+			GoI4/YGAIAsRa54iXSI0EoyF4rpQaovg3io1A91YYcUAdgcohArw
+			/YGIHpTkxuXDQdnqbUNAloeIdIkIeQdYmWtz+iggeIhgeoeQhAZ4
+			YSdjuKWJfgCgDQqSXLu6Sh/SPW2k1Knw198azQhgAwBGq5uB4YAq
+			T0fIkwkjfuK6zZjxgphYBABQkICQDKrxBi8lmkTodQgl4F0rIcr5
+			dew6GJkI2cb9BLgIi08arxZOOuqruAouZ4aAtt4qbYA4kLbgsUeQ
+			BYB0THI6Kg+CpZwsc6OC9bNBordZQxpgkvEgfAeLxRnIslqKFwkg
+			B4CKrgC4qyM2/QAAeAdlIoAwmQEQFjQdAdDyzNDgiwkYnwbIbkzw
+			dAadeNE5gTLDv4loAgChdHQYloAokgfABZAlNAoRQwnypBKCoohC
+			X4mVg2YTcQsQAgd3IQaSn1PpddowlwCDy1jwAAdgC5bwd4Cod4ho
+			A8lOnZHIf6uofkNQfbsQdjTIA4fI1Af9fwAKh4sgtsGMpEHyNgsg
+			ZecgbIH2H/ZnZvZ3Z/aHaPaXafanava3a/bHbPbXbfbnbo2IE4FA
+			FgOAhwfoPpeyKoAYe45wBG9peAfbLC8xPoBVi8WAeQALYy7FdwAl
+			aIegF8brKYfrnSCngZcqKgkteYflM3g81vWwlweT69CyVhgYdIsY
+			tt9YAgrhSSWsItbXQJ+M5mjZCeRdERe27YlNE6OSMGA5iBdG0OWF
+			ECBQ/bLSr9mxFKzYmimwsTbk6BP3KZwQoYeOBS01lMNEnnNZlDcJ
+			duPPQ2lLcI+B5vElFaEcCllchhiYBPDupkNAnwBTKMNEEUVmjYf9
+			JgfgwFjScN72ac+KNpwYfWsxe4CMxQAAEYFwi3uMVEW4masayYGQ
+			vkBYhwlodwcg/bVyoweQnwZYXszwdYco4qm4IgLQjQ9PIj7ACoDp
+			uldb7DcJhzNglE6wkJkLe/xAXotoYgWIplogAE4SrwH4KVrt3S0f
+			Bct9EBNjtgkgaAXwnwZgXL+14yZIsF9orYiwFwH4mQE4Gwiwxce4
+			mhvAe4eYiwnnCruQAAYwZnVgcIXQkIfgelPxim4RihEPjfjq71f4
+			mrIV94mrZofwcpGY66xCKh08BYkp64fllCVKALMK44AM+4AIgD0A
+			D8AL6AACAoAAAEBYBg8JAD/fsKf75AKBcjFbSAhUdj0fkEhkUjkk
+			lk0nlEplUrlktl0vmEjOIACYCfwCIoGfQIQL/nwmf4BfwAfoEib+
+			AcTl1Bf8xp0kANRmgLAwAJ4zDoAGQgCQACoMBAAAwFAdPs1ntFpt
+			Vrtltt0df9lAz7D0HeohAD7fEOe99AD4wAAfT4fgAfLwCAAeztBg
+			AebyeQAer1eYAvr2yz3fGKe0Gej0euc0L50mZfMDfT7oj+ob+ftK
+			AVwpr/oYAf20iIAhwEAVlg8U28KqQCAOx3O25E+ofE41Sj9BkE+i
+			PDj1SqMOj235fYAwHhL9flN1MG48i2lN1sUkVD9ER6ER4255XCpv
+			X22s91NhWxAPQpj3O25qHPOj4BAE9DcPUqLYukkcFo67DkQU6gCN
+			04r9v3C4CQ2AABgGhzeocAoCwqBUTAABIEgWsQDKrFqExMsIIAgB
+			4AAYCKygOCKBAQBSJxMBoAAaBoHAAAqqgAeR9G8AB1HacbFHk2Z/
+			ISiTYnseKyn2eywnoeTNn48KBnyBIAHcdp3gAc5yzSscynyfDVRT
+			FZ7nsiYCLGsQCrCbxvm+xR5sKjyfQi4DovLQsIOEkVEvskz7IdSL
+			dI/CMDLLAz+OtSYBt7DsPQs2LiRA60LwfR1HwGkNQpBRL1Oe+Tst
+			mjrWNq8yFH8/rnv1ScLLLCJ/wFEEDLEA6qgPY4AWOsLuqqAgBwrT
+			DbOk16hn4fbVH61yBn4idrMK17CwJbKlP0+afNm6VdwU2T6uw4ML
+			Lgjz+OI2x+qbD0Bv1aNJUhYdJWfedLubelUuO+teOFSqDwveVOIo
+			7FC3a+NIuHUj93pD2BNjDyEw9aFhpU16j21Wj7vY6DtPuprX1lap
+			9KO3DXKUolpNrA73ImhyhvBk70WznEAVnXT0NvcrlYooVJQNEEP0
+			8m2AQ7Bio6K3FzarBroNeijpZLdUE3iobr1FgrmZ024AnofB9AEf
+			Z/n2AIFAPCoJglFbeNi1zCn8fjWqEyQCHuAB6AMzCkW6BLMWA2YC
+			MKAUKxsCCygcfwFAACh4Aqoh7LLElhQrcAABYHSEhOGsKgeCiHAZ
+			IKFgQpSpH4fLYsGsp7oEABuGcoZ4nWhR5naiZxnAzB5eAAAHgrCo
+			TBfMoEgYhwDAQpoJg6ibeqafB5IT7Kytcvh5qb2yhzgiZummeIAH
+			ediDXwAAHAkA6xARvF7LyfORoVHrYgmC/4xCYIfBTR9mnNWXA2J3
+			VhGxSOhVhxgh9FDHON8zA9R6GqPiXEppxCmgIAWhUDAHCwgDAKQ4
+			eI7jVD7Huzs4KJCygDAMhFnSgltEDfqPUd8J22pCAibEIYWUigTA
+			2hUqK7SFD6HyU0dQ5TTi+FQ70eY7zClRN8sN9oFQMlhAqBtMr+gA
+			AdBOVVA0GV6LZNmUpOpQx2DjhwU0eg8TVDdGyQJ2JQ0eoVAQAmBj
+			DkNvQAQWVngAB2DmMxAOKJUgKAZMaAePqRgDGxASA5aDjx3DuM2O
+			cbxmB+w5XOrBhgAkykHAUfoAh6ADmzASztmigTKj7H8ao/psUVpl
+			AGP+BgB0RDef8PpEABYFAOSqAUpo8gKGRHkBV9BSGbEdPipOEcQi
+			pG0IcBAdoEVkj5fiP8zBCh2HumywY6agyfGwmyP8ag3xvDYB0W+d
+			U652TtndO+eE8Z5TznpPWe0958T5n1Pufk/Z/T/oBQGgVA6CUFoN
+			QehFCaFULoZQ2h1D6IT2A8B8EofjXj7I4RRjI+kTAMHcphmawDiK
+			CIjCIAY4R9ghH0OIfYCR9gNHgAcdwRh6gGHkA0frfgDj9fiAsfJi
+			QDj8muzcuK4WbgCHoWUAg6UygCHzH4fJQx9jxW/A9UBYgFQMU6bo
+			2auXFH5ho40hqiDnIQdePRsK5DgrXNUfMjzHqsFVfaAhuSyQEIVk
+			2Puqxg1akKSObEAhEFeTQPuQ5T5jh5PEHi4GTbzpHAOV8u4/DJVF
+			neKqiN+KdYi1RMFCk8q8lSzKabBw3xuWZGGH1BMeTOTsQiP4pM3p
+			CVjo1OKgw/B4K2nSOcrtfgAU7gGPqAJnNsGHKSAPHh9wEY7XINZA
+			KXSnlblKHqPAwq1mLlDAJKUg5Nn5GxBACtyoCgGIVkeQ4FANDYo3
+			JAOkcJDh9D3IcPAdZhReCrMqOsc1uSHARAsQmKxVQIAVNiCcGZsQ
+			WA7IdcdVpKYBlNG0MwhQ3BmkOHwPWNA5zNjuHSZsCAFH4gzCKhUF
+			YPCEuomWR+5pfx7GxHcPAiY6B1mnFXE0gY4H4gAHiVU51riFG+H+
+			kgfoEzVJGX0zsAh7F3mbNsOQ4VSbtucAFjpTRxh/lhP6dhglwEMl
+			EWuYYfDgbcIdACXIByIH4jnH+YUTQ/r4DAG4NcZwwKI5zzpOsOAA
+			AJAKHyA0Vrex/hAWARMfoBVvuMOmupSh/lc0GLIbEH4KALgAA5nk
+			AAOgSgWAABYBxYc66d09p8kCB6mj/RW11d49wKIdHuCAwTg3BDzI
+			FhUhw/B5orHyPYh2sDImUIEaA0MFHAj0HmaEzTgTSGqHuaWi5ea9
+			GGHyQY8CCMkLoPYhIkKhFbnVPLJtXijV4nVVy/+GeKbeLpUVMpSK
+			5UJHYrcpOV6izhK1XRj2w6g18tb2qrXdK81IsEsGw8pqzmP5UOEv
+			SwKFbAqhQui1CqLX4otTKsV+PEkUInAWAtyvF0ygK4wsk7xYgGuB
+			AXkIAACwKmVAOBQdB04LHDlGZYfBAjBwnH1AKzl7yhmDjYPAocbS
+			m3WNQU0eY7iFD9HwkGFBTR2jtHgYoerK7njvkoYIfN1eamrfCYQo
+			j9WiquIk482WJ0GqDUpt/dzCNtdlJOvzs6rDhqdOZ2c+zGWoq+WG
+			qLuSpe9YLJQuqvqriWLlV/tlmZJjmlwyxwXux+1PobqVYHj3D0Wk
+			LQ4b20qt7J+ZZ2txky21v+cXHWCyjRtqtbaMvE96CVUn4Qszo/R/
+			YxIMOkpZeF22JsIccxog6nze5UuCcDfSqmEbYWivA4lkUIdsOK0h
+			hcCbt8FsM47yioSEZP9aSOTfXWRL1ZGa1dP3zW23TEyVa64VtN8e
+			tj4iSFmdtaPd1tsNpvWNVPk1/0xEeu7ZN+dekSoz+moENibGQDit
+			sCJj5mUjjjWEBjarKFZjgrdmaDct0jdFMFJIyMruijWABB4B5sVk
+			8CFFjkKgKgJjGgCCpDwG9POD0h5gCjQh5AEDKh/MjiIgDjTlgD2A
+			DGbDZgDCJkgkVgQh8AOCDh9iEgFgECElnDYpFCFAPAVCyovCygGg
+			IiHH3jCgFAHlvlcEkh1H4oBkrkpAABohhHAsNHsB6iJh5B4DVMKi
+			JkjnVLIN4utw0B4iBJNq6Cwliqml/EBMtgAAFMyiiG+CTk4Chh3h
+			1jNtotMgOiqgcAkDEgFpIRAufpWH7MIhpDThyhuDVIZljvDroAAI
+			OGNiIIOCmgJANF7pgJGL0gHrSjYrpimhwBqDVFrHwwzjLB6Pfw/L
+			xuSgGnHjsFvPOgKgOHlAZosRhsuPoDDLPB0hxDNhZhPOVuhw2kRi
+			FgDEKw3AAAMAOiwgLAOn4rxCygNARwinIiBm3iIxBQFEoiJoIjCo
+			BndobgABsBoOmojEfgGiqgFgGn/DjDuoDkkB7B5iJh2BzjQjBmZw
+			qAIEyoFxVOSpfRqjYi+iJhzBxCBJMtpCiOxmDv4mcmMFPoRK8P1j
+			QDMEwshpmFnLYOzpZvqN+oFOPvliFJQiIgFj9LSsbsql9COuwDjN
+			BFkh5JcjfDyB+k0uikAD9PCiIoFh3ESACB2jrh9hpBpBmAWtQSqy
+			rSrysSsytStyuSuyvSvywSwyxSxyySyyzSzy0S0y1NPgRgSAVAeD
+			ZgdlzgalrB9AQD6m1jigMrxAEh5kPgBwtC4wKAEimQTCqh1h5gPD
+			Kh+gEB+AGB7gCh8ARB7gDh5QeG/IRiEgIB7AJiFwZFYEOlZIMsnA
+			BB0iwqkCylrCJh9h6CDTVPmq7IQt6vMO/pNjxl6u/u4leHHERN/E
+			Iihh8B8q2j8FdxrFMrDDeEbAHiwgGgIH/QTn6kEkwihh7h6iDDKT
+			ht5v3kOwTM8ALEygJTvxQKxgMARjCgQAWkRSbmjNEF9kLjBiFBoB
+			gDThrhlDTnij2NFyammgGAIDYgUgbDGgEnKpvxqjTsxt1P9DXDYh
+			shnCDIntSh+DYlsnxtkvAPkiQADTCEhAJME0NneDClnsfK/CyEUK
+			7xqiylxTAvvkBocv5jpB7TWjbRBUNDYgQgWEVgGgJLyKxgUgcCFT
+			mvXCFBzBtyInbonihhjhdDKh3h1R3IjxdTTl6AJAMCygZAhCHAdA
+			mryHniXh+Orh0BukKhzBuUjCmhsBmk00GumoXCFAggqkgggArEig
+			FAGuxD9Nqh6B7jChihsneh1B3jThnhjiDSmkggAzICFKPiFB4m8D
+			cB9AHjNh4ATnezGMhtFsTv9B/nAiDh+HOB7osBygMkOh8iEt3m3M
+			dGEGIPbh9ADnAh7AHB2jBHCMiR8nKEjB/ADBnBshgBngZy11gKCC
+			ZgJQBBWj9AgNEjntFtOlOCHAVANDEtNCwirisgPAJkV1g1s1tC2Q
+			lVcCuiiEynQFqR0Cqh/h51Rh+h5NMB7h5ihh6rNDSDNsvlsVQMuE
+			Kh7V8DODMC+nAlrtoDwNmCDDADNtjv4IHDTjSCDPyl6tqLTKwN2z
+			tEGkPILw5PrlFtuDZTaPnqrlIO0lIMsPpFTl0FhDdkOIpSUu6WUv
+			GvKlhkWiqw7iFkSFiCqgEwlrjrZFkAEK6DdCkkOgEDNpFCyo7iwg
+			FgLOmgEAKuVrsmwjrD4gEHbgCDKpvsUnY0EoyIAIBB7oBB8Ocubo
+			ArOudihh5ueRzOfjyL5CJr5DCtblqoch5h4qpOr0YluocsumVC/h
+			9Fvn6kJGvOwIYFFOxlZtEEHDflHiV2/jnIYO3lLrQvmFOIWlOlTG
+			CFNPmEHrPtzpwNvvRvAWMUMO+3Ll23EQBkIPFiDyUO6ENxrxqERi
+			E3WTuFoJnwHPwtpvOkwvuutm9Lbmfj1ECTRGsEEXBvvmiNzjXWmN
+			2OyPjiP2JmHwKTjvdmNmHPLLtt+lUoMyjvXtwGF0RlFF+3nF4FKl
+			/WmlhXGWSGnFPIW3ovpMeiSmiXZ2KjWGR2GjXGiOfkw2DGUlrRNm
+			DDYDsmtvuFYX5w4jaFamTmemhquldjoJXl6GlmnCkTkl8KRJNlym
+			Z4DJvmWFFMUvh2mKuDkGINEFgFFwHlFohgAluB+jiHHrAiHOLx+C
+			HJMm9B9tBLuB9CdEkgEpj2ezIDQkOijgCwdH8iJgFh+nKgOB4isn
+			GEYE8q5n5xsgPiHARgYLZJPkbjCgEgGvzDYh4B0kKlrQvsHBmDVL
+			5WuiJjJ0nyOjd3tjJU9DLB7DTmSgGAGHKkhnKmQEGsdzugHgJxrg
+			DmNjjDSXbh8E7JABzDN31IsiEgjguzOn3nuqcxkMvCmhnhfiBBnh
+			gDQugENoMjsRQgAAVgcEgsAsSgLCmgQgYDCoOFE4G37HBB2DYh2h
+			zHvimhrBkjIhqhkn0LjjYggApHMgJgMH4gEUugGgLDCgDyZFnn8g
+			FGNuwCOlrMKB6CJhyBuDThRBDByscB2CJgNAQkigNgQEazmjYgNg
+			TDYgPgVnOAECHEUrDJePah5B2FExXgAByhtDxWvh2B0DThlhhptw
+			2EhNNkbAHOHpbNJASkKgOASCyhxhtDCnijNlr4OQ/G42Y5mCygFg
+			HpnCHI2jChvBr1XsLDJB62CZBj7HrmFyckOoRiD4+majOHAkw0Qj
+			fkPoGGGDoTAFMlFrARqFIAEszDjMqUNxQaUkjCOrSilABnNoijsM
+			hh/WpW+GqExC4ACgEgCh3gE0NBvF3XbBRGREkAABkhqhqhmhj1t6
+			zaz60a061a162a263a364a465a566a667KIgZAZgbAwlzgtvlhzF
+			QhTkWwNjrk8ADAGAHGRKfDSANB7E6guCbh/AKl7Cii9h7AKjWpRk
+			DihJZj6XzixWaqrv11wClDg1NjsOmiIr4CImfnY3bu6WXbPmEUNp
+			Wv76YvOjsqrN1ipDvXvGbh9ABxNqrH2sFRQAD2hK606iq7EIQyeN
+			5RJih0YjVSCEwExRaRKzuCHAMAPEVgMgPDGrxDYgUAciFAUgco+O
+			+CT0YihhghVjMBkhcQyB0D0mTwQNOAbAikagUgZnKsAuEADihgHA
+			KHGwZ4RUJC/unpABziFBfhTiJonrNiJupHAoZlUxOl4gMAQCEgeg
+			oDGzmvLqwCPYxgABwxZH0h1LWGKacv8PXMkN2X23/UKEkh4DNz+u
+			EEkRuoNjGv8HZqalpTUoch2h0iFC9DxUoRpOtiHQpCHASgZCHAWb
+			zlkqx8Lk9yWPan2tbiFB1koAAYtiysKihhthon0BtcxzuCFAfApE
+			igego7wU7aVMeuXxKEzB6DThNBgBspAB4CDB7BxkygFh6DEgCB8s
+			dB1FfB3Huj8B8gHnAh1AYBxCBgEjyN2VliSG2Ech6EygNBsi8ACB
+			8EkTBCBiID3wtC8rSsKAIjIh2AWkmB+AEDT2f7+h3gJBgdYhUBsh
+			bhoBM679eCVM7j4hEFJg6yxDnAKAGiwgIgFCqgyggASgAASgMEi9
+			e9p9qCQj+rLh+VRiCiu34Ftv2xZ37Ps7TB8DGjwYXprCFB6whIUE
+			KjSDMDADMDSDTkw1/36C8vOYBj7uipMvOj53bMUDaoBt46dn4rDq
+			2D3Y0mBj73bvaPaVmpGI8vdCfFVjdpFlnWhQjzuX0Z0rAYVAGkee
+			PkOgFjQgCAEDyN3ENAFDQgBAF1ZVSFXj6FZNrv9X/Wpn6sGzt3i2
+			wDDB7Z7uc2vr357uhMXDHWyUviFUvim0QMccUC/rPbrjHzVqrSA8
+			iIclub6oHQsztDjiorBPmYRO/lpCULDO1iUtvNuvk3xmFrX3HFOy
+			/3mvrre3Kqyjo3gpvdvFpPTpNlC3E70lGF5MTnHJnDhPeI9EOURE
+			jXVxqFnuELDpn3AvO+dFxDcDwQDLbmSbTTiP60EwEFy7TfNiP/Kv
+			rsUlHOxv/EClP6TIqSPyUXpXvmIN2PWF4lRlfFNvINtRPFJYO3vv
+			94GO3vqfgFPFR6LPbFe3MN8exeFzcXce89+3dP2zVh9m9Gfj5/pV
+			L3QmhGrMkN5P8X+j24J3hFJlz3sG/O3pXohwADeC4kPigmpGaeZQ
+			I0WcWW7vh4QDkYGFZYPmuJoFdiAAIBAOBwIAAYCQYAgAAAGHQ0Bw
+			sBAaFw1/gB+vp+Rh9P4AP8Ax5/gqPP4Gv0APsAvoAOsCOkAPoBPm
+			PgWNgABQwAAiPAh8goABh2BwATYDAADwSGygARGFw6LxUAA0JQsB
+			gWUAMCR5+0x6vONv1/R4AyCigYETimw0BVYB1GHv1+R57PamR+Dz
+			yigeGAWjgAJBkBgAKBoCwyLgB5OyFvJ1wt9PmPPJ3viYvmNgoGYc
+			IBSj1eFv5/x59aWzwzOgQADUig0AAoHYPRwy5Y12yhpMR7ABlrrd
+			vp8R4EgmGVqFgkGTkYkEHgAJhnDg0JwwPi2NggFzrtTp+PuLu5zY
+			N3uWcvt9RdoMJ3gBosP18jBkkvhgABYO2kFA2FhIORsDgUxLtwFA
+			YAHseaUF0Up2gAYhZHgAB4nYlARhSCQABFCoAAeCjBg8FaFhIGS+
+			gOqUCQEfp9oYej1gAcRqsGeZ3o8dp1JYYBZHQAB6HkjYHAg4gIR+
+			ADkOUITDuW1QEAUnMDJFAKdIcp6pIqAaIu2dpzIYaJhIYeJ3I8ap
+			pHWAB1HAeYAH8fiLgWCy+AQCTDn+A6PHcCkFn4A8Un6AKUH8rqPn
+			+i4DH2tIHnu5oDH4tIAnunR1sGAMUo+0ScIShtLoukoBJE7TBr6j
+			yGokA1IIMvCGMspoCpyf6bn8erEsTKNLrLTAAgaf53gYAIGGAsoB
+			ntNJ+AErp+gKsZ/m5QIAHLY56GwbBnlFE1p2patrWvbFs21bduW7
+			b1v3BcNxXHcly3Nc90XTdV13Zdt3XfeF43led6Xre173xfN9X3fl
+			+39f+AYDgWB4JguDYPhGE4VhdvBwHAeBOfrRim2YXACnJyAmCIKF
+			EDIMgmd56HofYDtKfALHwfB7AceZ9HkER5ngewxO8fgRLGfwDH1l
+			sAUDKKJKUp6GgIqwH08nLaIYfzdsQ2h9pQfZ8T0fiUVlnDtyqwYC
+			62psqoYvimgeiuwVMf671gfa6HSyx+nxqqKr8o9ZACv4DhIi4Dge
+			nIQg44gQBai4QA2tNXJyrTB69QCGIfxU0KY8yGaihh5HclBqmS3Z
+			oGCeiDgOnIRBWBgABSGYHSG5IAA0EqL9Ui4CxJb2VI9zSaGyZSWH
+			edaUHedSNnediNgLogAByJXTBgHzsgiC7VAIw4AAYCSNq0xDEzSh
+			Z8nsi52HMi5hFcycFgAfJ7pQc5x0afZ8ov6ikIotiGAyELDiOLrX
+			AcCLZO1ZTtHec5KBtjQRSO8dBKGfKzcaR80KAUnwMJ0Rc8xHhwDa
+			QegYlh2yQnbNgaoBgDigFXMGAYApgzAlAAMUklJ5wADcGk5xHZKC
+			ukXSUSggbeElgAA4CIvgFwOl8AO54ADzicwnMG9kjw6RxksHINsm
+			hwCPD3HqRuKCKQCRABUDU4gKgbOiAQ6gCwHiPANAyRsaw6EHjsHm
+			ZYWo0hyoQHsSwfA8yrD9NUAMfZqgIDeAuTsdRQAAD8IWPYD48UCg
+			bTOP0BSelWAAHwANRo/wBJPgwnsg49i0gUHIBqII+TDqRNUAYeR2
+			SQqeH8RUfhqlTD4AkPJMgMBuR/ASTQBA+CgASHWBUQI4RWjbEAwy
+			X0v5gIDDiAAPZOhCTBXMAsA5qgGgINUGkIYKAAAoA0c2EZEnGTIm
+			1NubjDCcuGLxAZNDB5IE4ACapWSAiLySnU/xcCgZJD/HwcQfo+XR
+			D/H0UAfo9TXKsL5Oclk8I/j5lJOggw/h8tgUITgBBuwBAHJoRgo5
+			oyngFJoAMAxNABAJocAcepxUU0PUaWVVaUACm7KhONt87FyIBLLO
+			tAj1oGTrLMn4i4+h7zrVAV0jz2SL0+JicEmI96e05qGRdyhKKkx/
+			O9H+FQ8HdAAqgRsfD5amEXHsPQi6KFTqNj+mojBTKBGlLCpRU0GJ
+			UKzmyQs2Z26zICRKTppC1KXrWpYqE7dcyBGDLaTloTiycEDKbYJu
+			ZD25pQsM4yB041YvVscQ1UFMKYVnUu/tAdLiKv8VkVqVBFSB18a8
+			4cpoBGtAEKOX55oBI62qgRZV/ayjRqZWUn6Az1k/VhtrVssSgKaK
+			ggepSgVsbeJouATq2ji1MlzVDWxZRDq/TsIFX4h9e2uzftIThr10
+			bAkVmzYCx5UbqxBKuqEnIBwEHENGSUsdwzRFkrXYG6RTy22Dr5fO
+			7RBZzFuU9a6ub1bZQGUoWOGFu0/VlK5cqnhMTTNXUDeokpsy5FMg
+			zOkvEDb1FwScgHDNw3FWwKhOtKUCioECIkQIf5WpI4osGbNErVZx
+			tNVNetKDjbFTju4pmcxOLhYgx3AohhOXnERLaQt4SpXF3znKX1WM
+			6yOpoyaU2dZeh/AMIusIlg7QDkwHuoxNCiTimJAIRcBI+jsgWHXJ
+			oAg+jDkJKepIhJOS5VbrA4o7qTs7SMHyTTAV4QLgcNdefNcqD4XY
+			IYPyFQ9R5EsYuQwwpfAJAYMOAsBxOQNgnIuBwE5pB8kLGsMMhg8x
+			2k5ZiRsaYyUxu8UaYUtIKwaoWAkBYtIDQKEXA+CwlB/yGFoIXrqv
+			FcCFwEI8MkXBuxhCto/oZ+IHziXmJyAwCBOQdBQL4BgEJg3nEMNg
+			RcgdcTtHAIuNsZZKBtDMI8Pgehkx3k0HANhzmkichNDOBQoIICjg
+			JAaTk2BKLTLXoEn4hY9x6EoF8KpB4xxayEHiO0jwKwaAQdGDXhwD
+			QIk5AsB8hYGgSIj24tgeI6iLjaGVqJGQAHfksGOL1MY+B6koAmBY
+			4gFALpAAqYME4NTBgvB+YcA4Cb+rmHWOMhgyhbkMd/uIayCxyDcP
+			WsdIYGS+AMArPQBJGxzgYjaPmWaaAB2+QFLM4gEh67yJ8cQAI9Cn
+			jiIqPpKd3kAndT0PpFJoqaNKWVkOIJfr6YcthZo0NynGABKUAcBY
+			BlBEhHyBUeyjwJgBFMQkAw4AKDjAoMQeo8B8DwIcAMCACAEAFC24
+			sCRpR9DDHkPIeYFh+HdFEOEcI2Rzzd9h7H2Xs/ae19t7f3Hufde7
+			957333v/gfB+F8P4nxfje3BqDUHfqDugZr2zko47ofgHHiPO1QAw
+			EqBAuAYAQBAblyH4BUeo+R6ggHmPEegUE+gZwEAIfnK7M2evCrL7
+			pVgIKkMRb6rz/E0koH0HqRSoEtceesqH+eeLar4AKIqfeAGAeMSf
+			erO64aUbSAAHuHUJoH6qsVkTyL4u0KQIYAiBgMGAcAoNUBkBOOaB
+			kB4NUASAcyJAIW4xkIyJy0MJyHcHQRSGSFylYGEFekILQMGBiB8d
+			MBwCQAidOJyAWAiJQAWAgI222XEPMyqqaSaAA2KTOGU2GfGqIAAC
+			ACrCICUdEAkAutAyOLgriuCMSRQIuHWHIkCHnDYHMJQGAFWMsHoH
+			gddAUAAR8MO+60uBIMGB+CuMOAcAkVWWUH4kauGHvDgAAHaHOI2Q
+			MqwkITIHEIuRWNorA5UI89SIuAcAmJyAa2eJ2AWIWgiAAHYHSo+i
+			mrhAkooqGomH6vqIYAYAiOIAWAaNUO6IYG8GuN2QMrKIYASAUhoU
+			814A6BLFuAYcQKUSq12hQicTIHIRSHMG+MsfUwOJQO630+4AAA+B
+			OOIA+BSOIOwJydUI8AqBQRSFeGeHETIHkMsGiHGHcfHAoQIAEH2M
+			GAiHAj2AeHK3kAGH0NUH0A2o+H0AyN2H66mQKAIc4HsAIN2lKLuW
+			oVAU2r5HyKQHqKAAsGyBCiCHwL+Uwkox8HulWAAHSBUG2j+AUJoJ
+			CKsH8AKECH4EoH0l6+PJu9kDgAAD0UuELJw2wVGAADcCOBUdGmqA
+			A8G2sKVJ/KZKaX/EOvdKcYSNGrmu4vcru9opctgpiaUt8siJ0hif
+			GaYuELk3KHrLMp+qMpwNIWBC2IuQiI2HgQkquIwqbLkd8HYRSHvL
+			aO6puy2q/FMoituIwsiWUMiI26YRM+6QG7WgSuYQI240WWquFMmR
+			MkkaEm+nMr8gwuwvqUgsMLUSmu4vesoaTK+xgO07tMmnYvBAKVis
+			Sr8IMvwYucMhGa62sa4a2NUeEMOKuNUr6IgVWxkgenYT8zuLEJEu
+			Awgt2uCvWslOUpop0UywDOcncUzOYt+t8uYLIUvOA7svuuzNkuzG
+			aa9NoLZMegese0Wu0tIeadeu2fccIwCNmx2rasRNiSkxLNim+0XG
+			cuWvgvIxmteK5OYbMuJOmwHGyuJG0T+wiMu7jPoNmauz26YYupYp
+			ZNOaUwq70v9OIVMw+sASiJAvsIcH8KuyAIikgIIJApfRKuMUxPSx
+			8xkYusyLgIsLxRavasqU3PmsavouivKmcvmSg7nPTFkJKK2I+kiI
+			aJuJWs8nXJCaQJAggAMUaHoAOlYxOKYv2zCKKzVKQHgOa/cU8bgL
+			fKQmWLUOK0XQskYqshqLYI8AEAK0U63O6LUbJN+aQhOxC0IiCTm7
+			uIY4kMOAsA450AS4udWAAAyBI00IWGqGCJyHkfEHmHcI2GYGCHVE
+			cHQMsh4LSB8CcAtKQAcNUAVAcAABKBqJ7FKrsVgMTBuJQGQFsN2G
+			CFWo+LkIYBCBOi4huAyBGMGBkCMNUA1V8W8iMAAGmGERSGoGEJRE
+			2AARiJYMoRTBIJyCiDcdMBCBbJCx/TIu6RMxkevAq3OQYFgo+N6c
+			44AI8B0CadEB0CcdESIKQ+zT6woW2HEGyRSFwE6UaqmfGHwp+yae
+			cIWBcB4LSBaB2L4PzCS4cKm4ma642W/WMHUHGI8FwFCMtUknWAGw
+			kJQHiMi5IAON2H4AgJYAFS+HaAkHYJjTmI/TqQIZ0L4AiHqOm62r
+			4HkhCG6bkHyaRNHPQ/Aj/VuoET6gwIeeEKOuobNDU/ykkz27+sEA
+			OAYL+L+HuAyHoHsH2AuHwGVNoGsBGHUBCEsH2HSH2HQ9SAGAiAMh
+			ODASiBMK6H4AUHgHgHiBq9SH4FeVCHO8AAEGAG6G0GmGDKlcDcFc
+			HcJcLcNcPcRcTcVcXcZcbcdcfchcjcUBzcoASSqAUCG8AAAB0H29
+			SA6c4HmBSHuHWHuBYTSH+8InGH3dWsygQSqk6s8eGAKaNPPQ00LS
+			LaSIwVfPSACAQKfCOIbd8kYAUUaHcAjHoloq9NSL6H3W3NROIUyy
+			auEAGHwNUAeG04cAMHin+AWI8BUCeOIA6A+dEBCAuKABABOiHXmt
+			VYhVYnWH6zgkBFQHKJQGaF6o+GCFclYtUJyBKBgOyBaByNc2cJyA
+			kA0I8AmA4IvYEXVCqF+FQTO4Mo/CrXWOyBkCEKAAyBEzWeetNPyd
+			jd2HQHCI8FkEwMsHaHQI9gYAkApN6efWGJyCACvBHEMXEHGGwI8G
+			oGGI8HUHCpuqES8I3GiA2BINUBoCOKOA4BIk6U3T8KjSXXSRMHoH
+			iIuGWFsJQHSHChgUkHXbKqCsehPTy12OIdGBo6fFGcZiChScjC44
+			SJYHiHWT0YkVCr4LiJvTTRcOMdOIWAWAeebGMAgaqAaI2GqHOPWH
+			vAoHoI0AAHqAec4LWOKx/FkKmHHCOAWHRTEjuJSAwUaH4Aoz0AQI
+			2HoASlYHqAOkOAHjuW3TGKQHoKAAwG4BEiCHvFiaU03dsHyAmc4H
+			SBYG7JWoiIYECAAEeABJtclmOXTJ0DcLUl6I84cr++C86MGDCB64
+			yBKAwNcAwSEAUIRKlPQpTmRKlM2abAkXuKlKxnC+HK0smnUNpK9R
+			izikZLGUowTWdiiqApxLSp7LbLlY6HWLCqbL65IHaI2HdLznkK4q
+			aOAIWNqoGNCVAxkrGH0wAniO1c0stotMZefoygw56pjnLo3KxAkI
+			kLVM3nGv4sEs/Tsrw7/M4aFoqrbnZoyxMtatcsestNGUmMSvsaCI
+			Ms4vDp+a2MPqE7vTytA56asrfQ836vW7kccw3qZqhPpOhp0TQtnQ
+			Kp0wfaYT/OtRtdtPMIIm/pTNlp8uyuvPMvvSGxrP+vAu0IIa1Ny2
+			uayiCtYWIIwtmrfNfQCbnRIvjPhRovzQFptqqNEhguUz3OQUnG0a
+			oqYI2apG1c6rDMRqbqnO1rurELhr1nbdtK2VhQ6aaw9McIelKsSp
+			ISsIIV8tJRUpIkiesUvKvs2sAf4xJd5SVR1RwwauIItQiLYvms4n
+			TjDNU17PoIrfgagJscXTjfgKaH1M/R9AKwqAKnXSWH8AIJuSsyg0
+			KKfL+TQIlSSAGbAAUAQiGUsAY86LyIWfxBYP1FIdYBMI8AZVNEYI
+			uGcF6I2HYHLOuI9FOfaKoMHYJFub0AAAiAxVUfYbqQAKRwSH5luH
+			GGsMOHqHeIWhfCsFhZUHSHEJoA+BUKOCgDUOaAe5nUAdPgXAgsuW
+			UaiMGfUIXBuI2FUEfHoHMG9ZKIMBuCKdMAqA2n/TqBUByJyAoA7o
+			8WxWMGaF2MsGcF0JofJOjsCANXmCYDUNcBABXecW6q4QKTPXEIuG
+			SFqo+GQFuo+cYB6CkOyB4CiKAATVXMlXqw4uMsirEJ0G+GmRSFYE
+			gkIHgHS30mcc7vWJyBuCSMOBwCUTcAXyEXXCqHMG6RSFKEUQeRiI
+			8dANcBCBWNc3OJoywQXh9UyG4HYkJaGlLnRSJJeU8MSAOHa6+GhV
+			CAIHxBggxTJjINeMRS6H8L0x0xnNmsrLGHYaReVegUAI8hAUqSoI
+			YH0AYHyK6AYH4kIlKHYoaAWGHiaHSAOHuASpyUCB6J0AyngJsO6+
+			YH64mIEH2+6AIFsSiEWGwGsGcGNnT3Z3b3d3f3h3j3l3n3p3r3t3
+			v3x3znCBaBaBkDYpiZ89SHuGazyjoayASSUAaBlbSAGBU/WHvIgB
+			YH5Uq1mhosgT4AIgMgynwcXG7ouxyAI3uIhReNps8IaJUIa7MaVA
+			Wx+AsKeeGHsAUN2HazMQKAWaZPTuf1Fs2kgkkAGHqNUAkGWAqIOH
+			WLSAEAYI8CUDSOmBsBxCOa2IWPyhpS7toXDAEJ0HeHSdmF+I2GQF
+			mJY28Km/vYaNVWpVOBmIWBYB6vK55gaHmI9Voo+6EN2HgHUI8eWM
+			HxCMPgIAABcB8L4BOBpEIAmv2W37FBuIuGMFlLeHbh+I2HWHKN2t
+			MIuAwBANUCjyiQ0Ap0MW0HcHOTAGGqxke1AJQHCGwJYQMJQA2BKN
+			Vz+OJiIeaL+i7hVyqQJDuI8GEFYI2HQG8agguHGG6JYHqHiLIvnz
+			S0CIXviIWeKeUeYcaG6GkUbiiqyRT+io+0QJuMSOQOiAeM+SsiqL
+			6ffniigikiiQFSGStkR40KfKWrmyoIYOyMQIqHanQHeU9juAeJuJ
+			Oy6IA/QA8Am7AA8Qg7gA/AO+wBD4hEYlEwE/QEAAM+gSAAu6g8AA
+			G+AKAH+9n+AHw338AH8/5W+wi+ION3IAH6C4dEECAEeAEBE6BQaF
+			Q6JRaNR6RSaVS6ZTadT6hUTmADHJAAe5YAA+AACAIvUbBYaaBwJF
+			ykNK2IQsDAAJwyDgADwSBrFdbtd7xeb1e75fb2AX+A4fXatAr9QH
+			/J64AcJVsPj8hkclecVXMTjonK5tmsxin6/JO93rJ5dJ8/oXpK3v
+			qQA+XtK31Jta95O+HvK3i635B3Zu34+5O+31K3e7d2797KNvNtAA
+			H294u/X7XX6+66/+nLH7pKs+33K9LmIi/wDX4hlYl5IhjcrjfN6/
+			fiJJnPT9fR54lXa7F4v+/WriIAFASvAEwTFwA/T/wSwjCPuh5/Qg
+			8UAMGkEDQXCbzvQrqWsUxjBv1DwAgGi4BxKkACMEAgCJGAoDJHFY
+			CABFSRwEr8PQE68OvwxUeMvDiWQi8MIPokkfQjIsgPAlqWMvIUgy
+			DIyVx/JCXPAy7GwpATBAG8sKsFGsCP5E0Cy/EauQG8rGwSic0wJL
+			YBxjLiLgMAwDq9McBgFLruQhHUkMXED9T1BCH0G/0BwVDzxx6lbp
+			IExKVt+gUIUnCJ+0sfjfH23zPoXTabU7PsmSVBwAs5BjxsWk72Mv
+			VMeIexLKybD9WsGi7yRurx/gEAjARQ/den8/tCyWqzGJPW9ASLQT
+			8K8/TuSKAUhu08lL0agTGQbD7CNBXczAABYFxoiFHpYwlhUaANJg
+			K3aQWRYUZH7MtCxkr0APIk5/AMhx/AG8F/WVeyHsMAJ7wMzUCsUA
+			iVxMAADgKwQJgdOwEgUi4JgvGIJg1OYDq6DoUpOBgIJOdJwJWaBg
+			n0AB0JU5iVnweyBAIugAAiC0YhuJAFgABwJsEBwKN2BoKt3OEsIk
+			fZ8oedRvroex4q6eZ4IEXxVHblhwZWEQXJGLA7gaAAJAxA0M1XRS
+			gSOe55MFtbBHgdTdlaSx1gAdJw5WAwEK6JwyAqAAPBPOwD54AAGg
+			m3YELYpx7HnqpVHgABflUeLLIuDYSLYEQUAhnoJouFgfK6CoO6Qp
+			J+ZWAB68qABumeh56HglZumme3Wmke9nJOGokLYG4krYBIGK6BIH
+			ZmkcitJeDwnwequnYciT9Qh5zm/lZelTyJ69kjAFJGA4ExiBIGou
+			GojpHnS6AQBdb1rWDDHye7qJzVvp4dxckH8wzRJWc5vEOFWJJ7Q8
+			iTgpBoXAFIMwHkgAWScAoE3bDOHkOIAAvhsDnIWhEfh2yjsIXgAI
+			facx5J2AkNAC6Mh7oxYESBAJDwBvsJAA8r4BDTAMX+YpQx9D9POI
+			eOBAzqVYlDRvCoiKP1oGMH6AVFA8GaAEHhCAAQ9h8D4HyB1IYC1s
+			oHVwV1EoBB3PCAWNVPQARQDMGUMMUhk41RrjZG2N0b44RxjlHOOk
+			dY7R3jxHmPUe4+R9j9H+QEgZBSDkJIWQ0h5ESJkVIuPQJwTgtC2A
+			UA4BnhkPDKUFCIAzvD6AepkfYDVIPIV4gUwBEABr4Y8P5XJXC6Fd
+			AwvkApL19kHAkO8mwBDdq7M0PgwgAkHIOAQPUBAAAKDlAojIfSMT
+			sGmHwo8y5MCHD3BC7keoEh6k2IqAAfQAWVkWIEtIi4Bx/p2MBFxe
+			UyE4znIyikaoCiWDtK6AcBpXQdhQgWCEExG0VkXAoxwAD60coPOs
+			ZhUTjTdgPAofFo6BzeErFuJ0mTdyBNKIe3oi7FWgATK6CMGJFwZB
+			FME+A+L7k2OmiyRF/gABiiwdyMYWJMjVrYQYh5xRXQfBUnc+aYbY
+			2ylLdQSd2JXRtDMRiPMdpKx4DtaWMkXo6D5krA4CUugXA7t/AmBm
+			IhTzfknNcg+Dg4RqkOGAKya44RqMrdInYF4Oy4AbqkuBzoAALAgI
+			EAuuJRatkDHTVwfBJ3tknGOLQgQ4BrL8SWPc15Njvs9AoYIJgYme
+			AYA+ix5A7m4zaHycE4ZvGVtKJONgZU3R9wqXghRB5VlZESSkZgeo
+			+TdrYJQPQwcqlCIHAC/h/B5x3GCH+O+FSHQFGGuCSwBBxyCgAHkB
+			GWw/CM0MtMUSXycx9kbAoPEDRIB+IxH6awe41SBKOJsBFpY8wdwY
+			H8AxdpDwwk8AAKCRl774RuDoAAJxVg3E2AAD5ADyL4lGAMmYIYLA
+			MgAA6BOdwNgQzHAoA2Yd/cHYPwhhHCWEy90kKKe1Zp4jNP6Vhak5
+			hqEpKXsUQ9xpK8SkosSPkepKzXG1OWPEdhAh4nGOdZs4RJx5DuIF
+			Uk3cU18nNH1LxUCD5tnaYGkRaifyg2wKMhoweGF6EUKIaTCxQkHF
+			CP8iA8yallRjPyoR0xEcwkQPBkpDBXSymCiynpVaACVtIwsrhO5/
+			EBpwsoi+JSMgCkjRKmVLaAzK5eygky1KojwxBiCtNKiUXkpAXydL
+			Ruh9GRGSelJI56zLpczUnlEyI8/Jh1Bn0rieFApnWGiA+Bi0SImR
+			UjHL0SiRnlS+opRCPj2odQvbZtGqFlUnQwq9JKQCBKZUnpBTZuyW
+			pSg2qDYamTnHeIWb/RuhiXIftQrDTB+VURFtNtU9KtcqEkoCtsxK
+			HotpnMAiM/aI1+pmRNm/NpnFkOmlIrDXmYiSEVQi/pXZ0lIj8Stv
+			9ZxXztpEH0dUAUSiugSAbORABwzd46dtEmXK0iSAHdTDQjABJhgI
+			ZojKcQAAEj7ncAQfpdF+kCHyAziZDSWS4JtKUrxAgBj8JGAkerPF
+			1JfvSks8yvSugKAMjEBUCwABEConYCYGyLgII2ncroBunjmG4SsZ
+			AtGV9UUiPsgRojds0K6DEIUwwVg4LoA8Cpgn1krAOAwk7DSgmrJO
+			NsZZF24EPpiAAZ4wB5AAHaOchwHwVl0CiGxsNCLeTPJyAmBtinpH
+			Nw4SgeZgh8D0MFjA3YtxREKHUORlb4DBBLDABLAgJZh9SJOAsCRA
+			gFAOypo9pCilFD2HoQIYIrHKi/Fa5FBIIATwLBICyBbPkYglBoQI
+			DII6elKs9cggwABpDAakO4lY5RvO2HKN12wCwHGCBQDWdwLwelsA
+			WA8roDwMECfX6+xSt7aNwJONwZhD3mkPssysZ4wpbGuJWAwCIuj/
+			x9SGAGQIRGMAhGIA5ixIBDKbQmRuwbpGIe4eYi7II0IeQgUCojDB
+			oe4e8DAfAlYbwaxpYcob5pY6Qk4FoHRsIFoHJsIAjxoA4B5pYcAf
+			BuoaYcohQcAda2Qb8HZCQiYAgfIkYBodyBYAQfA/gewi4AgbSVof
+			gwgCYiCY4h7jQfq4ojAf5mrjQfwBA0jjQxxNZALywAAAociciEIr
+			i2gAB+TbEKjazbpdqZZCgwJiwfBEYAQfIAQfgAQeqxAfICZIZvY6
+			6LsJ8QYAYAodoBQBoBgaQxgAQUQZoZQYIUzCkSsS0S8TETMTUTcT
+			kTsT0T8UEUMUUUcUkUsU0U8VC+IEgEoFYYBOgA4EJAYnJYza4AQf
+			QfST47wm5B7oBEUXi0xVCXowb0griuIfwA4l4AplYd4CghTigrIl
+			6bja4+oiQBIeyYYDgbwDkMkIQlgfIl4eAhwf45ofj1Y1oFxpYfwB
+			Il6TQADyYeY50doAqJIAABQfydyWJF60ZcAebksfYAYewrofQco4
+			IeI+8Q7N5AwCIC4ugGAHUKICYDBOzfkNZ2wmyzI5SwYbC2TvKLJj
+			AuiSTtQBYlYaoZTvoeYd674wzPYwTPZF5O0eoCIi4BsKZCZ/S77g
+			BDAE4GKYZPTWaioA4wROgi7aQAAb4aplasA3bG7Z6iazcQ7sIIIu
+			gEwGxGIBsmS55CYwhOEJZMw7AroeAdDy6eAAD2h2AeBlapipxaYD
+			YEQugLAOBv6ni0zj7M5QYyy5xVIiQbwaIhwVIRZyId4dIlaq4ugF
+			QGpsJjZOwB4Cwh4DoFQlYCExosDHIk4XgUQlYcjqo5wfIgQcYb0e
+			D2gh0iIwQLwPgCIAADgEh8SGDRBBw05P52Ik4ZwXIk5uAroe0C4g
+			apQg4dxlbpwi4DIECYYCwERGIfTaoZocZrEDo30iwAAdR5AcyVo9
+			QAgCA/iLA/4f4ehW8CcNpgQf7jRfCbQAh2wfYkIljiwfYC0ixQxC
+			ZXpM5LLmZGIBYe6BYAMNA1oh4fYdA0hUwlDnENYGYgwfwBbZBUwI
+			IfISoe4YEVNByPwqYHQiC9YlYLgiDBsTJX4AAGrBIAADQCCdwIjA
+			QAADICDp9B9FFFNFVFaObW5aAp5HhBrDa9JIwrpTI1RxzIwm05Es
+			tHIeoeQ1Qeg2rFY2ZmCxLGbHYdspx6SzclAgTHLlSvpTx6RpcBcz
+			irzDoiZZAozEUahBQzDbZNjb4+IobK4p5C4/ptDfErTLAowwFF8O
+			ZHdL4rqJRGMRxZxCg65DFLLfLUpMBGbPRGJmguhFBOJFRAlPxRA9
+			bcykhKZJpHpfJI7RgxzZLRyp7Qg7QwxJdSrQxKAxRJbRLapBZDzT
+			xCpOLThL5PNVBNzUY/su5EJADLwiJMhGROAkBAZFB5AwgsqFRM1P
+			TUahg9r2VX9PbXcvI9i1TEQ7i8BaY3617SBTLZBKDEKiZT46Q3zZ
+			ZSArJ5TKE/620WgoFZFORZqINLLXB9xLqLTU5LgwJQZo5YREIwQz
+			Rs7Nrt5QymZbcrU1xXdG7aKVUXRUA9QiAfSDZbTrhYRFBVaFSScm
+			Z8Jewro4AgQd4f4mQfYAxpc85fiWY8ok6SZ9SSQr0mABge4tiXBO
+			wwLlQCCa8Y5fhdibQAomQfzk0MgfaYYBYecI0fcPAwZ1LMRhRLoB
+			ICIk4KoNBOwDoESkKGAxpI4cIawgQWwTRlYeAdZSNJoeBpcBIroH
+			gKAjYGYIqYZm4/lXqrIoYd4dQgQWISh2wcC7zRo6pWBJYDAEAugH
+			gJ5sLopGI34lYeodwk4fUjBmIh1sxlbZybUNiro1sD4AAcYbia5x
+			ogR8AroFYGqBahFQQAp4iSpNoCLAcsoeVaUKgApEk+B+wb4ax3Ic
+			Aah3JCArpjD08oMMkLouIDBvIBAgQEwGadxATDDeslg7Qrocwbok
+			4daCh1UgxuwcZ3IdV5J7oi4DwEwugGIIAuB4QroBwC9yABLYAkjx
+			IroeQdgroboZwgVH6oAeI3YbAZrvrIIlYBb/5w1959Yi4FwHgwQF
+			l+sDRHI+4fR3MB5p5qMBrHAdcnDDoroetHNv4lYdgc5pYdodYhxR
+			V+hnl+gtj1orpkY3by0eAdAeZ3IYYbIdIAGD+EJWRBwBIeSdwC4b
+			664AaFIhczssocx2y1YAIEgxQEpKQAzFkI4lAAh3JdQr6U4ohpAA
+			4fAjYCYd5v7kzWMgIrwcxAwnIALp4AJjwiQftIi7Y+jcpHRRraJT
+			KWJCBGrVaU5MAxYfaSQA4cERwSIbIawZoS1FmOOOWOeOmOuO2O+P
+			GPOPWPePmPuP2P+QAsQCwCwDwM5DwMwBGRIEoA4A6YcRwwJLiXg8
+			uSRdUR2STfgwAjMXBoTrhzrebNiFhNa25Qqdwki38ecdwCrvpfpK
+			1SLeS04h9KoAMJ6dBwwdJsKEFeUnIfoeyXJJYfoBol4EUdLkMPYh
+			weYAK2RYQgQAof4kYBQAJnhFgkAfQwQBScYjAfgwRzpOwd4cRlYe
+			slI/CDg/DxkAwHj0gCQDIjciilIftKofMb4AAbgaMeAelz6hgDAD
+			yYeRowUE4AAcQbhypmJld1gjGRhZzTYiC363+X9azaBClXhGQANQ
+			RLkeoBhjUiRDCn+AJP4eoeohwegeZlZWrmAAKWLJ7UzkT7pCoi4B
+			gBYugBQBJF4stWsJd0TJKxEzwbkeAyoBwCAwQGoIiBYBoCBGIBGU
+			oDIEx77p5hpxTN6XyxQrsCQi7yIcQa5pYWgTQhTGCuoB4wSqMfGK
+			oC4EAwQGEAoAADAEL5Ypp1Yk4ZIWoh94g0JmQAAa4ZhyqpIhwCQC
+			wi4LYPL0gEoGCVpDxmib+iwoutwAE2gk43Ih51YgQbwaq2Qeoehx
+			OaBwAFSYYfACghxmQhwcYd88xJsNgAIdVOwcpGhXYrwBBFNhyLIf
+			4euqs7g9JbTDtSJfkcY/ChZAtV1XY/tzAlgAxbAftOy0q2hVof9K
+			pXQh4A5R4DkdMK+4ofgHQcYUwbYY+QO7QpIqYDYqy+olYRRAC3MS
+			7LwEACpnjBZOwLIHAEQAAEICu8m7e+e+m+qQlF0H4pdGNuBgdntG
+			pTzE03TyKvM3IgU3NII1QeogQ2zFixKpKpDGIhazavJqYlYebHVx
+			I6g5spjyMDLS9gQ+DMeKzJA+5BNbvERRfFAvxQ5gIpR01MzD1PYr
+			M79WS/dQ5XpC0MNerMJLsO5E5LZFpGVQ7O3ITNRG5NBENNQ+zJRR
+			hP7RFTzYJ/NTZHzSDRPKtUBJtZTbxWe24yzedVJMRLZFbOdVhMHH
+			xERMtNI/dRQ/ZENRUJZFHIRGNOtWouhXbOHLDXDX6k3JUYEMKk5c
+			9UCDRTpKrJNa45zZxS675T/QqDZSsnBScaHPPJak6knPtLTMzK7c
+			I9VctRjc1YbfJQe3uSDdJXvEBY5V93cuxQpLpNDb5dVTY7aEBT6D
+			ZfAzQ8rNgy9giVXRRAg8gBSGBFvNqFxK7Mm4Jfo6mVAeYfya4eAA
+			aWxRABeRpcAAgjcXxGQd8nsPMKg0kcyf5KVlwfgBDjNF4BAeWXCc
+			8/BVecgyuWiEA/YBYgQFwJwgQEIFV+wDhzuRJZGi1tggQWYS5pb+
+			BTwgQegeJvLp4HYJ4jYGgIid0yWqqDh/RImiCgAAFswgQV4SSa91
+			I3betQ7qCYgDQkZ82CoBgi+iAeRrEzggQdYcghwdYcaztHivNv40
+			ww1H4mRTKBwAxj4EZnkRROOix8FOwr41fCCbowz0BhwBPNQlg4FS
+			1vUd0cLaI0zZYfAfS2STxcGljURRWpAkYCoC5njerFo5Ql9Hhqa8
+			dq+3bjTsAAACDtJGV2RRRFTtQBJOzVszmxuAY5hgY5ofNxQ8IAgs
+			hGQAzpoBgwQCwDYk4CoDhVZA3wNmNLpewfgeotkcdvNHlH90Bl6f
+			5cXAAgYdghweHqhCYEgFwjYEgF6d0BIh4BoCSbohZcwk4cIdp3P2
+			y2QcQd33QfDvqIIBMfqYgcKE4kJGIfIeRlYfQeugvGYEZVYEKWDl
+			QAZlcPJ3JXZfO4YpQBAfK6geADGWoAMJArwcgr+WhcAxRwuWY6M3
+			QftHPLakiINaLYJMEl3Fo6gqzTwPYcN0wgCGAEDgkFg0HhEJhULh
+			kNh0PiERiUTikVi0XjEZjUbjkdj0fkEhkUjkklk0nlEplUrlktl0
+			ugKAACBQOCQWDQeEQmFQuGQ2HQ+IRGJROKRWLReMRmNRuOR2PR+Q
+			SGRSOSSWTSeUSmVSuWS2ShYLB9AAEAgA/AecPkEAgEvkBAIAv6aA
+			J6T8AvOaAF+T8BvYCAQBvd+AN+A19Pd8hx9vp+BYAP0AUABgF/gG
+			gTUBQIAgm1AeBgSBP8FP4AP4D3QAAOB3gAvua3S6UqBvWagB+XF9
+			3F5v8AP/D41/3R+PvEv/LZDGP0BXR/gXAY3DPzD4zGAWngCd2wCg
+			O4P5+4x/PuwP/X3mzACuTXLWiBz+04UAAUD2kQiYGgAFg8DV9+Yx
+			6u/E1u6P3mgB1uh6bh8WACga4BYN6oD3DG3R3u18gDKWB+v2avx9
+			bOy3kCTUJBkEcEEWl6vLEgEAa6J+wKaLzAwBgEuCgIE1i0qgvTLv
+			UfC6Hy7awwWep6MTDLKsYAACASugCARDzgNuszfsK7zltWuDurSn
+			i0uE4CBHidp9AAeR4PTCIFgYvQRhWBjkAcvQEgatIRhcAoAAOBaa
+			gSBjGAUB7ArSr7EgAeh3L01yBHIbb0lsTx2AAeZ3LwgcXoKEoZLc
+			IAsrYEIWOWjB8nsmp5HWuE7rSdpzsSWhQzKcZtnwAAHgouApjOCY
+			AA+FT8tYgQGgow4DgTDyFvgxh2nMvSrsYeB1MOXBRzKdRyRxI60i
+			GMbjmIdZzgAeB9PScp4nqr6wAAnr8n+ea9AAeK9AIfi4ASfshgWf
+			bjgCzSBL8xp9SugbIrSy1sLJXdDn8AccIIoC0qYACyN1crQIMsy9
+			LTYV0PU0leLDDwDLwC58siA7mvcfoSHCWBrm+l2B4JguDJSIEDYS
+			DEcgAHi6gATN0OOxjf4Ok8FgACwHrYCAFrcMgehGAASAvikCxpi+
+			VZXlmW5dl+YZjmWDU0sjSIRmtrZw0DdMuftwXSfy8U4AB7HksEvM
+			MfbnaPop5Loe56LBqKwTuxh8Hsuh4HasB4HcsGiaIeZ4LoeZ3rAf
+			R8Jq9rGH3fFdoFWzSTS+a1XLat3oOfs051dSEQKhjd4GmreKSjVN
+			IPc6CU0wKC8MgjvLgsa9KHuyC8RdEULzSbWLgAgCyYAdJqfBUEXL
+			lHUcJArLZvvq4rqfzSQiy/WPKzmfdiuLYaEzHYLx3OhM53nF942m
+			+YgtTL8NcnRcl0T6QUn8L3H59yAD0yjLUtDb3DE/pdFBwByYp/Q+
+			xADytIwrIxL1XX+1xSB5Tx/M/VdMPPbpD2tDpEvb26b+jRGJfwcw
+			0bwGIPBV2Zw0D64FuZeTA4hyHnEIld05iCr7H7N5XQP9apt4OILd
+			EWQo0HEIM6W2TQxgBEFuAe49kwrNj5m7NEZloSz39FqAE4IszPTG
+			D6PiAIrh3ADE1AgBBzyCzYECH4vItQBnKGrLqAMxg7x/DxAAO0AY
+			7kLmMAak4AADQBrOMuP4dCHjCLlAQTUAsRlygJN0AYsCzT0ofLUP
+			5GQ+UmF1dUXgASvF5D1WEUUgQCCwAfCAYcDoJC4A0BGBIAAEAKlg
+			UwYwb40ywCuEcPcAA7h0t0PKQIAx+QAArByWwFUpT6FpHkO0xI8R
+			2Noben9HBWzGAZBEWkbw0jGSrQJHsgoCgHFpAuB9Jh3W1pZH8dUy
+			ZAj+tlHgexpZoW2xzQi3uApjDWE1AiBQ5YBwELFAMWk5KTHCNKVE
+			OtHA9h6F0QaWF58LIXrbMiXQew9TDnUMA7wfI+jsmiMOgCY72iBA
+			JAUcsCoGQFH0L0ncug+B7tgmjOo9M6kcOxYqUEgTGTLj2HsY8y7o
+			C4AMAdQmkBdUPFXMe/FNRwyCoJXGAUtJrjGNrOYYmfwAB6jzHseo
+			yiH1JgQAeBE1BOFdw9HyaN2hlyuH/LGbgfJdIfPHAWA5JiUU6mgM
+			orp2Jh4d1DoTCQAA+B8mJHmVgwwCj/lLLyPMuEInNrFfOWEwqJJB
+			oeSuP4AxpDPECAIYwewGTsnBZyukxsao8HIHaccAQ+1hHuLCPc3S
+			2x8APp2PgCEmiymMAOOktg/R6oedzYQzJSgBD5AGsGKRflhN1QMQ
+			RApQlxlAEqOUcI2Q2Mztxbm3Vu7eW9t9b+4FwbhXDuJcW41x7kXJ
+			uVcu5lzbnXPuhdG6RHgQAjBSGY0F2GhAaKGBEAwBgDjlAXeMcJvh
+			6D5n3Foww2CBj7OEaYAACgBAOHgA4doRQAjvACCAAI8ABgVWeX+G
+			s+CCgDAWuMA5hbVgHr1XYuJtTHF7tAWiTRAihQOH8PV4TrzJD7qQ
+			pozJm4HmvMkP8xMCnSAAAYAVIZvi6m1NjifCC6GhLYXQ9k0zziag
+			KAYXACAEj8gIAUl06rZpZj6nyYxsdOz1ubJqBMDQCzUAJPIQMfQ+
+			3hYCLoPId56TJncAOXoEgKjjgJAWsi+QAAHATx8BYvU2T1D6ovEr
+			OStGuAAHeOiho9iwSuPSOwdCh22HMPkXSYwAAWA6OOB4FVCbvs9Z
+			6tFcA4Bqo4HMNtHA+LApOL0TxdiwqLAAHyPdHCmgGRgV7j04M4QA
+			AGLYAADQITlgETrTKsNYjIYWV4BgD6v0PDsHKYcagw6dn9LA49Ex
+			AgMAgLSDsKRbAGAQRSQICAFtp65d6hEfg+C06aLgPvbgAFCqHGIL
+			UeAAByDcPTmsuATgxAUAAB4E5+daGMAfJHVpc6WxSdProgQ+ZAGN
+			sdJww4qhIDqAAOUb0mkQECBSFomoxh3qzHoP/TJ8bCEMAKPg5YDx
+			2gVAABIdLDABLHfc5aDY/UILeoyZkB56R+8vZ0AMfDkh6IQH4e8e
+			RjB+DzLwh4AgCnx9CbuX9Q5jejvILMXgBnGC685MOCUbY0Rljjun
+			1frBCiaiASasMAANTQCSXRyAgQGTe9YARFABmYQABuCMCkAAKQNg
+			QLygss/We8d5713vvhLGau0IXBMuJwHGFxLwdR168SBM/LpM05md
+			PGjx8a00e3Pmi+WochQe5dB4tfRz55sM0R6DxMYPSZ5uMK6DMoZl
+			Xjbm5rWZTBzZLfoGOLISymjJDXauB4yRucs5W8OJ36RX3HvW/4FQ
+			T3VFM8XXOqeouNz7m3PGnc7T5dj0t+vzfi+pzDtXZvFdp+B3WSXf
+			O6Mhhv87vaTfqgWPz8hCMXOicobdBP09PvRXa9J6+n/l91WEQK7u
+			cMJo+uXadMcqtY5++2ti/6+ydWZ4ZQXeRo+YRMtejGf0gGpupugQ
+			aEPZAuiW/KiWqQnygU8MZupmbypmdWeUcAcu5ORodk+6MifiLKh4
+			bqcEXUN0+wh2H+QQLIUnBocIhzBIeedOzmdOfa6K0gaEsypmy+gW
+			RofEKAMiLIOEpidyo4lmPaNYroAYyoLCPqXKdyNo2OeU7YM6piAI
+			LAHmH6OyHkv6LqX0AAAmAK3gNWOWW2LqHOjMoyiGLyAeQVD6rwMA
+			KsMaWEj6XHB4wsMKxELy2OpS5uXKHmLSH6AKV4BQHmAAAoA6LSB4
+			BU3goOLoA0m4AAHEGsLoFiEkV0Hek6+GzgRmAABKBiLZFiLYoAOs
+			HIMSHYHIamayAAHSHCUO8ybuIEAoAyLcTWdqgQeILoMpBIQuJrCI
+			QiaSaTBkNC0khSAKJqAqA0yCAWL0bc8mRwVsLozML0AsA4PEXGQK
+			lCP4akOsHGMPF0psMe1s0GUwLSBEBYSYzWeoUoAoiENKUyi+AmLA
+			ly4YpgxUAcLchu0uLAUKMObkpwHiPSP6RwlCJqTaLYqmJq1oJq1c
+			LA6nIOSMATGOvgQqVEHQogbayw6ewtBWSuXcSuWeeEMOdiQoH0q0
+			mSQ+NOAkAiAeSaAQLcaIHqHinvHod4HsHuQ6Mk/cMMNqXexSpK1C
+			PaV0ms+UxUAeAcOCNOyuMOHuHsoqeBJZA4pUUwLcvAOWQASuV49r
+			JkP2XKXcAKNIAsPYAXLYeStWLU3CAGHSWE5yQYLUykLqr2HgAmHa
+			zwAmTKW9ASXKWogcikQUXK5UjwHyAmGzLoAMHiAQAIbcrIHkHmLu
+			diXELQ+iRQH4VkG8jy77NXNZNbNdNfNhNjNlNnNpNrNtNvNxNzN1
+			N3N4umBGBMBaD+nmD+pMRQAEHqJ2AQG8AbOYGwfAHOQKGGh8HoF0
+			HpOsHwAWBkAmA2HyACHoBgHMvCD2AQHKAUBEAQHOAW7oL8KUHwps
+			rG2xAEhWRM+CtaPanuf092IGLG9+emOCAPDvAcWsOmQiLcIE3wM6
+			biAIUOHcAZMOM0q5AAeqQKAOHwLcBWH6A6aKHUaQqeOsHSPTK+MO
+			x4SYAwA4OOvGSYkgL0A4BILTRWdgmmMYG6Gg5gNrK+y9JYzgAcyA
+			1a7Y9XFuaqwqPgLoHcHck0PgLAvAL0BWBm7oAYAeSYAUSeAAAuBA
+			OWzNGhDAe4euWibeHgHWMOU8MORtTEHSRwHUHFSQOqOpJqd5Iu6+
+			CIqEBmCE7oyEWwd+LwHwV0AAGiGCV0GwGWUObNHI1UAOzSKgLREM
+			yqNAMmMAOqrifEJqAaAgTqQ8bcLAHQHJTWdkcIwupcymLSAyBAyk
+			c1CWMNPgtCwssKQIr5GyV7SpFtCcocLAOS8Me05WJqbGMO4Uk09N
+			VqmCAABuCM5AAsA6LcUm5CAwJqUwIEAZIIOQAhGww6JqHaHKJq3A
+			JqHeleAAF6FQHeAA2AXAryAAAqB8MYGyHsi0HgAKHkNwW/VY5QIO
+			W+SYAYHi7ovokciAzesOAEHvLSrijsPKLgg4MyAkk0H6Aop2XeAE
+			HscpYc8WbXXcK+53MaRkAS1nYw6KLq6OH+wqgaKor4b2PKDAMEFU
+			G4GwGUaBN7ZYYKDcAABmjoEcIGYYLoZHGg6wYyoKL0DgCQBWAABU
+			7mSahU7q+LZbaPaRaTaU7+daIMgk8I/Mb6hidyH6SzGkdyMmr88l
+			JaNwyQpwaeaKHiLAaMLApy80MY1Gy28887JUnMS09JIkbQ9SNrSA
+			aS9cdg9gpUg4tcpUeI+69uIPPqIPP0IVaaI5P6N460+GJUZSeY/1
+			BY+2gcXWbuQcNOQAWK+i/kegrk9xcggc+8Wsdmd2eEdk/eqSeEdu
+			5O2w/DBg/YXibmgofdLU+krfdo+qxddweqfPVAeWfOOAxcbtdwek
+			J/YI8A9YLAfIpUXEndJkfe/ZAnAjecIIgQgGNcbBA+gDKdTdBGdh
+			A6NnaoNpRi/YIU7uZuXMgbBYsGZxdPcGcQKSgldUbsgog+Ma+whG
+			fOxAXKN2MKKgoErkhxCREWd4KCb2nLfFOMcqmyfWKEdEeOQFfrb2
+			hOqbAjfCM2RwhQr4N0igLKMkrMH41Icsv/LSidLgNIjmXSKUcItN
+			f0LiXdIFESIFLkXLhkLC9sL+iUMGSuHkpixEH3YOV6AiMYBIA0SH
+			UoJqAwAgSY4mLoGYF1GCs+PojVD6JwJqAyBILcA3iuncIEl4TMHa
+			MOvQVEVI1Ebe+jDkAxYAwEh6HwqRBmLU2Pf5DAAG1ZCkdgfrbc9M
+			biHwmxDAAwA8yCyGaUbKHiRxSI1SO+A4PzCrVC1bLe8QAAG6GkPS
+			HCGxkLa9ayqK1SLSBoCGoSygdCjzWMMYARMESc3sAwMSO6IE8qnY
+			WEawMYGgF+RwGiF+MPT2Lo9GRwHmHiMSAaAkL0CSC+qEAqA4qqSR
+			WiMOlCIEaiYqYyIGHdD0AAGwGO9K3OAAVSPSHbRAQlGZZGw8LASj
+			RYBCLYAuA2LcAQSGAAAwBGMOASAcLAxcxzP8HiHWIEG4Gda0MYao
+			AAHCGuV1HBMAPVaqoEc0/2Sa1eA8BML0qmLUPIAiAmRYpYHAHKp2
+			HIG+RwHuQmrDDWPUz0ILLRkanIcATStChepZhqr4NIAgNnXIODju
+			sKXKbUXKHZL8LU1eACjTMG84ApXWAmi1MXXkLixEikXZhqAOHgLY
+			AiHAAoHuAQHeAU4tPcWGHcHgARCXNHC/DuJ/NOHPNTaVq/rBrDrF
+			rHrJrLrNrPrRrTrVrXrZraJABUBaBqDYKSDQMhDSNEAeMmH2UcXK
+			H4u+AKHOJwAOHEKMleb2GedYGPEoNeHgA2HcCOQ+H8BMH2AIH0CC
+			AMHaSOAQHWASL05yKUqPVQQ7edAEOBgmg68XoGb2PkpmsccA7vni
+			qIq64ywcMbIEH6A+aQkIMNM5muAeVmWOpSIMA4Aiyku47oBAHbQ0
+			AC5qzwHWk0GwGjMOHYHUk0AqAwykBQBg5AAoAxk8A0MYBQ7BDlvA
+			IKeHfWIU1HBSIEbMMYF6FMUOHMG6ogLoHaHWOyvQMOpELgB4CUAv
+			DkAqLcAYAjiqBHHIOPLgoybwN0dyloziOdbgHKG2LoHCGoLAHoHk
+			MOULXcHeHWp2ALpyB8CgqEB4CekdTufdCmmlF8HEMSHQHAgEWkHE
+			GqYqdMXSpyMOnUgKoGAYJqRiQ/IRncLSSi+CU8LAHYHMUOOkxezo
+			coQWJwLSApHQp8piQ8H5tCtCMsagz4/MzhSgN+QWbcMPV2qdngqa
+			KeeoJqQqz6PQO0LoAmAwLcBOBjJ/GKUlocAwL1Tg3qY0BCMPnRGZ
+			pkHGGvV0v0acLAGUF8Oy86MPJqXKBGPSHwAKOiALHiAWHTXeR5EY
+			IQLwQCXYKmQ+44viHLSeHCkctIdsgaH9EqAAHuBDEwHsBA3PB4MC
+			wuLqN+PmAKH01mHyLcM206HiykAOHqoS5K1AN0sZQGH+AQiWKMHN
+			M4AKCMGsGUGIG1rd2uIYDg7iXQDmIGBANAB8XRNU6y7SL0DEB+BI
+			AABMAzK0AuAcLYASih2x3n3p3qJVaY+NxTag2x30fQMMXBau549F
+			bELqSy8YS1bBKInpo5lY1EHtbQ83qmz69AmiOpwgOc9OVttTJWNg
+			9abfvOtZBy9mg1389s+Ob8cCQi8D3yIxcRpRcBc8+EJIq6LE+HgM
+			ROZRd2e+c4eec+ecdKXZBUIc1CZspMgkd3dG/NP16P6N6V6P6ZdX
+			dCZ1VPVOcAQQ+uecXZf6KgQU+peG/1d1ALzB6CdUe2W0e3P636pv
+			5UNAQA/wdO/6bq9+hZb4+y+2fhTaV3evPx0aNEV3Tddh1SX31S1D
+			dA5Q2QYrb2db335iXfcJVv8edcgrBbflgwdW+weeLKhXCEdp8xJk
+			W3ADEWYycIfWM2diLIdyh2helSxuXLYI4FCeZ6W8AIKEXMjsg4KE
+			KmbrCEQ+wjhvDOMbaI8WMMHsgEo69yLyAqzeigADXJBog0H0MKHe
+			saN6MLQNf+Lk2PqtghDCjrysLiHaSv+j351YLyhSPJSWUQzO9QLo
+			HWHK5gOq0OkgOWhDP/ikousjgMoF/SQuIAAAIBAAAAeFYIBwQAQA
+			8Xa+wA6XE+AA+ny/gAEQvBBUOAOAAUDgFIAbGARJQAAgE/4KAIY/
+			5YAHs8pYz17GHi64K9nm/QBMIYAYYAAaEoYIxhDAOCoKBALIwYDw
+			LAgJDAIBpGAgHBX4+oK2WVPmiwog+nxGH4/IK/X5GAYEK2OSVHws
+			H4SCJYDAjIwMCZYBQPeQnagHBJbh4K+HrGGWuIoy1zXnu9IxBYxL
+			J8DQjBCCVggAA4JI+AsMCwhasBiNVLXY45Y0F7LHk7Yw6ImAHW5Y
+			o+LPLgFlQDGAUDYIMB6EoMEqmCgZIxIM58Dwtq9W7XJLGivoY9Hd
+			GHI23tEXDu3vGNJQanP5hBQFQwDI81Ix6TweAA0IYIA/TGp9fZYc
+			ZxIgbRmoKbpwvCchyvCfRtMqiCUgKrYBAMrahJamIAMqxChpcw7M
+			H8y71oK9DDoYfy2gAfrysslj9IIASnqbEwLIgf0aJ+AaYpG9TVHy
+			AyKKCgR7KmBJ3gUfoCnsAy2sWfZ7nYfMcpgwz2gCAcqpUfytAGYY
+			Cy8ThuGuZ5TupMszTPNE0zVNc2TbN03zhOM5TnOk6ztO88TzPU9z
+			5Ps/T/QFA0FQdCULQ1D0RRNFUXRlG0dR9IUjSVJ0pStLUvTFM01T
+			dOU6loQBGFYFAHK4SgYBoGCKAwCgMH8QH8AqzHwDiLHyECYH+AsQ
+			JZXChKEfSBgId4DVWb9eAIfIBHwEB+H2fwHJYfwEpWlTfx2lsT14
+			f0MTPa4IpYAIH149KYMvbcLpcfaRgCfagn4obwsTC6h25Y7MAYiB
+			6BQekUgStR+gEnx6gQecMt/DsRqGE4MvqEQEuQEB7gyAADSQAB2n
+			SfIAGgZB3gAe56rU4YDAACoLAakipgyECRhgISRgyENrz82afF8V
+			CvG8aa1H2fSfHQcmCntkKiAgggeiUC4AAkCuSPiAARBijAFvqAD9
+			Tkep4pYcJrJYbpnIKeR3K8cZuHiABumudyDAorYeCcz4iCyCaQOb
+			Hkyn8nwAWayx+pYep3oIep3K3kCMGgYZ4AAbJmYKfMVhWG76hIF4
+			GAABwJIIBoKIwoqMKugsRLSjB+weep5IYcJpJGdhzJ8xSMHMbeNc
+			fEKCnyfaYn+hgJgyggZCEpjhqyrYAMAkZ3HOiB4HWiBqmVfh8Hsj
+			FWJGBIGIJVaRrYzB+9IfiWAOBKCOGggKg2j6nIYBaRIEAyGP0lgF
+			gorwDAQn1mpGdpxq2fJ6kjHuPYnyYjwj3HkRhGpFQNleH+XhvasQ
+			ADuAeOoioBCKJaIw6REa6EOrXJYARJQAAFjjAi5cboFSXD8R2iAn
+			6GW9gKK8PQD7ih5gjHaT9XSZQAu7AA/cBMPR/FMAEPwrYCR1AOAB
+			EZlAAYVEuQtE6KA+x+gRH0JQBICQECVAmPcC44hfi1Fig9T0Y4yR
+			lTiHEAAJIXBmJbGokYSyWskjMnUBCEQABbB2CEAAIwLsoA8BJywD
+			ADmGjnIWQ0h5ESJkVItN6GIdq8Oo7pDh6ygQcd0ZUrroSYt5JYz0
+			lg9B5E+ROWs3rp2BDxIwTyVJlAAO1AAPhFbYifDxO63t3KKZbtZk
+			+PEnxFi1vgAAPuW4/0HD5WihqHkGx/ntJahxDjoVzoeh0auZ6ZVc
+			JpkgnpIKQWZzUigmeas2j2Pwieh1X0zTfFZPeSlK7VjCzuPyQOdy
+			EiVROJeudDE10OLbd0rySklJ8TENVJSFtBZryOQvP93VCZNE/MrJ
+			CYhLFqzzIFO8rRBFgtWAJPRCSpCUlaJcAOci652ntXWhYoU6kdnu
+			nXQVhA/B+t6oVE6jtKygzlOpTeZ09oNrodFMJvdMUUlpqCWpED+K
+			YHqgzQCpc/qIOhYSe6cZL4WpBoGhuJ8jp+mIoOiKqEzaqIamevUl
+			7u0dzMpDQJEsxEOEqfgjmb6VTfMJmg7umI/wBqvV8/CeVIqzsHQ6
+			ttEAAwDsAKE7tvMuF3vgoiP4Ag/ACj3H6PQA1eCXFPIYA1YjVonk
+			rRGrw4IADFj3tETIpq4AGrgRiAoAQCHjD/NGSklw+ShjwIJExEwB
+			F7lescrwBBah/gJb0S1WJUwCj5KmP9d5BWPE/uWh4ArerPHvfCAk
+			hgFQHkfH5MYAA73lIZb9El7DFADkjIGiZER66Wv2JGQqvhDC+0YR
+			jW68V5gCnbl4AAcY2h60uAkBgkYOwnsoKKVACLUzTzsnCS02ZGBg
+			ipdiNwjBFiMG5Y04YAAIQWEECiG61wEQLIVKGVqcNUnb2kY2L9w4
+			vyWD3YKRVnzdwHN0AAEcL5UwPAom6YU91EkLGkIxOc6hPCfDAFYP
+			IAAwcjvGAOQwFANSmAxB+8IBxWwKAaKm+Kk5BQBxynqmkc43ifDH
+			FeWoeA7SWDrHMeEdg5yKHtJYB8FbJAPApZIcMrYGQPw/AQAsrd7n
+			LgULzCVNI6RvkYGMK8iA8h2EYeSV4dw6qjTAAhgAg2lr6DvHWcB9
+			YDytg9CYygupU37EsAUBAnz4iWOtIwNcZBIxrjcX4OEcV/R6DYK8
+			uw9kdgAoUm+7u0C3JrLnH8s6h2wgAj9eLTI9Y+tnTfVJRieSViGA
+			COmSkCxQ3i2Ip7VxE1odk7VXUS4f0OwAj1AGYsdB6ifIvg7nBcBa
+			V2zCH2IQcw4htCCkZvvfm/d/b/4BwHgXA+CcF4NwfhHCeFcL4Zw3
+			h3D+IKOBICgGALFqixAOl4dR7wBD6VIANJw9B6grpiPyJBPwCUx2
+			UrukRQrIAFAIPMwEIFjltH6BIfpZzDFBxFN0n9MpozNrQtd4o/gK
+			E+H+BUn1EyXWgWxRIfBWbaFcIYP2VCGckFr2EYex2EwHsaHaDHdY
+			/F/U9gzT0BsdSiPjAAD0E50wdAkOmBIBFrpBlbHWORAozyGGKuYx
+			kAA0hktnMmT5yhHwjBcAXGkF5H1AFdJYO0dBLHYAAHmO8jAwBV39
+			HMN8tVDjQAjKYAi1gAAINtAADoJ5UwJAZL4QtOJk80jhIKOUbhLB
+			4DsLUNwaeSBrjMcUA8CZIwchLPqEMLBn3r4iXBThvF4R6DvK24Mr
+			flRmC9cUNMYzZx8SsBaDsz4JgYso9OVMCYHSMAO6UxT2B1PIWiHi
+			QwbwziCD0HgTgdpaix+EHm6RvSYS+D2B84qbxKEpzBdZHZViqAlg
+			cp2YAAXIUiG6WSHpUZpYDC1xL0BAhkDKdKYIi7+CXsD6Squ5u4px
+			v7FyWwtQrQkYBwBxywpwgioQAAeAd4iBvgn66YBooYwwfxioAAeg
+			DZtYfgA4iDZQnwegAjJBgDz5DoBYfplBHIrYAYfDLIdpywBIdKJC
+			IYkYfwfLpCFzsgrweYC5tYeQDodhDKHKawgoAof5kgggqYAQfYrY
+			B4c4CgkAcwz5aw3yHazgYBCQXAAIBQAIXAaoXgY4aTiMRThaNADa
+			FwJi2QFQloMolqH7hSQYkYKAGgDzDICpywFJhggwBSOURcUsU0U8
+			VDgCrSbKq6FyDkPpdBbZEy8L95ERXZva7geb/JFK8JnogqUwmS/K
+			VQmSVhx4liVweQd4ljy4tAfQlhZpv6UMH8aQfbqZ7hvYfSDIyrZ7
+			0B0Kna2SdDbotboJMylKrDBY1UW5NEVhPCbaDscqnRRbapKxhEcU
+			dw97aqkCiYwpF6kDaKd0BCbpvJDSTTYSa5Hifir5cqhsdama9KFi
+			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 {
