diff --git a/.gitignore b/.gitignore
index f4779c5..11ca63e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,4 @@
 doc/out
 docs/*.asciidoc
 ext/
+benchmarks/
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 8735a87..2714469 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -17,6 +17,301 @@
 TinkerPop3 CHANGELOG
 ====================
 
+TinkerPop 3.2.0 (Nine Inch Gremlins)
+------------------------------------
+
+image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/nine-inch-gremlins.png[width=185]
+
+[[release-3-2-2]]
+TinkerPop 3.2.2 (NOT OFFICIALLY RELEASED YET)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+* Fixed a potential leak of a `ReferenceCounted` resource in Gremlin Server.
+* Added class registrations for `Map.Entry` implementations to `GryoMapper`.
+
+[[release-3-2-1]]
+TinkerPop 3.2.1 (Release Date: July 18, 2016)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+This release also includes changes from <<release-3-1-3, 3.1.3>>.
+
+* `PathProcessor` steps now have the ability (if configured through a strategy) to drop `Traverser` path segments.
+* `MatchStep` in OLTP has a lazy barrier to increase the probability of bulking.
+* Added `PathRetractionStrategy` which will remove labeled path segments that will no longer be referenced.
+* Added `Path.retract()` to support retracting paths based on labels.
+* Optimized `ImmutablePath` and `MutablePath` equality code removing significant unnecessary object creation code.
+* Bumped to Groovy 2.4.7.
+* Added `RepeatUnrollStrategy` to linearize a `repeat()`-traversal if loop amount is known at compile time.
+* Fixed a bug in `BranchStep` around child integration during `clone()`.
+* Fixed a bug in `AbstractStep` around label set cloning.
+* Added `TraversalStrategyPerformanceTest` for verifying the performance gains of optimization-based traversal strategies.
+* `TraversalExplanation.prettyPrint()` exists which provides word wrapping and GremlinConsole is smart to use console width to control `toString()`.
+* `TraversalOpProcessor` (`RemoteConnection`) uses `HaltedTraverserStrategy` metadata to determine detachment procedure prior to returning results.
+* Allow DFS paths in `HADOOP_GREMLIN_LIBS`.
+* Added a safer serializer infrastructure for use with `SparkGraphComputer` that uses `KryoSerializer` and the new `GryoRegistrator`.
+* Added `HaltedTraverserStrategy` to allow users to get back different element detachments in OLAP.
+* Fixed a `NullPointerException` bug around nested `group()`-steps in OLAP.
+* Fixed a severe bug around halted traversers in a multi-job OLAP traversal chain.
+* Ensure a separation of `GraphComputer` and `VertexProgram` configurations in `SparkGraphComputer` and `GiraphGraphComputer`.
+* `PeerPressureVertexProgram` now supports dynamic initial vote strength calculations.
+* Added `EmptyMemory` for ease of use when no memory exists.
+* Updated `VertexComputing.generateProgram()` API to include `Memory`. (*breaking*)
+* `ImmutablePath.TailPath` is now serializable like `ImmutablePath`.
+* Added `ConfigurationCompilerProvider` which allows fine-grained control of some of the internal `GremlinGroovyScriptEngine` settings at the Groovy compilation level.
+* Intoduced the `application/vnd.gremlin-v1.0+gryo-lite` serialization type to Gremlin Server which users "reference" elements rather than "detached".
+* `GryoMapper` allows overrides of existing serializers on calls to `addCustom` on the builder.
+* Added a traversal style guide to the recipes cookbook.
+* Fixed a bug in master-traversal traverser propagation.
+* Added useful methods for custom `VertexPrograms` to be used with `program()`-step.
+* Increased the test coverage around traverser propagation within a multi-job OLAP traversal.
+* Added tests to validate the status of a transaction immediately following calls to close.
+* Added tests to ensure that threaded transactions cannot be re-used.
+* `GraphFilter` helper methods are now more intelligent when determining edge direction/label legality.
+* Added `GraphFilterStrategy` to automatically construct `GraphFilters` via traversal introspection in OLAP.
+* Updated the Gephi Plugin to support Gephi 0.9.x.
+* Increased the testing and scope of `TraversalHelper.isLocalStarGraph()`.
+* Changed signature of `get_g_VXlistXv1_v2_v3XX_name` and `get_g_VXlistX1_2_3XX_name` of `VertexTest` to take arguments for the `Traversal` to be constructed by extending classes.
+* Added `VertexProgramInterceptor` interface as a general pattern for `GraphComputer` providers to use for bypassing `GraphComputer` semantics where appropriate.
+* Added `SparkStarBarrierInterceptor` that uses Spark DSL for local star graph traversals that end with a `ReducingBarrierStep`.
+* Added `SparkInterceptorStrategy` which identifies which interceptor to use (if any) given the submitted `VertexProgram`.
+* Added `SparkSingleIterationStrategy` that does not partition nor cache the graph RDD if the traversal does not message pass.
+* Added more helper methods to `TraversalHelper` for handling scoped traversal children.
+* Deprecated all "performance" tests based on "JUnit Benchmarks".
+* `SparkGraphComputer` no longer shuffles empty views or empty outgoing messages in order to save time and space.
+* `TraversalVertexProgram` no longer maintains empty halted traverser properties in order to save space.
+* Added `List<P<V>>` constructors to `ConnectiveP`, `AndP`, and `OrP` for ease of use.
+* Added support for interactive (`-i`) and execute (`-e`) modes for Gremlin Console.
+* Displayed line numbers for script execution failures of `-e` and `-i`.
+* Improved messaging around script execution errors in Gremlin Console.
+* Added "help" support to Gremlin Console with the `-h` flag.
+* Added options to better control verbosity of Gremlin Console output with `-Q`, `-V` and `-D`.
+* Deprecated the `ScriptExecutor` - the `-e` option to `gremlin.sh` is now handled by `Console`.
+* `Traversal` now allows cancellation with `Thread.interrupt()`.
+* Added a Gremlin language variant tutorial teaching people how to embed Gremlin in a host programming language.
+
+Bugs
+^^^^
+
+* TINKERPOP-1281 Memory.HALTED_TRAVERSER transience is not sound.
+* TINKERPOP-1305 HALTED_TRAVERSERS hold wrong information
+* TINKERPOP-1307 NPE with OLTP nested group() in an OLAP group() traversal
+* TINKERPOP-1323 ComputerVerificationStrategy fails for nested match() steps
+* TINKERPOP-1341 UnshadedKryoAdapter fails to deserialize StarGraph when SparkConf sets spark.rdd.compress=true whereas GryoSerializer works
+* TINKERPOP-1348 TraversalInterruptionTest success dependent on iteration order
+
+Improvements
+^^^^^^^^^^^^
+
+* TINKERPOP-818 Consider a P.type()
+* TINKERPOP-946 Traversal respecting Thread.interrupt()
+* TINKERPOP-947 Enforce semantics of threaded transactions as manual *(breaking)*
+* TINKERPOP-1059 Add test to ensure transaction opening happens at read/write and not on close *(breaking)*
+* TINKERPOP-1071 Enhance pre-processor output
+* TINKERPOP-1091 Get KryoSerializer to work natively. *(breaking)*
+* TINKERPOP-1120 If there is no view nor messages, don't create empty views/messages in SparkExecutor
+* TINKERPOP-1144 Improve ScriptElementFactory
+* TINKERPOP-1155 gremlin.sh -e doesn't log line numbers for errors
+* TINKERPOP-1156 gremlin.sh could use a help text
+* TINKERPOP-1157 gremlin.sh should allow you to execute a script and go interactive on error or completion
+* TINKERPOP-1232 Write a tutorial demonstrating the 3 ways to write a Gremlin language variant.
+* TINKERPOP-1254 Support dropping traverser path information when it is no longer needed.
+* TINKERPOP-1268 Improve script execution options for console *(breaking)*
+* TINKERPOP-1273 Deprecate old performance tests
+* TINKERPOP-1276 Deprecate serializedResponseTimeout
+* TINKERPOP-1279 Add Iterable<V> parameter constructor to ConnectiveP subclasses
+* TINKERPOP-1282 Add more compliance tests around how memory and vertex compute keys are propagated in chained OLAP.
+* TINKERPOP-1286 Add Recipes documentation
+* TINKERPOP-1288 Support gremlin.spark.skipPartitioning configuration.
+* TINKERPOP-1290 Create VertexProgramInterceptor as a pattern for GraphComputer strategies.
+* TINKERPOP-1293 Implement GraphFilterStrategy as a default registration for GraphComputer
+* TINKERPOP-1294 Deprecate use of junit-benchmarks
+* TINKERPOP-1297 Gephi plugin on Gephi 0.9.x  *(breaking)*
+* TINKERPOP-1299 Refactor TraversalVertexProgram to make it easier to understand.
+* TINKERPOP-1308 Serialize to "reference" for Gremlin Server
+* TINKERPOP-1310 Allow OLAP to return properties as Detached
+* TINKERPOP-1321 Loosen coupling between TinkerPop serialization logic and shaded Kryo
+* TINKERPOP-1322 Provide fine-grained control of CompilerConfiguration
+* TINKERPOP-1328 Provide [gremlin-python] as an code executor in docs
+* TINKERPOP-1331 HADOOP_GREMLIN_LIBS can only point to local file system
+* TINKERPOP-1332 Improve .explain() Dialogue
+* TINKERPOP-1338 Bump to Groovy 2.4.7
+* TINKERPOP-1349 RepeatUnrollStrategy should unroll loops while maintaining equivalent semantics.
+* TINKERPOP-1355 Design HasContainer for extension
+
+[[release-3-2-0-incubating]]
+TinkerPop 3.2.0 (Release Date: April 8, 2016)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+This release also includes changes from <<release-3-1-2-incubating, 3.1.2-incubating>>.
+
+* Bumped to Neo4j 2.3.3.
+* Renamed variable `local` to `fs` in `HadoopGremlinPlugin` to avoid a naming conflict with `Scope.local`. (*breaking*)
+* Added `GraphTraversal.optional()` which will use the inner traversal if it returns results, else it won't.
+* `GroupStep` and `GroupSideEffectStep` make use of mid-traversal reducers to limit memory consumption in OLAP.
+* Added `GraphTraversal.program(VertexProgram)` to allow arbitrary user vertex programs in OLAP.
+* Added `GraphTraversal.project()` for creating a `Map<String,E>` given the current traverser and an arbitrary number of `by()`-modulators.
+* `HADOOP_GREMLIN_LIBS` can now reference a directory in HDFS and will be used if the directory does not exist locally.
+* Added `gremlin-benchmark` module with JMH benchmarking base classes that can be used for further benchmark development.
+* `TraversalStrategies.GlobalCache` supports both `Graph` and `GraphComputer` strategy registrations.
+* `select("a","b").by("name").by("age")`-style traversals now work in OLAP with new `PathProcessorStrategy`.
+* `DedupGlobalStep` can now handle star-bound `by()`-modulators and scoped keys on `GraphComputer`.
+* Added `Computer` which is a builder for `GraphComputers` that is serializable.
+* `PersistedOutputRDD` now implements `PersistResultGraphAware` and thus, no more unneeded warnings when using it.
+* Renamed `StandardTraversalMetrics` to `DefaultTraversalMetrics` given the `DefaultXXX`-convention throughout. (*breaking*)
+* Bumped to Apache Hadoop 2.7.2.
+* Fixed a bug around profiling and nested traversals.
+* Added `gremlin.hadoop.defaultGraphComputer` so users can use `graph.compute()` with `HadoopGraph`.
+* Added `gremlin.hadoop.graphReader` and `gremlin.hadoop.graphWriter` which can handled `XXXFormats` and `XXXRDDs`.
+* Deprecated `gremlin.hadoop.graphInputFormat`, `gremlin.hadoop.graphOutputFormat`, `gremlin.spark.graphInputRDD`, and `gremlin.spark.graphOutputRDD`.
+* If no configuration is provided to `HadoopPools` it uses the default configuration to create a pool once and only once per JVM.
+* Implemented `RemoteGraph`, `RemoteConnection`, and `RemoteStrategy`.
+* Added validation to `GryoMapper` Kryo identifiers before construction to prevent accidental duplicates.
+* Added `GraphStep.addIds()` which is useful for `HasContainer` "fold ins."
+* Added a static `GraphStep.processHashContainerIds()` helper for handling id-based `HasContainers`.
+* `GraphStep` implementations should have `g.V().hasId(x)` and `g.V(x)` compile equivalently. (*breaking*)
+* Optimized `ExpandableStepIterator` with simpler logic and increased the likelihood of bulking.
+* Optimized `TraverserRequirement` calculations.
+* `Step.addStart()` and `Step.addStarts()` now take `Traverser.Admin<S>` and `Traverser.Admin<S>`, respectively. (*breaking*)
+* `Step.processNextStart()` and `Step.next()` now return `Traverser.Admin<E>`. (*breaking*)
+* `Traversal.addTraverserRequirement()` method removed. (*breaking*)
+* Fixed a `hashCode()` bug in `OrderGlobalStep` and `OrderLocalStep`.
+* Added `OrderLimitStrategy` which will ensure that partitions are limited before being merged in OLAP.
+* `ComparatorHolder` now separates the traversal from the comparator. (*breaking*)
+* Bumped to Apache Spark 1.6.1.
+* If no Spark serializer is provided then `GryoSerializer` is the default, not `JavaSerializer`.
+* Added `Operator.sumLong` as a optimized binary operator intended to be used by `Memory` reducers that know they are dealing with longs.
+* Traversers from `ComputerResultStep` are no longer attached. Attaching is only used in TinkerPop's test suite via `System.getProperties()`.
+* Fixed a `hashCode()`/`equals()` bug in `MessageScope`.
+* Fixed a severe `Traversal` cloning issue that caused inconsistent `TraversalSideEffects`.
+* `TraversalSideEffects` remain consistent and usable across multiple chained OLAP jobs.
+* Added `MemoryTraversalSideEffects` which wraps `Memory` in a `TraversalSideEffects` for use in OLAP.
+* `TraversalSideEffects` are now fully functional in OLAP save that an accurate global view is possible at the start of an iteration (not during).
+* Updated the `TraversalSideEffects` API to support registered reducers and updated `get()`-semantics. (*breaking*)
+* Split existing `profile()` into `ProfileStep` and `ProfileSideEffectStep`.
+* The `profile()`-step acts like a reducing barrier and emits `TraversalMetrics` without the need for `cap()`. (*breaking*)
+* Added `LocalBarrier` interface to allow traversers to remain distributed during an iteration so as to reduce cluster traffic.
+* Added `NoOpBarrierStep` as a `LocalBarrier` implementation of `LambdaCollectingBarrierStep(noOp)`.
+* `AggregateStep` implements `LocalBarrier` and thus, doesn't needlessly communicate its barrier traversers.
+* Fixed an OLAP-based `Barrier` synchronization bug.
+* Fixed a semantic bug in `BranchStep` (and inheriting steps) where barriers reacted locally. (*breaking*)
+* Added `MemoryComputeKey` for specification of `Memory` keys in `VertexProgram`. (*breaking*)
+* Added `VertexComputeKey` for specification of vertex compute properties in `VertexProgram`. (*breaking*)
+* Added `and`, `or`, and `addAll` to `Operator`.
+* `Memory` API changed to support setting and adding values for reduction. (*breaking*)
+* `Memory` keys can be marked as broadcast and only those values are sent to workers on each iterator.
+* `Memory` keys can be marked transient and thus deleted at the end of the OLAP job.
+* Vertex compute keys can be marked transient and thus deleted at the end of the OLAP job.
+* `VertexProgram` API changed to support `MemoryComputeKey` and `VertexComputeKey`. (*breaking*)
+* `TraversalVertexProgram` able to execute OLAP and OLTP traversal sections dynamically within the same job.
+* Removed `FinalGet` interface as all post processing of reductions should be handled by the reducing step explicitly. (*breaking*)
+* Simplified all `SupplyingBarrierStep` implementations as they no longer require `MapReduce` in OLAP.
+* Simplified all `CollectingBarrierStep` implementations as they no longer require `MapReduce` in OLAP.
+* Simplified all `ReducingBarrierStep` implementations as they no longer require `MapReduce` in OLAP.
+* All steps in OLAP that used `MapReduce` now use `Memory` to do their reductions which expands the list of legal traversals.
+* `GroupStep` simplified with `GroupHelper.GroupMap` no longer being needed. Related to the removal of `FinalGet`.
+* OLAP side-effects that are no longer generated by `MapReduce` are simply stored in `ComputerResult.Memory` w/ no disk persistence needed. (*breaking*)
+* Added `Generate` step interface which states that there could be a final generating phase to a side-effect or reduction (e.g. `GroupStep`).
+* `Barrier` step interface is now the means by which non-parallel steps communicate with their counterparts in OLAP.
+* Added `MemoryComputing` step interface which states that the step uses `MemoryComputeKeys` for its computation in OLAP.
+* Added `PeerPressureVertexProgramStep` and `GraphTraversal.peerPressure()`.
+* Added `PureTraversal` for handling pure and compiled versions of a `Traversal`. Useful in OLAP.
+* Added `ScriptTraversal` which allows for delayed compilation of script-based `Traversals`.
+* Simplified `VertexProgram` implementations with a `PureTraversal`-model and deprecated `ConfigurationTraversal`.
+* Simplified script-based `Traversals` via `ScriptTraversal` and deprecated `TraversalScriptFunction` and `TraversalScriptHelper`.
+* Added `TimesModulating` interface which allows the `Step` to decide how a `times()`-modulation should be handled.
+* Added `ByModulating` interface which allows the `Step` to decide how a `by()`-modulation should be handled. (*breaking*)
+* Simplified the `by()`-modulation patterns of `OrderGlobalStep` and `OrderLocalStep`.
+* Added `GraphComputerTest.shouldSupportPreExistingComputeKeys()` to ensure existing compute keys are "revived." (*breaking*)
+* Added `GraphComputerTest.shouldSupportJobChaining()` to ensure OLAP jobs can be linearly chained. (*breaking*)
+* Fixed a bug in both `SparkGraphComputer` and `GiraphGraphComputer` regarding source data access in job chains.
+* Expanded job chaining test coverage for `GraphComputer` providers.
+* Added `TraversalHelper.onGraphComputer(traversal)`.
+* `MapReduce.map()` no longer has a default implementation. This method must be implemented. (*breaking*)
+* `TraversalVertexProgram` can work without a `GraphStep` start.
+* Added `PageRankVertexProgramStep` and `GraphTraversal.pageRank()`.
+* Added `TraversalVertexProgramStep` to support OLAP traversal job chaining.
+* Added `VertexProgramStrategy` which compiles multiple OLAP jobs into a single traversal.
+* Simplified the comparator model in `OrderGlobalStep` and `OrderLocalStep`.
+* Refactored `TraversalSource` model to allow fluent-method construction of `TraversalSources`.
+* Deprecated the concept of a `TraversalSource.Builder`.
+* Removed the concept of a `TraversalEngine`. All `Traversal` modulations are now mediated by `TraversalStrategies`. (*breaking*)
+* Added `SideEffectStrategy` for registering sideEffects in a spawned `Traversal`.
+* Added `SackStrategy` for registering a sack for a spawned `Traversal`.
+* Added `RequirementsStrategy` and `RequirementsStep` for adding dynamic `TraverserRequirements` to a `Traversal`.
+* Removed `EngineDependentStrategy`.
+* Renamed step interface `EngineDependent` to `GraphComputing` with method `onGraphComputer()`. (*breaking*)
+* Cleaned up various `TraversalStrategy` tests now that `TraversalEngine` no longer exists.
+* Added `GraphFilter` to support filtering out vertices and edges that won't be touched by an OLAP job.
+* Added `GraphComputer.vertices()` and `GraphComputer.edges()` for `GraphFilter` construction. (*breaking*)
+* `SparkGraphComputer`, `GiraphGraphComputer`, and `TinkerGraphComputer` all support `GraphFilter`.
+* Added `GraphComputerTest.shouldSupportGraphFilter()` which verifies all filtered graphs have the same topology.
+* Added `GraphFilterAware` interface to `hadoop-gremlin/` which tells the OLAP engine that the `InputFormat` handles filtering.
+* `GryoInputFormat` and `ScriptInputFormat` implement `GraphFilterAware`.
+* Added `GraphFilterInputFormat` which handles graph filtering for `InputFormats` that are not `GraphFilterAware`.
+* Fixed a bug in `TraversalHelper.isLocalStarGraph()` which allowed certain illegal traversals to pass.
+* Added `TraversalHelper.isLocalProperties()` to verify that the traversal does not touch incident edges.
+* `GraphReader` I/O interface now has `Optional<Vertex> readGraph(InputStream, GraphFilter)`. Default `UnsupportedOperationException`.
+* `GryoReader` does not materialize edges that will be filtered out and this greatly reduces GC and load times.
+* Created custom `Serializers` for `SparkGraphComputer` message-passing classes which reduce graph sizes significantly.
+
+Bugs
+^^^^
+
+* TINKERPOP-951 Barrier steps provide unexpected results in Gremlin OLAP
+* TINKERPOP-1057 GroupSideEffectStep doesn't use provided maps
+* TINKERPOP-1103 Two objects fighting for local variable name in Gremlin Console *(breaking)*
+* TINKERPOP-1149 TraversalXXXSteps Aren't Providing SideEffects
+* TINKERPOP-1181 select(Column) should not use a LambdaMapStep
+* TINKERPOP-1188 Semantics of BarrierSteps in TraversalParent global traversals is wrong. *(breaking)*
+* TINKERPOP-1194 explain() seems broken
+* TINKERPOP-1217 Repeated Logging of "The HadoopPools has not been initialized, using the default pool"
+
+Improvements
+^^^^^^^^^^^^
+
+* TINKERPOP-570 [Proposal] Provide support for OLAP to OLTP to OLAP to OLTP
+* TINKERPOP-575 Implement RemoteGraph
+* TINKERPOP-813 [Proposal] Make the Gremlin Graph Traversal Machine and Instruction Set Explicit
+* TINKERPOP-872 Remove GroupCountStep in favor of new Reduce-based GroupStep
+* TINKERPOP-890 Remove the concept of branch/ package. *(breaking)*
+* TINKERPOP-958 Improve usability of .profile() step.
+* TINKERPOP-962 Provide "vertex query" selectivity when importing data in OLAP. *(breaking)*
+* TINKERPOP-968 Add first class support for an optional traversal
+* TINKERPOP-971 TraversalSource should be fluent like GraphComputer *(breaking)*
+* TINKERPOP-1016 Replace junit-benchmarks with JMH
+* TINKERPOP-1021 Deprecate Order.valueIncr, Order.valueDecr, Order.keyIncr, and Order.keyDecr *(breaking)*
+* TINKERPOP-1032 Clean up the conf/hadoop configurations
+* TINKERPOP-1034 Bump to support Spark 1.5.2
+* TINKERPOP-1069 Support Spark 1.6.0
+* TINKERPOP-1082 INPUT_RDD and INPUT_FORMAT are bad, we should just have one key.
+* TINKERPOP-1112 Create GryoSerializers for the Spark Payload classes.
+* TINKERPOP-1121 FileSystemStorage needs to be smart about /.
+* TINKERPOP-1132 Messenger.receiveMessages() Iterator should .remove().
+* TINKERPOP-1140 TraversalVertexProgramStep in support of OLAP/OLTP conversions.
+* TINKERPOP-1153 Add ByModulating and TimesModulating interfaces.
+* TINKERPOP-1154 Create a ScriptTraversal which is Serializable and auto-compiles.
+* TINKERPOP-1162 Add VertexProgram.getTransientComputeKeys() for removing scratch-data. *(breaking)*
+* TINKERPOP-1163 GraphComputer's can have TraversalStrategies.
+* TINKERPOP-1164 ReducingBarriersSteps should use ComputerMemory, not MapReduce.
+* TINKERPOP-1166 Add Memory.reduce() as option to Memory implementations. *(breaking)*
+* TINKERPOP-1173 If no Serializer is provided in Configuration, use GryoSerializer by default (Spark)
+* TINKERPOP-1180 Add more optimized binary operators to Operator.
+* TINKERPOP-1192 TraversalSideEffects should support registered reducers (binary operators).
+* TINKERPOP-1193 Add a LocalBarrier interface.
+* TINKERPOP-1199 Use "MicroMetrics" as the mutator of the TraversalMetrics.
+* TINKERPOP-1206 ExpandableIterator can take a full TraverserSet at once -- Barriers.
+* TINKERPOP-1209 ComparatorHolder should returns a Pair<Traversal,Comparator>. *(breaking)*
+* TINKERPOP-1210 Provide an OrderLimitStep as an optimization.
+* TINKERPOP-1219 Create a test case that ensures the provider's compilation of g.V(x) and g.V().hasId(x) is identical *(breaking)*
+* TINKERPOP-1222 Allow default GraphComputer configuration
+* TINKERPOP-1223 Allow jars in gremlin.distributedJars to be read from HDFS
+* TINKERPOP-1225 Do a "rolling reduce" for GroupXXXStep in OLAP.
+* TINKERPOP-1227 Add Metrics for the TraversalOpProcessor
+* TINKERPOP-1234 program() step that takes arbitrary vertex programs
+* TINKERPOP-1236 SelectDenormalizationStrategy for select().by(starGraph) in OLAP.
+* TINKERPOP-1237 ProjectMap: For the Love of Die Faterland
+* TINKERPOP-1238 Re-use Client instances in RemoteGraph tests
+
 TinkerPop 3.1.0 (A 187 On The Undercover Gremlinz)
 --------------------------------------------------
 
diff --git a/docs/preprocessor/preprocess-file.sh b/docs/preprocessor/preprocess-file.sh
index 35b1f15..242cfe5 100755
--- a/docs/preprocessor/preprocess-file.sh
+++ b/docs/preprocessor/preprocess-file.sh
@@ -71,6 +71,13 @@
 trap cleanup INT
 
 function cleanup {
+  if [ -f "${output}" ]; then
+    if [ `wc -l "${output}" | awk '{print $1}'` -gt 0 ]; then
+      echo -e "\n\e[1mLast 10 lines of ${output}:\e[0m\n"
+      tail -n10 ${output}
+      echo
+    fi
+  fi
   rm -rf ${output} ${CONSOLE_HOME}/.ext
   exit 255
 }
diff --git a/docs/src/dev/developer/development-environment.asciidoc b/docs/src/dev/developer/development-environment.asciidoc
index 3bb6613..23df9ee 100644
--- a/docs/src/dev/developer/development-environment.asciidoc
+++ b/docs/src/dev/developer/development-environment.asciidoc
@@ -41,7 +41,7 @@
 ** Build AsciiDocs (but don't evaluate code blocks): `bin/process-docs.sh --dryRun`
 ** Build AsciiDocs (but don't evaluate code blocks in specific files): `bin/process-docs.sh --dryRun docs/src/reference/the-graph.asciidoc,docs/src/tutorial/getting-started,...`
 ** Build AsciiDocs (but evaluate code blocks only in specific files): `bin/process-docs.sh --fullRun docs/src/reference/the-graph.asciidoc,docs/src/tutorial/getting-started,...`
-** Process a single AsciiDoc file: +pass:[docs/preprocessor/preprocess-file.sh `pwd`/gremlin-console/target/apache-gremlin-console-*-standalone `pwd`/docs/src/xyz.asciidoc]+
+** Process a single AsciiDoc file: +pass:[docs/preprocessor/preprocess-file.sh `pwd`/gremlin-console/target/apache-gremlin-console-*-standalone "" "*" `pwd`/docs/src/xyz.asciidoc]+
 * Build JavaDocs: `mvn process-resources -Djavadoc`
 * Check for Apache License headers: `mvn apache-rat:check`
 * Check for newer dependencies: `mvn versions:display-dependency-updates` or `mvn versions:display-plugin-updates`
@@ -50,6 +50,7 @@
 ** Execute with the `-DincludeNeo4j` option to include transactional tests.
 ** Execute with the `-DuseEpoll` option to try to use Netty native transport (works on Linux, but will fallback to Java NIO on other OS).
 * Performance Tests: `mvn verify -DskipPerformanceTests=false`
+* Benchmarks: `mvn verify -DskipBenchmarks=false`
 
 [[docker-integration]]
 Docker Integration
diff --git a/docs/src/dev/developer/for-committers.asciidoc b/docs/src/dev/developer/for-committers.asciidoc
index 5f0713d..276db8c 100644
--- a/docs/src/dev/developer/for-committers.asciidoc
+++ b/docs/src/dev/developer/for-committers.asciidoc
@@ -200,6 +200,36 @@
 ** `checkResults(Arrays.asList("marko","josh"), traversal)`
 ** `checkMap(new HashMap<String,Long>() {{ put("marko",1l); }}, traversal.next())`
 
+Developing Benchmarks
+---------------------
+
+Benchmarks are a useful tool to track performance between TinkerPop versions and also as tools to aid development
+decision making. TinkerPop uses link:http://openjdk.java.net/projects/code-tools/jmh/[OpenJDK JMH] for benchmark development.
+The JMH framework provides tools for writing robust benchmarking code that avoid many of the pitfalls inherent in benchmarking
+JIT compiled code on the JVM.  Example JMH benchmarks can be found
+link:http://hg.openjdk.java.net/code-tools/jmh/file/tip/jmh-samples/src/main/java/org/openjdk/jmh/samples/[here].
+
+TinkerPop benchmarks live in the `gremlin-benchmark` module and can either be run from within your IDE or as a standalone
+uber-jar.  The uber-jar is the JMH recommended approach and also makes it easy to distribute artifacts to various environments
+to gather benchmarking numbers.  Having said that, in most cases it should be sufficient to run it from within the IDE.
+
+Benchmarks will not run by default because they are time consuming.  To enable benchmarks during the test phase do
+`-DskipBenchmarks=false`.  To change the number of warmup iterations, measurement iterations, and forks you can do
+`mvn clean test -DskipBenchmarks=false -DdefaultForks=5 -DmeasureIterations=20 -DwarmupIterations=20`.  Benchmark results
+will be output by default to the `benchmarks` directory in JSON format.
+
+Benchmarks may also be run from the command line using the JMH runner.  Build the uber-jar and simply run
+`java -jar gremlin-benchmark-TP-VERSION.jar`.  To see a list of JMH runner options, add the `-h` flag.
+
+The JUnit/JMH integration was inspired by the Netty projects microbenchmarking suite.  Please refer to the Netty
+link:http://netty.io/wiki/microbenchmarks.html[docs] for more details.  Presently there are 3 abstract benchmark classes
+that may be used as building blocks for your benchmarks; `AbstractBenchmarkBase`, `AbstractGraphBenchmark`, and
+`AbstractGraphMutateBenchmark`.
+
+* `AbstractBenchmarkBase` - extend when your benchmark does not require a graph instance
+* `AbstractGraphBenchmark` - extend when you are benchmarking read operations against a graph
+* `AbstractGraphMutateBenchmark` - extend when you are benchmarking graph mutation operations eg. `g.addV()`, `graph.addVertex()`
+
 [[rtc]]
 Review then Commit
 ------------------
diff --git a/docs/src/dev/developer/index.asciidoc b/docs/src/dev/developer/index.asciidoc
index f1c472f..1edca5e 100644
--- a/docs/src/dev/developer/index.asciidoc
+++ b/docs/src/dev/developer/index.asciidoc
@@ -14,7 +14,9 @@
 See the License for the specific language governing permissions and
 limitations under the License.
 ////
-image::apache-tinkerpop-logo.png[width=500]
+image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]
+
+*x.y.z*
 
 :toc-position: left
 
diff --git a/docs/src/dev/provider/index.asciidoc b/docs/src/dev/provider/index.asciidoc
index 7b876a1..90ab5c0 100644
--- a/docs/src/dev/provider/index.asciidoc
+++ b/docs/src/dev/provider/index.asciidoc
@@ -14,7 +14,9 @@
 See the License for the specific language governing permissions and
 limitations under the License.
 ////
-image::apache-tinkerpop-logo.png[width=500]
+image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]
+
+*x.y.z*
 
 :toc-position: left
 
@@ -320,10 +322,35 @@
 Note that the configurations for Hadoop are assumed to be in the `Graph.configuration()` object. If this is not the
 case, then the `Configuration` provided to `HadoopGraph.open()` should be dynamically created within the
 `compute()`-method. It is in the provided configuration that `HadoopGraph` gets the various properties which
-determine how to read and write data to and from Hadoop. For instance, `gremlin.hadoop.graphInputFormat` and
-`gremlin.hadoop.graphOutputFormat`.
+determine how to read and write data to and from Hadoop. For instance, `gremlin.hadoop.graphReader` and
+`gremlin.hadoop.graphWriter`.
 
-IMPORTANT: A graph system provider's `OutputFormat` should implement the `PersistResultGraphAware` interface which
+GraphFilterAware Interface
+++++++++++++++++++++++++++
+
+<<graph-filter,Graph filters>> by OLAP processors to only pull a subgraph of the full graph from the graph data source. For instance, the
+example below constructs a `GraphFilter` that will only pull the the "knows"-graph amongst people into the `GraphComputer`
+for processing.
+
+[source,java]
+----
+graph.compute().vertices(hasLabel("person")).edges(bothE("knows"))
+----
+
+If the provider has a custom `InputRDD`, they can implement `GraphFilterAware` and that graph filter will be provided to their
+`InputRDD` at load time. For providers that use an `InputFormat`, state but the graph filter can be accessed from the configuration
+as such:
+
+[source,java]
+----
+if (configuration.containsKey(Constants.GREMLIN_HADOOP_GRAPH_FILTER))
+  this.graphFilter = VertexProgramHelper.deserialize(configuration, Constants.GREMLIN_HADOOP_GRAPH_FILTER);
+----
+
+PersistResultGraphAware Interface
++++++++++++++++++++++++++++++++++
+
+A graph system provider's `OutputFormat` should implement the `PersistResultGraphAware` interface which
 determines which persistence options are available to the user. For the standard file-based `OutputFormats` provided
 by Hadoop-Gremlin (e.g. <<gryo-io-format,`GryoOutputFormat`>>, <<graphson-io-format,`GraphSONOutputFormat`>>,
 and <<script-io-format,`ScriptInputOutputFormat`>>) `ResultGraph.ORIGINAL` is not supported as the original graph
@@ -387,6 +414,26 @@
 implementation remotely don't need a full dependency on the entire `Graph` - just the IO components and related
 classes being serialized.
 
+[[remoteconnection-implementations]]
+RemoteConnection Implementations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A `RemoteConnection` is an interface that is important for usage with
+link:http://tinkerpop.apache.org/docs/x.y.z/reference/#connecting-via-remotegraph[RemoteGraph]. A `RemoteGraph` takes
+a `RemoteConnection` implementation and submits constructed traversals to it for processing through a single method:
+
+[source,java]
+public Iterator<Traverser> submit(final Traversal t) throws RemoteConnectionException;
+
+TinkerPop provides the `DriverRemoteConnection` as a useful and example implementation. `DriverRemoteConnection`
+serializes the `Traversal` and then submits it for remote processing on Gremlin Server. Gremlin Server rebinds the
+`Traversal` to a configured `Graph` instance and then iterates the results back as it would normally do.
+
+Implementing `RemoteConnection` is not something routinely done for those implementing `gremlin-core`. It is only
+something required if there is a need to exploit `RemoteGraph` in some way. If a graph provider has a "graph server"
+similar to Gremlin Server that can accept a serialized `Traversal` instance, then that would be one example of a
+reason to implement this interface.
+
 [[validating-with-gremlin-test]]
 Validating with Gremlin-Test
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -739,13 +786,13 @@
 |=========================================================
 
 OpProcessors Arguments
-^^^^^^^^^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~~~~~~~~~
 
 The following sections define a non-exhaustive list of available operations and arguments for embedded `OpProcessors`
 (i.e. ones packaged with Gremlin Server).
 
 Common
-++++++
+^^^^^^
 
 All `OpProcessor` instances support these arguments.
 
@@ -756,7 +803,7 @@
 |=========================================================
 
 Standard OpProcessor
-++++++++++++++++++++
+^^^^^^^^^^^^^^^^^^^^
 
 The "standard" `OpProcessor` handles requests for the primary function of Gremlin Server - executing Gremlin.
 Requests made to this `OpProcessor` are "sessionless" in the sense that a request must encapsulate the entirety
@@ -798,7 +845,7 @@
 |=========================================================
 
 Session OpProcessor
-+++++++++++++++++++
+^^^^^^^^^^^^^^^^^^^
 
 The "session" `OpProcessor` handles requests for the primary function of Gremlin Server - executing Gremlin. It is
 like the "standard" `OpProcessor`, but instead maintains state between sessions and allows the option to leave all
@@ -853,7 +900,7 @@
 |=========================================================
 
 Authentication
-^^^^^^^^^^^^^^
+~~~~~~~~~~~~~~
 
 Gremlin Server supports link:https://en.wikipedia.org/wiki/Simple_Authentication_and_Security_Layer[SASL-based]
 authentication.  A SASL implementation provides a series of challenges and responses that a driver must comply with
diff --git a/docs/src/recipes/between-vertices.asciidoc b/docs/src/recipes/between-vertices.asciidoc
new file mode 100644
index 0000000..021e85b
--- /dev/null
+++ b/docs/src/recipes/between-vertices.asciidoc
@@ -0,0 +1,115 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+////
+[[between-vertices]]
+Between Vertices
+----------------
+
+It is quite common to have a situation where there are two particular vertices of a graph and a need to execute some
+traversal on the paths found between them. Consider the following examples:
+
+[gremlin-groovy,modern]
+----
+g.V(1).bothE()                                   <1>
+g.V(1).bothE().where(otherV().hasId(2))          <2>
+v1 = g.V(1).next();[]
+v2 = g.V(2).next();[]
+g.V(v1).bothE().where(otherV().is(v2))           <3>
+g.V(v1).outE().where(inV().is(v2))               <4>
+g.V(1).outE().where(inV().has(id, within(2,3)))  <5>
+g.V(1).out().where(__.in().hasId(6))             <6>
+----
+
+<1> There are three edges from the vertex with the identifier of "1".
+<2> Filter those three edges using the `where()` step using the identifier of the vertex returned by `otherV()` to
+ensure it matches on the vertex of concern, which is the one with an identifier of "2".
+<3> Note that the same traversal will work if there are actual `Vertex` instances rather than just vertex identiers.
+<4> The vertex with identifier "1" has all outgoing edges, so it would also be acceptable to use the directional steps
+of `outE()` and `inV()` since the schema allows it.
+<5> There is also no problem with filtering the terminating side of the traversal on multiple vertices, in this case,
+vertices with identifiers "2" and "3".
+<6> There's no reason why the same pattern of exclusion used for edges with `where()` can't work for a vertex between
+two vertices.
+
+The basic pattern of using `where()` step to find the "other" known vertex can be applied in far more complex
+scenarios. For one such example, consider the following traversal that finds all the paths between a group of defined
+vertices:
+
+[gremlin-groovy,modern]
+----
+ids = [2,4,6].toArray()
+g.V(ids).as("a").
+  repeat(bothE().otherV().simplePath()).times(5).emit(hasId(within(ids))).as("b").
+  filter(select(last,"a","b").by(id).where("a", lt("b"))).
+  path().by().by(label)
+----
+
+For another example, consider the following schema:
+
+image:recipe-job-schema.png[width=750]
+
+Assume that the goal is to find information about a known job and a known person. Specifically, the idea would be
+to extract the known job, the company that created the job, the date it was created by the company and whether or not
+the known person completed an application.
+
+[gremlin-groovy]
+----
+vBob = graph.addVertex(label, "person", "name", "bob")
+vStephen = graph.addVertex(label, "person", "name", "stephen")
+vBlueprintsInc = graph.addVertex(label, "company", "name", "Blueprints, Inc")
+vRexsterLlc = graph.addVertex(label, "company", "name", "Rexster, LLC")
+vBlueprintsJob1 = graph.addVertex(label, "job", "name", "job1")
+vBlueprintsJob2 = graph.addVertex(label, "job", "name", "job2")
+vBlueprintsJob3 = graph.addVertex(label, "job", "name", "job3")
+vRexsterJob1 = graph.addVertex(label, "job", "name", "job4")
+vAppBob1 = graph.addVertex(label, "application", "name", "application1")
+vAppBob2 = graph.addVertex(label, "application", "name", "application2")
+vAppStephen1 = graph.addVertex(label, "application", "name", "application3")
+vAppStephen2 = graph.addVertex(label, "application", "name", "application4")
+vBob.addEdge("completes", vAppBob1)
+vBob.addEdge("completes", vAppBob2)
+vStephen.addEdge("completes", vAppStephen1)
+vStephen.addEdge("completes", vAppStephen2)
+vAppBob1.addEdge("appliesTo", vBlueprintsJob1)
+vAppBob2.addEdge("appliesTo", vBlueprintsJob2)
+vAppStephen1.addEdge("appliesTo", vRexsterJob1)
+vAppStephen2.addEdge("appliesTo", vBlueprintsJob3)
+vBlueprintsInc.addEdge("created", vBlueprintsJob1, "creationDate", "12/20/2015")
+vBlueprintsInc.addEdge("created", vBlueprintsJob2, "creationDate", "12/15/2015")
+vBlueprintsInc.addEdge("created", vBlueprintsJob3, "creationDate", "12/16/2015")
+vRexsterLlc.addEdge("created", vRexsterJob1, "creationDate", "12/18/2015")
+g.V(vRexsterJob1).as('job').
+  inE('created').as('created').
+  outV().as('company').
+  select('job').
+  coalesce(__.in('appliesTo').where(__.in('completes').is(vStephen)),
+           constant(false)).as('application').
+  select('job', 'company', 'created', 'application').
+    by().by().by('creationDate').by()
+g.V(vRexsterJob1, vBlueprintsJob1).as('job').
+  inE('created').as('created').
+  outV().as('company').
+  select('job').
+  coalesce(__.in('appliesTo').where(__.in('completes').is(vBob)),
+           constant(false)).as('application').
+  select('job', 'company', 'created', 'application').
+    by().by().by('creationDate').by()
+----
+
+While the traversals above are more complex, the pattern for finding "things" between two vertices is largely the same.
+Note the use of the `where()` step to terminate the traversers for a specific user. It is embedded in a `coalesce()`
+step to handle situations where the specified user did not complete an application for the specified job and will
+return `false` in those cases.
\ No newline at end of file
diff --git a/docs/src/recipes/centrality.asciidoc b/docs/src/recipes/centrality.asciidoc
new file mode 100644
index 0000000..eeee79d
--- /dev/null
+++ b/docs/src/recipes/centrality.asciidoc
@@ -0,0 +1,168 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+////
+[[centrality]]
+Centrality
+----------
+
+There are many measures of link:https://en.wikipedia.org/wiki/Centrality[centrality] which are meant to help identify
+the most important vertices in a graph. As these measures are common in graph theory, this section attempts to
+demonstrate how some of these different indicators can be calculated using Gremlin.
+
+[[degree-centrality]]
+Degree Centrality
+~~~~~~~~~~~~~~~~~
+
+link:https://en.wikipedia.org/wiki/Centrality#Degree_centrality[Degree centrality] is a measure of the number of
+edges associated to each vertex.
+
+[gremlin-groovy,modern]
+----
+g.V().group().by().by(bothE().count())                <1>
+g.V().group().by().by(inE().count())                  <2>
+g.V().group().by().by(outE().count())                 <3>
+g.V().project("v","degree").by().by(bothE().count())  <4>
+g.V().project("v","degree").by().by(bothE().count()). <5>
+  order().by(select("degree"), decr).
+  limit(4)
+----
+
+<1> Calculation of degree centrality which counts all incident edges on each vertex to include those that are both
+incoming and outgoing.
+<2> Calculation of in-degree centrality which only counts incoming edges to a vertex.
+<3> Calculation of out-degree centrality which only counts outgoing edges from a vertex.
+<4> The previous examples all produce a single `Map` as their output. While that is a desireable output, producing a
+stream of `Map` objects can allow some greater flexibility.
+<5> For example, use of a stream enables use of an ordered limit that can be executed in a distributed fashion in
+OLAP traversals.
+
+NOTE: The link:http://tinkerpop.apache.org/docs/x.y.z/reference/#group-step[group] step takes up to two separate
+link:http://tinkerpop.apache.org/docs/x.y.z/reference/#by-step[by] modulators. The first `by()` tells `group()`
+what the key in the resulting `Map` will be (i.e. the value to group on). In the above examples, the `by()` is empty
+and as a result, the grouping will be on the incoming `Vertex` object itself. The second `by()` is the value to be
+stored in the `Map` for each key.
+
+[[betweeness-centrality]]
+Betweeness Centrality
+~~~~~~~~~~~~~~~~~~~~~
+
+link:https://en.wikipedia.org/wiki/Betweenness_centrality[Betweeness centrality] is a measure of the number of times
+a vertex is found between the <<shortest-path,shortest path>> of each vertex pair in a graph.  Consider the following
+graph for demonstration purposes:
+
+image:betweeness-example.png[width=600]
+
+[gremlin-groovy ]
+----
+a = graph.addVertex('name','a')
+b = graph.addVertex('name','b')
+c = graph.addVertex('name','c')
+d = graph.addVertex('name','d')
+e = graph.addVertex('name','e')
+a.addEdge('next',b)
+b.addEdge('next',c)
+c.addEdge('next',d)
+d.addEdge('next',e)
+g.withSack(0).V().store("x").repeat(both().simplePath()).emit().path(). <1>
+  group().by(project("a","b").by(limit(local, 1)).                      <2>
+                              by(tail(local, 1))).
+          by(order().by(count(local))).                                 <3>
+          select(values).as("shortestPaths").                           <4>
+          select("x").unfold().as("v").                                 <5>
+          select("shortestPaths").                                      <6>
+            map(unfold().filter(unfold().where(eq("v"))).count()).      <7>
+            sack(sum).sack().as("betweeness").        <8>
+          select("v","betweeness")
+----
+
+<1> Defines a Gremlin link:http://tinkerpop.apache.org/docs/x.y.z/reference/#sack-step[sack] with a value of zero,
+which represents the initial betweeness score for each vertex, and traverses on both incoming and outgoing edges
+avoiding <<cycle-detection, cyclic paths>>.
+<2> Group each path by the first and last vertex.
+<3> Reduce the list of paths to the shortest path between the first and last vertex by ordering on their lengths.
+<4> Recall that at this point, there is a `Map` keyed by first and last vertex and with a value of just the shortest
+path. Extract the shortest path with `select(values)`, since that's the only portion required for the remainder of
+the traversal.
+<5> The "x" key contains the list of vertices stored from step 1 - unfold that list into "v" for later use. This step
+will unwrap the vertex that is stored in the `Traverser` as
+link:http://tinkerpop.apache.org/javadocs/x.y.z/full/org/apache/tinkerpop/gremlin/process/traversal/step/util/BulkSet.html[BulkSet]
+so that it can be used directly in the `Traversal`.
+<6> Iterate the set of shortest paths. At this point, it is worth noting that the traversal is iterating each vertex
+in "v" and for each vertex in "v" it is iterating each `Path` in "shortestpaths".
+<7> For each path, transform it to a count of the number of times that "v" from step 5 is encountered.
+<8> Sum the counts for each vertex using `sack()`, normalize the value and label it as the "betweeness" to be the score.
+
+[[closeness-centrality]]
+Closeness Centrality
+~~~~~~~~~~~~~~~~~~~~
+
+link:https://en.wikipedia.org/wiki/Centrality[Closeness centrality] is a measure of the distance of one vertex to all
+other reachable vertices in the graph.
+
+[gremlin-groovy,modern]
+----
+g.withSack(1f).V().repeat(both().simplePath()).emit().path().                    <1>
+  group().by(project("a","b").by(limit(local, 1)).                               <2>
+                              by(tail(local, 1))).
+          by(order().by(count(local))).                                          <3>
+  select(values).unfold().                                                       <4>
+  project("v","length").
+    by(limit(local, 1)).                                                         <5>
+    by(count(local).sack(div).sack()).                                           <6>
+  group().by(select("v")).by(select("length").sum())                             <7>
+----
+
+<1> Defines a Gremlin link:http://tinkerpop.apache.org/docs/x.y.z/reference/#sack-step[sack] with a value of one,
+and traverses on both incoming and outgoing edges avoiding <<cycle-detection, cyclic paths>>.
+<2> Group each path by the first and last vertex.
+<3> Reduce the list of paths to the shortest path between the first and last vertex by ordering on their lengths.
+<4> Recall that at this point, there is a `Map` keyed by first and last vertex and with a value of just the shortest
+path. Extract the shortest path with `select(values)`, since that's the only portion required for the remainder of
+the traversal.
+<5> The first `by()` modulator for `project()` extracts the first vertex in the path.
+<6> The second `by()` modulator for `project()` extracts the path length and divides that distance by the value of
+the `sack()` which was initialized to 1 at the start of the traversal.
+<7> Group the resulting `Map` objects on "v" and sum their lengths to get the centrality score for each.
+
+[[eigenvector-centrality]]
+Eigenvector Centrality
+~~~~~~~~~~~~~~~~~~~~~~
+
+A calculation of link:https://en.wikipedia.org/wiki/Centrality#Eigenvector_centrality[eigenvector centrality] uses the
+relative importance of adjacent vertices to help determine their centrality. In other words, unlike
+<<degree-centrality, degree centrality>> the vertex with the greatest number of incident edges does not necessarily
+give it the highest rank. Consider the following example using the Grateful Dead graph:
+
+[gremlin-groovy]
+----
+graph.io(graphml()).readGraph('data/grateful-dead.xml')
+g.V().repeat(groupCount('m').by('name').out()).times(5).cap('m').                <1>
+  order(local).by(values, decr).limit(local, 10).next()                          <2>
+g.V().repeat(groupCount('m').by('name').out().timeLimit(100)).times(5).cap('m'). <3>
+  order(local).by(values, decr).limit(local, 10).next()
+----
+
+<1> The traversal iterates through each vertex in the graph and for each one repeatedly group counts each vertex that
+passes through using the vertex as the key. The `Map` of this group count is stored in a variable named "m". The
+`out()` traversal is repeated thirty times or until the paths are exhausted. Five iterations should provide enough
+time to converge on a solution. Calling `cap('m')` at the end simply extracts the `Map` side-effect stored in "m".
+<2> The entries in the `Map` are then iterated and sorted with the top ten most central vertices presented as output.
+<3> The previous examples can be expanded on a little bit by including a
+link:http://tinkerpop.apache.org/docs/current/reference/#timelimit-step[time limit]. The `timeLimit()` prevents the
+traversal from taking longer than one hundred milliseconds to execute (the previous example takes considerably longer
+than that). While the answer provided with the `timeLimit()` is not the absolute ranking, it does provide a relative
+ranking that closely matches the absolute one. The use of `timeLimit()` in certain algorithms (e.g. recommendations)
+can shorten the time required to get a reasonable and usable result.
\ No newline at end of file
diff --git a/docs/src/recipes/cycle-detection.asciidoc b/docs/src/recipes/cycle-detection.asciidoc
new file mode 100644
index 0000000..864b760
--- /dev/null
+++ b/docs/src/recipes/cycle-detection.asciidoc
@@ -0,0 +1,61 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+////
+[[cycle-detection]]
+Cycle Detection
+---------------
+
+A cycle occurs in a graph where a path loops back on itself to the originating vertex. For example, in the graph
+depticted below Gremlin could be use to detect the cycle among vertices `A-B-C`.
+
+image:graph-cycle.png[width=250]
+
+[gremlin-groovy]
+----
+vA = graph.addVertex(id, 'a')
+vB = graph.addVertex(id, 'b')
+vC = graph.addVertex(id, 'c')
+vD = graph.addVertex(id, 'd')
+vA.addEdge("knows", vB)
+vB.addEdge("knows", vC)
+vC.addEdge("knows", vA)
+vA.addEdge("knows", vD)
+vC.addEdge("knows", vD)
+g.V().as("a").repeat(out().simplePath()).times(2).
+  where(out().as("a")).path()                          <1>
+g.V().as("a").repeat(out().simplePath()).times(2).
+  where(out().as("a")).path().
+  dedup().by(unfold().order().by(id).dedup().fold())   <2>
+----
+
+<1> Gremlin starts its traversal from a vertex labeled "a" and traverses `out()` from each vertex filtering on the
+`simplePath`, which removes paths with repeated objects. The steps going `out()` are repeated twice as in this case
+the length of the cycle is known to be three and there is no need to exceed that. The traversal filters with a
+`where()` to see only return paths that end with where it started at "a".
+<2> The previous query returned the `A-B-C` cycle, but it returned three paths which were all technically the same
+cycle. It returned three, because there was one for each vertex that started the cycle (i.e. one for `A`, one for `B`
+and one for `C`). This next line introduce deduplication to only return unique cycles.
+
+The above case assumed that the need was to only detect cycles over a path length of three. It also respected the
+directionality of the edges by only considering outgoing ones. What would need to change to detect cycles of
+arbitrary length over both incoming and outgoing edges in the modern graph?
+
+[gremlin-groovy,modern]
+----
+g.V().as("a").repeat(both().simplePath()).emit(loops().is(gt(1))).
+  both().where(eq("a")).path().
+  dedup().by(unfold().order().by(id).dedup().fold())
+----
\ No newline at end of file
diff --git a/docs/src/recipes/if-then-based-grouping.asciidoc b/docs/src/recipes/if-then-based-grouping.asciidoc
new file mode 100644
index 0000000..dc0025f
--- /dev/null
+++ b/docs/src/recipes/if-then-based-grouping.asciidoc
@@ -0,0 +1,71 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+////
+[[if-then-based-grouping]]
+If-Then Based Grouping
+----------------------
+
+Consider the following traversal over the "modern" toy graph:
+
+[gremlin-groovy,modern]
+----
+g.V().hasLabel('person').groupCount().by('age')
+----
+
+The result is an age distribution that simply shows that every "person" in the graph is of a different age. In some
+cases, this result is exactly what is needed, but sometimes a grouping may need to be transformed to provide a
+different picture of the result. For example, perhaps a grouping on the value "age" would be better represented by
+a domain concept such as "young", "old" and "very old".
+
+[gremlin-groovy,modern]
+----
+g.V().hasLabel("person").groupCount().by(values("age").choose(
+  is(lt(28)),constant("young"),
+  choose(is(lt(30)),
+         constant("old"),
+         constant("very old"))))
+----
+
+Note that the `by` modulator has been altered from simply taking a string key of "age" to take a `Traversal`. That
+inner `Traversal` utilizes `choose` which is like an `if-then-else` clause. The `choose` is nested and would look
+like the following in Java:
+
+[source,java]
+----
+if (age < 28) {
+  return "young";
+} else {
+  if (age < 30) {
+    return "old";
+  } else {
+    return "very old";
+  }
+}
+----
+
+The use of `choose` is a good intutive choice for this `Traversal` as it is a natural mapping to `if-then-else`, but
+there is another option to consider with `coalesce`:
+
+[gremlin-groovy,modern]
+----
+g.V().hasLabel("person").
+  groupCount().by(values("age").
+  coalesce(is(lt(28)).constant("young"),
+           is(lt(30)).constant("old"),
+           constant("very old")))
+----
+
+The answer is the same, but this traversal removes the nested `choose`, which makes it easier to read.
\ No newline at end of file
diff --git a/docs/src/recipes/index.asciidoc b/docs/src/recipes/index.asciidoc
new file mode 100644
index 0000000..01a1209
--- /dev/null
+++ b/docs/src/recipes/index.asciidoc
@@ -0,0 +1,123 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+////
+image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]
+
+*x.y.z*
+
+:toc-position: left
+
+Recipes
+=======
+
+image:gremlin-chef.png[width=120,float=left] All programming languages tend to have
+link:https://en.wikipedia.org/wiki/Software_design_pattern[patterns of usage] for commonly occurring problems. Gremlin
+is not different in that respect. There are many commonly occurring traversal themes that have general applicability
+to any graph. Gremlin Recipes present these common traversal patterns and methods of usage that will
+provide some basic building blocks for virtually any graph in any domain.
+
+Recipes assume general familiarity with Gremlin and the TinkerPop stack. Be sure to have read the
+link:http://tinkerpop.apache.org/docs/x.y.z/tutorials/getting-started[Getting Started] tutorial and the
+link:http://tinkerpop.apache.org/docs/x.y.z/tutorials/the-gremlin-console/[The Gremlin Console] tutorial.
+
+Traversal Recipes
+=================
+
+include::between-vertices.asciidoc[]
+
+include::shortest-path.asciidoc[]
+
+include::if-then-based-grouping.asciidoc[]
+
+include::cycle-detection.asciidoc[]
+
+include::centrality.asciidoc[]
+
+Implementation Recipes
+======================
+
+include::style-guide.asciidoc[]
+
+include::traversal-component-reuse.asciidoc[]
+
+[[contributing]]
+How to Contribute a Recipe
+==========================
+
+Recipes are generated under the same system as all TinkerPop documentation and is stored directly in the source code
+repository. TinkerPop documentation is all link:http://asciidoc.org/[asciidoc] based and can be generated locally with
+either link:http://tinkerpop.apache.org/docs/x.y.z/dev/developer/#building-testing[shell script/Maven] or
+link:http://tinkerpop.apache.org/docs/x.y.z/dev/developer/#docker-integration[Docker] build commands. Once
+changes are complete, submit a pull request for review by TinkerPop committers.
+
+NOTE: Please review existing recipes and attempt to conform to their writing and visual style. It may also be a good
+idea to discuss ideas for a recipe on the link:https://lists.apache.org/list.html?dev@tinkerpop.apache.org[developer mailing list]
+prior to starting work on it, as the community might provide insight on the approach and idea that would be helpful.
+It is preferable that a link:issues.apache.org/jira/browse/TINKERPOP[JIRA issue] be opened that describes the nature
+of the recipe so that the eventual pull request can be bound to that issue.
+
+To contribute a recipe, first clone the repository:
+
+[source, shell]
+git clone https://github.com/apache/tinkerpop.git
+
+The recipes can be found in this directory:
+
+[source, shell]
+ls docs/src/recipes
+
+Each recipe exists within a separate `.asciidoc` file.  The file name should match the name of the recipe. Recipe names
+should be short, but descriptive (as they need to fit in the left-hand table of contents when generated). The
+`index.asciidoc` is the parent document that "includes" the content of each individual recipe file. A recipe file is
+included in the `index.asciidoc` with an entry like this: `include::my-recipe.asciidoc[]`
+
+Documentation should be generated locally for review prior to submitting a pull request. TinkerPop documentation is
+"live" in that it is bound to a specific version when generated. Furthermore, code examples (those that are
+`gremlin-groovy` based) are executed at document generation time with the results written directly into the output.
+The following command will generate the documentation with:
+
+[source,shell]
+bin/process-docs.sh
+
+The generated documentation can be found at `target/docs/htmlsingle/recipes`. This process can be long on the first
+run of the documentation as it is generating all of the documentation locally (e.g. reference documentation,
+tutorials, etc). To generate just the recipes, follow this process:
+
+[source,shell]
+bin/process-docs.sh --dryRun               <1>
+rm -r target/postprocess-asciidoc/recipes  <2>
+bin/process-docs.sh                        <3>
+
+<1> That command will quickly generate all of the documentation, but it does not do the code example execution (which is
+the "slow" part).
+<2> Delete the recipes directory, which forces a fresh copy of the recipes to be generated.
+<3> Process all of the documentation that is "new" (i.e. the fresh copy of recipes).
+
+The `bin/process-docs.sh` approach requires that Hadoop is installed. To avoid that prerequisite, try using Docker:
+
+[source,shell]
+docker/build.sh -d
+
+The downside to using Docker is that the process will take longer as each run will require the entire documentation set
+to be generated.
+
+The final step to submitting a recipe is to issue a link:https://help.github.com/articles/using-pull-requests/[pull request through GitHub].
+It is helpful to prefix the name of the pull request with the JIRA issue number, so that TinkerPop's automation between
+GitHub and JIRA are linked.  As mentioned earlier in this section, the recipe will go under review by TinkerPop
+committers prior to merging. This process may take several days to complete. We look forward to receiving your
+submissions!
+
+
diff --git a/docs/src/recipes/shortest-path.asciidoc b/docs/src/recipes/shortest-path.asciidoc
new file mode 100644
index 0000000..3f380f1
--- /dev/null
+++ b/docs/src/recipes/shortest-path.asciidoc
@@ -0,0 +1,104 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+////
+[[shortest-path]]
+Shortest Path
+-------------
+
+image:shortest-path.png[width=300]
+
+When working with a graph, it is often necessary to identify the
+link:https://en.wikipedia.org/wiki/Shortest_path_problem[shortest path] between two identified vertices. The following
+is a simple example that identifies the shortest path between vertex "1" and vertex "5" while traversing over out edges:
+
+[gremlin-groovy]
+----
+graph = TinkerGraph.open()
+v1 = graph.addVertex(T.id, 1)
+v2 = graph.addVertex(T.id, 2)
+v3 = graph.addVertex(T.id, 3)
+v4 = graph.addVertex(T.id, 4)
+v5 = graph.addVertex(T.id, 5)
+v1.addEdge("knows", v2)
+v2.addEdge("knows", v4)
+v4.addEdge("knows", v5)
+v2.addEdge("knows", v3)
+v3.addEdge("knows", v4)
+g = graph.traversal()
+g.V(1).repeat(out().simplePath()).until(hasId(5)).path().limit(1)     <1>
+g.V(1).repeat(out().simplePath()).until(hasId(5)).path().count(local) <2>
+g.V(1).repeat(out().simplePath()).until(hasId(5)).path().
+  group().by(count(local)).next()                                     <3>
+----
+
+<1> The traversal starts at vertex with the identifier of "1" and repeatedly traverses on out edges "until" it finds a
+vertex with an identifier of "5". The inclusion of `simplePath` within the `repeat` is present to filter out repeated
+paths. The traversal terminates with `limit` in this case as the first path returned will be the shortest one. Of
+course, it is possible for there to be more than one path in the graph of the same length (i.e. two or more paths of
+length three), but this example is not considering that.
+<2> It might be interesting to know the path lengths for all paths between vertex "1" and "5".
+<3> Alternatively, one might wish to do a path length distribution over all the paths.
+
+The previous example defines the length of the path by the number of vertices in the path, but the "path" might also
+be measured by data within the graph itself. The following example use the same graph structure as the previous example,
+but includes a "weight" on the edges, that will be used to help determine the "cost" of a particular path:
+
+[gremlin-groovy]
+----
+graph = TinkerGraph.open()
+v1 = graph.addVertex(T.id, 1)
+v2 = graph.addVertex(T.id, 2)
+v3 = graph.addVertex(T.id, 3)
+v4 = graph.addVertex(T.id, 4)
+v5 = graph.addVertex(T.id, 5)
+v1.addEdge("knows", v2, "weight", 1.25)
+v2.addEdge("knows", v4, "weight", 1.5)
+v4.addEdge("knows", v5, "weight", 0.25)
+v2.addEdge("knows", v3, "weight", 0.25)
+v3.addEdge("knows", v4, "weight", 0.25)
+g = graph.traversal()
+g.V(1).repeat(out().simplePath()).until(hasId(5)).path().
+  group().by(count(local)).next()                                                         <1>
+g.V(1).repeat(outE().inV().simplePath()).until(hasId(5)).
+  path().by(coalesce(values('weight'),
+                     constant(0.0))).
+  map(unfold().sum())                                                                     <2>
+g.V(1).repeat(outE().inV().simplePath()).until(hasId(5)).
+  path().by(constant(0.0)).by('weight').map(unfold().sum())                               <3>
+g.V(1).repeat(outE().inV().simplePath()).until(hasId(5)).
+  path().as('p').
+  map(unfold().coalesce(values('weight'),
+                        constant(0.0)).sum()).as('cost').
+  select('cost','p')                                                                      <4>
+----
+
+<1> Note that the shortest path as determined by the structure of the graph is the same.
+<2> Calculate the "cost" of the path as determined by the weight on the edges. As the "weight" data is on the edges
+between the vertices, it is necessary to change the contents of the `repeat` step to use `outE().inV()` so that the
+edge is included in the path. The path is then post-processed with a `by` modulator that extracts the "weight" value.
+The traversal uses `coalesce` as there is a mixture of vertices and edges in the path and the traversal is only
+interested in edge elements that can return a "weight" property. The final part of the traversal executes a map
+function over each path, unfolding it and summing the weights.
+<3> The same traversal as the one above it, but avoids the use of `coalesce` with the use of two `by` modulators. The
+`by` modulator is applied in a round-robin fashion, so the first `by` will always apply to a vertex (as it is the first
+item in every path) and the second `by` will always apply to an edge (as it always follows the vertex in the path).
+<4> The output of the previous examples of the "cost" wasn't terribly useful as it didn't include which path had the
+calculated cost. With some slight modifications given the use of `select` it becomes possible to include the path in
+the output. Note that the path with the lowest "cost" actually has a longer path length as determined by the graph
+structure.
+
+
+
diff --git a/docs/src/recipes/style-guide.asciidoc b/docs/src/recipes/style-guide.asciidoc
new file mode 100644
index 0000000..14cbad9
--- /dev/null
+++ b/docs/src/recipes/style-guide.asciidoc
@@ -0,0 +1,81 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+////
+[[style-guide]]
+Style Guide
+-----------
+
+Gremlin is a data flow language where each new step concatenation alters the stream accordingly. This aspect of the
+language allows users to easily "build-up" a traversal (literally) step-by-step until the expected results are
+returned. For instance:
+
+[gremlin-groovy,modern]
+----
+g.V(1)
+g.V(1).out('knows')
+g.V(1).out('knows').out('created')
+g.V(1).out('knows').out('created').groupCount()
+g.V(1).out('knows').out('created').groupCount().by('name')
+----
+
+A drawback of building up a traversal is that users tend to create long, single line traversal that are hard to read.
+For simple traversals, a single line is fine. For complex traversals, there are few formatting patterns that should be followed
+which will yield cleaner, easier to understand traversals. For instance, the last traversal above would be written:
+
+[gremlin-groovy,modern]
+----
+g.V(1).out('knows').out('created').
+  groupCount().by('name')
+----
+
+Lets look at a complex traversal and analyze each line according to the recommended formatting rule is subscribes to.
+
+[gremlin-groovy,modern]
+----
+g.V().out('knows').out('created').  <1>
+  group().by('lang').by().          <2>
+    select('java').unfold().        <3>
+  in('created').hasLabel('person'). <4>
+  order().                          <5>
+    by(inE().count(),decr).         <6>
+    by('age',incr).
+  dedup().limit(10).values('name')  <7>
+----
+
+
+<1> A sequence of `ins().outs().filters().etc()` on a single line until it gets too long.
+<2> When a barrier (reducer, aggregator, etc.) is used, put it on a new line.
+<3> When a next line component is an "add on" to the previous line component, 2 space indent.
+The `select()`-step in this context is "almost like" a `by()`-modulator as its projecting data out of the `group()`.
+The `unfold()`-step is a data formatting necessity that should not be made too prominent.
+<4> Back to a series of `ins().outs().filters().etc()` on a single line.
+<5> `order()` is a barrier step and thus, should be on a new line.
+<6> If there is only one `by()`-modulator (or a series of short ones), keep it on one line, else each `by()` is a new line.
+<7> Back to a series `ins().outs().filters().etc()`.
+
+Style Guide Rules
+~~~~~~~~~~~~~~~~~
+
+A generalization of the specifics above are presented below.
+
+* Always use 2 space indent.
+* No newline should ever have the same indent as the line starting with the traversal source `g`.
+* Barrier steps should form line breaks unless they are simple (e.g. `sum()`).
+* Complex `by()`-modulators form indented "paragraphs."
+* Standard filters, maps, flatMaps remain on the same line until they get too long.
+
+Given the diversity of traversals and the complexities introduced by lambdas (for example), these rules will not always
+lead to optimal representations. However, by in large, the style rules above will help make 90% of traversals look great.
diff --git a/docs/src/recipes/traversal-component-reuse.asciidoc b/docs/src/recipes/traversal-component-reuse.asciidoc
new file mode 100644
index 0000000..2b65644
--- /dev/null
+++ b/docs/src/recipes/traversal-component-reuse.asciidoc
@@ -0,0 +1,71 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+////
+[[traversal-component-reuse]]
+Traversal Component Reuse
+-------------------------
+
+Good software development practices require reuse to keep software maintainable. In Gremlin, there are often bits of
+traversal logic that could be represented as components that might be tested independently and utilized
+as part of other traversals. One approach to doing this would be to extract such logic into an anonymous traversal
+and provide it to a parent traversal through `flatMap()` step.
+
+Using the modern toy graph as an example, assume that there are number of traversals that are interested in filtering
+on edges where the "weight" property is greater than "0.5". A query like that might look like this:
+
+[gremlin-groovy,modern]
+----
+g.V(1).outE("knows").has('weight', P.gt(0.5d)).inV().both()
+----
+
+Repeatedly requiring that filter on "weight" could lead to a lot of duplicate code, which becomes difficult to
+maintain. It would be nice to extract that logic so as to centralize it for reuse in all places where needed. An
+anonymous traversal allows that to happen and can be created as follows.
+
+[gremlin-groovy,modern]
+----
+weightFilter = outE("knows").has('weight', P.gt(0.5d)).inV();[]
+g.V(1).flatMap(weightFilter).both()
+----
+
+The `weightFilter` is an anonymous traversal and it is created by way `__` class. The `__` is omitted above from
+initalization of `weightFilter` because it is statically imported to the Gremlin Console. The `weightFilter` gets
+passed to the "full" traversal by way for `flatMap()` step and the results are the same. Of course, there is a problem.
+If there is an attempt to use that `weightFilter` a second time, the traversal with thrown an exception because both
+the `weightFilter` and parent traversal have been "compiled" which prevents their re-use. A simple fix to this would
+be to clone the `weightFilter`.
+
+[gremlin-groovy,modern]
+----
+weightFilter = outE("knows").has('weight', P.gt(0.5d)).inV();[]
+g.V(1).flatMap(weightFilter.clone()).both()
+g.V(1).flatMap(weightFilter.clone()).bothE().otherV()
+g.V(1).flatMap(weightFilter.clone()).groupCount()
+----
+
+Now the `weightFilter` can be reused over and over again. Remembering to `clone()` might lead to yet another maintenance
+issue in that failing to recall that step would likely result in a bug. One option might be to wrap the `weightFilter`
+creation in a function that returns the clone. Another approach might be to parameterize that function to construct
+a new anonymous traversal each time with the idea being that this might gain even more flexibility in parameterizing
+the anonymous traversal itself.
+
+[gremlin-groovy,modern]
+----
+weightFilter = { w -> outE("knows").has('weight', P.gt(w)).inV() }
+g.V(1).flatMap(weightFilter(0.5d)).both()
+g.V(1).flatMap(weightFilter(0.5d)).bothE().otherV()
+g.V(1).flatMap(weightFilter(0.5d)).groupCount()
+----
\ No newline at end of file
diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc
index 488663f..2b85cb0 100644
--- a/docs/src/reference/gremlin-applications.asciidoc
+++ b/docs/src/reference/gremlin-applications.asciidoc
@@ -106,7 +106,7 @@
 The Gremlin Console is loaded and ready for commands. Recall that the console hosts the Gremlin-Groovy language.
 Please review link:http://groovy.codehaus.org/[Groovy] for help on Groovy-related constructs. In short, Groovy is a
 superset of Java. What works in Java, works in Groovy. However, Groovy provides many shorthands to make it easier
-to interact with the Java API.  Moreoever, Gremlin provides many neat shorthands to make it easier to express paths
+to interact with the Java API.  Moreover, Gremlin provides many neat shorthands to make it easier to express paths
 through a property graph.
 
 [gremlin-groovy]
@@ -121,7 +121,7 @@
 
 [gremlin-groovy]
 ----
-g = TinkerFactory.createModern().traversal(standard())
+g = TinkerFactory.createModern().traversal()
 g.V()
 g.V().values('name')
 g.V().has('name','marko').out('knows').values('name')
@@ -220,24 +220,22 @@
 contains the class names of the "active" plugins.  It is also possible to clear dependencies added by `:install` by
 deleting them from the `ext` directory.
 
-Script Executor
-~~~~~~~~~~~~~~~
+[[execution-mode]]
+Execution Mode
+~~~~~~~~~~~~~~
 
-For automated tasks and batch executions of Gremlin, it can be useful to execute Gremlin scripts from the command
-line.  Consider the following file named `gremlin.groovy`:
+For automated tasks and batch executions of Gremlin, it can be useful to execute Gremlin scripts in "execution" mode
+from the command line.  Consider the following file named `gremlin.groovy`:
 
 [source,groovy]
 ----
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.*
 graph = TinkerFactory.createModern()
 g = graph.traversal()
 g.V().each { println it }
 ----
 
-This script creates the toy graph and then iterates through all its vertices printing each to the system out.  Note
-that under this approach, "imports" need to be explicitly defined (except for "core" TinkerPop classes).  In addition,
-plugins and other dependencies should already be "installed" via console commands which cannot be used with this mode
-of execution.  To execute this script from the command line, `gremlin.sh` has the `-e` option used as follows:
+This script creates the toy graph and then iterates through all its vertices printing each to the system out.  To
+execute this script from the command line, `gremlin.sh` has the `-e` option used as follows:
 
 [source,bash]
 ----
@@ -257,7 +255,6 @@
 
 [source,groovy]
 ----
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.*
 graph = TinkerFactory.createModern()
 g = graph.traversal()
 g.V().has('name',args[0]).each { println it }
@@ -273,10 +270,49 @@
 v[2]
 ----
 
-NOTE: The `ScriptExecutor` is for Gremlin Groovy scripts only.  It is not possible to include Console plugin commands
-such as `:remote` or `:>` when using `-e` in these scripts. That does not mean that it is impossible to script such
-commands, it just means that they need to be scripted manually.  For example, instead of trying to use the `:remote`
-command, manually construct a <<connecting-via-java,Gremlin Driver>> `Client` and submit scripts from there.
+[[interactive-mode]]
+Interactive Mode
+~~~~~~~~~~~~~~~~
+
+The Gremlin Console can be started in an "interactive" mode. Interactive mode is like <<execution-mode, execution mode>>
+but the console will not exit at the completion of the script, even if the script completes unsuccessfully. In such a
+case, it will simply stop processing on the line that of the script that failed. In this way the state of the console
+is such that a user could examine the state of things up to the point of failure which might make the script easier to
+debug.
+
+In addition to debugging, interactive mode is a helpful way for users to initialize their console environment to
+avoid otherwise repetitive typing. For example, a user who spends a lot of time working with the TinkerPop "modern"
+graph might create a script called `init.groovy` like:
+
+[source,groovy]
+----
+graph = TinkerFactory.createModern()
+g = graph.traversal()
+----
+
+and then start Gremlin Console as follows:
+
+[source,text]
+----
+$ bin/gremlin.sh -i init.groovy
+
+         \,,,/
+         (o o)
+-----oOOo-(3)-oOOo-----
+plugin activated: tinkerpop.server
+plugin activated: tinkerpop.utilities
+plugin activated: tinkerpop.tinkergraph
+gremlin> g.V()
+==>v[1]
+==>v[2]
+==>v[3]
+==>v[4]
+==>v[5]
+==>v[6]
+----
+
+Note that the user can now reference `g` (and `graph` for that matter) at startup without having to directly type that
+variable initialization code into the console.
 
 [[gremlin-server]]
 Gremlin Server
@@ -771,6 +807,87 @@
 quite possible that such a script will generate `OutOfMemoryError` exceptions on the server.  Consider the default
 WebSockets configuration, which supports streaming, if that type of use case is required.
 
+[[connecting-via-remotegraph]]
+Connecting via RemoteGraph
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+[source,xml]
+----
+<dependency>
+   <groupId>org.apache.tinkerpop</groupId>
+   <artifactId>gremlin-driver</artifactId>
+   <version>x.y.z</version>
+</dependency>
+----
+
+image:remote-graph.png[width=145,float=left] `RemoteGraph` is a lightweight `Graph` implementation that acts as a
+proxy for sending traversals to Gremlin Server for remote execution. It is not a "full" implementation like
+`TinkerGraph` or `Neo4jGraph`, in that most of its methods are not implemented. For example, calls to most methods
+like, `addVertex()` or `edges()` will result in an `UnsupportedOperationException`. The only method used on
+`RemoteGraph` is `traversal()`, which generates a `GraphTraversalSource` that includes a `RemoteStrategy`. The
+`RemoteStrategy` submits takes traversals constructed from it, serializes them and submits them to Gremlin Server
+and the results are returned as though working with the `Graph` instance in embedded mode.
+
+`RemoteGraph` is an interesting alternative to the other methods for connecting to Gremlin Server in that all other
+methods involved construction of a `String` representation of the `Traversal` which is then submitted as a script
+to Gremlin Server (via driver or REST). This approach is quite akin to SQL, where query strings are embedded into code
+and submitted to a database server. While there are patterns for taking this approach that can lead to maintainable
+application code, using `RemoteGraph` could be a better method as it brings some good benefits with it:
+
+* Get auto-complete when writing traversals in an IDE.
+* Get compile-time errors in traversal writing.
+* Get the feel of working with an embedded database.
+
+One way to create a `RemoteGraph` instance is by configuration file. Here is an example of what that file looks like:
+
+[source,properties]
+----
+gremlin.remoteGraph.remoteConnectionClass=org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection
+gremlin.remoteGraph.driver.clusterFile=conf/remote-objects.yaml
+gremlin.remoteGraph.driver.graphName=graph
+----
+
+The `gremlin.remoteGraph.remoteConnectionClass` should be an implementation of the `RemoteConnection` interface in
+`gremlin-core`. In this case, it points at the `gremlin-driver` implementation, called `DriverRemoteConnection`. The
+other setting, `gremlin.remoteGraph.driver.clusterFile`, is a configuration to `DriverRemoteConnection`, and it
+provides a pointer to the config file to use to construct a `gremlin-driver` `Cluster` object to be utilized when
+connecting to Gremlin Server. Please see the <<connecting-via-java, "Connecting Via Java">> section for more
+information on those classes and their usage. Finally, the `gremlin.remoteGraph.driver.graphName` setting tells the
+`DriverRemoteConnection` the name of the graph in Gremlin Server to connect to.
+
+Gremlin Server needs to be running for this example to work. Use the following configuration:
+
+[source,bourne]
+$ bin/gremlin-server.sh conf/gremlin-server-modern.yaml
+
+`RemoteGraph` can be demonstrated in the Gremlin Console just like any other `Graph` instance:
+
+[gremlin-groovy]
+----
+graph = RemoteGraph.open('conf/remote-graph.properties')
+g = graph.traversal()
+g.V().valueMap(true)
+----
+
+If working with multiple `RemoteGraph` instances it is more efficient to construct your own `Cluster` object and
+re-use it.
+
+[gremlin-groovy]
+----
+cluster = Cluster.open('conf/remote-objects.yaml')
+graph = RemoteGraph.open(DriverRemoteConnection.using(cluster, "graph"))
+g = graph.traversal()
+g.V().valueMap(true)
+graph.close()
+cluster.close()
+----
+
+If the `Cluster` instance is supplied externally, as is shown above, then it is not closed implicitly by the close of
+the `RemoteGraph`.  In this case, the `Cluster` must be closed explicitly.
+
+WARNING: `RemoteGraph` does not support steps that use lambdas in the `Traversal`. Lambda expressions are not
+serializable and therefore can't be remotely executed.
+
 Configuring
 ~~~~~~~~~~~
 
@@ -847,7 +964,6 @@
 |serializers |A `List` of `Map` settings, where each `Map` represents a `MessageSerializer` implementation to use along with its configuration. |_none_
 |serializers[X].className |The full class name of the `MessageSerializer` implementation. |_none_
 |serializers[X].config |A `Map` containing `MessageSerializer` specific configurations. |_none_
-|serializedResponseTimeout |The amount of time in milliseconds before a response serialization times out.  The notion of "response serialization" refers to the time it takes for Gremlin Server to iterate an entire result after the script is evaluated in the `ScriptEngine`. |30000
 |ssl.enabled |Determines if SSL is turned on or not. |false
 |ssl.keyCertChainFile |The X.509 certificate chain file in PEM format. If this value is not present and `ssl.enabled` is `true` a self-signed certificate will be used (not suitable for production). |_none_
 |ssl.keyFile |The `PKCS#8` private key file in PEM format. If this value is not present and `ssl.enabled` is `true` a self-signed certificate will be used (not suitable for production). |_none_
@@ -866,8 +982,8 @@
 link:http://repo1.maven.org/maven2/org/acplt/oncrpc/1.0.7/[here] and copy it to the Gremlin Server `/lib` directory
 before starting the server.
 
-Security
-^^^^^^^^
+Security and Execution
+^^^^^^^^^^^^^^^^^^^^^^
 
 image:gremlin-server-secure.png[width=175,float=right] Gremlin Server provides for several features that aid in the
 security of the graphs that it exposes.  It has built in SSL support and a pluggable authentication framework using
@@ -1038,6 +1154,7 @@
 |=========================================================
 |Customizer |Description
 |`CompileStaticCustomizerProvider` |Applies `CompileStatic` annotations to incoming scripts thus removing dynamic dispatch. More information about static compilation can be found in the link:http://docs.groovy-lang.org/latest/html/documentation/#_static_compilation[Groovy Documentation].  It is possible to configure this `CustomizerProvider` by specifying a comma separated list of link:http://docs.groovy-lang.org/latest/html/documentation/#Typecheckingextensions-Workingwithextensions[type checking extensions] that can have the effect of securing calls to various methods.
+|`ConfigurationCustomizerProvider` |Allows configuration of the the Groovy `CompilerConfiguration` object by taking a `Map` of key/value pairs where the "key" is a property to set on the `CompilerConfiguration`.
 |`ThreadInterruptCustomizerProvider` |Injects checks for thread interruption, thus allowing the thread to potentially respect calls to `Thread.interrupt()`
 |`TimedInterruptCustomizerProvider` |Injects checks into loops to interrupt them if they exceed the configured timeout in milliseconds.
 |`TypeCheckedCustomizerProvider` |Similar to the above mentioned, `CompileStaticCustomizerProvider`, the `TypeCheckedCustomizerProvider` injects `TypeChecked` annotations to incoming scripts.  More information on the nature of this annotation can be found in the link:http://docs.groovy-lang.org/latest/html/documentation/#_the_code_typechecked_code_annotation[Groovy Documentation].  It too takes a comma separated list of link:http://docs.groovy-lang.org/latest/html/documentation/#Typecheckingextensions-Workingwithextensions[type checking extensions].
@@ -1249,6 +1366,9 @@
 * `op.eval` - the number of script evaluations, mean rate, 1, 5, and 15 minute rates, minimum, maximum, median, mean,
 and standard deviation evaluation times, as well as the 75th, 95th, 98th, 99th and 99.9th percentile evaluation times
 (note that these time apply to both sessionless and in-session requests).
+* `op.traversal` - the number of `Traveral` executions, mean rate, 1, 5, and 15 minute rates, minimum, maximum, median,
+mean, and standard deviation evaluation times, as well as the 75th, 95th, 98th, 99th and 99.9th percentile evaluation
+times.
 
 Best Practices
 ~~~~~~~~~~~~~~
@@ -1271,20 +1391,21 @@
 ** If the bulk of the scripts being processed are expected to be "fast", then a good starting point for this setting is `2*threadPoolWorker`.
 ** If the bulk of the scripts being processed are expected to be "slow", then a good starting point for this setting is `4*threadPoolWorker`.
 * Scripts that are "slow" can really hurt Gremlin Server if they are not properly accounted for.  `ScriptEngine`
-evaluations are blocking operations that aren't easily interrupted, so once a "slow" script is being evaluated in
+evaluations are blocking operations that aren't always easily interrupted, so once a "slow" script is being evaluated in
 the context of a `ScriptEngine` it must finish its work.  Lots of "slow" scripts will eventually consume the
 `gremlinPool` preventing other scripts from getting processed from the queue.
-** To limit the impact of this problem consider properly setting the `scriptEvaluationTimeout` and the `serializedResponseTimeout` to something "sane".
-** Test the traversals being sent to Gremlin Server and determine the maximum time they take to evaluate and iterate
-over results, then set these configurations accordingly.
-** Note that `scriptEvaluationTimeout` does not interrupt the evaluation on timeout.  It merely allows Gremlin Server
-to "ignore" the result of that evaluation, which means the thread in the `gremlinPool` will still be consumed after
-the timeout.
-** The `serializedResponseTimeout` will kill the result iteration process and prevent additional processing.  In most
-situations, the iteration and serialization process is the more costly step in this process as an errant script that
-returns a million or more results could send Gremlin Server into a long streaming cycle.  Script evaluation on the
-other hand is usually very fast, occurring on the order of milliseconds, but that is entirely dependent on the
-contents of the script itself.
+** To limit the impact of this problem, consider properly setting the `scriptEvaluationTimeout` to something "sane".
+In other words, test the traversals being sent to Gremlin Server and determine the maximum time they take to evaluate
+and iterate over results, then set the timeout value accordingly.
+** Note that `scriptEvaluationTimeout` can only attempt to interrupt the evaluation on timeout.  It allows Gremlin
+Server to "ignore" the result of that evaluation, which means the thread in the `gremlinPool` that did the evaluation
+may still be consumed after the timeout.
+* Graph element serialization for `Vertex` and `Edge` can be expensive, as their data structures are complex given the
+possible existence of multi-properties and meta-properties. When returning data from Gremlin Server only return the
+data that is required. For example, if only two properties of a `Vertex` are needed then simply return the two rather
+than returning the entire `Vertex` object itself. Even with an entire `Vertex`, it is typically much faster to issue
+the query as `g.V(1).valueMap(true)` than `g.V(1)`, as the former returns a `Map` of the same data as a `Vertex`, but
+without all the associated structure which can slow the response.
 
 [[parameterized-scripts]]
 Parameterized Scripts
@@ -1517,18 +1638,18 @@
 Gephi Plugin
 ~~~~~~~~~~~~
 
-image:gephi-logo.png[width=200, float=left] link:http://gephi.github.io/[Gephi] is an interactive visualization,
-exploration, and analysis platform for graphs. The link:https://marketplace.gephi.org/plugin/graph-streaming/[Graph Streaming]
-plugin for Gephi provides an link:https://wiki.gephi.org/index.php/Graph_Streaming[API] that can be leveraged to
-stream graphs and visualize traversals interactively through the Gremlin Gephi Plugin.
+image:gephi-logo.png[width=200, float=left] link:http://gephi.org/[Gephi] is an interactive visualization,
+exploration, and analysis platform for graphs. The link:https://gephi.org/plugins/#/plugin/graphstreaming[Graph Streaming]
+plugin for Gephi provides an API that can be leveraged to stream graph data to a running Gephi application. The Gephi
+plugin for Gremlin Console utilizes this API to allow for graph and traversal visualization.
 
-The following instructions assume that Gephi has been download and installed.  It further assumes that the Graph
-Streaming plugin has been installed (`Tools > Plugins`). The following instructions explain how to visualize a `Graph`
-and `Traversal`.
+The Gephi plugin for Gremlin Console is compatible with Gephi 0.9.x. The following instructions assume that Gephi
+has been download and installed.  It further assumes that the Graph Streaming plugin has been installed
+(`Tools > Plugins`). The following instructions explain how to visualize a `Graph` and `Traversal`.
 
 In Gephi, create a new project with `File > New Project`.  In the lower left view, click the "Streaming" tab, open the
 Master drop down, and right click `Master Server > Start` which starts the Graph Streaming server in Gephi and by
-default accepts requests at `http://localhost:8080/workspace0`:
+default accepts requests at `http://localhost:8080/workspace1`:
 
 image::gephi-start-server.png[width=800]
 
@@ -1573,12 +1694,15 @@
 :remote config visualTraversal graph                   <1>
 traversal = vg.V(2).in().out('knows').
                     has('age',gt(30)).outE('created').
-                    has('weight',gt(0.5d)).inV();null
-:> traversal                                           <2>
+                    has('weight',gt(0.5d)).inV();[]    <2>
+:> traversal                                           <3>
 ----
 
-<1> Configure a "visual traversal" from your "graph" - this must be a `Graph` instance.
-<2> Submit the `Traversal` to visualize to Gephi.
+<1> Configure a "visual traversal" from your "graph" - this must be a `Graph` instance. This command will create a
+new `TraversalSource` called "vg" that must be used to visualize any spawned traversals in Gephi.
+<2> Define the traversal to be visualized. Note that ending the line with `;[]` simply prevents iteration of
+the traversal before it is submitted.
+<3> Submit the `Traversal` to visualize to Gephi.
 
 When the `:>` line is called, each step of the `Traversal` that produces or filters vertices generates events to
 Gephi. The events update the color and size of the vertices at that step with `startRGBColor` and `startSize`
@@ -1610,7 +1734,7 @@
 [width="100%",cols="3,10,^2",options="header"]
 |=========================================================
 |Parameter |Description |Default
-|workspace |The name of the workspace that your Graph Streaming server is started for. |workspace0
+|workspace |The name of the workspace that your Graph Streaming server is started for. |workspace1
 |host |The host URL where the Graph Streaming server is configured for. |localhost
 |port |The port number of the URL that the Graph Streaming server is listening on. |8080
 |sizeDecrementRate |The rate at which the size of an element decreases on each step of the visualization. |0.33
@@ -1619,7 +1743,7 @@
 |startSize |The size an element should be when it is most recently visited. |20
 |colorToFade |A single char from the set `{r,g,b,R,G,B}` determining which color to fade for vertices visited in prior steps |g
 |colorFadeRate |A float value in the range `(0.0,1.0]` which is multiplied against the current `colorToFade` value for prior vertices; a `1.0` value effectively turns off the color fading of prior step visited vertices |0.7
-|visualTraversal |Creates a `TraversalSource` variable in the Console named `vg` which can be used for visualizing traversals. This configuration option takes two parameters.  The first is required and is the name of the `Graph` instance variable that will generate the `TraversalSource`.  The second parameter is the variable name that the `TraversalSource` should have when referenced in the Console.  If left unspecified, this value defaults to `vg`.
+|visualTraversal |Creates a `TraversalSource` variable in the Console named `vg` which can be used for visualizing traversals. This configuration option takes two parameters.  The first is required and is the name of the `Graph` instance variable that will generate the `TraversalSource`.  The second parameter is the variable name that the `TraversalSource` should have when referenced in the Console.  If left unspecified, this value defaults to `vg`. |vg
 |=========================================================
 
 [[server-plugin]]
diff --git a/docs/src/reference/implementations-hadoop.asciidoc b/docs/src/reference/implementations-hadoop.asciidoc
index b89c0a1..34e6f67 100644
--- a/docs/src/reference/implementations-hadoop.asciidoc
+++ b/docs/src/reference/implementations-hadoop.asciidoc
@@ -84,11 +84,13 @@
 ==>storage[DFS[DFSClient[clientName=DFSClient_NONMAPREDUCE_1229457199_1, ugi=user (auth:SIMPLE)]]] // GOOD
 ----
 
-The `HADOOP_GREMLIN_LIBS` references locations that contains jars that should be uploaded to a respective
+The `HADOOP_GREMLIN_LIBS` references locations that contain jars that should be uploaded to a respective
 distributed cache (link:http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html[YARN] or SparkServer).
-Note that the locations in `HADOOP_GREMLIN_LIBS` can be a colon-separated (`:`) and all jars from all locations will
-be loaded into the cluster. Typically, only the jars of the respective GraphComputer are required to be loaded (e.g.
-`GiraphGraphComputer` plugin lib directory).
+Note that the locations in `HADOOP_GREMLIN_LIBS` can be colon-separated (`:`) and all jars from all locations will
+be loaded into the cluster. Locations can be local paths (e.g. `/path/to/libs`), but may also be prefixed with a file
+scheme to reference files or directories in different file systems (e.g. `hdfs:///path/to/distributed/libs`).
+Typically, only the jars of the respective GraphComputer are required to be loaded (e.g. `GiraphGraphComputer` plugin lib
+directory).
 
 [source,shell]
 export HADOOP_GREMLIN_LIBS=/usr/local/gremlin-console/ext/giraph-gremlin/lib
@@ -97,26 +99,22 @@
 ~~~~~~~~~~~~~~~~
 
 `HadoopGraph` makes use of properties files which ultimately get turned into Apache configurations and/or
-Hadoop configurations. The example properties file presented below is located at `conf/hadoop/hadoop-gryo.properties`.
+Hadoop configurations.
 
 [source,text]
 gremlin.graph=org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph
 gremlin.hadoop.inputLocation=tinkerpop-modern.kryo
-gremlin.hadoop.graphInputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
+gremlin.hadoop.graphReader=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
 gremlin.hadoop.outputLocation=output
-gremlin.hadoop.graphOutputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat
+gremlin.hadoop.graphWriter=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat
 gremlin.hadoop.jarsInDistributedCache=true
+gremlin.hadoop.defaultGraphComputer=org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer
 ####################################
 # Spark Configuration              #
 ####################################
 spark.master=local[4]
 spark.executor.memory=1g
 spark.serializer=org.apache.tinkerpop.gremlin.spark.structure.io.gryo.GryoSerializer
-####################################
-# SparkGraphComputer Configuration #
-####################################
-gremlin.spark.graphInputRDD=org.apache.tinkerpop.gremlin.spark.structure.io.InputRDDFormat
-gremlin.spark.graphOutputRDD=org.apache.tinkerpop.gremlin.spark.structure.io.OutputRDDFormat
 gremlin.spark.persistContext=true
 #####################################
 # GiraphGraphComputer Configuration #
@@ -139,14 +137,13 @@
 |Property |Description
 |gremlin.graph |The class of the graph to construct using GraphFactory.
 |gremlin.hadoop.inputLocation |The location of the input file(s) for Hadoop-Gremlin to read the graph from.
-|gremlin.hadoop.graphInputFormat |The format that the graph input file(s) are represented in.
+|gremlin.hadoop.graphReader |The class that the graph input file(s) are read with (e.g. an `InputFormat`).
 |gremlin.hadoop.outputLocation |The location to write the computed HadoopGraph to.
-|gremlin.hadoop.graphOutputFormat |The format that the output file(s) should be represented in.
+|gremlin.hadoop.graphWriter |The class that the graph output file(s) are written with (e.g. an `OutputFormat`).
 |gremlin.hadoop.jarsInDistributedCache |Whether to upload the Hadoop-Gremlin jars to a distributed cache (necessary if jars are not on the machines' classpaths).
+|gremlin.hadoop.defaultGraphComputer |The default `GraphComputer` to use when `graph.compute()` is called. This is optional.
 |=========================================================
 
-
-
 Along with the properties above, the numerous link:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/core-default.xml[Hadoop specific properties]
 can be added as needed to tune and parameterize the executed Hadoop-Gremlin job on the respective Hadoop cluster.
 
@@ -242,11 +239,6 @@
 it is best to *not* have both Spark and Giraph plugins loaded in the same console session nor in the same Java
 project (though intelligent `<exclusion>`-usage can help alleviate conflicts in a Java project).
 
-WARNING: It is important to note that when doing an OLAP traversal, any resulting vertices, edges, or properties will be
-attached to the source graph. For Hadoop-based graphs, this may lead to linear search times on massive graphs. Thus,
-if vertex, edge, or property objects are to be returns (as a final result), it is best to `.id()` to get the id
-of the object and not the actual attached object.
-
 [[mapreducegraphcomputer]]
 MapReduceGraphComputer
 ^^^^^^^^^^^^^^^^^^^^^^
@@ -290,7 +282,7 @@
 [gremlin-groovy]
 ----
 graph = GraphFactory.open('conf/hadoop/hadoop-gryo.properties')
-g = graph.traversal(computer(SparkGraphComputer))
+g = graph.traversal().withComputer(SparkGraphComputer)
 g.V().count()
 g.V().out().out().values('name')
 ----
@@ -300,7 +292,7 @@
 [gremlin-groovy]
 ----
 graph = GraphFactory.open('conf/hadoop/hadoop-gryo.properties')
-g = graph.traversal(computer(SparkGraphComputer))
+g = graph.traversal().withComputer(SparkGraphComputer)
 :remote connect tinkerpop.hadoop graph g
 :> g.V().group().by{it.value('name')[1]}.by('name')
 ----
@@ -324,8 +316,8 @@
 [width="100%",cols="2,10",options="header"]
 |========================================================
 |Property |Description
-|gremlin.spark.graphInputRDD |A class for creating RDD's from underlying graph data, defaults to Hadoop `InputFormat`.
-|gremlin.spark.graphOutputRDD |A class for output RDD's, defaults to Hadoop `OutputFormat`.
+|gremlin.hadoop.graphReader |A class for reading a graph-based RDD (e.g. an `InputRDD` or `InputFormat`).
+|gremlin.hadoop.graphWriter |A class for writing a graph-based RDD (e.g. an `OutputRDD` or `OutputFormat`).
 |gremlin.spark.graphStorageLevel |What `StorageLevel` to use for the cached graph during job execution (default `MEMORY_ONLY`).
 |gremlin.spark.persistContext |Whether to create a new `SparkContext` for every `SparkGraphComputer` or to reuse an existing one.
 |gremlin.spark.persistStorageLevel |What `StorageLevel` to use when persisted RDDs via `PersistedOutputRDD` (default `MEMORY_ONLY`).
@@ -335,16 +327,14 @@
 ++++++++++++++++++++++
 
 If the provider/user does not want to use Hadoop `InputFormats`, it is possible to leverage Spark's RDD
-constructs directly. There is a `gremlin.spark.graphInputRDD` configuration that references a `Class<? extends
-InputRDD>`. An `InputRDD` provides a read method that takes a `SparkContext` and returns a graphRDD. Likewise, use
-`gremlin.spark.graphOutputRDD` and the respective `OutputRDD`.
+constructs directly. An `InputRDD` provides a read method that takes a `SparkContext` and returns a graphRDD. Likewise,
+and `OutputRDD` is used for writing a graphRDD.
 
 If the graph system provider uses an `InputRDD`, the RDD should maintain an associated `org.apache.spark.Partitioner`. By doing so,
 `SparkGraphComputer` will not partition the loaded graph across the cluster as it has already been partitioned by the graph system provider.
-This can save a significant amount of time and space resources.
-If the `InputRDD` does not have a registered partitioner, `SparkGraphComputer` will partition the graph using
-a `org.apache.spark.HashPartitioner` with the number of partitions being either the number of existing partitions in the input (e.g. input splits)
-or the user specified number of `GraphComputer.workers()`.
+This can save a significant amount of time and space resources. If the `InputRDD` does not have a registered partitioner,
+`SparkGraphComputer` will partition the graph using a `org.apache.spark.HashPartitioner` with the number of partitions
+being either the number of existing partitions in the input (i.e. input splits) or the user specified number of `GraphComputer.workers()`.
 
 Storage Levels
 ++++++++++++++
@@ -385,7 +375,7 @@
 ----
 hdfs.copyFromLocal('data/tinkerpop-modern.kryo', 'tinkerpop-modern.kryo')
 graph = GraphFactory.open('conf/hadoop/hadoop-gryo.properties')
-graph.configuration().setProperty('gremlin.hadoop.graphOutputFormat', 'org.apache.tinkerpop.gremlin.hadoop.structure.io.graphson.GraphSONOutputFormat')
+graph.configuration().setProperty('gremlin.hadoop.graphWriter', 'org.apache.tinkerpop.gremlin.hadoop.structure.io.graphson.GraphSONOutputFormat')
 graph.compute(SparkGraphComputer).program(BulkDumperVertexProgram.build().create()).submit().get()
 hdfs.ls('output')
 hdfs.head('output/~g')
@@ -422,7 +412,7 @@
 # Hadoop Graph Configuration
 #
 gremlin.graph=org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph
-gremlin.hadoop.graphInputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
+gremlin.hadoop.graphReader=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
 gremlin.hadoop.inputLocation=grateful-dead.kryo
 gremlin.hadoop.outputLocation=output
 gremlin.hadoop.jarsInDistributedCache=true
@@ -491,7 +481,7 @@
 [gremlin-groovy]
 ----
 graph = GraphFactory.open('conf/hadoop/hadoop-gryo.properties')
-g = graph.traversal(computer(GiraphGraphComputer))
+g = graph.traversal().withComputer(GiraphGraphComputer)
 g.V().count()
 g.V().out().out().values('name')
 ----
@@ -504,13 +494,11 @@
 [gremlin-groovy]
 ----
 graph = GraphFactory.open('conf/hadoop/hadoop-gryo.properties')
-g = graph.traversal(computer(GiraphGraphComputer))
+g = graph.traversal().withComputer(GiraphGraphComputer)
 :remote connect tinkerpop.hadoop graph g
 :> g.V().group().by{it.value('name')[1]}.by('name')
 result
 result.memory.runtime
-result.memory.keys()
-result.memory.get('~reducing')
 ----
 
 NOTE: If the user explicitly specifies `giraph.maxWorkers` and/or `giraph.numComputeThreads` in the configuration,
@@ -549,8 +537,8 @@
 # Hadoop Graph Configuration
 #
 gremlin.graph=org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph
-gremlin.hadoop.graphInputFormat=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
-gremlin.hadoop.graphOutputFormat=org.apache.hadoop.mapreduce.lib.output.NullOutputFormat
+gremlin.hadoop.graphReader=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
+gremlin.hadoop.graphWriter=org.apache.hadoop.mapreduce.lib.output.NullOutputFormat
 gremlin.hadoop.inputLocation=grateful-dead.kryo
 gremlin.hadoop.outputLocation=output
 gremlin.hadoop.jarsInDistributedCache=true
@@ -727,7 +715,7 @@
 ^^^^^^^^^^^^^^^^^^^^^
 
 The distributed file system of Hadoop is called link:http://en.wikipedia.org/wiki/Apache_Hadoop#Hadoop_distributed_file_system[HDFS].
-The results of any OLAP operation are stored in HDFS accessible via `hdfs`. For local file system access, there is `local`.
+The results of any OLAP operation are stored in HDFS accessible via `hdfs`. For local file system access, there is `fs`.
 
 [gremlin-groovy]
 ----
@@ -753,8 +741,7 @@
 ----
 Spark.create('local[4]')
 graph = GraphFactory.open('conf/hadoop/hadoop-gryo.properties')
-graph.configuration().setProperty('gremlin.spark.graphOutputRDD', PersistedOutputRDD.class.getCanonicalName())
-graph.configuration().clearProperty('gremlin.hadoop.graphOutputFormat')
+graph.configuration().setProperty('gremlin.hadoop.graphWriter', PersistedOutputRDD.class.getCanonicalName())
 graph.configuration().setProperty('gremlin.spark.persistContext',true)
 graph.compute(SparkGraphComputer).program(PeerPressureVertexProgram.build().create(graph)).mapReduce(ClusterCountMapReduce.build().memoryKey('clusterCount').create()).submit().get();
 spark.ls()
diff --git a/docs/src/reference/index.asciidoc b/docs/src/reference/index.asciidoc
index 0006403..eefbd00 100644
--- a/docs/src/reference/index.asciidoc
+++ b/docs/src/reference/index.asciidoc
@@ -14,7 +14,7 @@
 See the License for the specific language governing permissions and
 limitations under the License.
 ////
-image::apache-tinkerpop-logo.png[width=500]
+image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]
 
 *x.y.z*
 
diff --git a/docs/src/reference/intro.asciidoc b/docs/src/reference/intro.asciidoc
index a8c6a1a..01df052 100644
--- a/docs/src/reference/intro.asciidoc
+++ b/docs/src/reference/intro.asciidoc
@@ -274,7 +274,7 @@
 -----oOOo-(3)-oOOo-----
 gremlin> graph = TinkerFactory.createModern() // <1>
 ==>tinkergraph[vertices:6 edges:6]
-gremlin> g = graph.traversal(standard())        // <2>
+gremlin> g = graph.traversal()        // <2>
 ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
 gremlin> g.V().has('name','marko').out('knows').values('name') // <3>
 ==>vadas
diff --git a/docs/src/reference/the-graph.asciidoc b/docs/src/reference/the-graph.asciidoc
index e0e59f9..8b4916a 100644
--- a/docs/src/reference/the-graph.asciidoc
+++ b/docs/src/reference/the-graph.asciidoc
@@ -81,7 +81,7 @@
 [gremlin-groovy]
 ----
 graph = TinkerGraph.open()
-g = graph.traversal(standard())
+g = graph.traversal()
 v = g.addV('name','marko','name','marko a. rodriguez').next()
 g.V(v).properties('name').count() <1>
 v.property(list, 'name', 'm. a. rodriguez') <2>
@@ -740,7 +740,7 @@
 ==>org.apache.tinkerpop.gremlin.structure.io.graphson.LegacyGraphSONReader@64337702
 gremlin> r.readGraph(new FileInputStream('/tmp/tp2.json'), graph)
 ==>null
-gremlin> g = graph.traversal(standard())
+gremlin> g = graph.traversal()
 ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
 gremlin> g.E()
 ==>e[11][4-created->3]
diff --git a/docs/src/reference/the-graphcomputer.asciidoc b/docs/src/reference/the-graphcomputer.asciidoc
index f9116fb..25ae39e 100644
--- a/docs/src/reference/the-graphcomputer.asciidoc
+++ b/docs/src/reference/the-graphcomputer.asciidoc
@@ -82,8 +82,8 @@
 ----
 result = graph.compute().program(PageRankVertexProgram.build().create()).submit().get()
 result.memory().runtime
-g = result.graph().traversal(standard())
-g.V().valueMap('name',PageRankVertexProgram.PAGE_RANK)
+g = result.graph().traversal()
+g.V().valueMap()
 ----
 
 NOTE: This model of "vertex-centric graph computing" was made popular by Google's
@@ -140,7 +140,7 @@
 graph = TinkerFactory.createModern()
 result = graph.compute().program(PeerPressureVertexProgram.build().create()).mapReduce(ClusterPopulationMapReduce.build().create()).submit().get()
 result.memory().get('clusterPopulation')
-g = result.graph().traversal(standard())
+g = result.graph().traversal()
 g.V().values(PeerPressureVertexProgram.CLUSTER).groupCount().next()
 g.V().valueMap()
 ----
@@ -160,8 +160,8 @@
 
 IMPORTANT: The MapReduce model of TinkerPop3 does not support MapReduce chaining. Thus, the order in which the
 MapReduce jobs are executed is irrelevant. This is made apparent when realizing that the `map()`-stage takes a
-`Vertex` as its input and the `reduce()`-stage yields key/value pairs. Thus, the results of reduce can not feed back
-into map.
+`Vertex` as its input and the `reduce()`-stage yields key/value pairs. Thus, the results of reduce can not fed back
+into a `map()`.
 
 A Collection of VertexPrograms
 ------------------------------
@@ -186,54 +186,73 @@
 
 [source,java]
 ----
-public class PageRankVertexProgram implements VertexProgram<Double> { <1>
+public class PageRankVertexProgram implements VertexProgram<Double> {  <1>
 
-    private MessageScope.Local<Double> incidentMessageScope = MessageScope.Local.of(__::outE); <2>
-    private MessageScope.Local<Double> countMessageScope = MessageScope.Local.of(new MessageScope.Local.ReverseTraversalSupplier(this.incidentMessageScope));
-
-    public static final String PAGE_RANK = "gremlin.pageRankVertexProgram.pageRank"; <3>
-    public static final String EDGE_COUNT = "gremlin.pageRankVertexProgram.edgeCount";
-
+    public static final String PAGE_RANK = "gremlin.pageRankVertexProgram.pageRank";
+    private static final String EDGE_COUNT = "gremlin.pageRankVertexProgram.edgeCount";
+    private static final String PROPERTY = "gremlin.pageRankVertexProgram.property";
     private static final String VERTEX_COUNT = "gremlin.pageRankVertexProgram.vertexCount";
     private static final String ALPHA = "gremlin.pageRankVertexProgram.alpha";
     private static final String TOTAL_ITERATIONS = "gremlin.pageRankVertexProgram.totalIterations";
-    private static final String INCIDENT_TRAVERSAL_SUPPLIER = "gremlin.pageRankVertexProgram.incidentTraversalSupplier";
+    private static final String EDGE_TRAVERSAL = "gremlin.pageRankVertexProgram.edgeTraversal";
+    private static final String INITIAL_RANK_TRAVERSAL = "gremlin.pageRankVertexProgram.initialRankTraversal";
 
-    private ConfigurationTraversal<Vertex, Edge> configurationTraversal;
+    private MessageScope.Local<Double> incidentMessageScope = MessageScope.Local.of(__::outE); <2>
+    private MessageScope.Local<Double> countMessageScope = MessageScope.Local.of(new MessageScope.Local.ReverseTraversalSupplier(this.incidentMessageScope));
+    private PureTraversal<Vertex, Edge> edgeTraversal = null;
+    private PureTraversal<Vertex, ? extends Number> initialRankTraversal = null;
     private double vertexCountAsDouble = 1.0d;
     private double alpha = 0.85d;
     private int totalIterations = 30;
+    private String property = PAGE_RANK; <3>
+    private Set<VertexComputeKey> vertexComputeKeys;
 
-    private static final Set<String> COMPUTE_KEYS = new HashSet<>(Arrays.asList(PAGE_RANK, EDGE_COUNT));
+    private PageRankVertexProgram() {
 
-    private PageRankVertexProgram() {}
+    }
 
     @Override
     public void loadState(final Graph graph, final Configuration configuration) { <4>
-        if (configuration.containsKey(TRAVERSAL_SUPPLIER)) {
-                    this.configurationTraversal = ConfigurationTraversal.loadState(graph, configuration, TRAVERSAL_SUPPLIER);
-                    this.incidentMessageScope = MessageScope.Local.of(this.configurationTraversal);
-                    this.countMessageScope = MessageScope.Local.of(new MessageScope.Local.ReverseTraversalSupplier(this.incidentMessageScope));
-                }
+        if (configuration.containsKey(INITIAL_RANK_TRAVERSAL))
+            this.initialRankTraversal = PureTraversal.loadState(configuration, INITIAL_RANK_TRAVERSAL, graph);
+        if (configuration.containsKey(EDGE_TRAVERSAL)) {
+            this.edgeTraversal = PureTraversal.loadState(configuration, EDGE_TRAVERSAL, graph);
+            this.incidentMessageScope = MessageScope.Local.of(() -> this.edgeTraversal.get().clone());
+            this.countMessageScope = MessageScope.Local.of(new MessageScope.Local.ReverseTraversalSupplier(this.incidentMessageScope));
+        }
         this.vertexCountAsDouble = configuration.getDouble(VERTEX_COUNT, 1.0d);
         this.alpha = configuration.getDouble(ALPHA, 0.85d);
         this.totalIterations = configuration.getInt(TOTAL_ITERATIONS, 30);
+        this.property = configuration.getString(PROPERTY, PAGE_RANK);
+        this.vertexComputeKeys = new HashSet<>(Arrays.asList(VertexComputeKey.of(this.property, false), VertexComputeKey.of(EDGE_COUNT, true))); <5>
     }
 
     @Override
     public void storeState(final Configuration configuration) {
-        configuration.setProperty(VERTEX_PROGRAM, PageRankVertexProgram.class.getName());
+        VertexProgram.super.storeState(configuration);
         configuration.setProperty(VERTEX_COUNT, this.vertexCountAsDouble);
         configuration.setProperty(ALPHA, this.alpha);
         configuration.setProperty(TOTAL_ITERATIONS, this.totalIterations);
-        if (null != this.traversalSupplier) {
-            this.traversalSupplier.storeState(configuration);
-        }
+        configuration.setProperty(PROPERTY, this.property);
+        if (null != this.edgeTraversal)
+            this.edgeTraversal.storeState(configuration, EDGE_TRAVERSAL);
+        if (null != this.initialRankTraversal)
+            this.initialRankTraversal.storeState(configuration, INITIAL_RANK_TRAVERSAL);
     }
 
     @Override
-    public Set<String> getElementComputeKeys() { <5>
-        return COMPUTE_KEYS;
+    public GraphComputer.ResultGraph getPreferredResultGraph() {
+        return GraphComputer.ResultGraph.NEW;
+    }
+
+    @Override
+    public GraphComputer.Persist getPreferredPersist() {
+        return GraphComputer.Persist.VERTEX_PROPERTIES;
+    }
+
+    @Override
+    public Set<VertexComputeKey> getVertexComputeKeys() {   <6>
+        return this.vertexComputeKeys;
     }
 
     @Override
@@ -242,57 +261,73 @@
     }
 
     @Override
-    public Set<MessageScope> getMessageScopes(final int iteration) {
+    public Set<MessageScope> getMessageScopes(final Memory memory) {
         final Set<MessageScope> set = new HashSet<>();
-        set.add(0 == iteration ? this.countMessageScope : this.incidentMessageScope);
+        set.add(memory.isInitialIteration() ? this.countMessageScope : this.incidentMessageScope);
         return set;
     }
 
     @Override
+    public PageRankVertexProgram clone() {
+        try {
+            final PageRankVertexProgram clone = (PageRankVertexProgram) super.clone();
+            if (null != this.initialRankTraversal)
+                clone.initialRankTraversal = this.initialRankTraversal.clone();
+            return clone;
+        } catch (final CloneNotSupportedException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
+
+    @Override
     public void setup(final Memory memory) {
 
     }
 
-   @Override
-    public void execute(final Vertex vertex, Messenger<Double> messenger, final Memory memory) { <6>
-        if (memory.isInitialIteration()) {  <7>
-            messenger.sendMessage(this.countMessageScope, 1.0d);
-        } else if (1 == memory.getIteration()) {  <8>
-            double initialPageRank = 1.0d / this.vertexCountAsDouble;
+    @Override
+    public void execute(final Vertex vertex, Messenger<Double> messenger, final Memory memory) { <7>
+        if (memory.isInitialIteration()) {
+            messenger.sendMessage(this.countMessageScope, 1.0d); <8>
+        } else if (1 == memory.getIteration()) {
+            double initialPageRank = (null == this.initialRankTraversal ?
+                    1.0d :
+                    TraversalUtil.apply(vertex, this.initialRankTraversal.get()).doubleValue()) / this.vertexCountAsDouble;  <9>
             double edgeCount = IteratorUtils.reduce(messenger.receiveMessages(), 0.0d, (a, b) -> a + b);
-            vertex.property(PAGE_RANK, initialPageRank);
-            vertex.property(EDGE_COUNT, edgeCount);
-            messenger.sendMessage(this.incidentMessageScope, initialPageRank / edgeCount);
-        } else { <9>
-            double newPageRank = IteratorUtils.reduce(messenger.receiveMessages(), 0.0d, (a, b) -> a + b);
+            vertex.property(VertexProperty.Cardinality.single, this.property, initialPageRank);
+            vertex.property(VertexProperty.Cardinality.single, EDGE_COUNT, edgeCount);
+            if (!this.terminate(memory)) // don't send messages if this is the last iteration
+                messenger.sendMessage(this.incidentMessageScope, initialPageRank / edgeCount);
+        } else {
+            double newPageRank = IteratorUtils.reduce(messenger.receiveMessages(), 0.0d, (a, b) -> a + b); <10>
             newPageRank = (this.alpha * newPageRank) + ((1.0d - this.alpha) / this.vertexCountAsDouble);
-            vertex.property(PAGE_RANK, newPageRank);
-            messenger.sendMessage(this.incidentMessageScope, newPageRank / vertex.<Double>value(EDGE_COUNT));
+            vertex.property(VertexProperty.Cardinality.single, this.property, newPageRank);
+            if (!this.terminate(memory)) // don't send messages if this is the last iteration
+                messenger.sendMessage(this.incidentMessageScope, newPageRank / vertex.<Double>value(EDGE_COUNT));
         }
     }
 
     @Override
-    public boolean terminate(final Memory memory) { <10>
-        return memory.getIteration() >= this.totalIterations;
+    public boolean terminate(final Memory memory) {
+        return memory.getIteration() >= this.totalIterations;  <11>
     }
 
     @Override
     public String toString() {
-        return StringFactory.vertexProgramString(this, "alpha=" + this.alpha + ",iterations=" + this.totalIterations);
+        return StringFactory.vertexProgramString(this, "alpha=" + this.alpha + ", iterations=" + this.totalIterations);
     }
-}
 ----
 
 <1> `PageRankVertexProgram` implements `VertexProgram<Double>` because the messages it sends are Java doubles.
 <2> The default path of energy propagation is via outgoing edges from the current vertex.
-<3> The resulting PageRank values for the vertices are stored as a hidden property.
+<3> The resulting PageRank values for the vertices are stored as a vertex property.
 <4> A vertex program is constructed using an Apache `Configuration` to ensure easy dissemination across a cluster of JVMs.
-<5> A vertex program must define the "compute keys" that are the properties being operated on during the computation.
-<6> The "while"-loop of the vertex program.
-<7> In order to determine how to distribute the energy to neighbors, a "1"-count is used to determine how many incident vertices exist for the `MessageScope`.
-<8> Initially, each vertex is provided an equal amount of energy represented as a double.
-<9> Energy is aggregated, computed on according to the PageRank algorithm, and then disseminated according to the defined `MessageScope.Local`.
-<10> The computation is terminated after a pre-defined number of iterations.
+<5> `EDGE_COUNT` is a transient "scratch data" compute key while `PAGE_RANK` is not.
+<6> A vertex program must define the "compute keys" that are the properties being operated on during the computation.
+<7> The "while"-loop of the vertex program.
+<8> In order to determine how to distribute the energy to neighbors, a "1"-count is used to determine how many incident vertices exist for the `MessageScope`.
+<9> Initially, each vertex is provided an equal amount of energy represented as a double.
+<10> Energy is aggregated, computed on according to the PageRank algorithm, and then disseminated according to the defined `MessageScope.Local`.
+<11> The computation is terminated after a pre-defined number of iterations.
 
 The above `PageRankVertexProgram` is used as follows.
 
@@ -300,8 +335,17 @@
 ----
 result = graph.compute().program(PageRankVertexProgram.build().create()).submit().get()
 result.memory().runtime
-g = result.graph().traversal(standard())
-g.V().valueMap('name',PageRankVertexProgram.PAGE_RANK)
+g = result.graph().traversal()
+g.V().valueMap()
+----
+
+Note that `GraphTraversal` provides a <<pagerank-step,`pageRank()`>>-step.
+
+[gremlin-groovy,modern]
+----
+g = graph.traversal().withComputer()
+g.V().pageRank().valueMap()
+g.V().pageRank().by('pageRank').times(5).order().by('pageRank').valueMap()
 ----
 
 [[peerpressurevertexprogram]]
@@ -319,6 +363,15 @@
   .. If there is a tie, then the cluster with the lowest `toString()` comparison is selected.
  . Steps 3 and 4 repeat until either a max number of iterations has occurred or no vertex has adjusted its cluster anymore.
 
+Note that `GraphTraversal` provides a <<peerpressure-step,`peerPressure()`>>-step.
+
+[gremlin-groovy,modern]
+----
+g = graph.traversal().withComputer()
+g.V().peerPressure().by('cluster').valueMap()
+g.V().peerPressure().by(outE('knows')).by('cluster').valueMap()
+----
+
 [[bulkdumpervertexprogram]]
 BulkDumperVertexProgram
 ~~~~~~~~~~~~~~~~~~~~~~~
@@ -388,7 +441,7 @@
 ~~~~~~~~~~~~~~~~~~~~~~
 
 image:traversal-vertex-program.png[width=250,float=left] The `TraversalVertexProgram` is a "special" VertexProgram in
-that it can be executed via a `GraphTraversal` with a `ComputerTraversalEngine`. In Gremlin, it is possible to have
+that it can be executed via a `Traversal` and a `GraphComputer`. In Gremlin, it is possible to have
 the same traversal executed using either the standard OTLP-engine or the `GraphComputer` OLAP-engine. The difference
 being where the traversal is submitted.
 
@@ -398,9 +451,9 @@
 
 [gremlin-groovy,modern]
 ----
-g = graph.traversal(standard())
+g = graph.traversal()
 g.V().both().hasLabel('person').values('age').groupCount().next() // OLTP
-g = graph.traversal(computer())
+g = graph.traversal().withComputer()
 g.V().both().hasLabel('person').values('age').groupCount().next() // OLAP
 ----
 
@@ -416,33 +469,25 @@
  . `groupCount()`: Count how many times a particular age has been seen.
 
 While 5 iterations were presented, in fact, `TraversalVertexProgram` will execute the traversal in only
-3 iterations. The reason being is that `hasLabel('person').values('age').groupCount()` can all be executed in a
-single iteration as any message sent would simply be to the current executing vertex. Thus, a simple optimization
+2 iterations. The reason being is that `g.V().both()` and `hasLabel('person').values('age').groupCount()` can be
+executed in a single iteration as any message sent would simply be to the current executing vertex. Thus, a simple optimization
 exists in Gremlin OLAP called "reflexive message passing" which simulates non-message-passing BSP iterations within a
 single BSP iteration.
 
-When the computation is complete a <<mapreduce,MapReduce>> job executes which aggregates all the `groupCount()`
-sideEffect Map (i.e. "`HashMap`") objects on each vertex into a single local representation (thus, turning the
-distributed Map representation into a local Map representation).
-
-////
-The same OLAP traversal can be executed using the standard `g.compute()` model, though at the expense of verbosity.
+The same OLAP traversal can be executed using the standard `graph.compute()` model, though at the expense of verbosity.
 `TraversalVertexProgram` provides a fluent `Builder` for constructing a `TraversalVertexProgram`. The specified
-`traversal()` can be either a `Supplier<Traversal>` object, a `Supplier<Traversal>` class, or a
-link:http://en.wikipedia.org/wiki/Scripting_for_the_Java_Platform[JSR-223] script that will generate (i.e. supply) a
-`Traversal`. If `traversal()` is supplied a single string, it is assumed that "gremlin-groovy" is the `ScriptEngine`
-to use. If two strings are supplied, then the first string denotes the `ScriptEngine` to evaluate the second string
-script with in order to generate (i.e. supply) the `Traversal`.
+`traversal()` can be either a direct `Traversal` object or a
+link:http://en.wikipedia.org/wiki/Scripting_for_the_Java_Platform[JSR-223] script that will generate a
+`Traversal`. There is no benefit to using the model below. It is demonstrated to help elucidate how Gremlin OLAP traversals
+are ultimately compiled for execution on a `GraphComputer`.
 
 [gremlin-groovy,modern]
 ----
-//g.engine(computer())
-//result = g.compute().program(TraversalVertexProgram.build().traversal(g.V().both().hasLabel('person').values('age').groupCount('a')).create()).submit().get()
-//result.memory().a
-//result.memory().iteration
-//result.memory().runtime
+result = graph.compute().program(TraversalVertexProgram.build().traversal(g.V().both().hasLabel('person').values('age').groupCount('a')).create()).submit().get()
+result.memory().a
+result.memory().iteration
+result.memory().runtime
 ----
-////
 
 [[distributed-gremlin-gotchas]]
 Distributed Gremlin Gotchas
@@ -455,32 +500,51 @@
 Depth-first execution has a limited memory footprint due to link:http://en.wikipedia.org/wiki/Lazy_evaluation[lazy evaluation].
 On the other hand, Gremlin OLAP (via `TraversalVertexProgram`) leverages a
 link:http://en.wikipedia.org/wiki/Breadth-first_search[breadth-first] execution engine which maintains a larger memory
-footprint, but a better time complexity due to vertex-local traversers being able to be merged. The second difference
-is that Gremlin OLTP is executed in a serial fashion, while Gremlin OLAP is executed in a parallel fashion. These two
+footprint, but a better time complexity due to vertex-local traversers being able to be "bulked." The second difference
+is that Gremlin OLTP is executed in a serial/streaming fashion, while Gremlin OLAP is executed in a parallel/step-wise fashion. These two
 fundamental differences lead to the behaviors enumerated below.
 
 image::gremlin-without-a-cause.png[width=200,float=right]
 
-. Traversal sideEffects are represented as a distributed data structure across the graph's vertex set. It is not
-possible to get a global view of a sideEffect until it is aggregated via a <<mapreduce,MapReduce>> job. In some
-situations, the local vertex representation of the sideEffect is sufficient to ensure the intended semantics of the
+. Traversal sideEffects are represented as a distributed data structure across `GraphComputer` workers. It is not
+possible to get a global view of a sideEffect until after an iteration has occurred and global sideEffects are re-broadcasted to the workers.
+In some situations, a "stale" local representation of the sideEffect is sufficient to ensure the intended semantics of the
 traversal are respected. However, this is not generally true so be wary of traversals that require global views of a
-sideEffect.
+sideEffect. To ensure a fresh global representation, use `barrier()` prior to accessing the global sideEffect. Note that this
+only comes into play with custom steps and <<lambda-steps,lambda steps>>. The standard Gremlin step library is respective of OLAP semantics.
 . When evaluating traversals that rely on path information (i.e. the history of the traversal), practical
 computational limits can easily be reached due the link:http://en.wikipedia.org/wiki/Combinatorial_explosion[combinatoric explosion]
 of data. With path computing enabled, every traverser is unique and thus, must be enumerated as opposed to being
-counted/merged. The difference being a collection of paths vs. a single 64-bit long at a single vertex. For more
+counted/merged. The difference being a collection of paths vs. a single 64-bit long at a single vertex. In other words,
+ bulking is very unlikely with traversers that maintain path information. For more
 information on this concept, please see link:http://thinkaurelius.com/2012/11/11/faunus-provides-big-graph-data-analytics/[Faunus Provides Big Graph Data].
-. When traversals of the form `x.as('a').y.someSideEffectStep('a').z` are evaluated, the `a` object is stored in the
-path information of the traverser and thus, such traversals (may) turn on path calculations when executed on a
-`GraphComputer`
 . Steps that are concerned with the global ordering of traversers do not have a meaningful representation in
 OLAP. For example, what does <<order-step,`order()`>>-step mean when all traversers are being processed in parallel?
 Even if the traversers were aggregated and ordered, then at the next step they would return to being executed in
 parallel and thus, in an unpredictable order. When `order()`-like steps are executed at the end of a traversal (i.e
-the final step), the `TraverserMapReduce` job ensures the resultant serial representation is ordered accordingly.
-. Steps that are concerned with providing a global aggregate to the next step of computation do not have a correlate
-in OLAP. For example, <<fold-step,`fold()`>>-step can only fold up the objects at each executing vertex. Next, even
-if a global fold was possible, where would it go? Which vertex would be the host of the data structure? The
-`fold()`-step only makes sense as an end-step whereby a MapReduce job can generate the proper global-to-local data
-reduction.
+the final step), `TraversalVertexProgram` ensures a serial representation is ordered accordingly. Moreover, it is intelligent enough
+to maintain the ordering of `g.V().hasLabel("person").order().by("age").values("name")`. However, the OLAP traversal
+`g.V().hasLabel("person").order().by("age").out().values("name")` will lose the original ordering as the `out()`-step
+will rebroadcast traversers across the cluster.
+
+[[graph-filter]]
+Graph Filter
+------------
+
+Most OLAP jobs do not require the entire source graph to faithfully execute their `VertexProgram`. For instance, if
+`PageRankVertexProgram` is only going to compute the centrality of people in the friendship-graph, then the following
+`GraphFilter` can be applied.
+
+[source,java]
+----
+graph.computer().vertices(hasLabel("person")).edges(bothE("knows")).program(PageRankVertexProgram...)
+----
+
+There are two methods for constructing a `GraphFilter`.
+
+* `vertices(Traversal<Vertex,Vertex>)`: A traversal that will be used that can only analyze a vertex and its properties.
+If the traversal `hasNext()`, the input `Vertex` is passed to the `GraphComputer`.
+* `edges(Traversal<Vertex,Edge>)`: A traversal that will iterate all legal edges for the source vertex.
+
+`GraphFilter` is a "push-down predicate" that providers can reason on to determine the most efficient way to provide
+graph data to the `GraphComputer`.
diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc
index ca4c6be..d98a573 100644
--- a/docs/src/reference/the-traversal.asciidoc
+++ b/docs/src/reference/the-traversal.asciidoc
@@ -328,7 +328,7 @@
 ----
 graph = TinkerGraph.open()
 graph.io(graphml()).readGraph('data/grateful-dead.xml')
-g = graph.traversal(standard())
+g = graph.traversal()
 clockWithResult(1){g.V().both().both().both().count().next()} <1>
 clockWithResult(1){g.V().repeat(both()).times(3).count().next()} <2>
 clockWithResult(1){g.V().both().barrier().both().barrier().both().barrier().count().next()} <3>
@@ -349,7 +349,7 @@
 ----
 graph = TinkerGraph.open()
 graph.io(graphml()).readGraph('data/grateful-dead.xml')
-g = graph.traversal(GraphTraversalSource.build().with(LazyBarrierStrategy.instance()).engine(StandardTraversalEngine.build()))
+g = graph.traversal().withStrategies(LazyBarrierStrategy.instance())
 clockWithResult(1){g.V().both().both().both().count().next()}
 g.V().both().both().both().count().iterate().toString()  <1>
 ----
@@ -923,7 +923,7 @@
 [gremlin-groovy]
 ----
 graph.io(graphml()).readGraph('data/grateful-dead.xml')
-g = graph.traversal(standard())
+g = graph.traversal()
 g.V().match(
         __.as('a').has('name', 'Garcia'),
         __.as('a').in('writtenBy').as('b'),
@@ -1127,6 +1127,31 @@
 IMPORTANT: `min(local)` determines the min of the current, local object (not the objects in the traversal stream).
 This works for `Collection` and `Number`-type objects. For any other object, a min of `Double.NaN` is returned.
 
+[[optional-step]]
+Optional Step
+~~~~~~~~~~~~~
+
+The `optional()`-step (*map*) returns the result of the specified traversal if it yields a result else it returns the calling
+element, i.e. the `identity()`.
+
+[gremlin-groovy,modern]
+----
+g.V(2).optional(out('knows')) <1>
+g.V(2).optional(__.in('knows')) <2>
+----
+
+<1> vadas does not have an `out` "know" edge so vadas is returned.
+<2> vadas does have an `in` "knows" edge so marko is returned.
+
+`optional` is particularly useful for lifting entire graphs when used in conjunction with `path` or `tree`.
+
+[gremlin-groovy,modern]
+----
+g.V().hasLabel('person').optional(out("knows").optional(out("created"))).path() <1>
+----
+
+<1> Returns the paths of everybody followed by who they know followed by what they created.
+
 [[or-step]]
 Or Step
 ~~~~~~~
@@ -1215,6 +1240,37 @@
 
 NOTE: The `values` and `keys` enums are from `Column` which is used to select "columns" from a `Map`, `Map.Entry`, or `Path`.
 
+[[pagerank-step]]
+PageRank Step
+~~~~~~~~~~~~~
+
+The `pageRank()`-step (*map*/*sideEffect*) calculates link:http://en.wikipedia.org/wiki/PageRank[PageRank] using <<pagerankvertexprogram,`PageRankVertexProgram`>>.
+
+IMPORTANT: The `pageRank()`-step is a `VertexComputing`-step and as such, can only be used against a graph that supports `GraphComputer` (OLAP).
+
+[gremlin-groovy,modern]
+----
+g = graph.traversal().withComputer()
+g.V().pageRank().by('pageRank').values('pageRank')
+g.V().hasLabel('person').
+  pageRank().
+    by(outE('knows')).
+    by('friendRank').
+  order().by('friendRank',decr).valueMap('name','friendRank')
+----
+
+The <<explain-step,`explain()`>>-step can be used to understand how the traversal is compiled into multiple `GraphComputer` jobs.
+
+[gremlin-groovy,modern]
+----
+g = graph.traversal().withComputer()
+g.V().hasLabel('person').
+  pageRank().
+    by(outE('knows')).
+    by('friendRank').
+  order().by('friendRank',decr).valueMap('name','friendRank').explain()
+----
+
 [[path-step]]
 Path Step
 ~~~~~~~~~
@@ -1286,7 +1342,24 @@
 path.d == path.e
 ----
 
-[[profile-step]]
+[[peerpressure-step]]
+PeerPressure Step
+~~~~~~~~~~~~~~~~~
+
+The `peerPressure()`-step (*map*/*sideEffect*) clusters vertices using <<peerpressurevertexprogram,`PeerPressureVertexProgram`>>.
+
+IMPORTANT: The `peerPressure()`-step is a `VertexComputing`-step and as such, can only be used against a graph that supports `GraphComputer` (OLAP).
+
+[gremlin-groovy,modern]
+----
+g = graph.traversal().withComputer()
+g.V().peerPressure().by('cluster').values('cluster')
+g.V().hasLabel('person').
+  peerPressure().by('cluster').
+  group().by('cluster').by('name')
+----
+
+[profile-step]]
 Profile Step
 ~~~~~~~~~~~~
 
@@ -1298,7 +1371,7 @@
 
 [gremlin-groovy,modern]
 ----
-g.V().out('created').repeat(both()).times(3).hasLabel('person').values('age').sum().profile().cap(TraversalMetrics.METRICS_KEY)
+g.V().out('created').repeat(both()).times(3).hasLabel('person').values('age').sum().profile()
 ----
 
 The `profile()`-step generates a `TraversalMetrics` sideEffect object that contains the following information:
@@ -1315,8 +1388,132 @@
 bulks. On the other hand, the `Count` represents the sum of all `Traverser.bulk()` results and thus, expresses the
 number of "represented" (not enumerated) traversers. `Traversers` will always be less than or equal to `Count`.
 
+A side effect key can also be passed to the `profile()`-step for situations when it is important to iterate the normal
+results of the Traversal and retrieve the `TraversalMetrics` afterwards, as shown here:
+
+[gremlin-groovy,modern]
+----
+t = g.V().out('created').profile('metrics')
+t.iterate()
+metrics = t.getSideEffects().get('metrics')
+----
+
 For traversal compilation information, please see <<explain-step,`explain()`>>-step.
 
+[[project-step]]
+Project Step
+~~~~~~~~~~~~
+
+The `project()`-step (*map*) projects the current object into a `Map<String,Object>` keyed by provided labels. It is similar
+to <<select-step,`select()`>>-step, save that instead of retrieving and modulating historic traverser state, it modulates
+the current state of the traverser.
+
+[gremlin-groovy,modern]
+----
+g.V().out('created').
+  project('a','b').
+    by('name').
+    by(__.in('created').count()).
+  order().by(select('b'),decr).
+  select('a')
+----
+
+[[program-step]]
+Program Step
+~~~~~~~~~~~~
+
+The `program()`-step (*map*/*sideEffect*) is the "lambda" step for `GraphComputer` jobs. The step takes a
+<<vertexprogram,`VertexProgram`>> as an argument and will process the incoming graph accordingly. Thus, the user
+can create their own `VertexProgram` and have it execute within a traversal. The configuration provided to the
+vertex program includes:
+
+* `gremlin.vertexProgramStep.rootTraversal` is a serialization of a `PureTraversal` form of the root traversal.
+* `gremlin.vertexProgramStep.stepId` is the step string id of the `program()`-step being executed.
+
+The user supplied `VertexProgram` can leverage that information accordingly within their vertex program. Example uses
+are provided below.
+
+WARNING: Developing a `VertexProgram` is for expert users. Moreover, developing one that can be used effectively within
+a traversal requires yet more expertise. This information is recommended to advanced users with a deep understanding of the
+mechanics of Gremlin OLAP (<<graphcomputer,`GraphComputer`>>).
+
+[source,java]
+----
+private TraverserSet<Object> haltedTraversers;
+
+public void loadState(final Graph graph, final Configuration configuration) {
+  VertexProgram.super.loadState(graph, configuration);
+  this.traversal = PureTraversal.loadState(configuration, VertexProgramStep.ROOT_TRAVERSAL, graph);
+  this.programStep = new TraversalMatrix<>(this.traversal.get()).getStepById(configuration.getString(ProgramVertexProgramStep.STEP_ID));
+  // if the traversal sideEffects will be used in the computation, add them as memory compute keys
+  this.memoryComputeKeys.addAll(MemoryTraversalSideEffects.getMemoryComputeKeys(this.traversal.get()));
+  // if master-traversal traversers may be propagated, create a memory compute key
+  this.memoryComputeKeys.add(MemoryComputeKey.of(TraversalVertexProgram.HALTED_TRAVERSERS, Operator.addAll, false, false));
+  // returns an empty traverser set if there are no halted traversers
+  this.haltedTraversers = TraversalVertexProgram.loadHaltedTraversers(configuration);
+}
+
+public void storeState(final Configuration configuration) {
+  VertexProgram.super.storeState(configuration);
+  // if halted traversers is null or empty, it does nothing
+  TraversalVertexProgram.storeHaltedTraversers(configuration, this.haltedTraversers);
+}
+
+public void setup(final Memory memory) {
+  if(!this.haltedTraversers.isEmpty()) {
+    // do what you like with the halted master traversal traversers
+  }
+  // once used, no need to keep that information around (master)
+  this.haltedTraversers = null;
+}
+
+public void execute(final Vertex vertex, final Messenger messenger, final Memory memory) {
+  // once used, no need to keep that information around (workers)
+  if(null != this.haltedTraversers)
+    this.haltedTraversers = null;
+  if(vertex.property(TraversalVertexProgram.HALTED_TRAVERSERS).isPresent()) {
+    // haltedTraversers in execute() represent worker-traversal traversers
+    // for example, from a traversal of the form g.V().out().program(...)
+    TraverserSet<Object> haltedTraversers = vertex.value(TraversalVertexProgram.HALTED_TRAVERSERS);
+    // create a new halted traverser set that can be used by the next OLAP job in the chain
+    // these are worker-traversers that are distributed throughout the graph
+    TraverserSet<Object> newHaltedTraversers = new TraverserSet<>();
+    haltedTraversers.forEach(traverser -> {
+       newHaltedTraversers.add(traverser.split(traverser.get().toString(), this.programStep));
+    });
+    vertex.property(VertexProperty.Cardinality.single, TraversalVertexProgram.HALTED_TRAVERSERS, newHaltedTraversers);
+    // it is possible to create master-traversers that are localized to the master traversal (this is how results are ultimately delivered back to the user)
+    memory.add(TraversalVertexProgram.HALTED_TRAVERSERS,
+               new TraverserSet<>(this.traversal().get().getTraverserGenerator().generate("an example", this.programStep, 1l)));
+  }
+
+public boolean terminate(final Memory memory) {
+  // the master-traversal will have halted traversers
+  assert memory.exists(TraversalVertexProgram.HALTED_TRAVERSERS);
+  final TraverserSet<String> haltedTraversers = memory.get(TraversalVertexProgram.HALTED_TRAVERSERS);
+  // it will only have the traversers sent to the master traversal via memory
+  assert haltedTraversers.stream().map(Traverser::get).filter(s -> s.equals("an example")).findAny().isPresent();
+  // it will not contain the worker traversers distributed throughout the vertices
+  assert !haltedTraversers.stream().map(Traverser::get).filter(s -> !s.equals("an example")).findAny().isPresent();
+  return true;
+}
+----
+
+NOTE: The test case `ProgramTest` in `gremlin-test` has an example vertex program called `TestProgram` that demonstrates
+all the various ways in which traversal and traverser information is propagated within a vertex program and ultimately
+usable by other vertex programs (including `TraversalVertexProgram`) down the line in an OLAP compute chain.
+
+Finally, an example is provided using `PageRankVertexProgram` which doesn't use <<pagerank-step,`pageRank()`>>-step.
+
+[gremlin-groovy,modern]
+----
+g = graph.traversal().withComputer()
+g.V().hasLabel('person').
+  program(PageRankVertexProgram.build().property('rank').create(graph)).
+    order().by('rank', incr).
+  valueMap('name', 'rank')
+----
+
 [[range-step]]
 Range Step
 ~~~~~~~~~~
@@ -1693,7 +1890,7 @@
 [gremlin-groovy,modern]
 ----
 subGraph = g.E().hasLabel('knows').subgraph('subGraph').cap('subGraph').next() <1>
-sg = subGraph.traversal(standard())
+sg = subGraph.traversal()
 sg.E() <2>
 ----
 
@@ -1705,7 +1902,7 @@
 [gremlin-groovy,modern]
 ----
 subGraph = g.V(3).repeat(__.inE().subgraph('subGraph').outV()).times(3).cap('subGraph').next()  <1>
-sg = subGraph.traversal(standard())
+sg = subGraph.traversal()
 sg.E()
 ----
 
@@ -1718,8 +1915,8 @@
 ----
 t = g.V().outE('knows').subgraph('knowsG').inV().outE('created').subgraph('createdG').
           inV().inE('created').subgraph('createdG').iterate()
-t.sideEffects.get('knowsG').get().traversal(standard()).E()
-t.sideEffects.get('createdG').get().traversal(standard()).E()
+t.sideEffects.get('knowsG').traversal().E()
+t.sideEffects.get('createdG').traversal().E()
 ----
 
 IMPORTANT: The `subgraph()`-step only writes to graphs that support user supplied ids for its elements. Moreover,
@@ -2111,7 +2308,7 @@
 leverage a lambda in practice. It is advised that users only leverage a lambda if and only if there is no
 corresponding lambda-less step that encompasses the desired functionality. The reason being, lambdas can not be
 optimized by Gremlin's compiler strategies as they can not be programmatically inspected (see
-<<traversalstrategy,traversal strategies>>).
+<<traversalstrategy,traversal strategies>>). It is also not currently possible to send a lambda for remote execution to Gremlin-Server or a driver that supports remote execution. 
 
 In many situations where a lambda could be used, either a corresponding step exists or a traversal can be provided in
 its place. A `TraversalLambda` behaves like a typical lambda, but it can be optimized and it yields less objects than
@@ -2211,7 +2408,7 @@
 
     @Override
     public void apply(final Traversal.Admin<?, ?> traversal) {
-        if (traversal.getEngine().isComputer())
+        if (TraversalHelper.onGraphComputer(traversal))
             return;
 
         TraversalHelper.getStepsOfClass(GraphStep.class, traversal).forEach(originalGraphStep -> {
@@ -2281,7 +2478,7 @@
 ----
 graph = Neo4jGraph.open('/tmp/neo4j')
 strategy = ElementIdStrategy.build().create()
-g = GraphTraversalSource.build().with(strategy).create(graph)
+g = graph.traversal().withStrategies(strategy)
 g.addV().property(id, '42a').id()
 ----
 
@@ -2316,7 +2513,7 @@
 graph = TinkerFactory.createModern()
 l = new ConsoleMutationListener(graph)
 strategy = EventStrategy.build().addListener(l).create()
-g = GraphTraversalSource.build().with(strategy).create(graph)
+g = graph.traversal().withStrategies(strategy)
 g.addV('name','stephen')
 g.E().drop()
 ----
@@ -2354,9 +2551,9 @@
 graph = TinkerFactory.createModern()
 strategyA = PartitionStrategy.build().partitionKey("_partition").writePartition("a").addReadPartition("a").create()
 strategyB = PartitionStrategy.build().partitionKey("_partition").writePartition("b").addReadPartition("b").create()
-gA = GraphTraversalSource.build().with(strategyA).create(graph)
+gA = graph.traversal().withStrategies(strategyA)
 gA.addV() // this vertex has a property of {_partition:"a"}
-gB = GraphTraversalSource.build().with(strategyB).create(graph)
+gB = graph.traversal().withStrategies(strategyB)
 gB.addV() // this vertex has a property of {_partition:"b"}
 gA.V()
 gB.V()
@@ -2388,7 +2585,7 @@
 ----
 graph = TinkerFactory.createModern()
 strategy = SubgraphStrategy.build().edgeCriterion(hasId(8,9,10)).create()
-g = GraphTraversalSource.build().with(strategy).create(graph)
+g = graph.traversal().withStrategies(strategy)
 g.V() // shows all vertices as no filter for vertices was specified
 g.E() // shows only the edges defined in the edgeCriterion
 ----
diff --git a/docs/src/tutorials/getting-started/index.asciidoc b/docs/src/tutorials/getting-started/index.asciidoc
index 0893188..c026b0b 100644
--- a/docs/src/tutorials/getting-started/index.asciidoc
+++ b/docs/src/tutorials/getting-started/index.asciidoc
@@ -15,7 +15,9 @@
 limitations under the License.
 ////
 
-image::apache-tinkerpop-logo.png[width=500]
+image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]
+
+*x.y.z*
 
 Getting Started
 ---------------
diff --git a/docs/src/tutorials/gremlin-language-variants/index.asciidoc b/docs/src/tutorials/gremlin-language-variants/index.asciidoc
new file mode 100644
index 0000000..6101fae
--- /dev/null
+++ b/docs/src/tutorials/gremlin-language-variants/index.asciidoc
@@ -0,0 +1,782 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+////
+
+image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]
+
+*x.y.z*
+
+Gremlin Language Variants
+-------------------------
+
+Gremlin is an embeddable query language able to represent itself within the constructs of a host programming language.
+Any programming language that supports link:https://en.wikipedia.org/wiki/Function_composition[function composition]
+(e.g. fluent chaining) and link:https://en.wikipedia.org/wiki/Nested_function[function nesting] (e.g. call stacks)
+can support Gremlin. Nearly every modern programming language is capable of meeting both requirements.
+With Gremlin, the distinction between a programming language and a query language is not be as strongly divided as they
+have historically been. For instance, with Gremlin-Java, the developer is able to have their application code and their
+graph database queries at the same level of abstraction -- both written in Java. A simple example is presented below
+where the `MyApplication` Java class contains both application-level and database-level code written in Java.
+
+image::gremlin-house-of-mirrors.png[width=1024]
+
+WARNING: This is an advanced tutorial intended for experts knowledgeable in Gremlin in particular and TinkerPop in general.
+Moreover, the audience should understand advanced programming language concepts such as reflection, meta-programming,
+source code generation, and virtual machines.
+
+[source,java]
+----
+public class MyApplication {
+
+  public static void run(final String[] args) {
+
+    // assumes args[0] is a configuration file location
+    Graph graph = GraphFactory.open(args[0]);
+    GraphTraversalSource g = graph.traversal();
+
+    // assumes that args[1] and args[2] are range boundaries
+    Iterator<Map<String,Double>> result =
+      g.V().hasLabel("product").
+        order().by("unitPrice", incr).
+        range(Integer.valueOf(args[1]), Integer.valueOf(args[2])).
+        valueMap("name", "unitPrice")
+
+    while(result.hasNext()) {
+      Map<String,Double> map = result.next();
+      System.out.println(map.get("name") + " " + map.get("unitPrice"));
+    }
+  }
+}
+----
+
+In query languages like link:https://en.wikipedia.org/wiki/SQL[SQL], the user must construct a string representation of
+their query and submit it to the database for evaluation. This is because SQL can be expressed in Java as they use fundamentally
+different constructs in their expression. The same example above is presented below using SQL and the
+link:https://en.wikipedia.org/wiki/Java_Database_Connectivity[JDBC] interface. The take home point is that Gremlin does
+not exist outside the programming language in which it will be used. Gremlin was designed to be able to easily be
+embedded in any modern programming language and thus, always free from the complexities of string manipulation as seen
+in other database and analytics query languages.
+
+[source,java]
+----
+public class MyApplication {
+
+  public static void run(final String[] args) {
+
+    // assumes args[0] is a URI to the database
+    Connection connection = DriverManager.getConnection(args[0])
+    Statement statement = connection.createStatement();
+
+    // assumes that args[1] and args[2] are range boundaries
+    ResultSet result = statement.executeQuery(
+      "SELECT Products.ProductName, Products.UnitPrice \n" +
+      "  FROM (SELECT ROW_NUMBER() \n" +
+      "                   OVER ( \n" +
+      "                     ORDER BY UnitPrice) AS [ROW_NUMBER], \n" +
+      "                 ProductID \n" +
+      "            FROM Products) AS SortedProducts \n" +
+      "      INNER JOIN Products \n" +
+      "              ON Products.ProductID = SortedProducts.ProductID \n" +
+      "   WHERE [ROW_NUMBER] BETWEEN " + args[1] + " AND " + args[2] + " \n" +
+      "ORDER BY [ROW_NUMBER]"
+
+    while(result.hasNext()) {
+      result.next();
+      System.out.println(result.getString("Products.ProductName") + " " + result.getDouble("Products.UnitPrice"));
+    }
+  }
+}
+----
+
+The purpose of this tutorial is to explain how to develop a _Gremlin language variant_. That is, for those developers that
+are interested in supporting Gremlin in their native language and there currently does not exist a (good) Gremlin variant in
+their language, they can develop one for the Apache TinkerPop community (and their language community in general). In this
+tutorial, link:https://www.python.org/[Python] will serve as the host language and two typical implementation models will be presented.
+
+1. <<using-jython-and-the-jvm,**Using Jython and the JVM**>>: This is perhaps the easiest way to produce a Gremlin
+language variant. With link:https://www.jcp.org/en/jsr/detail?id=223[JSR-223], any language compiler written for the JVM
+can directly access the JVM and any of its libraries (including Gremlin-Java).
+
+2. <<using-python-and-gremlin-server,**Using Python and GremlinServer**>>: This model requires that there exist a Python
+class that mimics Gremlin-Java's `GraphTraversal` API. With each method call of this Python class, a `ScriptEngine`
+string is constructed (e.g. Gremlin-Groovy). Ultimately, that constructed traversal string is submitted to a
+link:http://tinkerpop.apache.org/docs/x.y.z/reference/#gremlin-server[GremlinServer]-compliant graph system for evaluation.
+
+IMPORTANT: Apache TinkerPop's Gremlin-Java is considered the idiomatic, standard implementation of Gremlin.
+Any Gremlin language variant, regardless of the implementation model chosen, **must**, within the constraints of the
+host language, be in 1-to-1 correspondence with Gremlin-Java. This ensures that language variants are collectively
+consistent and easily leveraged by anyone versed in Gremlin.
+
+[[language-drivers-vs-language-variants]]
+Language Drivers vs. Language Variants
+--------------------------------------
+
+Before discussing how to implement a Gremlin language variant in Python, it is necessary to understand two concepts related to
+Gremlin language development. There is a difference between a _language driver_ and a _language variant_ and it is important
+that these two concepts (and their respective implementations) remain separated.
+
+Language Drivers
+~~~~~~~~~~~~~~~~
+
+image:language-drivers.png[width=375,float=right] A Gremlin language driver is a software library that is able to
+communicate with a TinkerPop-enabled graph system whether directly via the JVM or indirectly via
+link:http://tinkerpop.apache.org/docs/x.y.z/reference/#gremlin-server[Gremlin Server]. By in large, if a
+language driver is being developed, it is typically being developed to interact with GremlinServer or a
+link:http://tinkerpop.apache.org/docs/x.y.z/reference/#connecting-via-remotegraph[RemoteConnection].
+Language drivers are responsible for submitting Gremlin traversals to a TinkerPop-enabled graph system and
+returning results to the developer that are within the developer's language's type system.
+For instance, resultant doubles should be coerced to floats in Python.
+
+This tutorial is not about language drivers, but about language variants. Moreover, community libraries should make this
+distinction clear and **should not** develop libraries that serve both roles. Language drivers will be useful to a collection
+of Gremlin variants within a language community -- able to support `GraphTraversal`-variants as well as also other
+link:https://en.wikipedia.org/wiki/Domain-specific_language[DSL]-variants (e.g. `SocialTraversal`).
+
+NOTE: `GraphTraversal` is a particular Gremlin domain-specific language (link:https://en.wikipedia.org/wiki/Domain-specific_language[DSL]),
+albeit the most popular and foundational DSL. If another DSL is created, then the same techniques discussed in this tutorial
+for `GraphTraversal` apply to `XXXTraversal`.
+
+Language Variants
+~~~~~~~~~~~~~~~~~
+
+image:language-variants.png[width=375,float=right] A Gremlin language variant is a software library that allows a developer
+to write a Gremlin traversal within their native programming language. The language variant is responsible for
+creating a `Traversal` instance that will ultimately be evaluated by a TinkerPop-enabled graph system.
+The `Traversal` instance is either created directly on the JVM or as a String for ultimate conversion to a `Traversal` by
+a link:https://www.jcp.org/en/jsr/detail?id=223[JSR-223] `ScriptEngine` (typically, via GremlinServer).
+
+Every language variant, regardless of the implementation details, will have to account for the four core concepts below:
+
+1. `Graph` (**data**): The source of the graph data to be traversed and the interface which enables the creation of a
+`GraphTraversalSource` (via `graph.traversal()`).
+
+2. `GraphTraversalSource` (**compiler**): This is the typical `g` reference. A `GraphTraversalSource` maintains the
+`withXXX()`-strategy methods as well as the "traversal spawn"-methods such as `V()`, `E()`, `addV()`, etc.
+A traversal source's registered `TraversalStrategies` determine how the submitted traversal will be compiled prior to evaluation.
+
+3. `GraphTraversal` (**function composition**): A graph traversal maintains every the computational steps such as `out()`, `groupCount()`,
+`match()`, etc. This fluent interface supports method chaining and thus, a linear "left-to-right" representation of a traversal/query.
+
+4. `__` (**function nesting**) : The anonymous traversal class is used for passing a traversal as an argument to a parent step.
+For example, in `repeat(__.out())`, `__.out()` is an anonymous traversal passed to the traversal parent `repeat()`.
+Anonymous traversals enable the "top-to-bottom" representation of a traversal.
+
+Both `GraphTraversal` and `__` define the structure of the Gremlin language. Gremlin is a _two-dimensional language_ supporting
+linear, nested step sequences. Historically, many Gremlin language variants have failed to make the distinctions above clear
+and in doing so, either complicate their implementations or yield variants that are not in 1-to-1 correspondence with Gremlin-Java.
+
+IMPORTANT: The term "Gremlin-Java" denotes the language that is defined by `GraphTraversalSource`, `GraphTraversal`,
+and `__`. These three classes exist in `org.apache.tinkerpop.gremlin.process.traversal.dsl.graph` and form the definitive
+representation of the Gremlin traversal language.
+
+Gremlin-Jython and Gremlin-Python
+---------------------------------
+
+[[using-jython-and-the-jvm]]
+Using Jython and the JVM
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+image:jython-logo.png[width=200,float=left,link="http://www.jython.org/"] link:http://www.jython.org/[Jython] provides a
+link:https://www.jcp.org/en/jsr/detail?id=223[JSR-223] `ScriptEngine` implementation that enables the evaluation of
+Python on the link:https://en.wikipedia.org/wiki/Java_virtual_machine[Java virtual machine]. In other words, Jython's
+virtual machine is not the standard link:https://wiki.python.org/moin/CPython[CPython] reference implementation
+distributed with most operating systems, but instead the JVM. The benefit of Jython is that Python code and classes
+can easily interact with the Java API and any Java packages on the `CLASSPATH`. In general, any JSR-223 Gremlin language
+variant is trivial to "implement."
+
+[source,python]
+----
+Jython 2.7.0 (default:9987c746f838, Apr 29 2015, 02:25:11)
+[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_40
+Type "help", "copyright", "credits" or "license" for more information.
+>>> import sys
+# this list is longer than displayed, including all jars in lib/, not just Apache TinkerPop jars
+>>> sys.path.append("/usr/local/apache-gremlin-console-x.y.z-standalone/lib/gremlin-console-x.y.z.jar")
+>>> sys.path.append("/usr/local/apache-gremlin-console-x.y.z-standalone/lib/gremlin-core-x.y.z.jar")
+>>> sys.path.append("/usr/local/apache-gremlin-console-x.y.z-standalone/lib/gremlin-driver-x.y.z.jar")
+>>> sys.path.append("/usr/local/apache-gremlin-console-x.y.z-standalone/lib/gremlin-shaded-x.y.z.jar")
+>>> sys.path.append("/usr/local/apache-gremlin-console-x.y.z-standalone/ext/tinkergraph-gremlin/lib/tinkergraph-gremlin-x.y.z.jar")
+# import Java classes
+>>> from org.apache.tinkerpop.gremlin.tinkergraph.structure import TinkerFactory
+>>> from org.apache.tinkerpop.gremlin.process.traversal.dsl.graph import __
+>>> from org.apache.tinkerpop.gremlin.process.traversal import *
+>>> from org.apache.tinkerpop.gremlin.structure import *
+# create the toy "modern" graph and spawn a GraphTraversalSource
+>>> graph = TinkerFactory.createModern()
+>>> g = graph.traversal()
+# The Jython shell does not automatically iterate Iterators like the GremlinConsole
+>>> g.V().hasLabel("person").out("knows").out("created")
+[GraphStep(vertex,[]), HasStep([~label.eq(person)]), VertexStep(OUT,[knows],vertex), VertexStep(OUT,[created],vertex)]
+# toList() will do the iteration and return the results as a list
+>>> g.V().hasLabel("person").out("knows").out("created").toList()
+[v[5], v[3]]
+>>> g.V().repeat(__.out()).times(2).values("name").toList()
+[ripple, lop]
+# results can be interacted with using Python
+>>> g.V().repeat(__.out()).times(2).values("name").toList()[0]
+u'ripple'
+>>> g.V().repeat(__.out()).times(2).values("name").toList()[0][0:3].upper()
+u'RIP'
+>>>
+----
+
+Most every JSR-223 `ScriptEngine` language will allow the developer to immediately interact with `GraphTraversal`.
+The benefit of this model is that nearly every major programming language has a respective `ScriptEngine`:
+link:https://en.wikipedia.org/wiki/Nashorn_(JavaScript_engine)[JavaScript], link:http://groovy-lang.org/[Groovy],
+link:http://www.scala-lang.org/[Scala], Lisp (link:https://clojure.org/[Clojure]), link:http://jruby.org/[Ruby], etc. A
+list of implementations is provided link:https://en.wikipedia.org/wiki/List_of_JVM_languages[here].
+
+Traversal Wrappers
+^^^^^^^^^^^^^^^^^^
+
+While it is possible to simply interact with Java classes in a `ScriptEngine` implementation, such Gremlin language variants
+will not leverage the unique features of the host language. It is for this reason that JVM-based language variants such as
+link:https://github.com/mpollmeier/gremlin-scala[Gremlin-Scala] were developed. Scala provides many syntax niceties not
+available in Java. To leverage these niceties, Gremlin-Scala "wraps" `GraphTraversal` in order to provide Scala-idiomatic extensions.
+Another example is Apache TinkerPop's Gremlin-Groovy which does the same via the
+link:http://tinkerpop.apache.org/docs/x.y.z/reference/#sugar-plugin[Sugar plugin], but uses
+link:http://groovy-lang.org/metaprogramming.html[meta-programming] instead of object wrapping, where "behing the scenes,"
+Groovy meta-programming is doing object wrapping.
+
+The Jython classes below wrap `GraphTraversalSource` and `GraphTraversal`. In doing so, they add methods
+that apply Python-specific constructs to Gremlin. In particular, the `__getitem__` and `__getattr__` "magic methods" are leveraged.
+It is important to note that the classes below are **not complete** and only provide enough functionality to demonstrate this
+sub-sections tutorial material.
+
+[source,python]
+----
+# GraphTraversalSource (incomplete)
+class JythonGraphTraversalSource(object):
+  def __init__(self, traversalSource):
+    self.traversalSource = traversalSource
+  def V(self,*args):
+    return JythonGraphTraversal(self.traversalSource.V(*args))
+  def __repr__(self):
+    return self.traversalSource.toString()
+
+# GraphTraversal (incomplete)
+class JythonGraphTraversal(object):
+  def __init__(self, traversal):
+    self.traversal = traversal
+  def V(self,*args):
+    self.traversal = self.traversal.V(args)
+    return self
+  def values(self, *propertyKeys):
+    self.traversal = self.traversal.values(propertyKeys)
+    return self
+  def toList(self):
+    return self.traversal.toList()
+  def __repr__(self):
+    return self.traversal.toString()
+  def __getitem__(self,index):
+    if type(index) is int:
+      self.traversal = self.traversal.range(index,index+1)
+    elif type(index) is slice:
+        self.traversal = self.traversal.range(index.start,index.stop)
+    else:
+        raise TypeError("index must be int or slice")
+    return self
+  def __getattr__(self,key):
+    return self.values(key)
+----
+
+The two methods `__getitem__` and `__getattr__` support Python _slicing_ and _object attribute interception_, respectively.
+In this way, the host language is able to use its native constructs in a meaningful way within a Gremlin traversal.
+
+[source,python]
+----
+>>> graph
+tinkergraph[vertices:6 edges:6]
+>>> g = JythonGraphTraversalSource(graph.traversal())
+>>> g
+graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
+# Python slices are converted to range()-steps
+>>> g.V()[1:4]
+[GraphStep(vertex,[]), RangeGlobalStep(1,4)]
+# Python attribute selections are converted to values()-steps
+>>> g.V()[1:4].name
+[GraphStep(vertex,[]), RangeGlobalStep(1,4), PropertiesStep([name],value)]
+>>> g.V()[1:4].name.toList()
+[vadas, lop, josh]
+----
+
+IMPORTANT: Gremlin-Java serves as the standard/default representation of the Gremlin traversal language. Any Gremlin
+language variant **must** provide all the same functionality (methods) as `GraphTraversal`, but **can** extend it
+with host language specific constructs. This means that the extensions **must** compile to `GraphTraversal`-specific
+steps. A Gremlin language variant **should not** add steps/methods that do not exist in `GraphTraversal`. If an extension
+is desired, the language variant designer should submit a proposal to link:http://tinkerpop.apache.org[Apache TinkerPop]
+to have the extension added to a future release of Gremlin.
+
+Auto-Generated Traversal Wrappers
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+In the previous example, only a subset of the `GraphTraversalSource` and `GraphTraversal` methods were implemented in the
+corresponding Jython classes. Unfortunately, adding the near 200 `GraphTraversal` methods to a wrapper class is
+both tedious and error-prone. To alleviate this pain, Python classes can be dynamically created using Groovy and
+link:https://en.wikipedia.org/wiki/Reflection_(computer_programming)#Java[Java reflection].
+The Groovy code for constructing the `JythonGraphTraversal` class source is reviewed below. By simply executing this code
+in the link:http://tinkerpop.apache.org/docs/x.y.z/reference/#gremlin-console[Gremlin Console], the `gremlin-jython.py` file
+is generated and can be `execfile()`'d by Jython.
+
+NOTE: Any JVM language can use Java reflection to generate source code. The examples in this tutorial use Groovy because of
+its terse syntax and convenient multi-line string construct `""" """`. Moreover, the Gremlin Console is recommended for
+the Groovy script evaluation because all requisite TinkerPop libraries are pre-loaded and available at startup.
+
+[source,groovy]
+----
+pythonClass = new StringBuilder();
+pythonClass.append("from org.apache.tinkerpop.gremlin.process.traversal import *\n")
+pythonClass.append("from org.apache.tinkerpop.gremlin.structure import *\n")
+pythonClass.append("from org.apache.tinkerpop.gremlin.process.traversal.dsl.graph import __ as anon\n\n")
+//////////////////////////
+// GraphTraversalSource //
+//////////////////////////
+methods = GraphTraversalSource.getMethods().collect{it.name} as Set; []
+pythonClass.append(
+"""class JythonGraphTraversalSource(object):
+  def __init__(self, traversalSource):
+    self.traversalSource = traversalSource
+  def __repr__(self):
+    return self.traversalSource.toString()
+""")
+methods.each{ method ->
+  returnType = (GraphTraversalSource.getMethods() as Set).findAll{it.name.equals(method)}.collect{it.returnType}[0]
+  if(null != returnType && TraversalSource.isAssignableFrom(returnType)) {
+  pythonClass.append(
+"""  def ${method}(self, *args):
+    self.traversalSource = self.traversalSource.${method}(*args)
+    return self
+""")
+  } else if(null != returnType && Traversal.isAssignableFrom(returnType)) {
+  pythonClass.append(
+"""  def ${method}(self, *args):
+    return JythonGraphTraversal(self.traversalSource.${method}(*args))
+""")
+  } else {
+  pythonClass.append(
+"""  def ${method}(self, *args):
+    return self.traversalSource.${method}(*args)
+""")
+  }
+}; []
+pythonClass.append("\n\n")
+
+////////////////////
+// GraphTraversal //
+////////////////////
+methodMap = [as:"_as",in:"_in",and:"_and",or:"_or",is:"_is",not:"_not",from:"_from"].withDefault{ it }  //// <1>
+invertedMethodMap = [_as:"as",_in:"in",_and:"and",_or:"or",_is:"is",_not:"not",_from:"from"].withDefault{ it }
+pythonClass.append(                                                           //// <2>
+"""class JythonGraphTraversal(object):
+  def __init__(self, traversal):
+    self.traversal = traversal
+  def __repr__(self):
+    return self.traversal.toString()
+  def __getitem__(self,index):
+    if type(index) is int:
+      self.traversal = self.traversal.range(index,index+1)
+    elif type(index) is slice:
+        self.traversal = self.traversal.range(index.start,index.stop)
+    else:
+        raise TypeError("index must be int or slice")
+    return self
+  def __getattr__(self,key):
+    return self.values(key)
+""")
+methods = GraphTraversal.getMethods().collect{methodMap[it.name]} as Set; []  //// <3>
+methods.each{ method ->
+  returnType = (GraphTraversal.getMethods() as Set).findAll{it.name.equals(method)}.collect{it.returnType}[0]
+  if(null != returnType && Traversal.isAssignableFrom(returnType)) {          //// <4>
+  pythonClass.append(
+"""  def ${method}(self, *args):
+    self.traversal = self.traversal.${invertedMethodMap[method]}(*args)
+    return self
+""")
+  } else {
+  pythonClass.append(                                                         //// <5>
+"""  def ${method}(self, *args):
+    return self.traversal.${invertedMethodMap[method]}(*args)
+""")
+  }
+}; []
+pythonClass.append("\n\n")
+
+////////////////////////
+// AnonymousTraversal //
+////////////////////////
+methods = __.getMethods().collect{methodMap[it.name]} as Set; []
+pythonClass.append("class __(object):\n");
+methods.each{ method ->
+  pythonClass.append(
+"""  @staticmethod
+  def ${method}(*args):
+    return anon.${invertedMethodMap[method]}(*args)
+""")
+}; []
+pythonClass.append("\n\n")
+
+// save to a python file
+file = new File("/tmp/gremlin-jython.py")                                    //// <6>
+file.delete()
+pythonClass.eachLine{ file.append(it + "\n") }
+----
+
+<1> There are numerous `GraphTraversal` step names that are reserved words in Python. Prefixing these steps with `_` is the chosen workaround.
+<2> Add Gremlin-Jython specific methods to `JythonGraphTraversal`. These methods are idiomatic Python extensions, not step additions.
+<3> Use Java reflection to get all the methods of `GraphTraversal`.
+<4> If the method is a fluent traversal-method, then mutate the underlying/wrapped `GraphTraversal` instance accordingly.
+<5> If the method is not a fluent traversal-method, return the result of applying the method.
+<6> Save the string representation of the Jython source code to `gremlin-jython.py`.
+
+From the Jython console, `gremlin-jython.py` is loaded and a complete Gremlin language variant is born: **Gremlin-Jython**.
+The generated file is available at link:../../resources/gremlin-jython.py[gremlin-jython.py].
+
+[source,python]
+----
+Jython 2.7.0 (default:9987c746f838, Apr 29 2015, 02:25:11)
+[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_40
+Type "help", "copyright", "credits" or "license" for more information.
+>>> execfile("/tmp/gremlin-jython.py")
+>>> from org.apache.tinkerpop.gremlin.tinkergraph.structure import TinkerFactory
+>>> graph = TinkerFactory.createModern()
+>>> g = JythonGraphTraversalSource(graph.traversal())
+# using the Gremlin-Jython __getattr__ and __getitem__ extensions and anonymous traversals
+>>> g.V().repeat(__.both("created")).times(2).name[1:3].path().toList()
+[[v[1], v[3], v[4], josh], [v[1], v[3], v[6], peter]]
+# JythonGraphTraversalSource works as expected -- an example using Gremlin-Jython w/ OLAP
+>>> g = g.withComputer()
+>>> g
+graphtraversalsource[tinkergraph[vertices:6 edges:6], graphcomputer]
+>>> g.V().repeat(__.both("created")).times(2).name[1:3].path().toList()
+[[v[3], v[4], v[5], ripple], [v[1], v[4], v[5], ripple]]
+>>>
+----
+
+Gremlin-Jython was simple to create. Unfortunately, this simplicity is not without some problems. These problems are itemized below.
+The interested reader can solve the aforementioned problems as a training exercise.
+
+* The Gremlin-Jython API is non-informative as all methods take a tuple reference (`*args`).
+** The Gremlin-Java link:http://tinkerpop.apache.org/javadocs/x.y.z/full/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html[JavaDoc] would be a sufficient guide to Gremlin-Jython (minus the extensions).
+* Lambdas are not supported as `map(lambda x: x.get())` will throw an exception about not being able to coerce `lamba` into `java.util.function.Function`.
+** Python type inspection with a creation of `Function` lambda wrapper would solve this problem.
+* `__` is always required for anonymous traversals and thus, `repeat(__.both())` can not be replaced by `repeat(both())`.
+** By placing the `@staticmethods` outside of the `__` Jython class, the methods would be globally scoped (analogous to `import static` in Java).
+
+NOTE: Another technique that can be leveraged in most link:https://en.wikipedia.org/wiki/Dynamic_programming_language[dynamic languages]
+is to use meta-programming and intercept all method calls to the variant's traversal classes. From there, the name of the
+method that was called, along with its parameters, are used to dynamically construct a method call to the wrapped traversals.
+In this way, there is no need to create a wrapper method for each method in `GraphTraversalSource`, `GraphTraversal`, and `__`.
+The drawback of this technique is that not all methods are fluent and those that are not, might need special handling.
+Moreover, runtime reflection is typically not efficient.
+
+[[using-python-and-gremlin-server]]
+Using Python and GremlinServer
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+image:python-logo.png[width=125,float=left,link="https://www.python.org/"] The JVM is a wonderful piece of technology that has, over the years,
+become a meeting ground for developers from numerous language communities. However, not all applications will use the JVM.
+Given that Apache TinkerPop is a Java-framework, there must be a way for two different virtual machines to communicate
+traversals and their results. This section presents the second Gremlin language variant implementation model which does just that.
+
+NOTE: Apache TinkerPop is a JVM-based graph computing framework. Most graph databases and processors today are built
+on the JVM. This makes it easy for these graph system providers to implement Apache TinkerPop. However, TinkerPop is more
+than its graph API and tools -- it is also the Gremlin traversal machine and language. While Apache's Gremlin traversal
+machine was written for the JVM, its constructs are simple and can/should be ported to other VMs for those graph systems
+that are not JVM-based. A theoretical review of the concepts behind the Gremlin traversal machine is provided in
+link:http://arxiv.org/abs/1508.03843[this article].
+
+This section's Gremlin language variant design model does not leverage the JVM directly. Instead, it constructs a `String`
+representation of a `Traversal` that will ultimately be evaluated by a registered `ScriptEngine` at a GremlinServer
+or `RemoteConnection`. It is up to the language variant designer to choose a _language driver_ to use for submitting
+the generated String and coercing its results. The language driver is the means by which, for this example, the CPython
+VM communicates with the JVM. The link:https://github.com/davebshow/gremlinclient[gremlinclient]
+Python language driver is used and its installation via link:https://en.wikipedia.org/wiki/Pip_(package_manager)[pip]
+is provided below.
+
+[source,bash]
+----
+# sudo easy_install pip
+$ sudo pip install gremlinclient
+----
+
+IMPORTANT: When language drivers are separated from language variants, language variants can more easily choose a language
+driver to use. In fact, it is possible for multiple language drivers to be supported by a language variant as GremlinServer,
+for example, supports various interaction mechanisms such as WebSockets, REST, custom endpoints, etc.
+
+The Groovy source code below uses Java reflection to generate a Python class that is in 1-to-1 correspondence with
+Gremlin-Java.
+
+[source,groovy]
+----
+pythonClass = new StringBuilder()
+pythonClass.append("from tornado import gen\n")
+pythonClass.append("from tornado.ioloop import IOLoop\n")
+pythonClass.append("from gremlinclient.tornado_client import submit\n")
+pythonClass.append("""
+class Helper(object):
+  @staticmethod
+  def stringOrObject(arg):
+    if (type(arg) is str and
+       not(arg.startswith("P.")) and
+       not(arg.startswith("Order.")) and
+       not(arg.startswith("T.")) and
+       not(arg.startswith("Pop.")) and
+       not(arg.startswith("Column."))):
+      return "\\"" + arg + "\\""
+    elif type(arg) is bool:
+      return str(arg).lower()
+    else:
+      return str(arg)
+  @staticmethod
+  def stringify(*args):
+    if len(args) == 0:
+      return ""
+    elif len(args) == 1:
+      return Helper.stringOrObject(args[0])
+    else:
+      return ", ".join(Helper.stringOrObject(i) for i in args)
+  @staticmethod
+  @gen.coroutine
+  def submit(gremlinServerURI, traversalString):
+    response = yield submit(gremlinServerURI, traversalString)
+    while True:
+      result = yield response.read()
+      if result is None:
+        break
+      raise gen.Return(result.data)\n
+
+"""); //// <1>
+
+//////////////////////////
+// GraphTraversalSource //
+//////////////////////////
+methods = GraphTraversalSource.getMethods().collect{it.name} as Set; []
+pythonClass.append(
+"""class PythonGraphTraversalSource(object):
+  def __init__(self, gremlinServerURI, traversalSourceString):
+    self.gremlinServerURI = gremlinServerURI
+    self.traversalSourceString = traversalSourceString
+  def __repr__(self):
+    return "graphtraversalsource[" + self.gremlinServerURI + ", " + self.traversalSourceString + "]"
+""")
+methods.each{ method ->
+  returnType = (GraphTraversalSource.getMethods() as Set).findAll{it.name.equals(method)}.collect{it.returnType}[0]
+  if(null != returnType && Traversal.isAssignableFrom(returnType)) {
+  pythonClass.append(
+"""  def ${method}(self, *args):
+    return PythonGraphTraversal(self.traversalSourceString + ".${method}(" + Helper.stringify(*args) + ")", self.gremlinServerURI)
+""")
+  } else {
+  pythonClass.append(
+"""  def ${method}(self, *args):
+    return PythonGraphTraversalSource(self.gremlinServerURI, self.traversalSourceString + ".${method}(" + Helper.stringify(*args) + ")")
+""")
+  }
+}; []
+pythonClass.append("\n\n")
+
+////////////////////
+// GraphTraversal //
+////////////////////
+methodMap = [as:"_as",in:"_in",and:"_and",or:"_or",is:"_is",not:"_not",from:"_from"].withDefault{ it }
+invertedMethodMap = [_as:"as",_in:"in",_and:"and",_or:"or",_is:"is",_not:"not",_from:"from"].withDefault{ it }
+methods = GraphTraversal.getMethods().collect{methodMap[it.name]} as Set; []
+methods.remove("toList")                                                                //// <2>
+pythonClass.append(
+"""class PythonGraphTraversal(object):
+  def __init__(self, traversalString, gremlinServerURI=None):
+    self.traversalString = traversalString
+    self.gremlinServerURI = gremlinServerURI
+  def __repr__(self):
+    return self.traversalString;
+  def __getitem__(self,index):
+    if type(index) is int:
+      return self.range(index,index+1)
+    elif type(index) is slice:
+      return self.range(index.start,index.stop)
+    else:
+      raise TypeError("index must be int or slice")
+  def __getattr__(self,key):
+    return self.values(key)
+  def toList(self):
+    return IOLoop.current().run_sync(lambda: Helper.submit(self.gremlinServerURI, self.traversalString))
+""")
+methods.each{ method ->
+  returnType = (GraphTraversal.getMethods() as Set).findAll{it.name.equals(invertedMethodMap[method])}.collect{it.returnType}[0]
+  if(null != returnType && Traversal.isAssignableFrom(returnType)) {
+    pythonClass.append(
+"""  def ${method}(self, *args):
+    self.traversalString = self.traversalString + ".${invertedMethodMap[method]}(" + Helper.stringify(*args) + ")"
+    return self
+""")
+  } else {
+    pythonClass.append(
+"""  def ${method}(self, *args):
+    self.traversalString = self.traversalString + ".${invertedMethodMap[method]}(" + Helper.stringify(*args) + ")"
+    return self.toList()
+""")
+  }
+}; []
+pythonClass.append("\n\n")
+
+////////////////////////
+// AnonymousTraversal //
+////////////////////////
+methods = __.getMethods().collect{methodMap[it.name]} as Set; []
+pythonClass.append("class __(object):\n");
+methods.each{ method ->
+  pythonClass.append(
+"""  @staticmethod
+  def ${method}(*args):
+    return PythonGraphTraversal("__").${method}(*args)
+""")
+}; []
+pythonClass.append("\n\n")
+
+// save to a python file
+file = new File("/tmp/gremlin-python.py")                                                //// <3>
+file.delete()
+pythonClass.eachLine{ file.append(it + "\n") }
+----
+
+<1> The `Helper` class contains static methods that are generally useful to the other classes. This could have been a separate file, but was included in the Groovy script so that the tutorial's code is consolidated.
+<2> `toList()`'s method `def` is not generated programmatically, but instead is hardcoded and uses the gremlinclient driver to communicate with GremlinServer.
+<3> Save the string representation of the Python source code to `gremlin-python.py`.
+
+When the above Groovy script is evaluated in GremlinConsole, **Gremlin-Python** is born.
+The generated file is available at link:../../resources/gremlin-python.py[gremlin-python.py]. Now, from any Python
+virtual machine (not just Jython), Gremlin traversals can be expressed in native Python and a legal Gremlin-Groovy
+string is created behind the scenes.
+
+NOTE: The string that is generated for submission to a GremlinServer or `RemoteConnection` does not have to be a
+Gremlin-Groovy string. However, it must be a string that has a respective `ScriptEngine` that is enabled on the remote
+location. It is recommended that a Gremlin-Groovy string be constructed as Gremlin-Groovy is maintained by
+Apache TinkerPop and is guaranteed to always be aligned with Gremlin-Java.
+
+Be sure that GremlinServer is running and has a link:http://tinkerpop.apache.org/docs/x.y.z/reference/#graphson-reader-writer[GraphSON]
+endpoint. The following serializers were added to `conf/gremlin-server-modern.yaml`.
+
+[source,yaml]
+- { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
+- { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
+
+Then GremlinServer was started.
+
+[source,bash]
+----
+$ bin/gremlin-server.sh conf/gremlin-server-modern.yaml
+[INFO] GremlinServer -
+         \,,,/
+         (o o)
+-----oOOo-(3)-oOOo-----
+
+[INFO] GremlinServer - Configuring Gremlin Server from conf/gremlin-server-modern.yaml
+[INFO] MetricManager - Configured Metrics Slf4jReporter configured with interval=180000ms and loggerName=org.apache.tinkerpop.gremlin.server.Settings$Slf4jReporterMetrics
+[INFO] GraphManager - Graph [graph] was successfully configured via [conf/tinkergraph-empty.properties].
+[INFO] ServerGremlinExecutor - Initialized Gremlin thread pool.  Threads in pool named with pattern gremlin-*
+[INFO] ScriptEngines - Loaded gremlin-groovy ScriptEngine
+[INFO] GremlinExecutor - Initialized gremlin-groovy ScriptEngine with scripts/generate-modern.groovy
+[INFO] ServerGremlinExecutor - Initialized GremlinExecutor and configured ScriptEngines.
+[INFO] ServerGremlinExecutor - A GraphTraversalSource is now bound to [g] with graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
+[INFO] OpLoader - Adding the standard OpProcessor.
+[INFO] OpLoader - Adding the control OpProcessor.
+[INFO] OpLoader - Adding the session OpProcessor.
+[INFO] OpLoader - Adding the traversal OpProcessor.
+[INFO] GremlinServer - Executing start up LifeCycleHook
+[INFO] Logger$info - Loading 'modern' graph data.
+[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
+[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo-stringd with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
+[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0
+[INFO] AbstractChannelizer - Configured application/json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0
+[INFO] GremlinServer$1 - Gremlin Server configured with worker thread pool of 1, gremlin pool of 8 and boss thread pool of 1.
+[INFO] GremlinServer$1 - Channel started at port 8182.
+----
+
+[source,python]
+----
+Python 2.7.2 (default, Oct 11 2012, 20:14:37)
+[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
+Type "help", "copyright", "credits" or "license" for more information.
+>>> execfile("/tmp/gremlin-python.py")
+# PythonGraphTraversalSource requires a GremlinServer endpoint and a traversal alias
+>>> g = PythonGraphTraversalSource("ws://localhost:8182/", "g")
+>>> g
+graphtraversalsource[ws://localhost:8182/, g]
+# nested traversal with Python slicing and attribute interception extensions
+>>> g.V().repeat(__.both("created")).times(2).name[1:3].path()
+g.V().repeat(__.both("created")).times(2).values("name").range(1, 3).path()
+>>> g.V().hasLabel("person").repeat(__.both()).times(2).name[0:2].toList()
+[u'marko', u'josh']
+# PythonGraphTraversalSource works as expected -- an example using Gremlin-Python w/ OLAP
+>>> g = g.withComputer()
+>>> g
+graphtraversalsource[ws://localhost:8182/, g.withComputer()]
+>>> g.V().hasLabel("person").repeat(__.both()).times(2).name[0:2].toList()
+[u'ripple', u'marko']
+# a complex, nested multi-line traversal
+>>> g.V().match( \
+...     __._as("a").out("created")._as("b"), \
+...     __._as("b")._in("created")._as("c"), \
+...     __._as("a").out("knows")._as("c")). \
+...   select("c"). \
+...   union(__._in("knows"),__.out("created")). \
+...   name.toList()
+[u'marko', u'ripple', u'lop']
+>>>
+----
+
+Finally, for the sake of brevity, Gremlin-Python is simple and as such, incurs a few peculiarities that the interested
+reader may want to remedy as an exercise.
+
+* `P`, `T`, `Order`, etc. are handled via string analysis and are used as `has("age","P.gt(36)")`. It would be better to create `P`, `T`, etc. Python classes that yield the appropriate string representation.
+* Results are retrieved using `toList()`. This simple implementation does not account for GremlinServer's result batching and is thus, is not optimal for large result sets.
+* While terminal methods such as `next()`, `hasNext()`, `toSet()`, etc. work, they simply rely on `toList()` in an awkward way.
+
+[[gremlin-language-variant-conventions]]
+Gremlin Language Variant Conventions
+------------------------------------
+
+Every programming language is different and a Gremlin language variant must ride the fine line between leveraging the
+conventions of the host language and ensuring consistency with Gremlin-Java. A collection of conventions for navigating
+this dual-language bridge are provided.
+
+* If camelCase is not an accepted method naming convention in the host language, then the host language's convention should be used instead. For instance, in a Gremlin-Ruby implementation, `outE("created")` should be `out_e("created")`.
+* If Gremlin-Java step names conflict with the host language's reserved words, then a consistent amelioration should be used. For instance, in Python `as` is a reserved word, thus, Gremlin-Python uses `_as`.
+* If the host language does not use dot-notion for method chaining, then its method chaining convention should be used instead of going the route of operator overloading. For instance, a Gremlin-PHP implementation should do `$g->V()->out()`.
+* If a programming language does not support method overloading, then varargs and type introspection should be used. In Gremlin-Python, `*args` does just this and that is why there are not 200 methods off of `PythonGraphTraversal`.
+
+As stated in <<language-drivers-vs-language-variants,"Language Drivers vs. Language Variants">>, drivers and variants should
+be separate libraries. A proposed naming convention for each library type is `gremlin-<language>-driver` and
+`gremlin-<language>`. Unfortunately, numerous drivers and languages already exist for Gremlin that don't use this convention.
+However, moving forward, it might be good to be explicit in the naming so its obvious to users what is what.
+
+Finally, note that Gremlin-Jython and Gremlin-Python (as presented in this tutorial) were only manually tested. This
+means that there are most likely errors in the translation and thus, some traversals may break. A future addition to this
+tutorial will explain how to leverage TinkerPop's `ProcessStandardSuite` and `ProcessComputerSuite` to test not only
+JVM-based language variants, but also non-JVM variants. In doing so, every Gremlin language variant's syntax and
+semantics will be validated and deemed an accurate representation of Gremlin-Java within another host language.
+
+Conclusion
+----------
+
+Gremlin is a simple language because it uses two fundamental programming language constructs: *function composition*
+and *function nesting*. Because of this foundation, it is relatively easy to implement Gremlin in any modern programming
+language. Two ways of doing this for the Python language were presented in this tutorial. One using Jython (on the JVM) and one using Python
+(on CPython). It is strongly recommended that language variant designers leverage (especially when not on the JVM)
+the reflection-based source code generation technique presented. This method ensures that the language
+variant is always in sync with the corresponding Apache TinkerPop Gremlin-Java release version. Moreover, it reduces
+the chance of missing methods or creating poorly implemented methods. While Gremlin is simple, there are nearly 200
+steps in `GraphTraversal`. As such, computational means of host language embedding are strongly advised.
\ No newline at end of file
diff --git a/docs/src/tutorials/the-gremlin-console/index.asciidoc b/docs/src/tutorials/the-gremlin-console/index.asciidoc
index 8159e92..8a90056 100644
--- a/docs/src/tutorials/the-gremlin-console/index.asciidoc
+++ b/docs/src/tutorials/the-gremlin-console/index.asciidoc
@@ -15,7 +15,9 @@
 limitations under the License.
 ////
 
-image::apache-tinkerpop-logo.png[width=500]
+image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]
+
+*x.y.z*
 
 The Gremlin Console
 -------------------
@@ -614,11 +616,12 @@
 ----
 
 TIP: If you find that you always work with a particular library, consider starting the console with an initialization
-script that prepares your environment for you. An "initialization script" is just a Groovy script that contains the
-initial commands to execute when the console starts.  Following the use case, it would be nice if the initialization
-script contained the `import` statement for the driver and possibly the code to get the `Session` object ready for use.
-Start the Gremlin Console with that script by just adding it as an argument on the command line:
-`bin/gremlin.sh init.groovy`.
+script that prepares your environment for you and start Gremlin Console in
+link:http://tinkerpop.apache.org/docs/x.y.z/reference/#interactive-mode[interactive mode]. An "initialization script"
+is just a Groovy script that contains the initial commands to execute when the console starts.  Following the use case,
+it would be nice if the initialization script contained the `import` statement for the driver and possibly the code to
+get the `Session` object ready for use. Start the Gremlin Console with that script by just adding it as an argument on
+the command line: `bin/gremlin.sh -i init.groovy`.
 
 This use case focused on using a Cassandra related library, but it should be evident that it would be equally
 straightforward to perform this same data dump to link:https://hbase.apache.org/[HBase],
diff --git a/docs/src/upgrade/index.asciidoc b/docs/src/upgrade/index.asciidoc
index e1d07db..59dd5e1 100644
--- a/docs/src/upgrade/index.asciidoc
+++ b/docs/src/upgrade/index.asciidoc
@@ -14,7 +14,7 @@
 See the License for the specific language governing permissions and
 limitations under the License.
 ////
-image::apache-tinkerpop-logo.png[width=500]
+image::apache-tinkerpop-logo.png[width=500,link="http://tinkerpop.apache.org"]
 
 :toc-position: left
 
@@ -35,6 +35,8 @@
 * Graph Language Provider
 * Graph Plugin Provider
 
+include::release-3.2.x-incubating.asciidoc[]
+
 include::release-3.1.x-incubating.asciidoc[]
 
 include::release-3.0.x-incubating.asciidoc[]
\ No newline at end of file
diff --git a/docs/src/upgrade/release-3.2.x-incubating.asciidoc b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
new file mode 100644
index 0000000..f85012c
--- /dev/null
+++ b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
@@ -0,0 +1,606 @@
+////
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+////
+
+TinkerPop 3.2.0
+===============
+
+image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/images/nine-inch-gremlins.png[width=225]
+
+*Nine Inch Gremlins*
+
+TinkerPop 3.2.1
+---------------
+
+*Release Date: July 18, 2016*
+
+Please see the link:https://github.com/apache/tinkerpop/blob/3.2.1/CHANGELOG.asciidoc#release-3-2-1[changelog] for a complete list of all the modifications that are part of this release.
+
+Upgrading for Users
+~~~~~~~~~~~~~~~~~~~
+
+Gephi Plugin
+^^^^^^^^^^^^
+
+The Gephi Plugin has been updated to support Gephi 0.9.x. Please upgrade to this latest version to use the Gephi Plugin
+for Gremlin Console.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1297[TINKERPOP-1297]
+
+GryoMapper Construction
+^^^^^^^^^^^^^^^^^^^^^^^
+
+It is now possible to override existing serializers with calls to `addCustom` on the `GryoMapper` builder. This option
+allows complete control over the serializers used by Gryo. Of course, this also makes it possible to produce completely
+non-compliant Gryo files. This feature should be used with caution.
+
+TraversalVertexProgram
+^^^^^^^^^^^^^^^^^^^^^^
+
+`TraversalVertexProgram` always maintained a `HALTED_TRAVERSERS` `TraverserSet` for each vertex throughout the life
+of the OLAP computation. However, if there are no halted traversers in the set, then there is no point in keeping that
+compute property around as without it, time and space can be saved. Users that have `VertexPrograms` that are chained off
+of `TraversalVertexProgram` and have previously assumed that `HALTED_TRAVERSERS` always exists at each vertex, should no
+longer assume that.
+
+[source,java]
+// bad code
+TraverserSet haltedTraversers = vertex.value(TraversalVertexProgram.HALTED_TRAVERSERS);
+// good code
+TraverserSet haltedTraversers = vertex.property(TraversalVertexProgram.HALTED_TRAVERSERS).orElse(new TraverserSet());
+
+Interrupting Traversals
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Traversals now better respect calls to `Thread.interrupt()`, which mean that a running `Traversal` can now be
+cancelled. There are some limitations that remain, but most OLTP-based traversals should cancel without
+issue. OLAP-based traversals for Spark will also cancel and clean up running jobs in Spark itself. Mileage may vary
+on other process implementations and it is possible that graph providers could potentially write custom step
+implementations that prevent interruption. If it is found that there are configurations or specific traversals that
+do not respect interruption, please mention them on the mailing list.
+
+See: https://issues.apache.org/jira/browse/TINKERPOP-946[TINKERPOP-946]
+
+Gremlin Console Flags
+^^^^^^^^^^^^^^^^^^^^^
+
+Gremlin Console had several methods for executing scripts from file at the start-up of `bin/gremlin.sh`. There were
+two options:
+
+[source,text]
+bin/gremlin.sh script.groovy    <1>
+bin/gremlin.sh -e script.groovy <2>
+
+<1> The `script.groovy` would be executed as a console initialization script setting the console up for use and leaving
+it open when the script completed successfully or closing it if the script failed.
+<2> The `script.groovy` would be executed by the `ScriptExecutor` which meant that commands for the Gremlin Console,
+such as `:remote` and `:>` would not be respected.
+
+Changes in this version of TinkerPop have added much more flexibility here and only a minor breaking change should be
+considered when using this version. First of all, recognize that hese two lines are currently equivalent:
+
+[source,text]
+bin/gremlin.sh script.groovy
+bin/gremlin.sh -i script.groovy
+
+but users should start to explicitly specify the `-i` flag as TinkerPop will eventually remove the old syntax. Despite
+the one used beware of the fact that neither will close the console on script failure anymore. In that sense, this
+behavior represents a breaking change to consider. To ensure the console closes on failure or success, a script will
+have to use the `-e` option.
+
+The console also has a number of new features in addition to `-e` and `-i`:
+
+* View the available flags for the console with `-h`.
+* Control console output with `-D`, `-Q` and -`V`
+* Get line numbers on script failures passed to `-i` and `-e`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1268[TINKERPOP-1268],
+link:https://issues.apache.org/jira/browse/TINKERPOP-1155[TINKERPOP-1155], link:https://issues.apache.org/jira/browse/TINKERPOP-1156[TINKERPOP-1156],
+link:https://issues.apache.org/jira/browse/TINKERPOP-1157[TINKERPOP-1157],
+link:http://tinkerpop.apache.org/docs/3.2.1/reference/#interactive-mode[Reference Documentation - Interactive Mode],
+link:http://tinkerpop.apache.org/docs/3.2.1/reference/#execution-mode[Reference Documentation - Execution Mode]
+
+Upgrading for Providers
+~~~~~~~~~~~~~~~~~~~~~~~
+
+Graph System Providers
+^^^^^^^^^^^^^^^^^^^^^^
+
+VertexComputing API Change
+++++++++++++++++++++++++++
+
+The `VertexComputing` API is used by steps that wrap a `VertexProgram`. There is a method called
+`VertexComputing.generateProgram()` that has changed which now takes a second argument of `Memory`. To  upgrade, simply
+fix the method signature of your `VertexComputing` implementations. The `Memory` argument can be safely ignored to
+effect the exact same semantics as prior. However, now previous OLAP job `Memory` can be leveraged when constructing
+the next `VertexProgram` in an OLAP traversal chain.
+
+Interrupting Traversals
++++++++++++++++++++++++
+
+Several tests have been added to the TinkerPop test suite to validate that a `Traversal` can be cancelled with
+`Thread.interrupt()`. The test suite does not cover all possible traversal scenarios. When implementing custom steps,
+providers should take care to not ignore an `InterruptionException` that might be thrown in their code and to be sure
+to check `Thread.isInterrupted()` as needed to ensure that the step remains cancellation compliant.
+
+See: https://issues.apache.org/jira/browse/TINKERPOP-946[TINKERPOP-946]
+
+Performance Tests
++++++++++++++++++
+
+All "performance" tests have been deprecated. In the previous 3.2.0-incubating release, the `ProcessPerformanceSuite`
+and `TraversalPerformanceTest` were deprecated, but some other tests remained. It is the remaining tests that have
+been deprecated on this release:
+
+* `StructurePerformanceSuite
+** `GraphReadPerformanceTest`
+** `GraphWriterPerformanceTest`
+* `GroovyEnvironmentPerformanceSuite`
+** `SugarLoaderPerformanceTest`
+** `GremlinExecutorPerformanceTest`
+* Gremlin Server related performance tests
+* TinkerGraph related performance tests
+
+Providers should implement their own performance tests and not rely on these deprecated tests as they will be removed
+in a future release along with the "JUnit Benchmarks" dependency.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1294[TINKERPOP-1294]
+
+Graph Database Providers
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Transaction Tests
++++++++++++++++++
+
+Tests and assertions were added to the structure test suite to validate that transaction status was in the appropriate
+state following calls to close the transaction with `commit()` or `rollback()`. It is unlikely that this change would
+cause test breaks for providers, unless the transaction status was inherently disconnected from calls to close the
+transaction somehow.
+
+In addition, other tests were added to enforce the expected semantics for threaded transactions. Threaded transactions
+are expected to behave like manual transactions. They should be open automatically when they are created and once
+closed should no longer be used. This behavior is not new and is the typical expected method for working with these
+types of transactions. The test suite just requires that the provider implementation conform to these semantics.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-947[TINKERPOP-947],
+link:https://issues.apache.org/jira/browse/TINKERPOP-1059[TINKERPOP-1059]
+
+GraphFilter and GraphFilterStrategy
++++++++++++++++++++++++++++++++++++
+
+`GraphFilter` has been significantly advanced where the determination of an edge direction/label legality is more stringent.
+Along with this, `GraphFilter.getLegallyPositiveEdgeLabels()` has been added as a helper method to make it easier for `GraphComputer`
+providers to know the space of labels being accessed by the traversal and thus, better enable provider-specific push-down predicates.
+
+Note that `GraphFilterStrategy` is now a default `TraversalStrategy` registered with `GraphComputer.` If `GraphFilter` is
+expensive for the underlying `GraphComputer` implementation, it can be deactivated as is done for `TinkerGraphComputer`.
+
+[source,java]
+----
+static {
+  TraversalStrategies.GlobalCache.registerStrategies(TinkerGraphComputer.class,
+    TraversalStrategies.GlobalCache.getStrategies(GraphComputer.class).clone().removeStrategies(GraphFilterStrategy.class));
+}
+----
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1293[TINKERPOP-1293]
+
+Graph Language Providers
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+VertexTest Signatures
++++++++++++++++++++++
+
+The method signatures of `get_g_VXlistXv1_v2_v3XX_name` and `get_g_VXlistX1_2_3XX_name` of `VertexTest` were changed
+to take arguments for the `Traversal` to be constructed by extending classes.
+
+TinkerPop 3.2.0
+---------------
+
+*Release Date: Release Date: April 8, 2016*
+
+Please see the link:https://github.com/apache/tinkerpop/blob/3.2.0-incubating/CHANGELOG.asciidoc#tinkerpop-320-release-date-april-8-2016[changelog] for a complete list of all the modifications that are part of this release.
+
+Upgrading for Users
+~~~~~~~~~~~~~~~~~~~
+
+Hadoop FileSystem Variable
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The `HadoopGremlinPlugin` defines two variables: `hdfs` and `fs`. The first is a reference to the HDFS `FileSystemStorage`
+and the latter is a reference to the the local `FileSystemStorage`. Prior to 3.2.x, `fs` was called `local`. However,
+there was a variable name conflict with `Scope.local`. As such `local` is now `fs`. This issue existed prior to 3.2.x,
+but was not realized until this release. Finally, this only effects Gremlin Console users.
+
+Hadoop Configurations
+^^^^^^^^^^^^^^^^^^^^^
+
+Note that `gremlin.hadoop.graphInputFormat`, `gremlin.hadoop.graphOutputFormat`, `gremlin.spark.graphInputRDD`, and
+`gremlin.spark.graphOuputRDD` have all been deprecated. Using them still works, but moving forward, users only need to
+leverage `gremlin.hadoop.graphReader` and `gremlin.hadoop.graphWriter`. An example properties file snippet is provided
+below.
+
+```
+gremlin.graph=org.apache.tinkerpop.gremlin.hadoop.structure.HadoopGraph
+gremlin.hadoop.graphReader=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoInputFormat
+gremlin.hadoop.graphWriter=org.apache.tinkerpop.gremlin.hadoop.structure.io.gryo.GryoOutputFormat
+gremlin.hadoop.jarsInDistributedCache=true
+gremlin.hadoop.defaultGraphComputer=org.apache.tinkerpop.gremlin.spark.process.computer.SparkGraphComputer
+```
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1082[TINKERPOP-1082],
+link:https://issues.apache.org/jira/browse/TINKERPOP-1222[TINKERPOP-1222]
+
+TraversalSideEffects Update
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+There were changes to `TraversalSideEffect` both at the semantic level and at the API level. Users that have traversals
+of the form `sideEffect{...}` that leverage global side-effects should read the following carefully. If the user's traversals do
+not use lambda-based side-effect steps (e.g. `groupCount("m")`), then the changes below will not effect them. Moreover, if user's
+traversal only uses `sideEffect{...}` with closure (non-`TraversalSideEffect`) data references, then the changes below will not effect them.
+If the user's traversal uses sideEffects in OLTP only, the changes below will not effect them. Finally, providers should not be
+effected by the changes save any tests cases.
+
+TraversalSideEffects Get API Change
++++++++++++++++++++++++++++++++++++
+
+`TraversalSideEffects` can now logically operate within a distributed OLAP environment. In order to make this possible,
+it is necessary that each side-effect be registered with a reducing `BinaryOperator`. This binary operator will combine
+distributed updates into a single global side-effect at the master traversal. Many of the methods in `TraversalSideEffect`
+have been `Deprecated`, but they are backwards compatible save that `TraversalSideEffects.get()` no longer returns an `Optional`,
+but instead throws an `IllegalArgumentException`. While the `Optional` semantics could have remained, it was deemed best to
+directly return the side-effect value to reduce object creation costs and because all side-effects must be registered apriori,
+there is never a reason why an unknown side-effect key would be used. In short:
+
+[source,java]
+----
+// change
+traversal.getSideEffects().get("m").get()
+// to
+traversal.getSideEffects().get("m")
+----
+
+TraversalSideEffects Registration Requirement
++++++++++++++++++++++++++++++++++++++++++++++
+
+All `TraversalSideEffects` must be registered upfront. This is because, in OLAP, side-effects map to `Memory` compute keys
+and as such, must be declared prior to the execution of the `TraversalVertexProgram`. If a user's traversal creates a
+side-effect mid-traversal, it will fail. The traversal must use `GraphTraversalSource.withSideEffect()` to declare
+the side-effects it will use during its execution lifetime. If the user's traversals use standard side-effect Gremlin
+steps (e.g. `group("m")`), then no changes are required.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1192[TINKERPOP-1192]
+
+TraversalSideEffects Add Requirement
+++++++++++++++++++++++++++++++++++++
+
+In a distributed environment, a side-effect can not be mutated and be expected to exist in the mutated form at the final,
+aggregated, master traversal. For instance, if the side-effect "myCount" references a `Long`, the `Long` can not be updated
+directly via `sideEffects.set("myCount", sideEffects.get("myCount") + 1)`. Instead, it must rely on the registered reducer
+to do the merging and thus, the `Step` must do `sideEffect.add("mySet",1)`, where the registered reducer is `Operator.sum`.
+Thus, the below will increment "a". If no operator was provided, then the operator is assumed `Operator.assign` and the
+final result of "a" would be 1. Note that `Traverser.sideEffects(key,value)` uses `TraversalSideEffect.add()`.
+
+[source,groovy]
+----
+gremlin> traversal = g.withSideEffect('a',0,sum).V().out().sideEffect{it.sideEffects('a',1)}
+==>v[3]
+==>v[2]
+==>v[4]
+==>v[5]
+==>v[3]
+==>v[3]
+gremlin> traversal.getSideEffects().get('a')
+==>6
+gremlin> traversal = g.withSideEffect('a',0).V().out().sideEffect{it.sideEffects('a',1)}
+==>v[3]
+==>v[2]
+==>v[4]
+==>v[5]
+==>v[3]
+==>v[3]
+gremlin> traversal.getSideEffects().get('a')
+==>1
+----
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1192[TINKERPOP-1192],
+https://issues.apache.org/jira/browse/TINKERPOP-1166[TINKERPOP-1166]
+
+ProfileStep Update and GraphTraversal API Change
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The `profile()`-step has been refactored into 2 steps -- `ProfileStep` and `ProfileSideEffectStep`. Users who previously
+used the `profile()` in conjunction with `cap(TraversalMetrics.METRICS_KEY)` can now simply omit the cap step. Users who
+retrieved `TraversalMetrics` from the side-effects after iteration can still do so, but will need to specify a side-effect
+key when using the `profile()`. For example, `profile("myMetrics")`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-958[TINKERPOP-958]
+
+BranchStep Bug Fix
+^^^^^^^^^^^^^^^^^^
+
+There was a bug in `BranchStep` that also rears itself in subclass steps such as `UnionStep` and `ChooseStep`.
+For traversals with branches that have barriers (e.g. `count()`, `max()`, `groupCount()`, etc.), the traversal needs to be updated.
+For instance, if a traversal is of the form  `g.V().union(out().count(),both().count())`, the result is now different
+(the bug fix yields a different output). In order to yield the same result, the traversal should be rewritten as
+`g.V().local(union(out().count(),both().count()))`. Note that if a branch does not have a barrier, then no changes are required.
+For instance, `g.V().union(out(),both())` does not need to be updated. Moreover, if the user's traversal already used
+the `local()`-form, then no change are required either.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1188[TINKERPOP-1188]
+
+MemoryComputeKey and VertexComputeKey
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Users that have custom `VertexProgram` implementations will need to change their implementations to support the new
+`VertexComputeKey` and `MemoryComputeKey` classes. In the `VertexPrograms` provided by TinkerPop, these changes were trivial,
+taking less than 5 minutes to make all the requisite updates.
+
+* `VertexProgram.getVertexComputeKeys()` returns a `Set<VertexComputeKey>`. No longer a `Set<String>`.
+Use `VertexComputeKey.of(String key,boolean transient)` to generate a `VertexComputeKey`.
+Transient keys were not supported in the past, so to make the implementation semantically equivalent,
+the boolean transient should be false.
+
+* `VertexProgram.getMemoryComputeKeys()` returns a `Set<MemoryComputeKey>`. No longer a `Set<String>`.
+Use `MemoryComputeKey.of(String key, BinaryOperator reducer, boolean broadcast, boolean transient)` to generate a `MemoryComputeKey`.
+Broadcasting and transients were not supported in the past so to make the implementation semantically equivalent,
+the boolean broadcast should be true and the boolean transient should be false.
+
+An example migration looks as follows. What might currently look like:
+
+```
+public Set<String> getMemoryComputeKeys() {
+   return new HashSet<>(Arrays.asList("a","b","c"))
+}
+```
+
+Should now look like:
+
+```
+public Set<MemoryComputeKey> getMemoryComputeKeys() {
+  return new HashSet<>(Arrays.asList(
+    MemoryComputeKey.of("a", Operator.and, true, false),
+    MemoryComputeKey.of("b", Operator.sum, true, false),
+    MemoryComputeKey.of("c", Operator.or, true, false)))
+}
+```
+
+A similar patterns should also be used for `VertexProgram.getVertexComputeKeys()`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1162[TINKERPOP-1162]
+
+SparkGraphComputer and GiraphGraphComputer Persistence
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The `MapReduce`-based steps in `TraversalVertexProgram` have been removed and replaced using a new `Memory`-reduction model.
+`MapReduce` jobs always created a persistence footprint, e.g. in HDFS. `Memory` data was never persisted to HDFS.
+As such, there will be no data on the disk that is accessible. For instance, there is no more `~reducing`, `~traversers`,
+and specially named side-effects such as `m` from a `groupCount('m')`. The data is still accessible via `ComputerResult.memory()`,
+it simply does not have a corresponding on-disk representation.
+
+RemoteGraph
+^^^^^^^^^^^
+
+`RemoteGraph` is a lightweight `Graph` implementation that acts as a proxy for sending traversals to Gremlin Server for
+remote execution. It is an interesting alternative to the other methods for connecting to Gremlin Server in that all
+other methods involved construction of a `String` representation of the `Traversal` which is then submitted as a script
+to Gremlin Server (via driver or REST).
+
+[source,groovy]
+----
+gremlin> graph = RemoteGraph.open('conf/remote-graph.properties')
+==>remotegraph[DriverServerConnection-localhost/127.0.0.1:8182 [graph='graph]]
+gremlin> g = graph.traversal()
+==>graphtraversalsource[remotegraph[DriverServerConnection-localhost/127.0.0.1:8182 [graph='graph]], standard]
+gremlin> g.V().valueMap(true)
+==>[name:[marko], label:person, id:1, age:[29]]
+==>[name:[vadas], label:person, id:2, age:[27]]
+==>[name:[lop], label:software, id:3, lang:[java]]
+==>[name:[josh], label:person, id:4, age:[32]]
+==>[name:[ripple], label:software, id:5, lang:[java]]
+==>[name:[peter], label:person, id:6, age:[35]]
+----
+
+Note that `g.V().valueMap(true)` is executing in Gremlin Server and not locally in the console.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-575[TINKERPOP-575],
+link:http://tinkerpop.apache.org/docs/3.2.0-incubating/reference/#connecting-via-remotegraph[Reference Documentation - Remote Graph]
+
+Upgrading for Providers
+~~~~~~~~~~~~~~~~~~~~~~~
+
+Graph System Providers
+^^^^^^^^^^^^^^^^^^^^^^
+
+GraphStep Compilation Requirement
++++++++++++++++++++++++++++++++++
+
+OLTP graph providers that have a custom `GraphStep` implementation should ensure that `g.V().hasId(x)` and `g.V(x)` compile
+to the same representation. This ensures a consistent user experience around random access of elements based on ids
+(as opposed to potentially the former doing a linear scan). A static helper method called `GraphStep.processHasContainerIds()`
+has been added. `TinkerGraphStepStrategy` was updated as such:
+
+```
+((HasContainerHolder) currentStep).getHasContainers().forEach(tinkerGraphStep::addHasContainer);
+```
+
+is now
+
+```
+((HasContainerHolder) currentStep).getHasContainers().forEach(hasContainer -> {
+  if (!GraphStep.processHasContainerIds(tinkerGraphStep, hasContainer))
+    tinkerGraphStep.addHasContainer(hasContainer);
+});
+```
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1219[TINKERPOP-1219]
+
+Step API Update
++++++++++++++++
+
+The `Step` interface is fundamental to Gremlin. `Step.processNextStart()` and `Step.next()` both returned `Traverser<E>`.
+We had so many `Traverser.asAdmin()` and direct typecast calls throughout (especially in `TraversalVertexProgram`) that
+it was deemed prudent to have `Step.processNextStart()` and `Step.next()` return `Traverser.Admin<E>`. Moreover it makes
+sense as this is internal logic where `Admins` are always needed. Providers with their own step definitions will simply
+need to change the method signatures of `Step.processNextStart()` and `Step.next()`. No logic update is required -- save
+that `asAdmin()` can be safely removed if used. Also, `Step.addStart()` and `Step.addStarts()` take `Traverser.Admin<S>`
+and `Iterator<Traverser.Admin<S>>`, respectively.
+
+Traversal API Update
+++++++++++++++++++++
+
+The way in which `TraverserRequirements` are calculated has been changed (for the better). The ramification is that post
+compilation requirement additions no longer make sense and should not be allowed. To enforce this,
+`Traversal.addTraverserRequirement()` method has been removed from the interface. Moreover, providers/users should never be able
+to add requirements manually (this should all be inferred from the end compilation). However, if need be, there is always
+`RequirementStrategy` which will allow the provider to add a requirement at strategy application time
+(though again, there should not be a reason to do so).
+
+ComparatorHolder API Change
++++++++++++++++++++++++++++
+
+Providers that either have their own `ComparatorHolder` implementation or reason on `OrderXXXStep` will need to update their code.
+`ComparatorHolder` now returns `List<Pair<Traversal,Comparator>>`. This has greatly reduced the complexity of comparison-based
+steps like `OrderXXXStep`. However, its a breaking API change that is trivial to update to, just some awareness is required.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1209[TINKERPOP-1209]
+
+GraphComputer Semantics and API
++++++++++++++++++++++++++++++++
+
+Providers that have a custom `GraphComputer` implementation will have a lot to handle. Note that if the graph system
+simply uses `SparkGraphComputer` or `GiraphGraphComputer` provided by TinkerPop, then no updates are required. This
+only effects providers that have their own custom `GraphComputer` implementations.
+
+`Memory` updates:
+
+* Any `BinaryOperator` can be used for reduction and is made explicit in the `MemoryComputeKey`.
+* `MemoryComputeKeys` can be marked transient and must be removed from the resultant `ComputerResult.memory()`.
+* `MemoryComputeKeys` can be specified to not broadcast and thus, must not be available to workers to read in `VertexProgram.execute()`.
+* The `Memory` API has been changed. No more `incr()`, `and()`, etc. Now its just `set()` (setup/terminate) and `add()` (execute).
+
+`VertexProgram` updates:
+
+* `VertexComputeKeys` can be marked transient and must be removed from the resultant `ComputerResult.graph()`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1166[TINKERPOP-1166],
+link:https://issues.apache.org/jira/browse/TINKERPOP-1164[TINKERPOP-1164],
+link:https://issues.apache.org/jira/browse/TINKERPOP-951[TINKERPOP-951]
+
+Operational semantic test cases have been added to `GraphComputerTest` to ensure that all the above are implemented correctly.
+
+Barrier Step Updates
+++++++++++++++++++++
+
+The `Barrier` interface use to simply be a marker interface. Now it has methods and it is the primary means by which
+distributed steps across an OLAP job are aggregated and distributed. It is unlikely that `Barrier` was ever used
+directly by a provider's custom step. Instead, a provider most likely extended `SupplyingBarrierStep`, `CollectingBarrierStep`,
+and/or `ReducingBarrierStep`.
+
+Providers that have custom extensions to these steps or that use `Barrier` directly will need to adjust their implementation slightly to
+accommodate a new API that reflects the `Memory` updates above. This should be a simple change. Note that `FinalGet`
+no longer exists and such post-reduction processing is handled by the reducing step (via the new `Generating` interface).
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1164[TINKERPOP-1164]
+
+Performance Tests
++++++++++++++++++
+
+The `ProcessPerformanceSuite` and `TraversalPerformanceTest` have been deprecated.  They are still available, but going forward,
+providers should implement their own performance tests and not rely on the built-in JUnit benchmark-based performance test suite.
+
+Graph Processor Providers
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+GraphFilter and GraphComputer
++++++++++++++++++++++++++++++
+
+The `GraphComputer` API has changed with the addition of `GraphComputer.vertices(Traversal)` and `GraphComputer.edges(Traversal)`.
+These methods construct a `GraphFilter` object which is also new to TinkerPop 3.2.0. `GraphFilter` is a "push-down predicate"
+used to selectively retrieve subgraphs of the underlying graph to be OLAP processed.
+
+* If the graph system provider relies on an existing `GraphComputer` implementations such as `SparkGraphComputer` and/or `GiraphGraphComputer`,
+then there is no immediate action required on their part to remain TinkerPop-compliant. However, they may wish to update
+their `InputFormat` or `InputRDD` implementation to be `GraphFilterAware` and handle the `GraphFilter` filtering at the disk/database
+level. It is advisable to do so in order to reduce OLAP load times and memory/GC usage.
+
+* If the graph system provider has their own `GraphComputer` implementation, then they should implement the two new methods
+and ensure that `GraphFilter` is processed correctly. There is a new test case called `GraphComputerTest.shouldSupportGraphFilter()`
+which ensures the semantics of `GraphFilter` are handled correctly. For a "quick and easy" way to move forward, look to
+`GraphFilterInputFormat` as a way of wrapping an existing `InputFormat` to do filtering prior to `VertexProgram` or `MapReduce`
+execution.
+
+NOTE: To quickly move forward, the `GraphComputer` implementation can simply set `GraphComputer.Features.supportsGraphFilter()`
+to `false` and ensure that `GraphComputer.vertices()` and `GraphComputer.edges()` throws `GraphComputer.Exceptions.graphFilterNotSupported()`.
+This is not recommended as its best to support `GraphFilter`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-962[TINKERPOP-962]
+
+Job Chaining and GraphComputer
+++++++++++++++++++++++++++++++
+
+TinkerPop 3.2.0 has integrated `VertexPrograms` into `GraphTraversal`. This means, that a single traversal can compile to multiple
+`GraphComputer` OLAP jobs. This requires that `ComputeResults` be chainable. There was never any explicit tests to verify if a
+provider's `GraphComputer` could be chained, but now there are. Given a reasonable implementation, it is likely that no changes
+are required of the provider. However, to ensure the implementation is "reasonable" `GraphComputerTests` have been added.
+
+* For providers that support their own `GraphComputer` implementation, note that there is a new `GraphComputerTest.shouldSupportJobChaining()`.
+This tests verifies that the `ComputerResult` output of one job can be fed into the input of a subsequent job. Only linear chains are tested/required
+currently. In the future, branching DAGs may be required.
+
+* For providers that support their own `GraphComputer` implementation, note that there is a new `GraphComputerTest.shouldSupportPreExistingComputeKeys()`.
+When chaining OLAP jobs together, if an OLAP job requires the compute keys of a previous OLAP job, then the existing compute keys must be accessible.
+A simple 2 line change to `SparkGraphComputer` and `TinkerGraphComputer` solved this for TinkerPop. `GiraphGraphComputer` did not need an update as
+this feature was already naturally supported.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-570[TINKERPOP-570]
+
+Graph Language Providers
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+ScriptTraversal
++++++++++++++++
+
+Providers that have custom Gremlin language implementations (e.g. Gremlin-Scala), there is a new class called `ScriptTraversal`
+which will handle script-based processing of traversals. The entire `GroovyXXXTest`-suite was updated to use this new class.
+The previous `TraversalScriptHelper` class has been deprecated so immediate upgrading is not required, but do look into
+`ScriptTraversal` as TinkerPop will be using it as a way to serialize "String-based traversals" over the network moving forward.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1154[TINKERPOP-1154]
+
+ByModulating and Custom Steps
++++++++++++++++++++++++++++++
+
+If the provider has custom steps that leverage `by()`-modulation, those will now need to implement `ByModulating`.
+Most of the methods in `ByModulating` are `default` and, for most situations, only `ByModulating.modulateBy(Traversal)`
+needs to be implemented. Note that this method's body will most like be identical the custom step's already existing
+`TraversalParent.addLocalChild()`. It is recommended that the custom step not use `TraversalParent.addLocalChild()`
+as this method may be deprecated in a future release. Instead, barring any complex usages, simply rename the
+`CustomStep.addLocalChild(Traversal)` to `CustomStep.modulateBy(Traversal)`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1153[TINKERPOP-1153]
+
+TraversalEngine Deprecation and GraphProvider
++++++++++++++++++++++++++++++++++++++++++++++
+
+The `TraversalSource` infrastructure has been completely rewritten. Fortunately for users, their code is backwards compatible.
+Unfortunately for graph system providers, a few tweaks to their implementation are in order.
+
+* If the graph system supports more than `Graph.compute()`, then implement `GraphProvider.getGraphComputer()`.
+* For custom `TraversalStrategy` implementations, change `traverser.getEngine().isGraphComputer()` to `TraversalHelper.onGraphComputer(Traversal)`.
+* For custom `Steps`, change `implements EngineDependent` to `implements GraphComputing`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-971[TINKERPOP-971]
diff --git a/docs/static/images/betweeness-example.png b/docs/static/images/betweeness-example.png
new file mode 100644
index 0000000..650ee53
--- /dev/null
+++ b/docs/static/images/betweeness-example.png
Binary files differ
diff --git a/docs/static/images/graph-cycle.png b/docs/static/images/graph-cycle.png
new file mode 100644
index 0000000..967e0ad
--- /dev/null
+++ b/docs/static/images/graph-cycle.png
Binary files differ
diff --git a/docs/static/images/gremlin-chef.png b/docs/static/images/gremlin-chef.png
new file mode 100644
index 0000000..f728a56
--- /dev/null
+++ b/docs/static/images/gremlin-chef.png
Binary files differ
diff --git a/docs/static/images/gremlin-gym.png b/docs/static/images/gremlin-gym.png
index 00b453b..ada4a52 100644
--- a/docs/static/images/gremlin-gym.png
+++ b/docs/static/images/gremlin-gym.png
Binary files differ
diff --git a/docs/static/images/gremlin-house-of-mirrors.png b/docs/static/images/gremlin-house-of-mirrors.png
new file mode 100644
index 0000000..efe854c
--- /dev/null
+++ b/docs/static/images/gremlin-house-of-mirrors.png
Binary files differ
diff --git a/docs/static/images/jython-logo.png b/docs/static/images/jython-logo.png
new file mode 100644
index 0000000..4a705fe
--- /dev/null
+++ b/docs/static/images/jython-logo.png
Binary files differ
diff --git a/docs/static/images/language-drivers.png b/docs/static/images/language-drivers.png
new file mode 100644
index 0000000..61e3a88
--- /dev/null
+++ b/docs/static/images/language-drivers.png
Binary files differ
diff --git a/docs/static/images/language-variants.png b/docs/static/images/language-variants.png
new file mode 100644
index 0000000..2c6ee8b
--- /dev/null
+++ b/docs/static/images/language-variants.png
Binary files differ
diff --git a/docs/static/images/nine-inch-gremlins.png b/docs/static/images/nine-inch-gremlins.png
new file mode 100644
index 0000000..3509922
--- /dev/null
+++ b/docs/static/images/nine-inch-gremlins.png
Binary files differ
diff --git a/docs/static/images/olap-traversal.png b/docs/static/images/olap-traversal.png
index e2cb601..783ad18 100644
--- a/docs/static/images/olap-traversal.png
+++ b/docs/static/images/olap-traversal.png
Binary files differ
diff --git a/docs/static/images/python-logo.png b/docs/static/images/python-logo.png
new file mode 100644
index 0000000..f503912
--- /dev/null
+++ b/docs/static/images/python-logo.png
Binary files differ
diff --git a/docs/static/images/recipe-job-schema.png b/docs/static/images/recipe-job-schema.png
new file mode 100755
index 0000000..2952c0b
--- /dev/null
+++ b/docs/static/images/recipe-job-schema.png
Binary files differ
diff --git a/docs/static/images/remote-graph.png b/docs/static/images/remote-graph.png
new file mode 100644
index 0000000..561c499
--- /dev/null
+++ b/docs/static/images/remote-graph.png
Binary files differ
diff --git a/docs/static/images/shortest-path.png b/docs/static/images/shortest-path.png
new file mode 100644
index 0000000..52f1d47
--- /dev/null
+++ b/docs/static/images/shortest-path.png
Binary files differ
diff --git a/docs/static/images/tinkerpop3.graffle b/docs/static/images/tinkerpop3.graffle
index 0561820..11a1a94 100644
--- a/docs/static/images/tinkerpop3.graffle
+++ b/docs/static/images/tinkerpop3.graffle
@@ -4,8 +4,8 @@
 <dict>
 	<key>ApplicationVersion</key>
 	<array>
-		<string>com.omnigroup.OmniGrafflePro</string>
-		<string>139.18.0.187838</string>
+		<string>com.omnigroup.OmniGraffle6</string>
+		<string>169.14.0.260934</string>
 	</array>
 	<key>CreationDate</key>
 	<string>2014-05-12 16:00:33 +0000</string>
@@ -14,19 +14,39706 @@
 	<key>FileType</key>
 	<string>flat</string>
 	<key>GraphDocumentVersion</key>
-	<integer>8</integer>
+	<integer>12</integer>
 	<key>GuidesLocked</key>
 	<string>NO</string>
 	<key>GuidesVisible</key>
 	<string>YES</string>
 	<key>ImageCounter</key>
-	<integer>102</integer>
+	<integer>121</integer>
 	<key>Images</key>
 	<array>
 		<dict>
 			<key>Extension</key>
 			<string>tiff</string>
 			<key>ID</key>
+			<integer>120</integer>
+			<key>RawData</key>
+			<data>
+			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
+			AAAAJgAAAah0aFRIAAAAJgAAAahlc1hMAAAAJgAAAahkZURFAAAA
+			JgAAAahlblVTAAAAJgAAAahwdEJSAAAAJgAAAahwbFBMAAAAJgAA
+			AahlbEdSAAAAJgAAAahzdlNFAAAAJgAAAah0clRSAAAAJgAAAahq
+			YUpQAAAAJgAAAahwdFBUAAAAJgAAAagAVABoAHUAbgBkAGUAcgBi
+			AG8AbAB0ACAARABpAHMAcABsAGEAeQAAdGV4dAAAAABDb3B5cmln
+			aHQgQXBwbGUgSW5jLiwgMjAxNgAAWFlaIAAAAAAAAPMWAAEAAAAB
+			FspYWVogAAAAAAAAccAAADmKAAABZ1hZWiAAAAAAAABhIwAAueYA
+			ABP2WFlaIAAAAAAAACPyAAAMkAAAvdBjdXJ2AAAAAAAABAAAAAAF
+			AAoADwAUABkAHgAjACgALQAyADYAOwBAAEUASgBPAFQAWQBeAGMA
+			aABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8AowCoAK0AsgC3ALwAwQDG
+			AMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB
+			OAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB
+			AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcC
+			cQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4
+			A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAE
+			LQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6
+			BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoG
+			ewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfS
+			B+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8J
+			ZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsL
+			CyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM
+			8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7u
+			DwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMR
+			MRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxOD
+			E6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMW
+			JhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjV
+			GPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib
+			2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p
+			HxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7Iici
+			VSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH
+			JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWsp
+			nSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12
+			Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIx
+			ujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9
+			Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6
+			sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9h
+			P6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdE
+			ikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mp
+			SfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP
+			SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1Tb
+			VShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa
+			9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8
+			YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1n
+			k2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4S
+			bmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1
+			KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwh
+			fIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eD
+			uoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw
+			i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOT
+			TZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtC
+			m6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj
+			5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axc
+			rNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1
+			irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6E
+			vv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/I
+			Pci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+
+			0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc
+			BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN
+			5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw
+			5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3
+			/Af8mP0p/br+S/7c/23//3BhcmEAAAAAAAMAAAACZmYAAPKnAAAN
+			WQAAE9AAAAoOdmNndAAAAAAAAAABAAEAAAAAAAAAAQAAAAEAAAAA
+			AAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAAAAAAAAA2AACnQAAAVYAA
+			AEzAAACewAAAJYAAAAzAAABQAAAAVEAAAjMzAAIzMwACMzMAAAAA
+			AAAAAHNmMzIAAAAAAAEMcgAABfj///MdAAAHugAA/XL///ud///9
+			pAAAA9kAAMBxbW1vZAAAAAAAAAYQAACSJxgxFZ/QpAMAAAAAAAAA
+			AAAAAAAAAAAAAA==
+			</data>
+		</dict>
+		<dict>
+			<key>Extension</key>
+			<string>tiff</string>
+			<key>ID</key>
+			<integer>119</integer>
+			<key>RawData</key>
+			<data>
+			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
+			SlwAAEGbAAAACAAASmQAAQABAAEAAQAADLhhcHBsAhAAAG1udHJS
+			R0IgWFlaIAfgAAEABAAOABgALGFjc3BBUFBMAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBwbAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWRl
+			c2MAAAFQAAAAYmRzY20AAAG0AAABnmNwcnQAAANUAAAAJHd0cHQA
+			AAN4AAAAFHJYWVoAAAOMAAAAFGdYWVoAAAOgAAAAFGJYWVoAAAO0
+			AAAAFHJUUkMAAAPIAAAIDGFhcmcAAAvUAAAAIHZjZ3QAAAv0AAAA
+			MG5kaW4AAAwkAAAAPmNoYWQAAAxkAAAALG1tb2QAAAyQAAAAKGJU
+			UkMAAAPIAAAIDGdUUkMAAAPIAAAIDGFhYmcAAAvUAAAAIGFhZ2cA
+			AAvUAAAAIGRlc2MAAAAAAAAACERpc3BsYXkAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAA
+			AB4AAAAMc2tTSwAAACYAAAF4Y2FFUwAAACYAAAF4aGVJTAAAACYA
+			AAF4cHRCUgAAACYAAAF4aXRJVAAAACYAAAF4aHVIVQAAACYAAAF4
+			dWtVQQAAACYAAAF4a29LUgAAACYAAAF4bmJOTwAAACYAAAF4Y3ND
+			WgAAACYAAAF4emhUVwAAACYAAAF4ZGVERQAAACYAAAF4cm9STwAA
+			ACYAAAF4c3ZTRQAAACYAAAF4emhDTgAAACYAAAF4amFKUAAAACYA
+			AAF4YXIAAAAAACYAAAF4ZWxHUgAAACYAAAF4cHRQVAAAACYAAAF4
+			bmxOTAAAACYAAAF4ZnJGUgAAACYAAAF4ZXNFUwAAACYAAAF4dGhU
+			SAAAACYAAAF4dHJUUgAAACYAAAF4ZmlGSQAAACYAAAF4aHJIUgAA
+			ACYAAAF4cGxQTAAAACYAAAF4cnVSVQAAACYAAAF4ZW5VUwAAACYA
+			AAF4ZGFESwAAACYAAAF4AFQAaAB1AG4AZABlAHIAYgBvAGwAdAAg
+			AEQAaQBzAHAAbABhAHkAAHRleHQAAAAAQ29weXJpZ2h0IEFwcGxl
+			LCBJbmMuLCAyMDE2AFhZWiAAAAAAAADzFgABAAAAARbKWFlaIAAA
+			AAAAAHHAAAA5igAAAWdYWVogAAAAAAAAYSMAALnmAAAT9lhZWiAA
+			AAAAAAAj8gAADJAAAL3QY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZ
+			AB4AIwAoAC0AMgA2ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcA
+			fACBAIYAiwCQAJUAmgCfAKMAqACtALIAtwC8AMEAxgDLANAA1QDb
+			AOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFFAUwB
+			UgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHh
+			AekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4C
+			mAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNm
+			A3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUE
+			YwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3
+			BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8G
+			wAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgf
+			CDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJ
+			ugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtp
+			C4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUAN
+			Wg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9e
+			D3oPlg+zD88P7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwR
+			qhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQG
+			FCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8W
+			shbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlr
+			GZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIc
+			exyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+U
+			H78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0j
+			CiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaH
+			Jrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUq
+			aCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5M
+			LoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMy
+			mzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbp
+			NyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7
+			qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0Bk
+			QKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVF
+			mkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrE
+			SwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQ
+			cVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYP
+			VlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+Vc
+			NVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJ
+			Ypxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo
+			7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94
+			b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52
+			m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2h
+			fgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOF
+			R4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zK
+			jTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU
+			9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3
+			nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTil
+			qaYapoum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4t
+			rqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3
+			aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBw
+			wOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnK
+			OMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG
+			1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3Zbe
+			HN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy
+			6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozz
+			GfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26
+			/kv+3P9t//9wYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAK
+			DnZjZ3QAAAAAAAAAAQABAAAAAAAAAAEAAAABAAAAAAAAAAEAAAAB
+			AAAAAAAAAAEAAG5kaW4AAAAAAAAANgAAp0AAAFWAAABMwAAAnsAA
+			ACWAAAAMwAAAUAAAAFRAAAIzMwACMzMAAjMzAAAAAAAAAABzZjMy
+			AAAAAAABDHIAAAX4///zHQAAB7oAAP1y///7nf///aQAAAPZAADA
+			cW1tb2QAAAAAAAAGEAAAkicYMRWf0KQDAAAAAAAAAAAAAAAAAAAA
+			AAA=
+			</data>
+		</dict>
+		<dict>
+			<key>Extension</key>
+			<string>tiff</string>
+			<key>ID</key>
+			<integer>118</integer>
+			<key>RawData</key>
+			<data>
+			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
+			dWMAAAAAAAAAHgAAAAxza1NLAAAAJgAAAXhjYUVTAAAAJgAAAXho
+			ZUlMAAAAJgAAAXhwdEJSAAAAJgAAAXhpdElUAAAAJgAAAXhodUhV
+			AAAAJgAAAXh1a1VBAAAAJgAAAXhrb0tSAAAAJgAAAXhuYk5PAAAA
+			JgAAAXhjc0NaAAAAJgAAAXh6aFRXAAAAJgAAAXhkZURFAAAAJgAA
+			AXhyb1JPAAAAJgAAAXhzdlNFAAAAJgAAAXh6aENOAAAAJgAAAXhq
+			YUpQAAAAJgAAAXhhcgAAAAAAJgAAAXhlbEdSAAAAJgAAAXhwdFBU
+			AAAAJgAAAXhubE5MAAAAJgAAAXhmckZSAAAAJgAAAXhlc0VTAAAA
+			JgAAAXh0aFRIAAAAJgAAAXh0clRSAAAAJgAAAXhmaUZJAAAAJgAA
+			AXhockhSAAAAJgAAAXhwbFBMAAAAJgAAAXhydVJVAAAAJgAAAXhl
+			blVTAAAAJgAAAXhkYURLAAAAJgAAAXgAVABoAHUAbgBkAGUAcgBi
+			AG8AbAB0ACAARABpAHMAcABsAGEAeQAAdGV4dAAAAABDb3B5cmln
+			aHQgQXBwbGUsIEluYy4sIDIwMTYAWFlaIAAAAAAAAPMWAAEAAAAB
+			FspYWVogAAAAAAAAccAAADmKAAABZ1hZWiAAAAAAAABhIwAAueYA
+			ABP2WFlaIAAAAAAAACPyAAAMkAAAvdBjdXJ2AAAAAAAABAAAAAAF
+			AAoADwAUABkAHgAjACgALQAyADYAOwBAAEUASgBPAFQAWQBeAGMA
+			aABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8AowCoAK0AsgC3ALwAwQDG
+			AMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIB
+			OAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHB
+			AckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcC
+			cQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4
+			A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAE
+			LQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6
+			BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoG
+			ewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfS
+			B+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8J
+			ZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsL
+			CyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM
+			8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7u
+			DwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMR
+			MRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxOD
+			E6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMW
+			JhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjV
+			GPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib
+			2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7p
+			HxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7Iici
+			VSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXH
+			JfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWsp
+			nSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12
+			Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIx
+			ujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9
+			Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6
+			sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9h
+			P6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdE
+			ikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mp
+			SfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBP
+			SU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1Tb
+			VShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa
+			9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8
+			YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1n
+			k2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4S
+			bmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1
+			KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwh
+			fIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eD
+			uoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyosw
+			i5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOT
+			TZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtC
+			m6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj
+			5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axc
+			rNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1
+			irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6E
+			vv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/I
+			Pci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+
+			0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc
+			BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN
+			5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw
+			5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3
+			/Af8mP0p/br+S/7c/23//3BhcmEAAAAAAAMAAAACZmYAAPKnAAAN
+			WQAAE9AAAAoOdmNndAAAAAAAAAABAAEAAAAAAAAAAQAAAAEAAAAA
+			AAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAAAAAAAAA2AACnQAAAVYAA
+			AEzAAACewAAAJYAAAAzAAABQAAAAVEAAAjMzAAIzMwACMzMAAAAA
+			AAAAAHNmMzIAAAAAAAEMcgAABfj///MdAAAHugAA/XL///ud///9
+			pAAAA9kAAMBxbW1vZAAAAAAAAAYQAACSJxgxFZ/QpAMAAAAAAAAA
+			AAAAAAAAAAAAAA==
+			</data>
+		</dict>
+		<dict>
+			<key>Extension</key>
+			<string>tiff</string>
+			<key>ID</key>
+			<integer>117</integer>
+			<key>RawData</key>
+			<data>
+			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
+			AAAAAQAEAAABFgADAAAAAQAgAAABFwAEAAAAEAABKrIBHAADAAAA
+			AQABAAABPQADAAAAAQACAAABUgADAAAAAQABAAABUwADAAAABAAB
+			KzKHcwAHAAAMuAABKzoAAAAAAAgACAAIAAgAAAPaAAAH1QAACbgA
+			AA6wAAAP1gAAHK8AAC8oAAAhTwAAE8sAABxhAAATCAAAEdQAABNJ
+			AAARaQAACukAAAQyAAAACAAAA+IAAAu3AAAVbwAAJB8AADP1AABQ
+			pAAAf8wAAKEbAAC05gAA0UcAAORPAAD2IwABCWwAARrVAAElvgAB
+			AAEAAQABAAAMuGFwcGwCEAAAbW50clJHQiBYWVogB+AAAQAEAA4A
+			GAAsYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbW
+			AAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAARZGVzYwAAAVAAAABiZHNjbQAA
+			AbQAAAGeY3BydAAAA1QAAAAkd3RwdAAAA3gAAAAUclhZWgAAA4wA
+			AAAUZ1hZWgAAA6AAAAAUYlhZWgAAA7QAAAAUclRSQwAAA8gAAAgM
+			YWFyZwAAC9QAAAAgdmNndAAAC/QAAAAwbmRpbgAADCQAAAA+Y2hh
+			ZAAADGQAAAAsbW1vZAAADJAAAAAoYlRSQwAAA8gAAAgMZ1RSQwAA
+			A8gAAAgMYWFiZwAAC9QAAAAgYWFnZwAAC9QAAAAgZGVzYwAAAAAA
+			AAAIRGlzcGxheQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAAHgAAAAxza1NLAAAAJgAA
+			AXhjYUVTAAAAJgAAAXhoZUlMAAAAJgAAAXhwdEJSAAAAJgAAAXhp
+			dElUAAAAJgAAAXhodUhVAAAAJgAAAXh1a1VBAAAAJgAAAXhrb0tS
+			AAAAJgAAAXhuYk5PAAAAJgAAAXhjc0NaAAAAJgAAAXh6aFRXAAAA
+			JgAAAXhkZURFAAAAJgAAAXhyb1JPAAAAJgAAAXhzdlNFAAAAJgAA
+			AXh6aENOAAAAJgAAAXhqYUpQAAAAJgAAAXhhcgAAAAAAJgAAAXhl
+			bEdSAAAAJgAAAXhwdFBUAAAAJgAAAXhubE5MAAAAJgAAAXhmckZS
+			AAAAJgAAAXhlc0VTAAAAJgAAAXh0aFRIAAAAJgAAAXh0clRSAAAA
+			JgAAAXhmaUZJAAAAJgAAAXhockhSAAAAJgAAAXhwbFBMAAAAJgAA
+			AXhydVJVAAAAJgAAAXhlblVTAAAAJgAAAXhkYURLAAAAJgAAAXgA
+			VABoAHUAbgBkAGUAcgBiAG8AbAB0ACAARABpAHMAcABsAGEAeQAA
+			dGV4dAAAAABDb3B5cmlnaHQgQXBwbGUsIEluYy4sIDIwMTYAWFla
+			IAAAAAAAAPMWAAEAAAABFspYWVogAAAAAAAAccAAADmKAAABZ1hZ
+			WiAAAAAAAABhIwAAueYAABP2WFlaIAAAAAAAACPyAAAMkAAAvdBj
+			dXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADYAOwBA
+			AEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8A
+			owCoAK0AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEH
+			AQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMB
+			iwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQIm
+			Ai8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC
+			6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPH
+			A9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE
+			0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2
+			BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0H
+			TwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+
+			CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK
+			agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwq
+			DEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMO
+			Lg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBD
+			EGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQS
+			oxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUS
+			FTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X
+			0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqe
+			GsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkd
+			wx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDw
+			IRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0k
+			fCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgN
+			KD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9Es
+			BSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+
+			MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0
+			ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjI
+			OQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9
+			oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJy
+			QrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tH
+			wEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0C
+			TUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxS
+			x1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9
+			WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxe
+			vV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTp
+			ZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09r
+			p2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJL
+			cqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5
+			iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co
+			gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASI
+			aYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAG
+			kG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CY
+			TJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBp
+			oNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSp
+			N6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHW
+			skuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7
+			LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRR
+			xM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO
+			Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg
+			2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4czi
+			U+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG
+			7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3
+			ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//3BhcmEAAAAA
+			AAMAAAACZmYAAPKnAAANWQAAE9AAAAoOdmNndAAAAAAAAAABAAEA
+			AAAAAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAA
+			AAAAAAA2AACnQAAAVYAAAEzAAACewAAAJYAAAAzAAABQAAAAVEAA
+			AjMzAAIzMwACMzMAAAAAAAAAAHNmMzIAAAAAAAEMcgAABfj///Md
+			AAAHugAA/XL///ud///9pAAAA9kAAMBxbW1vZAAAAAAAAAYQAACS
+			JxgxFZ/QpAMAAAAAAAAAAAAAAAAAAAAAAA==
+			</data>
+		</dict>
+		<dict>
+			<key>Extension</key>
+			<string>tiff</string>
+			<key>ID</key>
+			<integer>116</integer>
+			<key>RawData</key>
+			<data>
+			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
+			AAAAAQGQAAABAgADAAAABAAAg14BAwADAAAAAQAFAAABBgADAAAA
+			AQACAAABEQAEAAAABQAAg3oBEgADAAAAAQABAAABFQADAAAAAQAE
+			AAABFgADAAAAAQBRAAABFwAEAAAABQAAg2YBHAADAAAAAQABAAAB
+			PQADAAAAAQACAAABUgADAAAAAQABAAABUwADAAAABAAAg46HcwAH
+			AAAMuAAAg5YAAAAAAAgACAAIAAgAAA/sAAAZeQAAIxQAACSmAAAR
+			fAAAAAgAAA/0AAApbQAATIEAAHEnAAEAAQABAAEAAAy4YXBwbAIQ
+			AABtbnRyUkdCIFhZWiAH4AABAAQADgAYACxhY3NwQVBQTAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAABFkZXNjAAABUAAAAGJkc2NtAAABtAAAAZ5jcHJ0AAADVAAA
+			ACR3dHB0AAADeAAAABRyWFlaAAADjAAAABRnWFlaAAADoAAAABRi
+			WFlaAAADtAAAABRyVFJDAAADyAAACAxhYXJnAAAL1AAAACB2Y2d0
+			AAAL9AAAADBuZGluAAAMJAAAAD5jaGFkAAAMZAAAACxtbW9kAAAM
+			kAAAAChiVFJDAAADyAAACAxnVFJDAAADyAAACAxhYWJnAAAL1AAA
+			ACBhYWdnAAAL1AAAACBkZXNjAAAAAAAAAAhEaXNwbGF5AAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1
+			YwAAAAAAAAAeAAAADHNrU0sAAAAmAAABeGNhRVMAAAAmAAABeGhl
+			SUwAAAAmAAABeHB0QlIAAAAmAAABeGl0SVQAAAAmAAABeGh1SFUA
+			AAAmAAABeHVrVUEAAAAmAAABeGtvS1IAAAAmAAABeG5iTk8AAAAm
+			AAABeGNzQ1oAAAAmAAABeHpoVFcAAAAmAAABeGRlREUAAAAmAAAB
+			eHJvUk8AAAAmAAABeHN2U0UAAAAmAAABeHpoQ04AAAAmAAABeGph
+			SlAAAAAmAAABeGFyAAAAAAAmAAABeGVsR1IAAAAmAAABeHB0UFQA
+			AAAmAAABeG5sTkwAAAAmAAABeGZyRlIAAAAmAAABeGVzRVMAAAAm
+			AAABeHRoVEgAAAAmAAABeHRyVFIAAAAmAAABeGZpRkkAAAAmAAAB
+			eGhySFIAAAAmAAABeHBsUEwAAAAmAAABeHJ1UlUAAAAmAAABeGVu
+			VVMAAAAmAAABeGRhREsAAAAmAAABeABUAGgAdQBuAGQAZQByAGIA
+			bwBsAHQAIABEAGkAcwBwAGwAYQB5AAB0ZXh0AAAAAENvcHlyaWdo
+			dCBBcHBsZSwgSW5jLiwgMjAxNgBYWVogAAAAAAAA8xYAAQAAAAEW
+			ylhZWiAAAAAAAABxwAAAOYoAAAFnWFlaIAAAAAAAAGEjAAC55gAA
+			E/ZYWVogAAAAAAAAI/IAAAyQAAC90GN1cnYAAAAAAAAEAAAAAAUA
+			CgAPABQAGQAeACMAKAAtADIANgA7AEAARQBKAE8AVABZAF4AYwBo
+			AG0AcgB3AHwAgQCGAIsAkACVAJoAnwCjAKgArQCyALcAvADBAMYA
+			ywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4
+			AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEB
+			yQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJx
+			AnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgD
+			QwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQt
+			BDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToF
+			SQVYBWcFdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7
+			BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeGB5kHrAe/B9IH
+			5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJTwlk
+			CXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsL
+			Igs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2Qzz
+			DQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4P
+			CQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPURExEx
+			EU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MT
+			pBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYm
+			FkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY
+			+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshva
+			HAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+Hukf
+			Ex8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJV
+			IoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl
+			9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymd
+			KdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYt
+			qy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6
+			MfIyKjJjMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02
+			NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85vDn5OjY6dDqy
+			Ou87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/
+			oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SK
+			RM5FEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ
+			8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9J
+			T5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtV
+			KFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1
+			W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxh
+			T2GiYfViSWKcYvBjQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeT
+			Z+loP2iWaOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25bhJu
+			a27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUo
+			dYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8
+			gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6
+			hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCL
+			lov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NN
+			k7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kb
+			r5wcnImc951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPm
+			pFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKrdavprFys
+			0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WK
+			tgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+
+			/796v/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9
+			yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7S
+			P9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF
+			3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3m
+			lucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl
+			8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8
+			B/yY/Sn9uv5L/tz/bf//cGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1Z
+			AAAT0AAACg52Y2d0AAAAAAAAAAEAAQAAAAAAAAABAAAAAQAAAAAA
+			AAABAAAAAQAAAAAAAAABAABuZGluAAAAAAAAADYAAKdAAABVgAAA
+			TMAAAJ7AAAAlgAAADMAAAFAAAABUQAACMzMAAjMzAAIzMwAAAAAA
+			AAAAc2YzMgAAAAAAAQxyAAAF+P//8x0AAAe6AAD9cv//+53///2k
+			AAAD2QAAwHFtbW9kAAAAAAAABhAAAJInGDEVn9CkAwAAAAAAAAAA
+			AAAAAAAAAAAA
+			</data>
+		</dict>
+		<dict>
+			<key>Extension</key>
+			<string>tiff</string>
+			<key>ID</key>
+			<integer>115</integer>
+			<key>RawData</key>
+			<data>
+			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
+			iEj4uxkDuF2EYNDdUIAwDOJYbQCAJAaBLkl2Fwsj5y0VjiyDu83Z
+			DzxUZ4Nj8rXdwxULD5+qC6VuNjvSGmZFtVx5puyNHdQ5I1RlSNlo
+			8fXocINgWQkgijyHINgXmZCEi4E0DMXARweATCOznNuN9NZYNNlO
+			N8ls6ypzu7Eeo9x+j1AiD0YoEX6v3O0AcB4FgQAxDUJob+j8hZKx
+			rpHc2ccl7Lu5kbAur5w6W1ZsnIOnN6aXvjqDTtQzx3j3Zsiz+rdX
+			bH1Xo7gm9t4YCkTp9v4/h+j7X+wEfw+x9D114QgaoswdDVBUCMBg
+			KtR6ixlwrDmTNmXfhts/Z2+cPEHByF4Z4ORkDSHkpM6iSkmAiCUk
+			h4l+8q6Nv9ZrdG6nB6mkJvzEdqeD9D3vWLUkoNlcL3jy/gWOsgIt
+			4NwPk2b+mb9UpBLc/VIgbz6t0I2g9R1DhGYNUVgiQa8ZIWPAZIQh
+			4APAaAQB/KOS3h4LqrSXKbVuo6V0fInCCBh1EeN4OojBQjjEYdoE
+			gTQ4ijAoCwH4XMZ9d4DlrxBhacUk5HhrpPUaw6wgd0Dv6hD35wwJ
+			4Xhm6+seC61u/1PaOi+r0n0vfHY+ve99jyfWSEh0DSF+JEcQxBVh
+			w7kQZ6z2HtBCe7u7DPsuE3w9n2fZudPYal8P04gosRgDsFiFAOA1
+			QoHaBkkgcYBlgqd+v0+73g1ERl9z8DwPfcnf41j2D+rn7RbrJdzh
+			rfbdr0i8kATTD3beC/TfzTy/rsj+L38BKwj7DOStAbgXQToLAdwb
+			gZoVL5ogoFYEgBgFYagWQHQajwz20ADzbfTf7/kCqBL7r2r3jz4h
+			IdQdwfYdQC4IQYwC424BICYDgFAF4MwSga73SnT+b3D7Tkjzr00B
+			Tq68EGjqT4T/z1kFr30J0Gzqb27+kLL6r/MKMCCm7JcBsAMF7KTe
+			r+UCULjsrIsL8Jpv4f4fwZwT4O4C4fgfAegdkEIgjYTYjXzYCykF
+			j1UN0CxLzHL7blcKsKStUOQlxIwZIEQb4cofDcozQC444NQEII4M
+			4SqYUFzUcR0RkMz+8Cj1DojU8VMMUOEVrGkJROL1q4cAsRcJ77MG
+			8QsV0SMNEUbwDl0CLzkJkWDdLsxoKNw8geodYcQZoaoVYRAGkP4g
+			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
+			atbBz9dq6m1szbfz1lzLO3ruZ92RoTOW6M6Snxe/1z23dAaPutmC
+			1KBttHRH8P0fY+h5jvHIZAd44h8jzHaOHgY7Rwb8MlwAcQ971jZm
+			lq7iV8AzBVA4GYSofAUCVRAiLXcxNDU92HC+oMGcv6C3hvbZWLeW
+			bzJIC0MQjRoAKAsCAF+kcL70zhUndOOrQY55Hr7RVwudXI5VvHn2
+			xNz7V6RVitu2eP3Nunzjnu8uicozziUqWltMGwaVpceLV9VDwH4P
+			ceg6x+D4HoOztI9R2j77N2wfHbu0jzHWPoeo8RzcKHCPvvI5zYb5
+			4n4PwhFQ7r/DuIcOAJRDtkbN1E7mvei9JoNvfBHQem7U6n5DQe69
+			wEtBcGUSQ1wEgTA2CjO+wvJ2ntXhzqu3Oqbk2P0PEG4j4eW3r7jl
+			Oh0X75H534eA5+2ju7SPQdvxfj9m7f2odo/e5ju312rto7x/Uq0s
+			Pkeg/h9j5HrSr6n2x6IY30SIfg+h7dh8D4X9X6/2ft/d+/+H8f5E
+			ZAWAkAYCxPiFBWJ8KoRgLgqq6uQPVNzNKIWvdOdtttJvLugMCvWv
+			OuriXgYA0hLhvgDgHuariumQFM5ult2OlOjiAACBQOCQWDAB/weF
+			QuGQ2HQ+IRGHQmJRWLQKKReNRGMxuPR+QR6OxaRyGTSeCyWUSuWQ
+			uVQiWzGZReXzOUSV/v9/P19PJ2uF8PB0tx8PF1N19PN2uJ80pxT1
+			2OF8z5wvt6vBzzmdzauV2vV+wWGxWOyWWzWe0Wm1Wu2W23W+4XG5
+			XO6XW7Xe8XcQBsEiBYpQYLEXCUGC63TW8xLESLE2TFynG3Oc5G34
+			+DZbKSbMRrN5mD52Z6DJYnRV7Sx4YmtNOMDA0JhyXWDT57OWLZ2v
+			b7SKzjdS3c43f7/ew/hSviyzj8PiYzlQ3k72X8/m7G4Tt+Pl7u1y
+			NV7OtxtHsuVqvh3uht0F0NqiutvP9+vx9dP5fP6fX7ff8fn9fv+f
+			3/P/AEAwEi4chgB4clYR4XlYDQKgODTDv66SMQGiDOwnATJwq40L
+			Q2hkMQo/0QN25URpjEyNxQhYZDYThzAKBgIgyyCvxU6DbNpGzdN5
+			DyCR03CQR+z0hOWyseo45j8yIujoyPDqwH8fh9nwep1HAZp6HObh
+			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
+			cDAIDy6CP+BTqcT2OTyIUCfUOdyahUSQ0efUqkQ6mU2nUin1CfyC
+			p1SXVeDVqsV2d1yvV2wACx2GR2WJ2izUGh2qw26e3CS3K1wW6Wm6
+			yi70WKCEnM0QuBzvlwXnDYfEYnFYvGY3HY/IZHJZPKZXLZfMZnNZ
+			vOZ3PZ+kTCZTSbVm+aCrRK95vVwrW3nX1XG7GcbSMba17jT6i2Q/
+			dbyBv/f8Dd67iVGk7zhxHlyrmx/nxTo0u9ceD6vWiIns4RN9zPhv
+			9bxePyeXzef0en1ev2e33e/4fH5fP3aKZzWbymedPOW7+MW5b/ri
+			qEBOgyECuMz7fwQxK0QYzDhPohixwe2CRQq0zqMjDC8LfCDqvUuT
+			bO07jvPBCUURTFUVxZFsXRfGEYxlGcaRrG0Zvs0j8pI/cXv89sAs
+			9DkEsRIaMyM4rWR49cHRjCMnORJkLuUtrJSQ3yzSujz/y0psRJCE
+			YoGcEZvHKfBvRvNM1TXNk2zdN84TjOU5zpOs7InHL8SmskfNVIE9
+			v6r0uyi2apNA59BqJJsYSfRlCPTILUSNRLpSLLMPpPSkNT8kgSCi
+			ZwSG6ch8G7O9TVPVFU1VVdWVbV1X1hWL6Ty0qOx7F0fvY6dNI1TV
+			eITX9HtrQ8lxC3sfWDSyG2TDLU0lKsN2VQVArPKUOpPT1QVFUlZW
+			7b1v3BcNxXHcly3Nc8U1pHaL1vFtc2tYtMKxZi7QPQ0FXi9FF2RG
+			UKPi3F6NlAdosPX+AorRF4OYloSikZwSm4cZ8G5dGK4ti+MYzjWN
+			45juPVfdSLXbFi74Oo2TszXzFZM697yFfLz33XGWQ9Zd/y3KlNsf
+			mk+KpnljuTY1rpdhuH4jieP6TpWl6ZpunafqGo6kkmQ4Xnt3ZFSG
+			UWpl2C3tRViWroVhRXRs+5s+GAZzgev5XeeuLnmNKqQE2HBMbeJG
+			3qe975vu/b/wHA8FwcVarCckxTkutbizsu5Zn7g67uFncXskVbNX
+			HLcqjfIbntmdsZRPO7RrbyS+rATimZ4Tm0cR7m1wnY9l2fadr23b
+			9x3M8Ji+9aoQpXR2boby13l8vbd0GwXxsXN6BxPg8lYGb1ttfldD
+			6+fcn5nTc8r3U9X1vX918fyfL83z/R9P1Tlw3I3ry+s310rNcd5D
+			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
+			AAcAAAy4AAGuHgAAAAAACAAIAAgACAAAC2UAAArhAAAM8QAAC6oA
+			AAv7AAAJwQAACEkAAAZYAAAOpQAADqoAAA8gAAAQGQAAETUAABCw
+			AAAP3AAAEE4AABCYAAAQYgAAEWYAABFVAAAQMwAADzcAAA98AAAO
+			mgAAB2wAAAiMAAALFgAAC98AAA0EAAANRAAAC0AAAAzMAAAACAAA
+			C20AABZOAAAjPwAALukAADrkAABEpQAATO4AAFNGAABh6wAAcJUA
+			AH+1AACPzgAAoQMAALGzAADBjwAA0d0AAOJ1AADy1wABBD0AARWS
+			AAElxQABNPwAAUR4AAFTEgABWn4AAWMKAAFuIAABef8AAYcDAAGU
+			RwABn4cAAQABAAEAAQAADLhhcHBsAhAAAG1udHJSR0IgWFlaIAfg
+			AAEABAAOABgALGFjc3BBUFBMAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAD21gABAAAAANMtYXBwbAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWRlc2MAAAFQAAAA
+			YmRzY20AAAG0AAABnmNwcnQAAANUAAAAJHd0cHQAAAN4AAAAFHJY
+			WVoAAAOMAAAAFGdYWVoAAAOgAAAAFGJYWVoAAAO0AAAAFHJUUkMA
+			AAPIAAAIDGFhcmcAAAvUAAAAIHZjZ3QAAAv0AAAAMG5kaW4AAAwk
+			AAAAPmNoYWQAAAxkAAAALG1tb2QAAAyQAAAAKGJUUkMAAAPIAAAI
+			DGdUUkMAAAPIAAAIDGFhYmcAAAvUAAAAIGFhZ2cAAAvUAAAAIGRl
+			c2MAAAAAAAAACERpc3BsYXkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+			AAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAB4AAAAMc2tT
+			SwAAACYAAAF4Y2FFUwAAACYAAAF4aGVJTAAAACYAAAF4cHRCUgAA
+			ACYAAAF4aXRJVAAAACYAAAF4aHVIVQAAACYAAAF4dWtVQQAAACYA
+			AAF4a29LUgAAACYAAAF4bmJOTwAAACYAAAF4Y3NDWgAAACYAAAF4
+			emhUVwAAACYAAAF4ZGVERQAAACYAAAF4cm9STwAAACYAAAF4c3ZT
+			RQAAACYAAAF4emhDTgAAACYAAAF4amFKUAAAACYAAAF4YXIAAAAA
+			ACYAAAF4ZWxHUgAAACYAAAF4cHRQVAAAACYAAAF4bmxOTAAAACYA
+			AAF4ZnJGUgAAACYAAAF4ZXNFUwAAACYAAAF4dGhUSAAAACYAAAF4
+			dHJUUgAAACYAAAF4ZmlGSQAAACYAAAF4aHJIUgAAACYAAAF4cGxQ
+			TAAAACYAAAF4cnVSVQAAACYAAAF4ZW5VUwAAACYAAAF4ZGFESwAA
+			ACYAAAF4AFQAaAB1AG4AZABlAHIAYgBvAGwAdAAgAEQAaQBzAHAA
+			bABhAHkAAHRleHQAAAAAQ29weXJpZ2h0IEFwcGxlLCBJbmMuLCAy
+			MDE2AFhZWiAAAAAAAADzFgABAAAAARbKWFlaIAAAAAAAAHHAAAA5
+			igAAAWdYWVogAAAAAAAAYSMAALnmAAAT9lhZWiAAAAAAAAAj8gAA
+			DJAAAL3QY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0A
+			MgA2ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQ
+			AJUAmgCfAKMAqACtALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA
+			9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFFAUwBUgFZAWABZwFu
+			AXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMC
+			DAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLB
+			AssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YD
+			ogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASa
+			BKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUF
+			xQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcH
+			BxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4I
+			ggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woR
+			CicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL
+			4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3D
+			Dd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P
+			7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxIm
+			EkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsU
+			rRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdB
+			F2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQa
+			KhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0e
+			HUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEg
+			bCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPC
+			I/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kn
+			eierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2
+			K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQv
+			Wi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMymzLUMw0zRjN/
+			M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4
+			FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTyk
+			POM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpB
+			rEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0ar
+			RvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JM
+			KkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGb
+			UeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RX
+			klfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114
+			XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj
+			62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpI
+			ap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBx
+			OnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gR
+			eG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/
+			hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobX
+			hzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaO
+			zo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU9JVflcmWNJaf
+			lwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6f
+			HZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adu
+			p+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACw
+			dbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blK
+			ucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C
+			28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1
+			zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHW
+			VdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A2
+			4L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq
+			5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ
+			9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//9w
+			YXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKDnZjZ3QAAAAA
+			AAAAAQABAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAAAAAAEA
+			AG5kaW4AAAAAAAAANgAAp0AAAFWAAABMwAAAnsAAACWAAAAMwAAA
+			UAAAAFRAAAIzMwACMzMAAjMzAAAAAAAAAABzZjMyAAAAAAABDHIA
+			AAX4///zHQAAB7oAAP1y///7nf///aQAAAPZAADAcW1tb2QAAAAA
+			AAAGEAAAkicYMRWf0KQDAAAAAAAAAAAAAAAAAAAAAAA=
+			</data>
+		</dict>
+		<dict>
+			<key>Extension</key>
+			<string>tiff</string>
+			<key>ID</key>
+			<integer>113</integer>
+			<key>RawData</key>
+			<data>
+			TU0AKgAS39SAACBQOCQWDQeEQmFQuGQ2HQ+IRGJROKRWLReMRmNR
+			uOR2PR+QSGRSOSSWTSeUSmVSuWS2XS+YTGZTOaTWbTecTmdTueT2
+			fT+gUGhUOiUWjUekUmlUumU2nU+oVGpVOqVWrVesVmtVuuV2vV+w
+			WGxWOyWWzWe0Wm1Wu2W23W+4XG5XO6XW7Xe8Xm9Xu+X2/X/AYHBY
+			PCYXDYfEYnFYvGY3HY/IZHJZPKZXLZfMZnNZvOZ3PZ/QaHRaPSaX
+			TafUanVavWa3Xa/YbHZbPabXbbfcbndbveb3fb/gcHhcPicXjcfk
+			cnlcvmc3nc/odHpdPqdXrdfsdntdvud3vd/weHxePyeXzef0en1e
+			v2e33e/4fH5fP6fX7ff8fn9fv+f3/P/AEAwFAcCQLA0DwRBMFQXB
+			kGwdB8IQjCUJwpCsLQvDEMw1DcOQ7D0PxBEMRRHEkSxNE8URTFUV
+			xZFsXRfGEYxlGcaRrG0bxxHMdR3Hkex9H8gSDIUhyJIsjSPJEkyV
+			JcmSbJ0nyhKMpSnKkqytK8sSzLUty5LsvS/MEwzFMcyTLM0zzRNM
+			1TXNk2zdN84TjOU5zpOs7TvPE8z1Pc+T7P0/0BQNBUHQlC0NQ9EU
+			TRVF0ZRtHUfSFI0lSdKUrS1L0xTNNU3TlO09T9QVDUVR1JUtTVPV
+			FU1VVdWVbV1X1hWNZVnWla1tW9cVzXVd15XtfV/YFg2FYdiWLY1j
+			2RZNlWXZlm2dZ9oWjaVp2patrWvbFs21bduW7b1v3BcNxXHcly3N
+			c90XTdV13Zdt3XfeF43led6Xre173xfN9VqgIIAAIFA4JBYNB4RC
+			YVC4ZDYdD4hEYlE4pFYtF4xGY1G45HY9H5BIZFI5JJZNJ5RKZVK5
+			ZLZdL5hMZlM5pNZtN5xOZ1O55PZ9P6BQaFQ6JRaNR6RSaVS6ZTad
+			T6hUalU6pVatV6xWa1W65Xa9X7BYbFY7JZbNZ7RabVa7Zbbdb7hc
+			blc7pdbtd7xeb1e75fb9f8BgcFg8JhcNh8RicVi8Zjcdj8hkclk8
+			plctl8xmc1m85nc9n9BodFo9JpdNp9RqdVq9Zrddr9hsdls9ptdt
+			t9xud1u95vd9v+BweFw+JxeNx+RyeVy+Zzedz+h0el0+p1et1+x2
+			e12+53e93/B4fF4/J5fN5/R6fV6/Z7fd7/h8fl8/p9ft9/x+f1+/
+			5/f8/8AQDAUBwJAsDQPBEEwVBcGQbB0HwhCMJQnCkKwtC8MQzDUN
+			w5DsPQ/EEQxFEcSRLE0TxRFMVRXFkWxdF8YRjGUZxpGsbRvHEcx1
+			HceR7H0fyBIMhSHIkiyNI8kSTJUlyZJsnSfKEoylKcqNMTBMEiAI
+			0DQN5/yrL8wTDMUxzJMszTPNE0zVNc2TSQBEEAAJ8HgeIAEQRBHy
+			9Ns9z5Ps/T/QFA0FQdCULQ1D0QuxEkkRIAgTR4AH0eJ9AAe9LAAd
+			B7HQABKkOSs9IMKoqiYAJVlWWh/htVQAn9VoAGZWB/hoGgXADWBp
+			VBRL7BEEYOACghvG6clc11YqAACBQOCQWDQeEQmFQuGQ2HQ+IRGJ
+			ROKRWLReMRmNRuOR2PR+QSGRSOSSWTSeUSmVSuWS2XS+YTGZTOaT
+			WbTecTmdTueT2fT+gUGhUOiUWjUekUmlUumU2nU+oVGpVOqVWrVe
+			sVmtTw910A18AgB6vx3ABHohLP8tmAtgF+Px7AB7PZ7wJ9vwAPp9
+			PsAPN5vgAMZjMl/1vDYfEYnFU8QiINAEBgIBABuNxyYXF5nNZvOZ
+			3PZ/QaHRaPSaXTafUanVavWa3Xa/YbHZbPabXbbfcbndbveb3fb/
+			gcHhcPicXjcfkcnlcvmc3nc/odHpdPqdXrdfsdntdvud3vd/weHx
+			ePyeXzef0en1ev2e33e/4fH5fP6fX7ff8fn9fv+f3/P/AEAwFAcC
+			QLA0DwRBMFQXBkGwdB8IQjCUJwpCsLQvDEMw1DcOQ7D0PxBEMRRH
+			EkSxNE8URTFUVxZFsXRfGEYxlGcaRrG0bxxHMdR3Hkex9H8gSDIU
+			hyJIsjSPJEkyVJcmSbJ0nyhKMpSnKkqytK8sSzLUty5LsvS/MEwz
+			FMcyTLM0zzRNM1TXNk2zczRATiAM4kAzCHCTPAAlvPc7TfP0/0BQ
+			NBUHQlC0NQ9EUTRVF0ZRtHUfSFI0lSdKUrS1L0wh6AiAACBQOCQW
+			DQeEQmFQuGQ2HQ+IRGJROKRWLReMRmNRuOR2PR+QSGRSOSSWTSeU
+			SmVSuWS2XS+YTGZTOaTWbTecTmdTueT2fT+SBehAF00V/0CkUmlU
+			umU2nU+oVGpVOqVWrVesVmtVuuV2vV+wWGxWOyWWzWe0Wm1Wu2W2
+			3W+4XG5XO6XW7Xe8Xm9Xu+X2/X/AYG2BTCAF2Yej4LFYvGY3HY/I
+			ZHJZPKZXLZfMZnNZvOZ3PZ/QaHRaPSaXTafUanVavWa3XZRAbEA7
+			FAYmVEbcAF67sAPzfb3fvjhAB98UAPfkAB/cvlcxz89/ikUhcAtd
+			runba/tdvud3vd/weHxePyeXzef0en1ev2e33e/4fH5fP6fX7feM
+			AGGbSC7Tso4IAgAAAJgGAADshhBIAn7BiCmnB5/g/CQAuKfbmn8A
+			B0Q0/78Q7D0PxBEMRRHEkSxNE8URTFUVxZFsXRfGEYxlGcaRq8r9
+			IVDiPBAIAQACcBgHBHQABBIsfnBIQSSUAJ/yaABuyhIcbSnKkqyt
+			K8sSzLUty5LsvS/MEwzFMcyTLM0zzRMkcQOoAMTcAMNHRKU0zpOs
+			7TvPE8z1Pc+T7P0/0BQNBUHQlC0NQ8YNpNYABVRqCitSE5otAMBg
+			aBoNAAWZZnMf4d08ALfH44FRGbUtJAAFwXOoaRpOxRFX1hWNZVnW
+			la1tW9cVzXVd15XtfV/YFgqTRSCP8jgkiTAaCFuW82IOG4bhIAJk
+			mSblT2FbFs21bduW7b1v3BcNxXHcly3Nc90XSi8AiBAkC2vdV43l
+			ed6Xre173xfN9X3fl+39f+AYDgWB4JguDYPhGE4VheGYbh2H4hiO
+			JP6QAqgCdp2noAB5nme6C4wedMlmZt4Ynk2T5RlOVZXlmW5dl+YZ
+			jmWZ5om1FYwduNnmaePnbkNNZJmuhaHomi6No+kaTpWl6Zpunae+
+			Y26kAJJ6rkuoaxrOta3rmu69r+wbDsWx7JsuzbPtG07Vte2bbt23
+			7huO5bms5F7s3TeWK2Or7pvu/b/wHA8FwfCcLw3D8Rk5E8WAI78d
+			vnE8jyXJ8pyvLcvzHM81zfOc7z3P9B0PRdH0nS9N0/UdT1XV9Z1v
+			Xdf2HY9l2fadr23b9x3Pdd33ne993/geD4Xh+J4vjeP5Hk+V5fme
+			b53n+h6Ppen6nq+t6/sez7Xt+57vve/8Hw/F8fyfL83z/R9P1fX9
+			n2osgICAACBQOCQWDQeEQmFQuGQ2HQ+IRGJROKRWLReMRmNRuOR2
+			PR+QSGRSOSSWTSeUSmVSuWS2XS+YTGZTOaTWbTecTmdTueT2fT+g
+			UGhUOiUWjUekUmlUumU2nU+oVGpVOqVWrVesVmtVuuV2vV+wWGxW
+			OyWWzWe0Wm1Wu2W23W+4XG5XO6XW7Xe8Xm9Xu+X2/X/AYHBYPCYX
+			DYfEYnFYvGY3HY/IZHJZPKZXLZfMZnNZvOZ3PZ/QaHRaPSaXTafU
+			anVavWa3Xa/YbHZbPabXbbfcbndbveb3fb/gcHhcPicXjcfkcnlc
+			vmc3nc/odHpdPqdXrdfsdntdvud3vd/weHxePyeXzef0en1ev2e3
+			3e/4fH5fP6fX7ff8fn9fv+f3/P/AEAwFAcCQLA0DwRBMFQXBkGwd
+			B8IQjCUJwpCsLQvDEMw1DcOQ7D0PxBEMRRHEkSxNE8URTFUVxZFs
+			XRfGEYxlGcaRrG0bxxHMdR3Hkex9H8gSDIUhyJIsjSPJEkyVJcmS
+			bJ0nyhKMpSnKkqytK8sSzLUty5LsvS/MEwzFMcyTLM0zzRNM1TXN
+			k2zdN84TjOU5zpOs7TvPE8z1Pc+T7P0/0BQNBUHQlC0NQ9EUTRVF
+			0ZRtHUfSFI0lSdKUrS1L0xTNNU3TlO09T9QVDUVR1JUtTVPVFU1V
+			VdWVbV1X1hWNZVnWla1tW9cVzXVd15XtfV/YFg2FYdiWLY1j2RZN
+			lWXZlm2dZ9oWjaVp2patrWvbFs21bduW7b1v3BcNxXHcly3Nc90X
+			TdV13Zdt3XfeF43led6Xre173xfN9VqgIIAAIFA4JBYNB4RCYVC4
+			ZDYdD4hEYlE4pFYtF4xGY1G45HY9H5BIZFI5JJZNJ5RKZVK5ZLZd
+			L5hMZlM5pNZtN5xOZ1O55PZ9P6BQaFQ6JRaNR6RSaVS6ZTadT6hU
+			alU6pVatV6xWa1W65Xa9X7BYbFY7JZbNZ7RabVa7Zbbdb7hcblc7
+			pdbtd7xeb1e75fb9f8BgcFg8JhcNh8RicVi8Zjcdj8hkclk8plct
+			l8xmc1m85nc9n9BodFo9JpdNp9RqdVq9Zrddr9hsdls9ptdtt9xu
+			d1u95vd9v+BweFw+JxeNx+RyeVy+Zzedz+h0el0+p1et1+x2e12+
+			53e93/B4fF4/J5fN5/R6fV6/Z7fd7/h8fl8/p9ft9/x+f1+/5/f8
+			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
+			FbvKOx113YvE1Dhkovw76/R/SfS/TfT/UfU/VfV/WfW/XfXoJAFA
+			GVSE0jiuS4gwzRxn0kIkEMCq9CgjilZOIDuGFJRi6D0oeId0q/kl
+			BELioC5AB1IELcY45DyCf4yQ+jaESxAkr4wY6lLAEEYcRDH4wjoR
+			DjK/s07otk1Q2cKY+ECf2jYCqtKaRo3i1RL9YLWluOjXECAAAAwI
+			AQUAv8AQiEwWGQIAwMBgIBwaDQ+CRABxOHwOBRMBAKKwMBRyLRSH
+			QWFQmUymGQiFP+VwuYxyKw2bTZ/P6FyiWy1/S6YSqTQKPgCRyADg
+			cEw6Bw+QQ1+v1+UKeymmxehwyN0wAAQCU+ZQqcwh+Pup2MAP2f2l
+			/VOo1N+XG03KCTaRUaLAGR1wDgYEUaMgCM02SyW63mGTmdT+dP19
+			Weg4uUWR+TqYS+dQ1/ySb53PQOWVrNS7PaWbzTD3m9Q6QR+QAnYA
+			AEgil3rCSDQy+eQag0EAY3JwmczsAWapv/h8jJQi25a1v4A5mX8i
+			q5vTwitxONTTV3WJSCrw/SS2abrd561P2b7rLWHNXXO5yT1iH9vt
+			9iLAMCduCyPuKw+DEPW0bRKKoiQAQA6/o+iCvPgn7cuSxJ/PU5CE
+			H2fbLOonjFOKfZ9KotUNJctaYQrCj4pqk7CoI1yjKKraSoisCDRg
+			1TCIa7amxo/rOuwqicuOoK4vU86bw6hsYosAoCgO+atoowzONQuy
+			tL2k7/K6wKvAJFSGKkuCouE5jevc38xQoqcjLZIzfNNN6et/DaWt
+			6oKoxGtJ+qAychT26rzPHOE4M48EkoLCExuExbqMulSEKk9R+TE8
+			aYplSydtsrgBgCic4UC96eQwzKwtC77RMCmqDy80TTU5TtWVTWD5
+			s+q83zLWygVy4jPUbQVfUEqzQoTKj4LtQtVpDYrDV/HzIuHUFHNN
+			N1DL08FOSrONP2ZQUoWwhkDVahyrWlKltQIqieN85lDwql9VV3N9
+			iPDALTvkjjMpI8LrKCh9Rw1PSBJfgAATVgh/zvL8vsufbxH4oMMt
+			+faGRAox+IsfVNgKfSN4sg56IMeiYACdyLZIgZ1IYdKGZQgp3oYe
+			SgnslGKTzCp4ZvYVt51neeTgrwCoOsS1pRYmeWnNbR6Pnul6Zpun
+			aem4UBSEYArLiS0UliVGzElSdHwe56zlH7+r2Ai+q4iVOsyfR8av
+			FCo3agp5nme+c6hu+8bzvW975vu/b/wHA8FwfCcLw3D8RxPFcXxn
+			G8dx/IcjyXJ8pyvLcvzHM81zfOc7z3P9B0PRdH0nS9N0/UdT1XV9
+			YhgFgc8US2gf8aWq/yNyZoCN9smgBLGASFeBPXgIQjTBIXtQCSW7
+			EZgEA0mAM7YDSWpvookAzXeUka/oKAyFgQsYDLXJyYAQy4DsUA6Y
+			H8A3zz0f4EzT8yf/ag/yH+BSXAKhnzT19pCXvEDAKf6AanADu4Ic
+			p0AIBQDPRPsU15RIjsJXSuoZYZK2lGiIwfyDRFiPo6MAtZZJJYKm
+			dUQ3ZOp7VKqDSo0VdDSFok7aURlLpWykm1NW0VSUKlDqjXKvBWp/
+			zBIGPMtEspkEyHMTEW9ghUi5pFWIlko6qSLF9ScRk7RgUoEcPGag
+			gaIlFMEH2epDpP0KkLMcu00h5llopaISZTMLVvF2jkqxWpDSnxTK
+			caxA4ACkpOARA2PhW1zJxhiWItJwU5KWSItF9ZwSoxJJVGdOhuyW
+			LBSeP+BSyT4F7O5G1d5pW7EFPSrslkPFptjSqvmKh/YcrXKMj+Da
+			mkWQaSTEImy7ljH4JBA1JyDCiSbYCoGR5QkNmMTykJQ6zidNWkgm
+			VEiJ08GlRuVwrcUkDTVU2YRHZT0pzWIkgFeSPiCErico0yp0j8JU
+			SQVqasvi8TujnLdbhhY7n7iyq+eTcGayOTqoFCh6p+HlIUwNN1B1
+			uTkh6qORSjU0rRLUn4mEyjftDhktqUcMlfl3WKSg551JkIWWjMif
+			ikCqLmOnQxF83iCkReNC5S8uSelxJir1b64CRADIUSVcZRlYU9I7
+			PqjpWY2mfnorxc6nldUZhi55Fyg6jt3MireS1GpFHEiFDlGE5Iit
+			FZzOOFtRaO1ilXKGmEpl4J+qSnRXSh6TrwrgvQux1jwtFi5N8prY
+			6815kNBghKRThSkTsdEsZMGJSkQmciw5yiEM0H2f5hhDx+EjAKPk
+			jdj3gWHACxQAI9yGDzINaBlpDBykMHOyshg7lDjxJQPcqIAR9mXH
+			6PG2lTHWzueVDCodu4irQrjPUgpXiQD6H0wO26bwKAUAfAsA0NZX
+			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
+			1JXvWq2TNNquKrZdlgP2M+cGRqmkXOSPJi4yH0Tla31cn8HuHsTe
+			nY86nLngWSO2bsO68+4gm5tdeCo21esglumJfNlmm0pqPLOMLTnj
+			lGQgUq5897qhZ2k9LaWCOuZZb2RE6otNan2SSiQpVNNtyZodykPM
+			vXl7OEUuuAY9OG3snIj1ck7tsIVERQPrMRlbLE9LcSjmRTlcktEG
+			cI0f2GfOtnWnlfQ8cTa/MglS1xXQth2u2fHQb/t0ar0I3N4eWcuF
+			mWbhkwcprldjnsM5ltzBcT3qNBYGViVx0jQC1jcEIOdIUhqEsClf
+			c/dYVy4rPy2sdjhk6da8rcuBdVPWIM9y+tWmpQaRQebor3Oet8bp
+			0f0Ub9cjG3rSQursTZmUPPMb3vscZ5t7r2t4+QlR7BWNtqIp5Vsh
+			siIptbzncQ4OtFeiIloffRLOuG1xMm+rSp4OsVAndRd1q0bXaFfc
+			u37YIYkls460pR4nJP7cJQkN8bssm76JqdQIPL1VOXYmmEtU99rF
+			GBBQaWY59DuhigNtBgShBaJ6r9BuKCTKTgQSw2J3vJuyv4OBgvu1
+			g59uIEeFR6AAHmKDvQAB+BvYeaIFvev4Nov3t/SdhwfuA0A4ApD2
+			UjmTTgLaHeHZhvwt+z+1+3+5+7+9+//B/D/F/H/J/LTJCkAYdSkc
+			02L600+mTcNEiVUmLaLwLaAULyhpjMIHxeAgIAAACAAjAgADwBCQ
+			gAH/B4GAQdCQADIkBYMCQIBgIBQEAQCBI6AQPHgBFn+/gI/4aA39
+			KgJEgFBpfCZAAQGA4lOIlMIYAJ1BoHOwFKp3A5PBphHYFJJvL5JD
+			H/A5vMQMBotCZjT4TDa1SJ3Pa3En9CQDDa/EqNZLRa58A5fIYZQY
+			eAJjMaQBLxS6DZp2/b9UITLa3RH2+n1UIa/r/KobfMYAH9Y7Pcpz
+			dqXX47OI2BrVdM9HrTO65Qa/ZsdPb5osFkNTqNdj7BZ8nXdZstXs
+			qJkNvgX8/NlZ6jorZPdJnaJoM7ReLZADdspy89QLpzc7c+RzYGAu
+			106zJORN81br1443Tup2u7Upv47dM5Jin7ULHhsO/cjuvjJ4a+ny
+			+YY+59n4xqiJU3zHr807GtKo7ftK6EHqe4rSOytCnqU37YNM1rdL
+			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
+			JZZJJxr4yCScgRfJ/MfEqyCSMZPYj7uydhQBbSWcvY/JjAu0nCJy
+			oxIBaxQ6s6jSxj3hVzxcAKTw2bzcRztEo5PpCCOSwBFxFpILx5fr
+			vh1UzSpMnjnahyTymqSLN5Vhjg6E0qno5cRo5ZZkUaT8tbGrzr08
+			wiAr0iryE0jaaD0YnhH0PLTJfrmCPooSNJOyJ8vbJqh6jBaEZah0
+			tBJcSAohnU67xZUcOo37JqKg2L4r4BpqzZJDOq0ayRM4fg0Bvz7A
+			lSGL6wxq0C0BrL777IgS2j8i0Jsgki1IhK2z7oqT9IAD91BwrYeL
+			+Rt1BL7SzKKktZ3oDYDgCqETh6h6eaKY6QvgdIc4d8BMEFFNFVFd
+			FlFtF1F9GFGNGVGdGlGtG1G9HFHNHVHZ0ICACMGiUJnTowAQ/gfp
+			6wnxm6gaDjEp+EGR8whJ+YAC6IhMHYhsHYgYCsHguLDAhoCIogBg
+			o55wjwBKPgA4jYtw7B/cJ4mw0An4y1N5oJfp6cbzzca8q5yMxQra
+			SLNcwQvENLqQpQt0FzurJUdRUE6zaTnA6EO8LrWQ5rR9RyF5c6i6
+			rKR7X7VRQQxRVKEQ1KaaixMRMDHynpebgLU6JSxyGbm818aiOE08
+			REKcfZXCHgfgfRAyiCJsQjQTlhZBdom8NL08qagcwjOymJGjHydC
+			BaPAkk0ouxGUTKVsS5LzhzVZWa4gxc8RJpWTXM8BhEZiYFRCF8aE
+			5otUkVUNX46c1SIBejVQfsbpOCfQwRbUrgwVdpo1W5EjUY19fBXY
+			jzJ4jzexlUXKKcjkLqBaH5hssUy70TsbgdhEsUvQfchZJBxYfKG8
+			hpGIqjdyFTIhTFV1EaJ0yBkLTsXTZApjdyDNdRMEkDR0N8nbpKhj
+			XLXBbaTpKUpBhKAyqpBSWbhBHUzKrSUTM8uhkrkSx6eRNbPVURQl
+			absiXCL4yqNaTjYpEzL8tMnRGiBLV436LY3xANWzo6qr0aq8pyho
+			r6SZQNarj64g1dFFpicFiZV0t6mRzEmr2jWyHRaAwSUqTCblRpTT
+			qje6WLQ7mYwasTQqmxQKw5jEipl9nZfIykMBMbvBjMBJAkQRU1nU
+			o4z6phyMPqqirbRDRcgrLEKZ3RhkShI109hg2U8bsrngpZRbRraA
+			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
+			f8ThsYlb9lswAD6fT5lD+oUojcDAD9l0og0nn01m0lAc6j0hi0EA
+			QAr8XpsDfb9pdTqlekMHtltptMk9xp0Ft9Mk13jFdj9slNSsdxk1
+			zlVEvt4jGHj0ii0jvUPhk+AQCx8kAMntkPsMJvUxhMSxEUn2Hi0D
+			h+Ww2niOmzsesWWn2j1lqy9gtdtmFNoktoWFqV3fT83O43dy28Ds
+			1TxFz0UIrWx2MhzPMtehy+UhG8glQmFQ4fIyMj6Oe2cNAcgve0zN
+			5jnW2ddyPtyudkto1VOuuEgc929Rs23qSlKExasoO96sgI1iRK+y
+			Svqy8z5og1TUI4tKIOo1K/J+iKlOKk6oKSlS0AAsp9wwlrAo2fh+
+			n0wKkuQyzXK7CqNsUm7JPknUaAKAiGM8yqws2vDNr6ly3wivKIK+
+			jqCwG5gAKzH7Gwyz6CsIukMgI6cKx2trOM88seInIqyH6fkWL6yy
+			VsAobcs1BDay49adru+sPQ3Mz8uUpiYJdPcQpepbgyKp7gLtQrkp
+			U00XvU10rSo+q3IJPreQjRSWyNLklOdKUosZN1Moa18K0068qo20
+			a4vi3s7Lel1SLHMr7KdUUDx69MgUi4LDrrEqqMWi8aJAAVTPe784
+			OqmUJRBPjdNvDyBQ4AB+H5FdnrhKdr2wz9bo/bds29b882+xCSo7
+			BNxMOyL03HC10y6jF22u7FrPo1Nw3Pe84tBa7wUPXN4rkz9JvFbT
+			5QtC2BrpPDBxPddO3peWIYUp7juXh13wKhawWI99dYleVpOAlc9z
+			TKkJoLMqDtys8SIIfbS5RaKC5YorMZnFaDqQgmbn+e6Cn1Z57Z8g
+			p8IKfKBADnIAaIgml6VSObgBnqCakAB5oLqyCHhq+t6miuXIe7So
+			3xseyIMBIFSw0oAbOBeNQZjiCzJWCBnYdh50vsu871ve+b7v2/8B
+			wPBcHwnC8Nw/EcTxXF8ZxvHcfyHI8lyfKcry3L8xzPNc3znO89z/
+			QdD0XR9J0vTdP1HU9V1fWdb13X9CBQGgMAMyJ6f5+p7kEeScllaA
+			AA6CgSgoFLWByCgiiYJImCDJACCyIAqgoKI55KDgetnjoIBrvgTB
+			PiumkTyscirJYy5iw1MiaF94z/crOk5/Ou3rRW5Nsky66cpPk5K/
+			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
+			xjnENUTkNNlSVS7OP9EXwa52WjvIUzymnrUg5oZhPBw4Sg7k62Om
+			p+NHSRI0IIraS9e+s7exGwOPorIWUeR7yXxIuJe1zwQluvHbWFS8
+			S4wi/OdrjWn/0GugOxfNrTG2VEwrbeIyi7eZ0xc1QqRTtGJWMWRi
+			vqu8YqJa8gltr7dKQ227gTq6AYH6OioIy2LaAGH9UwASy4yPyUsO
+			MGL+MQIpDfCmKiHiIgHWL2HSJWHIJWHEJWHMJRK0AAHazqXSHyQE
+			yeV4gwGYGUGrhnigb+AQeaOoOwHsHoml3F3X3Z3b3d3f3h3j3l3n
+			3p3r3t3v3w1LikFUACCt38H+E/4CADgOe4Gt4MAAHN4SAAGUGUF0
+			2OovirV+MYHwHwZkNIM0JzYMAO4D4wR4LqdezAxuAD4oHzj6IrNd
+			f+OM3A86ZSdg2wJLj/kPN6ONBrkKIXOP4GJROiH/kjkf4GIg3YIf
+			krOY3WfIr5kbk8AEfSQI6Od+ILlG4HuOQ/mRYH0+w4UqXoJFW6Sb
+			D/uHn5GLn4UR06Vxnw/pU+x+ociiNwUajiiPgIMm47BKvA5jJPPi
+			ky9oogihbKkn0dfTeqUaWXALQZq3BtUD75pPytnybbevy4jJRpyq
+			WoUqig9lecq+kzygIPnjHJzvP7ChRLH/u33CiMhvbsxyumlDlqVF
+			BdI2qPcDV1xHQqa7f1xqKFodjYiHxNoi8ZsdI+nHo7r8vhuid9NI
+			/OWXXoLBTuqPJgdwTei3AlA3z2lMT1eWpPIowVSaIWrimTWHXUI5
+			vLRd64hwrWj3Tz1wjaNXCJ/NVyIIAUlyluytrAl3X4NmSvtmIhtj
+			AhQJv8TWSSIAAIE/3+/gBBH+AH2+36AH9BAA/H0+oPAosAQBGIEB
+			AMBoyAYwAwEAgABwOCAAEQgEQABAKBJLJwBI5IBZsAAHOQABgPHo
+			FGIxCYPGH9BorQos/H7DX4/n5B4hCIi/Ke/H3VaVEYZEX7T6XT3y
+			+HyALE+ABS4NRYTVqfBYTBqRAgNLpmAgHO57OAHGJcBZbLwADAWC
+			pnIpwBZJFoOAobGcVQo1GbjP7fBanT4XDXs9XtDqLU4bRYa+X0+6
+			hCaJOAFMASB8ICQThAQBwTA9tt8VUItEK7BqVcN3QgKA79ILuBLp
+			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
+			bO2+Lt20wOWwvqCuNC/77IfZYv5XVZXeZrQmSC2a6VCAPodPT0jw
+			j8ptorSdrM+kjaCyk3lz1aTq2c9YlCz2ptcdiWJoDCFulet/NLLs
+			8G1rE4vEdhm0G7D6JUlrOx4TJH6ivIDR9ZeKlsMU1zp299qJFif1
+			iX+9GjKQc2m7YMR4RdV1gm0l6RB/ADPw4hlwCW+AMb+4E64+gGEf
+			H6Ag74BTQACnK5XYcvHi+WyA6fX7pYk7ckN5/0HofRej9IuAni5i
+			WmBwGYYnEHi1u6gMyj1MB4HetmpAtIMF4QK8m+8aCM1PgMadzqe4
+			d+EhQWXJBQoUCSl8mJaAMvHaoXwSKjUF3awpcy3qn57zDYWieU2Z
+			5fbOpNPXWWcpYmSREumkiZFCkLHuOxT2s99W0am4qD/xFjdVSdYx
+			Ve652tsR0iiKUsEagZmzgNCI6Tk7EmMn4KWegToPCtoHsNaUyQu4
+			C9KdaKUO6JsfUMcGCfcTrAzBGSQDeAABOKXBQIGCyKWCxBIdeggA
+			AA2AiLe9UIIAOL2IepWQU9a5mxWYgXtB0MKN8ySgM9YK8KJBs9OM
+			MdjCU9aJ4LGZSgKgKMKLS5A90nCLUU6R8PMgOmVC2+Y+e0Sdqgiy
+			RBfDPDQdUi0icM6jgmLAgwMmGNWWOahDq2gRKJQijD1AMu9D6I5D
+			wjwmSNWYGNCMmPwKQegmIP2H1EOJYHwOyiiHuH25aJI64IoKMvBE
+			AP2qYivEfD8vAROPg3hDTFJFKdCpSKgPGk0VkbQPIlUlakelgfgI
+			QHqKoYwkoKQAKHyaAH6opF6IaLwAKlC8kK8H+LUH+SArSM6HyHmU
+			rEIVq+gXQ245q/wSevOgQsI707wiE/KToXG06JERKji37G9DYSq+
+			KZ2gIxsbWLaMGycUBACVm2SNEbI6ugiK+SAaqo4a+2CX+0ojxAQT
+			ozeVEiaSw4PGsaIdsveTOUQ+s98UYMnIII4sWKwlotW/GR+L9GyK
+			OM2Kss7DutoZCRyV6KzCgWWwEJsqGMGK+ZWLAhO6WLANy0ONEPyO
+			wM2myr4REM+x4iMZbGuJuzCnm4SKmAEL8PKSAUGeqY+vKTBDoImM
+			lIkXeXrKM7YLWL7HdCSOcbSTGr+2ISKZCP0OsOuWQWQ3KxO6qZwV
+			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
+			5+TH0sb2skg7epYBADgPCOBN9nLvVE3USZks7U5XJq6uPhuKOlK1
+			AW6heNvw8z2TXas7zK8KWYI/LgVU9VZrux72MbTzvzNq8TPHbMFa
+			tSS9OeqTPLXki7n4uNNKlvlW28/jOIe3U4V+3tdYBbtqSHgYCoHI
+			vGO4mUjMZg7TU1SrUZK6dyKdLZ8nzLTU0MhassDCjX1vauPvyikr
+			tMrindjv7p9r07VVE7mcYBat7pVbeBQlD+0bQzaZzCtMu1XRFUti
+			x3fYGAacODU6VU/ZlVPw2843E5a/Js+craRlVXzBdfT2K/sX7K/c
+			Efc7c7aI68e0e8TDtZNu0UlsTh9RST/U+n+NKpiAag2EGMdqhshq
+			dH1nDNkoeASiW5Irf0h0iTJH1n8WJAoxxx4HH7VorJWqdIFKsb03
+			UvyGYIwGZkvAjyrGEPsU6mtnKKl4t5NGU9ip5SEAJAQAp3iozyJu
+			O8eA8kP1Qnfe2oBDbenAkNZUpeEpdTlmmJ0upDaWGKj1HqPJph/1
+			9gFNuAoBwC2DONe299V64lXujOSppGhW3AICSUZGCi+H0GNM0+M/
+			i5HRGBUXD1grh3GHqaUoEf8KDOvHL0XYpx6kIM6AAA2Sio21L8Jw
+			7pRZiTyJTOOlsfS6XAmpK431lqW3SMpLxHxS0AWPuIQqhaACiHAr
+			3gW/iALVDKu/RSitexky7j5icZkoZWzSJTXYnIrLfzjl/Kkjce7T
+			IMoQeA/ZfaDCVmzNhJJNbllALGc8+VVpd5QmklCW86MX3JHqX4mx
+			jsdQCgGce/U/aW4Gy2VGio3SC1Gm4bC/FOCmSnTlXMc5mazTvmFP
+			Inl1Z3Vbu/hsfpJcGX1LGRjLU4xZ3NUXWGcp5TZZmKJWMf2WKjp/
+			oTVUqOeL8pvrmj4ZktT3aMw6XUaefEdU/y7bW4SWMC0wrIJWvo3r
+			H6HG1Y4s2eJwGAnnPuQgA4DUiAETSv1BZKgGgSZ2AglQCAGm3O+S
+			oBgDqvAHJYA4CaDapL7AOYVfoAgGKhJWQce5NycqjKeAEl5Xzbj7
+			H+bczBKihmgfgrSQNOSUWHsRYmxViyEVSKGecu4EQEljAkAgsYCw
+			DGkswaQg77EWMdsZaG0Vo7SWltNae1FqbVWJGoOQqw1bXAAGmOQd
+			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
+			WaKohAhTyWWak8OjA8kFX+JbE8kq3jTkH63a6yn7mbh7RKL1NtSd
+			GVbcMiOhUC6qCRVKU9EwlcyrRSVrj2patcgDL8qo9WMEfo9bZBGF
+			VjhOhh+FGCTZ4zJEraOGjmsVMFCrVyp5SsQGiZbVI4jhbstRwIyx
+			PshQpqgrUAyycEtwBhEKdyG4Bku8u0twCFb2vxH0w5c4y0x7lB65
+			CIASfYzh6EyLRdqrjo2xuL+hvRmQAgiYDIBi3SOAtIB4BZTyyEoS
+			j8N0/O1G1O1W1e1m1qs8sAh0dYiYZgb8YCpBqAWIZocWMwfDFW1y
+			l58ojCDIl4PZH05xRQcAAARhy+3+5u525+6CvqsE9ZTxIpqAMQlW
+			7AjACQjO7m6Mowm80ZQgFwDu7gD6igAAJQF4Dctygu7+9++G+Kyc
+			/ZmQlFbwfu9hdVAYewhAfAe4hAaAZYbS1dBvAhMZypTwey11DZoA
+			eVCtDJN50IeQd7KC4rBoimrKSuTzYmZ5MhZRMEdZ9rdETRjw+shb
+			n7kpGK74jpTrPCRqZ6PNmeDhFi9Y+4zMyBGpMtldoo7TCwjJLyYh
+			19Y3ETzKS7HtLcNRSwn0otoaZzwmtDjdT2XMqvKbDXJZA0g7CeLN
+			LgpjUFhI81e5viKLJJWaQx16K0tRuaFZbq/g5Vm1TSJFlWhkplTf
+			ESzLX8Sp4kbiGtwBDBuWLw+fE1sqaAjG/1lBUHNyQPEZkSYtflyz
+			Su049qWck47OWZAqJJHIl7pdSag1ssriRQuWhvNZ+lasR1XKO6Sd
+			m0MZV6kViCgyj3Jj9/NQ8BVmYomAxcDUWcQTSyBA82915klyV8qB
+			0rCC+LTaKhGunKAUrluixq9h60oI0K/A9Y9dAg6zKSRiUC79Qgja
+			Cd6rlIq7NjN1gwntfRb7IHPaJMbZGopQwGd0+Yxp4uUnL9SWYluz
+			Zxn4kzfEacU5y4esz+oh0FWopUZLHl1w+hIIsMekhcr/fgfAfS3X
+			ahZo5g5yFQ1sYrKETuoVmkfDfNnHKDfxFQ/lnwqbCD9x/56T92tg
+			iw8TFkWZfSRIxbXooncG0pTki0DTXol1fwyjf/TFOU0DNxHQsgo7
+			SY8jAGxvdhHUrN/EOSdfMpI9GjYroUu7n/ZpCC7h7LcPQXQUhlkE
+			v1Nx67IQsebrropt5Ihi4SD6Ih8sa4ANx4h4AptLzAAaFt7pWqzI
+			hDvArt6kEm0d7g/D4qzM0JFjR98QpptZCBYxcbgpr404fQvoiuHJ
+			z126RgexQhikJLwwfWCBzhiZuB0Dwp0qPo+JkbBYrEGBtROc0ztZ
+			q96WE9N166ql7wjwob4D2t1gnHWt615TwYjvw5FmWw3I2KeiCBcu
+			TBVj1OLqUjtdbnWVUyY6Y528MRwbyjCgqhwQdodBQh8gr1DuBT7+
+			BtAwemNsJL8hMh1rgdKMn0NT+SQ5LH1OFMt5nZnqxoBQtIBoCAia
+			emFAgAOfoAA4Kgb9foBAD+fwAAD3eYChcNAD5e0Kf7/hz6e8OjUO
+			fb5hwChQAfb7hQEAsff0KAwKjUlAAFA8xhwAAgGjUZh0qjEUAQEj
+			0DAEZjT8fkuA0OfsUAwJj8fAwIj83nMfiQAAMym8kj03nk3rk3m7
+			+ncffj7pkoh70iVphzxdkSfb6hzvdESfT4jTydkKfV2AD2eVRhUh
+			hVeAD6fMSmVwosUf0Jr8Lyk2ycyn8KrcKhljjNZslgf+aooA0Vkr
+			IBx2s0db1ec19ar2wh0l21k3Nirev3tVzu32W8sFa10ynfG1u608
+			x3takeuotY4vKhb/hvIAM2w9w5L/fsfkoGA1C2nR40lfz85uWhtG
+			6sL6dn+mLwP2u0Mg9N0dfzSSpI5YAAGlTUNcxzbv67bZOcpQDtQr
+			ycgK0bAnsAB+H6tR5HkdoAIQtR8n4uzsIauqOrMhqzIG54Bt66QC
+			MU5jqgCoj5Iy9i0rtDK1RU66BgGrySMS2sIgIAacAIoQEgSBAAAU
+			BMHuwjTJoad54Hc+yRHufCRQwgbwPZKULn3MLTyTCYBAFI4GAWBa
+			cAHI6yKrMkvqi8CPSnGrTqaijoOC20jTi06GKYhCHnujr4K/NKJA
+			MA8myTI4EASpdCOuhqkRxMj504k61MDEawvE/sFOE4cByM9KxNHO
+			DOOe6CyIYqr61nQywvCojgP7Fsj1e3DXSS8zeokiSM0wfswrMk0M
+			v6qquzTBLZtksbjWq4U/WtUtm1IjDR1mytotw2doXAkr4VEnlZMj
+			OVOTSoU0oVOFBTxeibz1UjVWs4NGABR0J0jJEj3OnikIHgt8NRIE
+			IVO560oGhljrU+DWV7FoASXB8CSOAYDSPQKcAbCYCgXCYDAYpYDg
+			WoQDAepeTKWAgF48A8J44iQCAOoWOY3VIAgJeMYK1hV+NQnoBI0B
+			gEIaBgDoGDgJnrfoCIaBACoGxQCpXhFYWpBVT63sGw7FseybLs2z
+			7RtO1bXtm27dt+4bjuW57puu7bvvG87gsyNHrEIAHaeiRE2X5tAA
+			dh5pEdnBQ9ZW9cfyFVlk05uwuABOAAdAAG4ABVpM+PI9D0XR9J0v
+			TdP1HU9VtBAJwAAJQGABwAALz5dqhQPJv3PV95sOmKEEILAaAAQA
+			oBgACmGgPycA8jgLizg976Xp+p6vrev1KPyOBKPZcfoNtQf/uHwe
+			y1Hwe61GcZXDHadR48AdR4UOux7nohVkI0ex4zykB9PY/gAA8h3k
+			iMmlMnhwB+HmNUq4hyQDRLxKyckhCKVDKIRGadbp/U+nMQIzBAq8
+			EIESYgRMjSniTD6YlAdPaliwmxIUAgA6D01MbQIgZ+5SFLoeH4e8
+			ni3Vbo0XAqQ7CzVftGTQV5VqqyRnTULBtbSQFeoyIzBk+UQTTxMi
+			uddhDA0ZGnQwV+A0PDSRENGgFa7WV3nHegb1miDzWEKAKgV6K7DF
+			j/VCR8y5PE+RZgKZEhpTUvrKIQmUjyyj4JkT6s5AaaicLQeihGGq
+			wUkL/SSqo4JKkJm2TFFcfD50Lw4XVJuLsPVzHHOgUE5jX1OJyLCc
+			00p7TLK7Y2tA8qgjHLQhAmdbJ0FZp3IynVFMB1CFpPYnQspxUxKK
+			NITZtBuFyKvXwaZfEoowRlmgbdBBHkDm9iTEtaaw3nteVJA9WB04
+			eR/UJHuMB4kXHHV8TNrK/TykEUewlOMrzkI2XSoSEY9ktoXUMUhH
+			i6Twr0QzE5NRSzbAHJecZXs71DLeH/Q8iTz0EESXkqokhQjWUYAH
+			DKbdFFUUcncsSRkDkBsKigtuHKKSJnvUIPYezUR9rIIXF9dZrJmM
+			JVMm9IZCgEgKZq0FURkyHj6HpDlDMBIh0CImQN/yiZhK5hKPsfC3
+			jSIpU2ckypJaMrTehMic0q1qK8QgvNaJ+kPH8lbD1or0WFGJreqw
+			maqpyk3H2VGZcZwByZaKxqSzrqOsXUcdawcS4GrcVUnCTJrkjy3I
+			wnBAzN45LDNdQxB8MYZSoTS86OM8GRSVkkAGyUM03lCJUzqRxvQE
+			ALKWgSjBtTNIrO2bRGsBj8uWhQPNPZRQAkUt+Q4AxIitENKCdm2q
+			cEVlZr6ewrZGk0tXAGQ0AgCC1GsuM0c2hGkCXLgabEkbWkk3cAJI
+			orV0Laj8HwhMhBhx7oTL2ke+Jix7pHMQYsxqHh9EKKQZ4ohn1OQ1
+			JGRpJJDa+qjONgQAxAyaHZu0nDAjVl+gJIGSrBgCGr3aufdsnABr
+			syKPgmm7M1TsGcAHdA1KeJ8gFJ1Fkq9d4rq/Oc2G8y2MaNba6twr
+			k+caStiEQ64xox4jpQmPYeiRx5DuQmRYiQ+MjkPHqXofGUiJIZio
+			VzGq4sZrhxlOXFjSAInsIKQMBwEi1EFIaAoBp7CaEDKngY8xezPE
+			UI4Z4j5HFwD8uITIupKcWoLwmWe4RULzk9xaWEny6zUHmiGqhKZL
+			TKuOJpIrL6rEJxZMVK/GEQVvwYi3QU9ZGx8v3LUAAeo8i36lHiOs
+			ulxB4DqIUPkjoAB5juMMYsfBP3+zZJNcTRpkLfQ6ioP4fc5MAIJw
+			AcE0JlboUSNNFMrsWa5PRNccDapvCxm7VcaaaEDIlbYWvHOns0Tn
+			m/J4kI9CsVCbKNPGZFFEkGnTS+fFBG76ubgSARhahW57yEj8wtTk
+			ypExYVAfil/B4rNdTUsRoscV32rxTFqVKqjycPXjYUr6JodHsHiP
+			Udla5in3R6YxE9RiW3O2iZwrKMFT6agyAI958jtsGLqmM/PJohrk
+			MVCA4NgGAJPQek9JpYYRjwHeO9LIAB8F7oBVqQKJTvE8l1Z0ACbE
+			3MfjoSamsWCj6RT0Ropsik/rAskV9dRCCBqIqvMrFFFSpqoe2AlC
+			bjuzw4UyZE+sJn/R3yAtHHFPSZWAjmWOJO3VVrqnXvc8CdSmJ32k
+			ru0nfkALAVSgkkjAqmw4kOsyrEZVyMIWn5Lbyf0/Y5bPvfH62mGI
+			GsVQaROj9BTI3PZyJHZYxxYKY2RAS+5aM0SRZTzCeCj92pxOOXEz
+			1roe63CNDEKSYyMODUGGU4UjLEaCAUCFme5EzaYTMBpQgEAOKWAU
+			BRQmR2oASzpjpM/fV9V6z9AYBbIdw2CTM8zOSNAOAWQO1xagOgJG
+			okjCNJ5lrCgldDdFxGwJrnsQGQGwHQHwIQIwJQJwKCbkMCGh0h5q
+			rh1wNAABOhfBtgAB3B6i7HykwsawKm8k+k+hPDoBskPAABWAABIg
+			ABxQUwbwcQcwdQdweGyA3gAATj5ATHXAsDoQitmwem7DnqLAAAOA
+			JAFAAAmAYgOgAHhEmgUAMgHE3uIwkwuwvQvwwG6CsHxHul+h+gNL
+			inuMjEQH0AABoBlQXh2H3AAB1h0h5OlB7i7B8B5uwB+G+h5oKCHE
+			RCDw/IAh4kdKCralvLgDZvPFVjdidp+FlIUEyiYoVK9NvierJPBJ
+			TFiohoRjApiiTvZIGv5F9PSiUlUl+GiDepAKxqImJlCD4B8xYE7F
+			VjypyOxptFekgjUpVIuwFNeN1PhF6D4PXu+orF6sfJpxkRjHHRMi
+			xPPp8oQADCaLFpKlYGPo3pGoon7p9OwB9E6kporo9PipjjrxxkUp
+			BKIiwJDGCKCxGuHJJmErYqMLRJIq+x5oMiWKsRxj4B7h7CRFkCDn
+			LOYmjjWkhxujbjuP6OJk5FLKxKWFpFhpcDXMWCllYGjuVDbmgssF
+			6xXK1IRlnKpkfOuE9lDSBxio9QYF0F2Dcjeq/N0NNDdJUDSvTRlx
+			ktxD0DhraozHntLj/olDpRGvOiWRZRMD2xnrzGAJJN0Rtk1GdLJR
+			qqSMqqjJDh8xECDxPieJOoCJ+FbCwvIjVJGEEqVjbRqnuDbPBsgN
+			LyiQEq5KMKNAAojkjxqilozGKKzl+p6qMynPSisjFDet7JBIvkMD
+			2TBiGuSKnocomDyLHmFKGGamLDUKEOYMEkPB/keFCMnKkq1H/CRE
+			SELtiKlCQlBptSVILsQRPvNPOiZJHE/Daq9iJt/wUGuQuJCxlLFD
+			ZDHKwzXFoyoRoEEl4jfEEM/LNqKicjaFiFflGqGpvs7PhonFLDZK
+			Mlqk1F4oalKQoAETuAAAJgJgKGAiZjyAAAGgHQtAGzzCcLPo0JLE
+			XIXD3N/imkcNQjsEakSh/TQPHIgDkjALeiWriEbHLCtEvgBtZrgk
+			4DssTiCAGLpLwsUCNACiqEICNKGLjE4rjmEsCADrnPJiRrtCVRGU
+			KTLkBr0CKJSCQB7lKjTh7h5Emh+h9L5L6r6L5L8iQi6C2FkIRCiE
+			0oDCwIfP4ruUFickfgCrkJsUIsFiZmlEIUL0ksGGmlULqMPDaDsj
+			dLyDnRMDk0ejzqJUProJ7mwECUsqUonSipmsYzgtNtyHHycJo0zI
+			BChCLChEOChSAEjjCChHyL5NctcEjtQxkmuRMoi0SJpCSUkswC1L
+			WiGsyszsKGLgG0nFUPGCTU+qjL8CMCPzSjKs+vWNhCCAFs4CHNJt
+			CsOvYtEsYlBCsUFvLLy0vDRiVJFMBIW0FsdlmzaquwEDLOwDLiKV
+			OvONZCJCLCFB7B5iFUWiHB6h4iFVlCQLiH61MiNh7lillERVMiNM
+			5VS1OlbtilVlkNtq1qfiJqTCwRPE8JySwtzF8lLOeDftICzVwIrs
+			AUrN8jp1M1wSbNv14lxS3ty18NvxWVrpyxttkIhp8jxIRKjCZG+F
+			rz7DR2GI5uYl6ux1cFzR3Cz0ROJoHoIwLC4JiN/t3lpisDVmiuFj
+			aIXlJk3k4yhsgKCtGpNiSmAQloFK8UYTFh6MjHGzDuaxXEtw7lkJ
+			ilmTXRFLmWSShEALtNmQ+kukRSSkbqxCqwV2VJFlJTuklkmu+j4K
+			ZKaRRkMubiGysC1IJoTj8lDGPl+TuEmkCIFNhvNI8FRHQT+jqlnM
+			eDoFLK1ITJQvZo4J5l+LUlrRjD+JQpXQ+i1WP24VcMdNsp2ppCbk
+			4SEItyRuAx21KN3vHoymitNozP3TfpeGCSrTCF7m0xdU1u/VBmEG
+			iG61+RHsYybk7D6pQylS9RVloU3CyyIMcN9yKTmpKGdJKljKDD+E
+			vD4ruJcGFDmVeD9ijqbD/LJDglHk0PqFUicvwAGmXLXGQGVmSPvG
+			SgGGRFKEBgDmbvtmcGNpw2TTrmhKTI4GpgAAHgEj2XrC7ALAHi7D
+			yP+AFEh0PqewDRoNykYu/ww4BYB4CYC4DYDnQh4w8wYhlQbB1B5K
+			rhohxkOh8h9oxYEG3OkCHH5CJA1iCAABnAAQQukHPDBYMYT4UYU4
+			VQGA2AAQ0CJAMnXHbgAAvwYHjzh4VmzgMAHkmghAV4YgM33gAAag
+			RTwo4qMQF4c4lYl4mG7wxnuCinvQ0Lfw1B5w2C1Bnhlw4n4nDh0L
+			eILOlRAPlCHKZkUxCjAoKCNB5h4SBOBlONAIs1dEIMbDfor2XRJo
+			cFwNOoNixrTKvy/uD3gCTxRD2Jq1RxVWOTdsO3IS8RWucI/qqRLI
+			eCNYK5Cq2xbpwnop8JnWVpsNuXL3SkFRhXbxiGBlaR+RkPcRmPOp
+			Vioxn3TTYPQlpisjyI3IkABLGjElhDoHn2aHG5JpPwTuwIhlFId5
+			VSPyjuwVLjm0Tx3k+wEmsmRJ4qUW/JIrRECkjNLq9R/F6SQjTiLS
+			BTCyWNzptjW3INqIG3jtwRyXcJYRgNxpuPIl+DyrGptNvX0yio8O
+			TZ92JSVGHtG3CJPxCKqFORXJepqvSI4LVvWtFpsXIvUsdvQ3MzhX
+			GP7FhXGixK0JpyWt7SZlwZXj+x5LRkgpuLSrJLRxWpQFCWwjLD9m
+			HjTi6kdIvo9trZGJUEExtSLACHuIzVBD1SMGuQDyhq5KHzhuHnnL
+			CozPLp7S921RNxpTgzBZiPMkcaVJgijqrZAvHCeDyLXv4TuGavPr
+			gE5jiw/TNCBzOWdExzQFCB9B/wT4zTUzcjpmJY4qxj1t/Vc395Zu
+			WphKYInOxNo6Nl6poq5zeaJMYF3aHNyaLpTjrMWE0PIiaI3JuK3j
+			ejyS0kXJXnHYLaCTprHK4kDqTlUgFAEQoEmHuALALgLkkGVqGAAA
+			HAGgH7YTzsOvzJ4jXuxLajJ6XFli7C0qBqBuoET63re2sjFpj2wI
+			vCR5CzLLSKrtCq+sMwBnh0NTxiYk437qeJ6VJS5rvwBgDbm39kDL
+			oGtMNkYlfkVovVutoB8h6r2VutZEJqrC9B8r7B8EjjIFkU/igLtM
+			AMD2lUkT1s4LqAD0pracBM2zxrpMPv4rqUjGhCGo4idye0f3ijxM
+			ar0DqXUMNTb01IMPTVXmysNmxcQ1BcPm2Ska7bcj+h6B4U5UZh5h
+			309B608B6U7Moqbr+C2MS1SpWwEpdstqdRHrawl8DTyszEnAGVGA
+			KC7FH8JAE4Liv1rKbxBUcjJNS275LNILSNbinrqDzcACwsWFzbFy
+			aSGcuzf6NF8abomDpSccTXJScjtISK12WtSVnNY1piKmoiH1jDBw
+			78/CN0+jGVjiIlO0+oAVOiZB9CLlOERIIn7jKX0r+p4FCiXCajLC
+			JFHmHiKL2odUds5jE7REj1v17DTlepX9P14LzyqpCs7RPNnyZ1wZ
+			njpDNEBThEZN3N2zmFVF1FX4Ac649D26AdiWH3ZFFDkJFOYyeTVQ
+			Doqvb1BRMCuEY1eYzdO5/0rdcy/DExNmLbTQoE4I0t70YCf2MFVk
+			kuVCUl5ijtQq1KZKkxXCm2yj2WcLeEPvlYTJsURXj1bVPSycAlka
+			ZD8k7izEy0TuYoeEf6TrJEoEH201bjBh7mou7zDDIqoOlumuk7eW
+			p20Tu21lVlbqbOiXZP6yIlYXElB13lCCTu+GJje2/2/RTJpllXBj
+			6lkWxW3MgXbPQJrtqZP509cDZsfPYjvyrCWWXzguGc2FoXOIF2BX
+			hj4SUm2pvmw8gd/WAPP3R4Ats3Smu+kRIvYJVt2pGXaVzGEIR1Av
+			k6KVxDyXeqR5W3kqALbvPKTRhLau0VdqAZCoMLSivFHrXpwqPrUG
+			ggEYeCZ3tgDmQicXtgCgGGVvtgBgEmPAEbXLXgEP39uzsaikkCHO
+			5CBgIAFiRGmD2ALAIC7cJl+gEVyIbQCy2pxz38TYm/Z/afa/bfbm
+			0RZ5jB3wSAABRhjHKnECRBvh1Kkqa0zfcD+hxjThyDTg4gAARw3A
+			AA27kIqfk/r/sfs4CnWiJBqjoAOAAAlGigoj5AkCb4Y/tLviFAFm
+			c/oHhHaAefogHqhHX/2f0/7/8YTwxwoYoiAAACvwMgAAv4EAB7vR
+			9gB8PaGs5ktoAO11vEAOx1PKFPZ9AB7PF+gB+vwAQp5yN+v1/gB9
+			vyWv6WAB6vGGv5/S0ATp/zqczwAyehQaT0Gg0MA0mTzyezumyudT
+			upVGlzmh0KggKtAABAEBViDUecS2ey1+WcAWeTUijgMCgWuV2w0e
+			lAQB0alUmjUR+zKnP6SSMAT+q06WvvEUuyVKwgADgQDXOTgOv0eu
+			XmkUuiZqi0Kv1fQUXLaB/1bCVad1bF1HCaWhTyr3vSVGqWSm2zLU
+			a5Xq45WlAYCgeDXK7gPJADjUSg5TR4HAWWXPqGz3n6rX67bv+j9C
+			Zc+fTir9mmvyrUrNwK3gDgZEBAPje2v3YCAD5cgCXD607DS6S/uZ
+			Ji1x9HyfLBpWwbwNuALKMkyjjN4rjRKCAkFNAyzYKoxTOwgz66K2
+			3itLxCTIOGzjzs+zjaKkmSTJWkacMAobVsHDLFv0s6RxvGinr81a
+			mwS5TPso3zcqurTks280itC0MkrA5TRMur4CgG+cNOawbtSW8MfM
+			YqkrtzIjGrs4wCgI+atN9Ibht1I6TpkkbSsAfB8nwtLwRa1KzLQn
+			MXOsycqKJMj3Mk7T5qSr4DLcokOQdIEjr3QywUfRcoSMrlBre4Su
+			q/BrkK3TLkUBNCpv1UrVtM1y1LSfc4Ow1ycrXGc3Q0BEy08oIDgS
+			uDmSwwSpH4fs6z5ArAJwkx6HseCSL8fh9wI1p/JM6i0v7FEYKpGD
+			XuvYp+umxisNzRqsq3GMfQQ10YyUk8TtDLMNNisKWr2f4BUMpSv3
+			YsLKvOy18XI80KN4A4DAS3r1ANTSvXWrOFYHgsHqU7J9u9Nyj1Gt
+			6EyEgQDMjKj5gUBSEgUBIFAAC4Lgs+kzYOyIFAZkoFAWBeVPxlbS
+			2kv1hpYlR/pMnCRn0fR7gBoOhr7VrAL6esZpuf+kXXOqDMEANpIO
+			sKTK0wABgUj6vJayjAYUAAEAYwD2smuFLpaAwEJarSWgIBGzKOu0
+			/pOAoEJHr01qJueps62DAq+nqgn0fD5n6fXCnwuFnONZygn4fUq1
+			fejBn4oKcczLL3Nsk77p0APPLiwDIa+AqRsh0oDb1DqWgL1jkALs
+			wBdpeQB9L2d1sn2srW/dfevNDCis+rvhyuxstS14d23T5Ul9E8/n
+			+n6XqetJfmeW5p7Hm+fDK+mrjHwerjIWr57nq+a/Wt5vfLxdMkrp
+			6P49eAzAAaCSTAQBX7/y+gB3SgEJaVAnZgiSlBQMgVNxgn1mlLwv
+			J4qJyjnBbckFtJjGzrfLkhpci7lyGbg+VE7cInrpOhK8o75hYFQr
+			ckV9ZxJx8j1KC+Mk73IajxKCPkezmygj7aiPgekCyWvfhXD4uhhx
+			8IhJI5g+xJy+lBf3AMfZQQGgRJGYgoICQFmAcMcZaJX4dRgHyV8f
+			w+jjGlcGP+M7lidlfLPGQfrmR/RwczHFLB2ygryKcvknqHDMmXeI
+			8ozC4HpJNOOtooC6zbIpOguWRhtVSmkkiVOSBtUMI1efJhbUiHlp
+			PW+9GRxqVio8SY6FJ5y26nuOMyBgqVEHNiKIPwfLPi+ozOaXaCCE
+			kFmaRcakkY+R9NLJyYBZpH2jgAHoPQd8SyGrNW82Fqz0mwlDeKW0
+			Ai+VZkrJu4mBcBVitOSwz5aKByTSqVCV8BACDIgIYGhA0A+B9kfW
+			ASofTOIuTxiXL8fDRjXKdK6UFhDHYMnXTcj4ppOUrm3LAc2Rr1TN
+			G3ReS4xNDV5L3UGh+i7yEuwqOgsBFh/TxFMd+9A5q7H4oml2XReE
+			lylx5KmuegpgnssLmwuArNGUIn+XOTF9cJ3p0aQqbJLS4U20OqMb
+			E5tSZMpQlCdCp1BzUE6VHVMrdCqRljk2kw0b7y4lBdgx1uqY0UFS
+			mOnh5zBi7zYeiSuUdPC1lNQUv44zbFdgGSkY85CtWxgNMiAYBhcA
+			DALLgAUBR8wCV/IFXoAYCUyV4AJXgtx767PJV4okwAEgHEmAYAdA
+			gDgGEjASAS0ABysoTPUAhfC/XiIij+Z5DkG6fWxtlbO2ltbbW3tx
+			bm3Vu7eW9t9b+4FwbhXDuJcW3SrDADGG4OsABG06i1GeOMAA8x8I
+			sNRca7FvZNFCFMUIUpRBkgAEeAAd12bzXnvRem9V672Xtvde+3wc
+			gAA4KkEAoQXSiAhKkcJ3d8L/HmSmcYDoEmZhPBmB0AAFAGnCBQBk
+			By/JDX+wlhPCmFcLYXtxVIf7JSdmRAIPsgpByEvjIaQ8iJEyMjqI
+			wOsdJHJ9kfJCiwtY9R5EqJmtU/5NB5k3Rg6KRZJF3VWoWYwzB210
+			mLp6t9wJfXmF4tTEpwFUJiFoJWrE0SiADlwPhIEyxd35O+icjw10
+			CTCGpP2Yghp+jFm8Y4cJQ6oUiVCyO9SmtWktVYNad/H5Q88UKcDf
+			2o6GTRpctck9TbCzLsMq8AfNzCsvKEN2Z5iJUyZzDaI0FPKWGKJY
+			RSl0762aeUE06suaBe6AMcYOrsrc5jKHzPdYZler5RH7OljxpJqi
+			rGII+z/WaCVBogYMV7J6GjirvfaiWUBQj3mSriiY3ZxD7vJ2TTNG
+			eP0VoHaSga7ckc91kP6jmkJgU4KkdGZ3Lpd5D0qOQAFe0eZByBQr
+			CaEjyVwJqmvUUzcerr0bPDWctmEDdIcy+fVM27Uo7GM64MsW2jwJ
+			zTrPPbB++IVOQRsraLGprmRN5m93Zd0qnK3Zsxepkiu8fLwpNfGz
+			EFqdTLm5QLZ1LH3oEe8reedrLmQBlMkyqszKld6Zx6MG8s80K/ow
+			9+6CWLXaAPuficHJLLJGsgjm1yXkfkbSCsk41SygyEZo55f4Crez
+			scuU6C0LHi7Ahi1W9KEphhMiRfsGUkr7ydCZIiluOMKzfOpTTZ3Y
+			EJQ+2fYQAAFK5OHBFWaBZMG3TMcYBMWmVHznSxllbMSE+TwSBQCh
+			9FMK2APOkx07Jzn2ONNowJDfTHkusn0kxiGhtFyAz5Vw9lfozaq3
+			oARDSktmAG10xgAyRntMBYEkzez3NhAES0A7M21H0bTBkAYB/cEn
+			yz8huxcXXgJbnp3oO5GKoFciPv0sTIfHzWbG4fZX1uxnNU5ZGrlo
+			n/fNulSTB9/kHepu6trTqPnf7mmggbgfsUu+QgqmgXWdw2k+S3oK
+			kNGzqkE2SSYNe3UqA38hQRKhKpc0CeoQs7ety3mpGqyeEJOfQceH
+			wK+e4OMHyHufOHoOMaEjpBBAu3ioqScYBAYTCbEdgfuAmJMASAZB
+			6AWqkbmiEQOm6hWPANSyMOGgqtWKKbc2UMiRILiRKg+YtCVCmNiR
+			PA+qzAqetAotmXQMYgaMEckciI+IcHuhyaWJQKCxojAhkzOHwJaf
+			MgKiHDTCKhWPcciiYYQp4iyAcJiLWAgAuRwiSPoANDaHijcH0fOH
+			mceHycQjGVWcQH6jOH4/UjsJk/UiYc0MCjyJ8H64EQOSIoQKWcGS
+			URqlgygW1AmSQ3M4QUI36cAkokekvDCMVFseY3KkoyOeyu2z+k5F
+			kzmeg3/BkkaqgpkeAM+oONcdEREy0QWZAZK4LFiJOckloQAQwLsq
+			4SpC000RUok9o0sJK9QP6HmHmmWLOI+10J2fmJIQy8Sy+kAK4AKN
+			8z4QKWkW6l87AWMMCnFHKIaVGnMnYMiYGLgYgMOLQWmyq8UJcQGW
+			oJGn2aGNK+C8EYUY4y1CqP2NoJ8oUKM2oexF8VK0sLOOm325ETUK
+			8q4pJCUo6WALSLQ35I266taUpGImo7M3ULBJA68/aNs02SWn+qGY
+			sUGMaNlGY6+LJCQtsSzJ5AjAeKLKKk8XgqZFgqGqWqMQu4iNKp4Q
+			wqoX8jTAqqxBlGK3MYsLkdgV2UGnM/eTcTvKXCoOIlgKwJi0qoOW
+			rAYQWParmyyOQsmAKV0IFMCAOAasGAUMiAKAWPnMSsHMUPoAQsaP
+			wrwAEAOU41+AKOXLRAQVqMAAqAgIaAWAMJMAaAUIaTK+UUSK4tMY
+			ItSM83gTMqBJUb4p+wxNrNtNvNxNzN1N3N4vaOguQIUVYAAFsGiH
+			IIyHmQIGMG2uYHuH0V9N6vUIwJaI4JOFOKFOsI+G4AAEsmROhO9O
+			/PBPDPFPGt6EA8IJcAAAqIcAAEUKkBoKkIKJOYLPIuHMOOMA4AmA
+			YAABGAsAaAADGB+BJHnKFPpQLQNQPQRKYkVPmH+Y6HzPiH6ISfQI
+			bBUIaGeGUIoI0xWHQI4HuI8JoxqVWJaxoW4iklGJOiAnFFwQy/id
+			/C3KuexNmpGohKWoYyCqAoa2yRxJe4SK3B8IS8aMuOSKUzK1G28a
+			eojSKO8iG0wzU3qbGZC8OIE5G3zCRI6u2oYWytrSsoORUoMx/K40
+			ypYQeX5Rg7s7YQk5G42cszeYIy0LyouKENbLpSWWXKUTlBU044jD
+			FOeRKobA5TCkkXKpzNk0YOFUM85MsX8TO5Gn8bOL6m+MAh0aG3BJ
+			8JcnGTiP2KHSCVGrE8GYg47KtNoSenMUgUBBEpubRCuoInyk2RgM
+			IYmm3R1TNG8RSJKRxLwpFOcVbKUkwwi7gQ63VMxIObE70moX2kJL
+			MMyQlDANCqwOgq23czkLyLy1WUG3ulOXuVsLdWITVUzUyWiTgKsJ
+			gZ5UkHuWeQMojJ4lMa+8+LiPmYG40KIj0cAiYj0KyMkTKYeYUXqX
+			sMqLkX3L25IYCYVMw40PMgiTIbwX0SfIYTwTxH65siW53JiXAbXL
+			6PbMzX+q9EQq6PUOSg2PIaaJGHsHsI5HUTslo6iHqWUTeokTqoaX
+			bJARk8TFocu3GrOpu4MKSUbT9C6SQX/FXWXLmqQXEPpTVV+L2SOj
+			8KurnYYdFX+UQAS76rnYW0O3YOMU6ZBP0qnVOfkqU1OOEAmAkAkM
+			cASISAgAiAeIEUUY4ISdgOMAaAeZLIEqqRmaTTkW0mAaGmA9oMQT
+			qOkaMP614WATqVZZhPQJ6MEAG9oK4pkdabMAObcAGbW/4+NAETMJ
+			aAQAapubggFCkAOAUawM+ZXCWPsmgXkdjYDAUb2eMVI7OKqczEvJ
+			g/UimcuOM/OjuRREyH9AzFNdeb7d6rGMmAIx6c+d0K8/xdOdka1e
+			LeW+E2k6Dc/eTAS+3dMYBAhFhd8uCQtJ1PFC+t1KcS0jCVWKDBQJ
+			dBMABBUhdEkz9C8j+q2lMg5YseS+WMAAWAe+GASJMdhFq57SsWvg
+			CqYcIiaSsfmSvSpNkthHkhFG9VEeuhFGAuzdgPDeFCRH0LScVfUa
+			HfUHtEaKCHvOoIek2cNRQiCVNS0N0oAgAKcihCC+cbvclg3BgiBd
+			wHzDU/MjMJI/FduWojI/S/BYYW7ExGtiBCQjfDwJWj4jmyVeFCeq
+			tFOpzHbKqM1e9JXFck9VWQTE/TBZslCoeyEWmXe27RXGHKbJlBio
+			fUFjW3jGMSg64OvT6N4NaQMlA5kVClWAXP1Go0OKiWc12QNUhaa3
+			QN4lcNCV8MW3GOeMTIYHaHmuZHYnjcQW4reLJLw+uXIAGsnBsNsW
+			knAzymIhemKoknknwy2VGyyPmOBUZBqN2eiO4J0QETqJKJMn3lnj
+			qSyzfX64OwjFvLJCkmokMqfLdF7E+Wvk9l/ZjFYTALi5ojPkOypO
+			E66O4p2tnTIyvejJqqXS4NYkmp9YQoHivF2p9mVi/Rm2pmuqQXGz
+			ikMzfexm0Nweaqex7i4p1TBJOqo7qqsQxLHjTAjnARE1dLWmuzuV
+			cpmQ/WNLpTtRYJmKjYyUuPiAOOMsfMWtCPUAUsAr4PUsEIFowPpo
+			tMBomr0ODazolNUXxMxbYSkSqwWs6AQJMAebKAAV0JGAMw4l2ODp
+			QigsZHnWKSCtNKDlcefV/QTqLqNqPqRqTqUtmyYAAHWHmaGHfQ+E
+			mF0GwAAHeHqI+ngVbqXfCAAGWKJrAKCFuAAulrIFXHfq7rVrXrZr
+			bQPPMPmuZbWOEDmKIBcRmBuKEAnA7rceUANoIwIOEA+AoZmC4B0B
+			EAAAfMCAdMPr7sdsfsgt8w1QZQdQhQkHrQoHvQtQwxSWUHXQ4I6I
+			axoRwH3RGHhRKiXROIcHqnE3KqhC5AtjaqHAdJHRqS3AltukQKfk
+			CgSUXR8AYYLSCrSSgJYz+eGTxcU4jSU1pSa0JYYlYYMK0bSMszEQ
+			Bl+S7S0toNQNPS+3I5woLGFKMXUo1A5LNaYQmPeYBYC9DYOKM7NT
+			kOsj0x+9U0yHwTnG/UDLvZ9RiRjLhr4dCQ8LlXiMc0YUvazL05hw
+			S1cbPZdkFIlVa0sOhuRu7U2brU61/aDfnSHm+pUpvvTMyXtCahBq
+			BZkJjmlK1TCVY9QZzv8mpNdjUl5JerNZtV2VISwkjaZxfa+ShHrT
+			e3dWRmaoW2SLoqLXxv4k7T8/a2RmZAaTS0S85wPZ2UDwsZXNljmP
+			AoiWbXEgGZyNcQGmM4ZuznStaMgYyUATNW7tyNKjXFezeYxl4UVK
+			E2KRIPc7oOGleSlTUg2Qo0OTNCiyLZu3FZTH9I2KtIZZcNi+VL7z
+			rHpHsIEtM2Br/BoJcWaQOJGHqHuIwLOQJVu6gJBZYQKaAH6QJm8R
+			RvLC4Z7BjTCmPRc5Jz1ycXnyPfgQ871aS3hFlWMOW5C7yhIURjep
+			sMuPYQhytIuf2YMzbSlWwUsi1a41WYDYBgXyfUQAiAlr2nSOEAlb
+			UPtlVXcTKlWs3uiQWJY9kzS2qKbb60u9oOlcAh8nCnIWo4f1G9qO
+			0bDcYLCzSasKSbhhYQUfrIrePeJc1P8UveOdoJObZ3+dlAAUu+Dc
+			pAGeSazdNddXoNNgtEqcugRFDh2XzE6gcVNKbiZWhWpFsMUgfNUo
+			qa/ed36M4Pb5T3qds+bFdcmdCbclAfl5QXjgevRe6zlsiuGiJDKI
+			UHqK+iInBFHhaPPmVfB5u3kzAIMOSi0JGAQi2+b5akjyU57mmRgU
+			Ak/FEekmwX/qEk/1PfBnJLo22vSeGXQNuW6gRdsaEhzg4iBBGHmh
+			nDgM06ehWgwtMgoIFhkbZTGcujdElfIh8jccOaJEkH9h4ni2Gjai
+			WciHzdxiAjQaJdt8WcLg148nijl4zFJRv6PCeo2jxAYSfXvTlw6f
+			c2MqEXdFnA+5vjJG+o2WvxhUHLbxtK0Q1udSdjGyFe60A6/GcQro
+			Ok5nKYiNVt6dePSUsZAZnj4bPj8mBIaZ3XnwNClWwmkqzkqTtzAJ
+			MHeHgHZ0oQIHy6Y16lqWmad3LAOeAc/k3J2rIKcaezNkinxHZlGq
+			mN+SmYPwWy+IAAQG/wAAQCAAA/4JCYUAH0+XwAH4/X6AHy9oi/op
+			CYNBYQAAGAwLBY7HY/CH+/pPB4VC49AoPJwFMZPLYZBH8/ppBIbH
+			54/n5DI/MZ7Np5CX9BINBwDM5AAwJIAEA5PVX5VwA/axRYXNpzKp
+			tVarLrFJoRTIFJLPNLFbbFOZ5ZLBZLddbUAAFU6rZo9PbtdJrfrF
+			YYTPqFbbRbL3HbzNMTiwFd75aLdipRVa/Z8NhZw/bnOKTVbzkcbJ
+			MjgrpcLtq5NpQJr6fVKhkbdRsFi8fTLvnortpZhbxCLzVAKB8iBA
+			RUQKCpHy5GBwaBgABgXygT1pHyKiBAPUQGB6oAgLB9f5ANke7BPS
+			AAcCH0AAWCKCDgZCAMBZUBQTB9KBgQyKRIOBAEvCmKmrO2ioMsoa
+			nL4xDdNXCMJQnCkKwtC8MQzDUNw5DsPQ/EEQxFEcSRLE0TxRFMKK
+			Kwp9s8ABqnKeIAHUeaIlQY5vgAeZ7n2rLQxVIMhIcj8fIQXiPyQh
+			BlAAR4ASZIcoylKcqSrK0ryxLMtS3CYqpAAANgAFoAKjMKVECj4X
+			sKqjNS5NyxKcAAJgYA4AByEoKgAGIPglPQPgnN9A0FQdCULQ0SIW
+			AR/gSlDpAEfIMoQfoEAAe56x8fMegAZ5km0AB2HUeFPnRGZ7ntHx
+			6HioJ+H2glUpUoCCIm0CEH0eqgyA4ChJyoiXMAza92Clc2NqhaNK
+			OrqfJZX6+pSm6so2iiKoM0i8vgBgFTIAiqWokiDqSuaUMAiigoUi
+			qKVghoA2cmx9qww6hwOBIFUY4a8L0jyENChSVM8o9gWNXLWQXcSc
+			IalWCqQuOE3glah2FNqyrOly0WIhACLSmcDLQyIDY9byCgHCAANU
+			siGpsfigKQlR85bkl2IrcSs3YwKx5tXSX5zBjTIKp2POkA4DTqqb
+			SAGyNupm0kD3sz1+o3TJ72giqkt6hd/ZlBbXqi0bY3u2iTJi8OIs
+			riJ/wMjyQzYjttqik2zLWhGjNon2ToarUfKSnl14UiSJ5InO/rox
+			11V1X2pb/hG6VlwCj7yy+JI/ueH7g89HI7s2j7Ro2H6StvJI5gld
+			I1xPH5xunS3zeyloTa2RIPkTjpEp+242pkG2t1d83RxFoVw0Om8C
+			hx87wjVnpOkLcpLtACJHtMyAG6WRtPYx+t+tejwO+9Ka4pqR86kP
+			sQAvTdINNinaN2jaWtjUyAEqOJWlw/4q1mN2YP4qcqDfKaAOBLpP
+			gLw5taxTylNha+TEiY+XegAHoPYeREh+nvH6Ps95OSKqWHo38iqL
+			oFHAL44Yy5hCfFgZrCRq7DjNH8fGSV8ZdTHNwM01xri+TNLOMOXQ
+			pUND+OyP5DQtRIXonBh65015IyBNiaOtZoK9VrHFXqgd5DXj4ALP
+			q9xkReC0gEfcz0lCB2gnSAmBMB50wDp1AeBCMZrziAGO85t/r3kG
+			xXJy8SCo/zeuAH0PwiMeWorugUPsfZESUrljsj+CQ/iIkFJUb8f4
+			BR7M9KCQJhCigANBIqXkgh3CCFTIIVBuL7wEAMJUvgkUmzaNCWnJ
+			R2S95FgDkvKoATCCYyYceUV6phVvj8dsQQihp2EEaewt9mMNSTk6
+			IYTsvclG3N0P43uThwpOgDkXJSDxA17lKkpLQvEOSyzKb2QYhZln
+			rOhSyTt5Sh50IYH2Pkg5WiDkXMiQ96Zmy/LMhSWVwRbDATmAAAUA
+			xBADAJPyAeRZRDgFdX2V2hDFyRptQO4+h5bIXmLciyNKjFGTqGoW
+			Vkfc7X9TrIQpmd49CDj4gyRZqM/U60QbUTF5hBACgIlMsorI/DIj
+			8HyZGQM8R8GRgjTw48Wisj6p8P2nQ93pksH6VRVhCJAlRnkySW8F
+			KmJGnXT5hA/KiI/X1TaG4/55t/NOs2F5gqJs6ZIS+iVDn9mDQcWG
+			ZCzzbL/IYuGupYzbr/oy6dk1dDAmANvX9yFFqKM5KPPqENd4YkxS
+			A/EoTWl7lUAVZN563HLkdgm1MfrBocydW2z116xGzk1JIe8oQ+2V
+			EUR8PAdo7SHU4AAPgfcjyUtWkIueCZopsoJs+Y6ahWSzuJLiSqCk
+			f4KAAuLci45pX2RsOIAV8y3CPAFAJNheKz2WkRImRUfA9SMkbixD
+			R7hZjLNvhqX52ycIBuKWfeCxMJClUJcmcA3lcjQura5GokFny3Ks
+			IqVeYbC3gmZhEW2eyDiP2WMpYVCLJZwgBrssUuzYC0krrXggwZdX
+			AYGeM4VhrDsMVqOFesx5MncMbhRC5CS/E21zeDbWxVaoVMcw+ZjD
+			aGL8FOshACAGFllsGkXChbthHVrIWcaoguD4AmkPPSoqJ1CR5QOm
+			As6QBTqz9AQdk65IDwT9AMbLLqCsvEHO6QgBgCSK5UKDlkoM/iCA
+			MAa3FNjQjZMYkqf8kB4wAAIAW0pBF6b9mKbAg2chatCzp0RonRWi
+			9GaN0do/FZDR9WbgYPkoIoxhjdAAN1GoABzDwkfCfSCVh1nB1KQc
+			TqX9UyPIiJMi2o9YaxTeQECAACBQOCQWDQeEQmFQuGQ2HQ+IRGJR
+			OKRWLReEoAAAIAPcABwAPwABUAP0AHwAAEAC+BhmBgiMTGZTOHA0
+			EgUACkNA8ADURBMADYRBQAAgCAMAAcC0iaU2nU+oVGpVOqVWrVeJ
+			v+BAJ/gmBP8DRt8S6SzB7vV9gB8Pe0s9lNoAO11PEAOx0XSzvoAP
+			N5SJ+PutPR3yZ+v2tP7DAB/P6BPp7SZ/1qvwPJP3GV/JQXM5ODSq
+			CZ4AyoAgPJP/PZTI4rE1rS1/L6mE5HWanCybF4zQxwBbsAAsGAoA
+			AQCgSUgGOad/P/GZnYADKv2RcnbYXFbDF5iQ9fnZuU7wEgivbukA
+			ICceB4jZ4zLayCcyBZbLwzQwXRdvD8rq9j7dvMe6BNO07Po2hMAv
+			/ArjNAlTSPG+YAAG+qVAMAqwtC0QBQKyLlucxR/M82h/LS5StHzE
+			jquW178MskzNO4rUCwFCEDO63TRu7CMJgBCUKQejYBvM0TjP/H8O
+			PU658nujzaxM7DYMzCrioE8rxgEpABqOjcGt5LLTSghSOPpAMFAG
+			pEnyo4kgoTB8PIE5L7sYfa/v41z9sLE7GOS+KDvwAL8IQ27qu4/j
+			IP2xdAz0lKBtBRKBAMASwwujjTRiAlKUXSDNURTLIxfDzkpK6jNt
+			ar8wzA0UxuLBUqSwlTdo5KycTHM9Ewaz9FUzT7GH4y1PxDFMVzak
+			J9rTQtD0pGiVRc4qOUonDxOC8lUO3SLSvi0tVUupSYONKtoI3V1T
+			vrH0zvnVkZu7WULSBBQAuJDaCxVT7CH4kUlNkyjttsxEuyeA6bwd
+			H1/uOzzdzy4qTNCrV5rSwqRHoey6V0vR/XnDiTHwex6YqkJ+rS/k
+			0INFbUPY/78MzYl7TyyUAPnC8yS1LVbyBL9b1nbzdN4+jXMO1dRZ
+			pRDjQpIML5UlSjvC3lL3KAwDphH2XOJS+lgPbykAMA1tQu4N2R6j
+			gEgZo9XWu3jhTJRNVasnAIAeBscgRqYGAeBcHayAql28lUJqZL8G
+			sNiR/Hy519TwAB9n7wFdcPw1P8A51BttwkNrS0KRI2xgBAKvTjYO
+			AeDw3paTPIrQBgMrWcbr0t2gOBfQKZU8HAKxjhcs0iNgI3E+X+y+
+			B9xTM+NnAV9O7Nh+1YrlPy+yTEb2/V3P/5rFNBFzQAF26DU34Vvd
+			10vaVpDcGuNlXS+MhHu5UrfeKwqnu/T9n2oev6VOglR9Hujn5TYz
+			nnva7mVodBpsEsgEK0AUA72ytu0RY89T0AEXrdM+zNlTMyDvrM6i
+			99z+4LkQSa8lFbHCBD7HySofZHgAD0Hge8fZKh+F6OCWFB0Ajgk4
+			Qc6RAayFEMThUPtL6HVgkcRwAAxxTCBxBSE4R+pJR+EcfopF4hih
+			+FIH2PqEQ+CkD6Hw/YfsSorxIfnFsxcIopIcfiPyGxKovkFeU947
+			aAE5POjcz567NFbH1jlG5UJrDTmlNSyg5p949KAXuc1Da9n9otkF
+			IFQLI2emcUDBZJ5CFWn7jpIMyjwVFn9XinIo7UDvAKK8mNMi5FEH
+			Qj8mxJ0M11HBR4/93EZQBKDTunBjZIh3DwHU4SKIAESD4cCvJYY/
+			zpsdIGwRLqVkGTDek7c5afXIy5ii4AfQ+nATPbujYABS4fMAQQsq
+			a4BVjx2Q2iRiR0COj3l4kqSb52amxglJdASi0xxscGygxJk2RkEY
+			LGg/B0nAvDcslo+ZwjiUCfyQMv5Jl5shPcsRP69pDkLekQiISB2B
+			ztISsQg0+TUIyTlQ80MoXyLegq9ZQJ2n8mzP9INQ06zOqWoAgaNk
+			kUnvfQ9I0+dHjPUYd4a1nad49qeVq8VmRsXk0mIkmVrKlDiJjW/O
+			1J8fHqr7hqx8hR7J+HtmGjxy6rgDlIAOAosIBQFk4AMAusNY220D
+			AQUgAgB6BgHh8AVotcikw0AQAUrQDnVlFdgjmGBwitAJbZKojjV0
+			qgEJUv1V1dAEAKOOl83aQCBADrpBSbbOECTpgzZuzlnbPWftBaG0
+			Vo7SWlXep4c48CPDvHq4AVoyxwgAHCO0eoAB4j2YlSu01nT2EqGs
+			oi35HBXAAAYAC4Y1SSgAFXcm3dzbnXPuhdG6V07ohVQcUW7BJAtE
+			DBQYoAAVFEAeupZ006PiVA6BMBYAAO70kfAicADd77x3zvpfW+19
+			jJFcK8c5R49yyD8JgxgtJay0jQGWXAdo6y6DrHSPIjo9S9DzHgXq
+			FZWh5jvYXPWJpsJoprTZMsrU9ZCKGj3BNWqMkfGlQwalwpr5MUOg
+			XHtUNHY9PSeKUgBQCyvUEW2rc5Sg6CmSYUvgkrhUlz2eTTt51Qik
+			uqZscE8pBV5zLPUqCSrv3Goapa/lUl3j9JNUxQ+h9QVolbZ8jDM7
+			vXzsCemtFSkoV0yBRQfdFZzyRL2mlblE5rDr0JzlKebbMUh0yN41
+			ZccoVlqnzeuY3J+6HYyw+axXY9x8zneCyUySYycJlXJUlaCl3RtQ
+			lFZIrZ5iFTxPozNllU1WHDx9BvLLzU+K5V2PaECTIeH8QyvefsbT
+			2Z1ZDBNsryMvx5oLryNCuzNvfIFXLUSkUgpPbRNzQKmn8xnXdVbP
+			qwnmnsO42WObdEcIPh8AZBmz3atQUqzFZCuonYgO2m86jhSTRRzv
+			iWP9WEBIXbwAZM7SJtHzQWtE3a7dkLuMM8iSZxiOV3blJGyjZVua
+			b4E1tLE6ly8FzS85PuIzDuCX0krPyGCtvhS7vwAACgFKwR4lbUi8
+			y9L2YidUwksjFkmHqPYd6wXAKDOUm8fI9t4mqoUd1/j4zz74MUPo
+			6PB3k5gUWk9H2m2xqVXLpxgUQo3mjTI64g+9lg73z4ZnUx/+JJYs
+			gRzlTcpNkpVPJGTwDoYk4KXv+wrTMnt1Ue0Lt6qsckw0JU3Jve0x
+			IKyiAkBbU26lIsa1NNBoWQqDcAdzWkvB+N/yIZFFYAc7uQJS47tx
+			uABmMSt6QAiK/TreK01YtKVHZ35K07JucAwEOgeNy5HvsQDu6snD
+			B8CPXbviNw3uVqimevGOUhiHnv40zEMXDuUytjnPRZoa1ID5vVMk
+			kuk5Fzxnv9Igm+LEyiJ7wW7Jh6+exo333uo/A1R74yOBgtViAFIS
+			LHxb2l9K0B9S+8fwf0POo47IosQGy4ncIW/U42KulO2OtGMqY6H2
+			l4iAhI1ucaIEYoyg/4R61K/shuzqh4Y4sWxCH0sefmHs60l0HqKQ
+			OUI5AiKQY4fmHuKQYmeGOIH4cYisOI0qI4hwiAHyKQTjB9BmRWWF
+			B4g6iy/kjXCUjOMiWmMojKVGo42sf0U5Cqy2kEjwo2g2Tcn0xcyO
+			NaNejMmYkwyQ/oxnCxAOkpAAke/GRkkcVoVYpyNSyUO4WEV6dEoA
+			4aAKaaYApEyWpuZiS6bq1E2am8X2/q7czqYSH8L0MKLSHawSlwcA
+			RI563mhGSWY4mE/8gCo4ay9mlUekZMiAmjFGL0H01uHyis3YfOdE
+			dwqYmsbqVgbEntFGWGOoSO56ksVEPg4OIPAIombm32R4nwSaPU8u
+			2RAYVUScMucG8uRCMSWEL0SobCq8AOanGsam2yIGOgL83dC2Y0oa
+			0hF6MKpSINFe/XF8X2/mIczGu9Haf8ZYpem5DQnwqAf0ZQOukIIq
+			lSpkQSQEViWipmpqgqWQpsMwWqeeNST+ZOmZH4ay0agwxo2CIiqQ
+			TESmN1GGQSRjDenW1GzCesqwqub25a3MRyrAmuAUOIrKLCAMX8AI
+			ASKQgIOIgJJihcaYI4KU9WrwAAASAMMYAYuKmudar+hka8rYrpJu
+			I3KQASWWsYAWmO7cQtEKU4gOeLAQs0/ZKzK1K3K5K7K9K+IEHyyM
+			FmGgHIAAHAHYYyGqHI52Hg1sjbLAKcfilGIGFAcgFCJCAAHGAAEt
+			L1LjL/MBMDMFMGuiDMmuN6AACGQ2BCUQDIUQBKu8OAQVMIJmBaA6
+			AgAABaA4AiAABQAyJ4BQJ2bmVTHXMpNNNPNRAW5Kv2LAI2v9AuwC
+			HowGLYAAGewOLiHUhOLswcHvLewkwoH0wsHgwy0lIKg/BI2umWPe
+			0wNm/VDmQI/XNIqIK0cK7Eo6Nexiyw2O1gWjFe8Qk+76KYpuksyC
+			YSTjF4YmMgOuy0kCjcT4ZusSsa7QheUiPPGOcGSU2zOyQ4pQeeYG
+			Sc+oWTO4xIkSt1IDDgzKxMkcILGmZ+mGzcSuSgswPOqBIUmAUI2U
+			NTEo0cgWz63cntHsziX27LQakiasQoVU6kVUKOZcqGnnQ7P6oYOu
+			HwmkVwTmII00VXR0m3IAUux5IfQcmG7KolIy+uxQWgQASujyxkyE
+			MgySyqYtFSXvIYPcQCxlIQn680sy0QUw15HKS4S4SY2UgemKRqUu
+			ewPm2m0a2qw8ZM1yp4SIlwV6UTAYH/PESEeLKaUeay38k4k4W+PG
+			/2qkiQoRG8xi1pG6JM6YOipMUNQWUuQmWaYAacjc5QQg4tOgMspi
+			uuSeARJbPmcu3QQe6pIw3A7MngVUIY46OY4+MIOoSUMQe0/I+1AL
+			E8QaASX81QPI5e1vS0yGT+MLEaX0HqHqhO5gu8TscIfoTmT+MmYR
+			PcReTuTo6Yo6/UowZy0a6mmsqUUQzZPmo+Zy7Mb1BQIIL+JEWFSc
+			7HDcZ+a3Wy2iSC8QbZW5Uo7gN8muAILDRzRNGsXM388cZY/3Xqan
+			QbXAKPJxJ64vNHPoKTVyyiPAhkem8iu9AlHcQ2MtFy8nQvS0I2JE
+			8gP+82c29EdEr6SsJEdC6MmuAOLSTG9E+GSir6mIaYdQ9JZIdbJ2
+			N2Rc9GSw0ycsII+8Vm+whsevZxCUPa+WACmWYEz4hsNcQsxVWgkN
+			acXu8eUO62/BZQPlNLNTa2t2fvPIIeZ7a1IoeYncW68efRarIiVo
+			ZUiFAZa4Kwoe0vAgY6g8JK/9RHE6eQWrDFE6KYH+coOSfjOQZwii
+			SGiIIIHyHqOJBYiMfsiSiAHtCMjNceiiimKRB2iciqhCh6iAioQ4
+			g/B/c+JDceXcjSOsH8WnILChG0gsghaKzS+kzVS7PapJC4cHHqYL
+			WbQoYLH0w/d4kPd6P3VVCoZ9DYgiVvE8WSkiqJQdH0K1FOzuOuvM
+			XMWybmseSHTQlSUzT7FgsRQPQEOc6QTuhWlmAAHcHcHTFKl1FUYY
+			546Gii5iXcd4M9UEpoSiepFAqlee1vFOL1FSl4micAjZFYOKn/Pg
+			RyasyeswM8zy6Il0HwcAMQ6KIJPROfJBSHAKIGR81VA2jQRQTuys
+			qwPqH/RS31WAg8PWlwL1FfUoAOaWybGy2RG5dHScP1IWX013JANh
+			HJeEIPFfDYkhe/DSqrdfFEg0ptTyTBAI8pHskM4+3gItIcYFClg0
+			/3TWXJIGVLLgT9F6qsV3Spi0sim5Iig3ImIgpmaylBgUlXI1Qcs1
+			QRXW5IkTJCxKMu/0AMbxU9JMJxJfJU5WRzJhZTJwKMyaIEASAORu
+			MZgTXuK0bgrYr+5aroAWAfKasKAQN1e8saWXkzKfD8m2Rqm7KoR7
+			KsIUlFbflPlRlTlVlWIqWAHoHwYblgAAFkGeHEtktotkHYtqHsHy
+			cplYIeHaQGHYu8FMIHmKIEHcAAEffNl/mbmdmfmgs+I0JgYy7kMY
+			EKIGBmQ2BIIGsHmiIKrvD0KQCKBaA0AACKBZnMrMOI8S4Nm/nfnh
+			K4MyH7NZXyHyAxNgI6HmLSSQwKGUG3NwhOHSwaLVLeHqHiLSwqAA
+			HkHfEaMSACw2Mkmi2ISYMrY0xlOdHQPkX+lPVYTeyMgSoZHFABIi
+			zIkisaPCXBixaEqrOolyMNGNPUOWyUuuqdW6boX6yfFeZNPuV8zq
+			lM28kzPYjeN1SCdxVYMwjNS7QKgmqHjfjdPdTCemU5W8UlW6r8+I
+			S6MnF0xDQuP5ViP3GikAREcDo/l9XUyXSK2ooqSmq8h+XBjSSDg3
+			q0PmPRdE5/TicGcGmiWGO0UC4jR1Uo4uXFPmmMmqRjg1gwQK69W7
+			fnDiXGK3SVd26GMQl/OWMPGO0qhYy9HeJTickRWSfJDyy2y82yjy
+			/NtKneRkWWzLXeRuXGshgHTBQpTaQ2T/XMjafQeKXbVtiTEGQcSC
+			3MR3tiR7raISXnXO5tSuWDUK3qlynnh9gXA5Ug1c4gdcf/injHXD
+			W7hI6jSRTTD3VAUq1AcvA5Uojo2jpvXIIPrs10qKyprza/s8O6+C
+			TAUZJLjFVSUyXngjBoRA8mOuH3EZbsJEHsLOY2RCRAlMY2cYZLUb
+			rpo1WQP2hW3vCikYkbXYRo3+8M021YOK2HlKd3pIYmp6UIvztc7d
+			tgWeQY7Vkmyhj40+O8AW7YbqmvRSbHhfUhgS0agEVYYAAQJsmrUo
+			Ss4bkIZw0XjEAIARDwaLe8I2+wxCeghIeaMgACRC85ACfwOM+HZA
+			O7ZNZ1y2dqJMso+G+GK0X7GkdpaINCdjyWOC93kYdqdEe5Z0TG9h
+			Z3ZRWed7bQOKf4/UgpH0RegjOaM0+XavvniATkstfnHhnj0ctGMR
+			ONHY31u30oIfASxO9+2ZiHdnbdtV0eJiqLRu0vGZSxXDfsM5Uxp+
+			K+iaUzE91Ihy7KhXg5cOUQH1BUjEiNBe/ifpCGWRCQhBBbc8SPCM
+			i0I4L+I5cwmAfnOR0jdGQ8fjoieHPqWQh4WTG1AIxXgGZy2WnTiy
+			ntbXxMTvibP4kprI28gWpViZigpVFo11pLDNIJi1XCaTEAfFVNbW
+			xs18VyYoWIZamsrdFk/0SHsIeE0a5RXwlTRYS7hJfAmIqs24V0lo
+			HffSWFEmSRbs3rBuNVo/fiPiqiNGojEEdpQiZXeffJf7ElFHYp2v
+			Vny0orJxxq0IqxtxglfU5vh7AuYpeCIN2y1SjZenHqnx45bSQtvX
+			d8iQYWU8mjhW4BJxX5GxJAY335EUTlhv3ZP7dP3ZHM4Da1W9z1AV
+			6kx9i3F7DLi1IhSFiWXenqf1IZIRs6fIVIWd1QII0Xivuypx0kxO
+			yIIQg2yqPS6ioqqHjIj1jN0vHjIsXNjFIFI2qpHV04In5wMPwkq3
+			zfJnkIANj+auOIPBJjkRJ4ASQjjwKLKZAyRyhkOEIEbgoGR4rasm
+			roAYAhKO4b9CdqsSAXk2JUsaSm1KVNZejnW6q16OZrbF1B+N+P+R
+			+SIixaAAGkHE52LuI8FwGmHKAAHMHeSTHt+UGAIGF+uuGEuIAB/A
+			I1HL+V/N/P/RMEFUuut+K852DYIGBaUQCAURnwzNne1QPKI4B0BK
+			IAFQAORNAg0EAUAA0DwSAADD4cAIlE4pFYtF4xGY1G45HY9H5BIZ
+			FI5JJZNJ5RKZVK5ZEn/E37DQA/wMAAG+QxM32CAA93o+wA+HvQGe
+			yG2AHY6ngAHW6nlQXtQHm730AH4+5e83hVX6/ZeAH6ApdEn2/LFM
+			4m/pc/5fXn7M7ZcIkAYpX7nE7tFLpFAGA7yALVdH8/7U/H0/LXaI
+			lg5fhK/f4/ewBYgFlQABwSB8nfYdEI7krQ+n1QH9pcA/dJg4tewI
+			AQJnYsAogBQPPIfYgHlrs/n5asHaq7b8Vb99cdLarZf88An/Z4hD
+			8bEbjisBdbxFunFb3t8mAbPF8p2tlEZdz/Jk7v6buBs55O917Bps
+			U/q7aMbquSAMPVbljsA0x9sO67/NgAIBskujKrEh8EgEAabM4A7a
+			smy0Cog2TQIqrqXvo3z6LAfrkLitjCn4xDGImujJAGAkHu8ui+wf
+			DEKNe7kWxc8cEIpFrzvUukWq/C8gskAUaonFkHuHD7fqswz/w41T
+			jgAfZ8Kq/KHMgiLPM9K77RGwiMu5GbtLSscVIuf7PTRFM2RTI0Fw
+			QugCgIArOr28b0zS6jSrOx4AygtqyupM0LgImsGTs7qxAKA06wUA
+			ACgHOsX0S70kve6KKH3TarNG/7gTBEzERMt6rxO009PSAkHUTClF
+			UhOaHNym1WTOhzvrxFS9pfBaI0imqJThXSxRazUZyLGr3tzSaINz
+			Fz31u87KySjCvq65C6se6MOTAwi1OxW61MrILrVm2DOsbP8QKAf7
+			6xMe64VK1D/ree58nqq153a4Tqvo/kRrAsdzvcyDiLgtsBW/Qa7S
+			5M9dQSAEastZEtUqmyJ1wis00zjS8W+wi6YZIc4UW2kKQfGLuweB
+			gFgbWFHNdW6xASBSEgJOibUjV86Um8YDUNRLKwasQFAahsHTPYlV
+			gBmrX6Qm2lugzdv3U7y36kyeqW+ASgMXcNZauAer3VMwBLfB2rgE
+			wOxVvtNxbYvrESKwKzgGAyqwctS+q+5mIgMtQCgKl86V4AleL9Cn
+			DpfrG+6k0Dt7JFOyO2i81MexUgu/kXK4E9EyXA1cMpb0fSdL03T9
+			R1PVWrLKQdak/RcxNr1cl1fbdv3CSOyu1tOxIaN124UuN2xdU9+0
+			6XH8ujUYyw0Fz0fR72oiR8ntJJ/LF6KxPp7PrNOwSwqsfPsnxB58
+			nusSurEff0SasXz+35T9fH78mr37D4+SwX5LYsTpv9YE4t2ZkjGn
+			Nc4WxyibE1Hnd+llJkDz5FpgiYtD8AjCFvd47tJ5cERHWRQf1bKg
+			y8FxgIwwu8CU4oqMskRibE1doXUwaZKQ/R+QYLibI5xYj2NOhWZw
+			zzN2YI4WEZdm7QVgJbVS1UALXS4j7N4WAq4AB3jvHWfofY+QAD5H
+			wPZEBalNxYNKYg0UWESJlSwZ0wJFCzs/R+pdyBZEnImKqaOLEXz4
+			FoT+x8wMbwAKNJq0JYJFh+qeNKS8sqVoKrakMpxFDsVeI9cqhVjC
+			0IRwFPvB066iE0rPIslI3hQENn6NEZsyhlgEISMvKd0C118w2PvB
+			RD0mCxxlOmlJLpFi+xDI1EOBZKjswiXBL9xZz5KLBkkdYikoZbwc
+			U+XIlJnmUu0XOzdZ7Q3ZkYdi75fjr5CwbmWohCp3IQzOLYvwkSiF
+			EMpkBIA70Q4cGdYyXpBDr5IMVLHKxDhVp9SAUkg9RiDwDgKNebRB
+			4CAEoPAMAYugCAFT+WA01qBL6EoJNaAAB4EVHUKYjRUAwBy6ALAi
+			g9QzMwEowo4AppVCwFoyLPOxJKjIUERnW9NysCS9O5pxTmnVO6eU
+			9p9T+oFQahOmPyPsrxPajAAGGNkdAABzDvXgMkbo7AADtHpFiodW
+			SNVYKCREWhERakRGmAARgABqVarRWmtVa62VtrdW+oQgD0DtAACE
+			tBOSeCHImDJgJMnPVwp8BUBxPLBE8CCCknNhycrHmzYCx1j7IWRr
+			UXYmJLiagDHwBcmY/CeD2J+VAoAzhlDcKQOkpY7RzjxJ6VEABWiq
+			lXJePEdpVT5QCT2a9zDvUmrsS+mdch2nHx3ZC5dPxM0PyHnIfZb8
+			Ez4KIjVC1jKj0HI4YeeJhzFWNqdOIiE/Ug7jQWnhH0BCh0LwrL2b
+			lZKujEzNhmfWWaekUH0hs52aC0JiJmnI5cjUCDVmxPQbK6joXZpw
+			voedDMvVaHOV2X8wZwkwIdPsYk6ZWF/yvNOYVTxY8IGwSQ0FFiiZ
+			qNQTrQYhqB4hohSgiI+5L4amIhoYhTZbyymIY6wM916lIRFnSqxG
+			c7WZIQl4eYucPp5FzTlfaFStiZ5CUSfldqoz6r2qxDI4yYDURkK+
+			tjDis8TIUf87J4rySNHvnRTe8KPnP4Dc5CeNyOjyKLybcFP+X78Y
+			1qLe4vKCTOUGM0dxA+AUix/MszdXsL7kteksUEfA+Isj4jBdw4K+
+			ZQImP1FGbuAJAx9Zwo9AyMj3qMUmrPThEWFHzOmXsAoAVHGWQkAx
+			V6jy7oyuwkW8KB2nIXh9JRDM0Y7lyvk76PGRlzwLmHsXUiA11Q00
+			YYTF1tS2j+jAu1KY/YwQVX0aZKq+EQmIjKWM2TvDpMdMg/8iTBj8
+			7UOIwxFSqa/3XzegbH5skjZuc8RBba1l3XujuX1Ou/FKnviBl5pg
+			CNXcBnVvABoDQHN+Ucxed4BjMtQpEpJRLdrqqrk4Q5pcgAGAMj+g
+			fH6jCxMtUcklOj4DEaO20P/GA+x6SZbU1My4CVeJ3peAgugBucIQ
+			z1RQt6LGzgDXEARrbWjOlVO83joSwehtuQouJO7glXIQV443BRc+
+			Ypbcnka37IT03Bc7mYjMJr+phuFZLtHae1drdt2Ttnb6cz0gZr29
+			ducxFwV3sK4xix+vLH2r0iRVzvl0H0PaIa90HsgSm9JED3UHmlME
+			Pwujzj9PlP0+0+nhB8PpLN5Xx634r+f8D39c9/PFFdZC/g6b6kBv
+			8Lqhkwdw/Zdh697Vitzj3ZGR0ttPq2stXG9+t4wGDzVNSPotyWJ1
+			0UH+W2arDXzkvKAPVPRByvXNIURhh/6q51pudQ/OZcjv84LHhWZY
+			BdBmImcYp91FsQ1GsZnyWPGBaDgIBXyYgeNskp/2HylQwCKIfTRY
+			qyJ5KqLj4abzaQwA/g0CiQAqHQ9j7A7rcq7w3q16KK5DbpEaGi4x
+			rqPC87ijHxLhjyDA0wrqJjFKZgfIfLZqNIv6ACxqSYirTBbLFT4b
+			bgyCdAf7jIihKTGZEAl40QoD7Y3IsQBC8YAEIwzQjCViGhLItrSC
+			7iZbJw4xVCX5MLBBI7XK6qeUGAjaZZ1jRMLhVpyRDMKRL7BiGS5k
+			M0MMMgiplL3Aixm69Lf5Bp2MMsKw/JcZjT3yDbMbqacSEa9acokq
+			dDXBkjV5HJZozkN50TJyYAtCd49xHIibFr4DSrGgtDihnKHQBCkQ
+			A0IoA5kpogBagajQAygRvxOUT5qAugCACjfqipObnLnYBwCw15Og
+			sQzA3CiozCfzVIAABIBhBalrkBVhSCjS+xLRHKNzspHsLDuEaEaM
+			aUacakap0ibodYebRgd4ewqoUgYobwAAb0bIoKpK5kawlougcYiY
+			cQiIUQ6oUaixKYACuUTEdEe8fEfMfUfatgugNoAACg9ACRiIAAPY
+			iYGA6oEQiYBcfglBoxOqwZOoHgEwCwAAHgE6zQBwBJOohhOshsj8
+			kEkIlaygmQf7fofAnIf4nYAAeoeoqqLYogY60gpq1QdYdK1UmAAA
+			egrYqwrAAC2S2hfkETcq3EQJg7/cG6/TAyE5dCa7CLxSEA4qLxAR
+			haZz6D17Ya8qUrIKFUYcLZFMSa667JAJE67iJxdj4sNsIw2w56cI
+			iTLpNUoaMI/8CaDDMDc8KMHBO7eC5xdSCzccoxbJ0R0Q8LTBSi4C
+			7A9DehgcwaXCY4jI+jbg+w+o6KD4uIfjlko75g1Qw0DpDio6dJHj
+			DiIqd5FkXY18IwhKd5RBEIt6fA/DKyGpJrlpUbSkZxiyPgvZn5np
+			BI97HpWbP04BLS+5WRFxyTq5VaN8ODr6TLMQ0peQt4oTZY7L5JTa
+			JiWZW77MrbgUR5MEuhMLwc25V7NAj0Q6/pAw5wvE9I9Bag7bskHR
+			jSRy4b6UxBlJCQ2yHrTw3DXM/bxJ407EKZbgl6LSLDRbRk1qLqKE
+			10DYfTa4l7LsCRn7QUD5V7UDgRp4u7yEPaYct4ATVZogA8hgh7AJ
+			hxmJWzMhZTVU7Izc40rjgUJyGUyiEMuK6sQtDjY7cr+g65TZeEyI
+			sDaSMorpKzaSGraI5CCpD4fIfTbSJ5LrmrcDr0Hg6oir5zLMvwuL
+			dDYKaUt5NjQrd6mQm1FTsrXUo5hREI4C7g6xORRjHJZk7bgL7oBU
+			YJiJwNMM7ZlrhZOdD68LnRYxWZG9FZm66s0zYYywvqj4BjVakw3E
+			X7kjngya3AwblrbReYssAwAJb7pZvYy5v5aIzaiTnYAoBAyjkA9r
+			oFSDoZt6PbowhzpAAYoA7xqlB4ApuTrJxpdSIpWRxUP6JTrjr7ra
+			TMwcxsp0kVYtY1Y9ZFZLt7cZqgtJ4jvDsMQTvosD0g8iQZjJ6M4x
+			6gew17xSK57Z8J7RgQz1a7/Z9L0jghUofVcAuhKhHEIAe63DZNap
+			PR5jRryYfVdofRB4fQfNfjzb/7ydaYwh+L2A4QwZPr2zMAuCarvT
+			Io8MCQ/MEL3KZiEzL44EKrqDz86BejYTSLSKWlLBJZVE2EFCBlAR
+			gURj65ShFrfr8s7SAItDFEGSSAh5pymRHL8xmj9I15FlntQxqI8c
+			B09b+My4ANIY3xQQroxAeAeaugq4qpAKLESsFVSgt8FTZcNMG67Z
+			djYKiUVahKliY0CbKCUBeaGq3gx43y7w+kzz7jWicFilSS764yVy
+			ZqMsFQ1JbAyB/AjqeLWBjzRNucKw9I5hS6To1Qw7bio8IIzZGCUy
+			VQ2pYAi74408F1LEKEGpbNwUKruQj0OUMb3V0IkML5NEM64Er90V
+			zdDcyENMGsNco8MQvkLQjN0EQrA6Yl1N2KEaPYjSW1wh2rf5/y3R
+			bKbYyMrKYxZ8Q5MQ8bQhCEHY6RgBbYxJZy6xRNtD4cqcyQ4Qs5Fp
+			H9UaPpWdURGEBwAABYBZOpwIugBIBomsXEY8/YugCIC990U0jwAo
+			BIsQBwCsW5pcXVOguigJYlRoBhHEGI9qjqFV0RSkZJNrsBAtZWCO
+			CWCeCiyLcjFi7gawcq1QdUbQAAWoaAcgAAcgdyLlmeCrcRMosQZw
+			ieFgl6sIB+D8eg6lz2FGG2G+HGHJ04KqPoAAD4AAI4iMhQxANQiY
+			E2HQjQEoDLhYEwDDhYGQEACYAAGYD8geJGK+LCtEkglxRwe8lMla
+			zyLAe61gZwZC0gdkm4AAdS1InooclgeIoC2C1oqh5DvSykosQQuI
+			0VIaApNrUZBqm9AJfMypLD6RE1rsQLJU8MMQ5bHhWrOWRaaT7ZpI
+			94txEE1w3o+MpNwoiIA6jsOgzdeRYLvLu8uabo/zLSRQ+Jj7MxC8
+			No2CDKYKZ0Hhj7txI7eEw1ijMpkKFaa8uIjqXJ0AiiGuPg/+Tabr
+			596bvY/zGJjT4oiDEJSjDrPzWjDrEi/49MSpUlu8Eo+qGhUrShUT
+			YTHc4xYY9KfrgRlFQsQ5p9ErHBFhSc4b8Ut10eWYtbRLbdBTRrZZ
+			fqPTFgfxf41Y8YvqHk/aeJ/8FwjFKqelMjJV1RjFuC+yE1Eb6b2B
+			aDcGBx2pGE5i67Hw2EwpVjnU1Q8b7ZaLdy8KWtzC7duxFEFQqtJS
+			2mbo4l1w+Nu01d7tOrTDHpZpRtC8YzsyE6GClkIt/DWuXuXmeMOo
+			zplFuFQzihMdmsRrLNGNu1iUROcyQBQiYaNKGxbAtQe4fAeZEDFx
+			ebBq42TYwhKw6ufMukFZeGtk70SBjtKNZ2VgwFTCAN6Qsi/A5RCm
+			pI6hWyA0pieMpa8BND2b3DnIzCVInidRVhOaHhB4BbjqjZiSay8b
+			Er9TkBSlsKUjrDqbkRc5u0Zhahp4BgB9lwuaitQRpgBZBdUsjwh4
+			4ufkTEBboxqQAQA1WBqpvpRhwYAxxalpvovpvTojmRubpiNDp5to
+			mFT1DzpwhyNMt5S5S5vrb5W45VYGB94LsSJOLO7+8G8O8UarcZIK
+			3WhGUg8kBK/mgA5zFgfdbTytL0AKUotrzs7ww0Twt7iCTBdt4d9Y
+			BuONfYmdaddy4wsQfAeg17xDy5B70InoeZB6LZB+/JKYfLzXBdgD
+			zJ+w/5/x/mqb1LL64eQJbSXRhucd3OwHFIu6fKARGa+KRLqpB9BD
+			SM568NBGcXGyZLSFJEGtM8PdI+PrIDH6Mo7myBk8CLUd4dG7NCFl
+			L2ihSgBdnZFtnqIsIlx1QJPDvOWuu8G43zSmfIeYrS3ZKZ6MAYxF
+			rD//ND/3G1qFjpAJeBTOvD99TmpmpWs3PCJ8udkI4BJ0Ezu94KAi
+			AbGpLx4pEQtWl1u8PB+XQjsXR2e7CJ/OjF1B0Cbow5dlxhARp5R5
+			CQmvTsxGOuuMo3Gtkdy9zlzQk92yXt24kt0p30NmBfVcZ9Kkc6CT
+			5OQV1ab6XrTnWZwJZl3WRiXt2BxzBfSBKWSTBT3YvMNHSac8rRoK
+			6Diozl0EMUKZhTRPXjPTE4+pJlfraLpxR8TQ1znLjaioBYBwzVQg
+			BwB6y5WY2t8gsQCQC5Ork68UTl/QCTft8qgJH8jxmikV8oBABuAx
+			CG6YiVUSUrvRA2pTsGB7Jm8fiHiPiUj7O4tSq4xATwYK0gbgdOsQ
+			dweqLAw7UuK6MiLItAS6fXlBOq1QSAAApfifmHmPmUj+HhB6uwEg
+			tEiot4OQiYFgtADYiav2HICYBgzXogzQG4EYgXpMgMjUiEjfmfqP
+			qRzqyowBSclAnQnge+Dwe+NwZsmS0q1QdIc4p+MYqoeweM2ol4es
+			nhD+OwlwfuPEA8o/b12Lsi6faDQz4RJiGlvdHQ/2cSEDI1FvSnVj
+			7sRiTsR7Xc4Etp/YwvbnyFzRO4y1CRSpurD4xSTS5TZ9I8Gtvfa/
+			FtaOcZPUvuumhGZUox/8q9wrHkvjeqQKPmXrAXQYjGkqEKyhJw/M
+			SrXxbo+c7A/sy82S3KYZOTHV5rHU3xVjDo2o21imbZTbbnHuS6KH
+			PrKDGlFCk0OeBmaDWidmo5VsRXJ/FJOjec8kuCF7A5VFmV0+fOb7
+			y86ZDkvw1Vpc8D7NnsRZcyEkL3RdtYgD+AD/AEFAABgoBf4Cg8Ig
+			cHiEIAMTg0IAkXhsMiEGjgDhMOgkcAD9jkhf8CkQBAcehoAhkaik
+			SjIAAgFAsNiULAErjwHBIJhseAUrkUPkUhAD+pVJf0Efr8kj8qVJ
+			k9Ugj6rAArD7pkEpUCf9Vk9esUhAQBjVnmgEoQCl9DjcuAttt8sm
+			L/iUgtERndwicMA4FBEzAduvlynEuiNwAcYs8exs3h0FvEitUips
+			Fr8jqdNglhgluvMIt1vydIgkTgUTklhkmber3eMjfr6AFSflU1b+
+			3Ofh9cgevf2tsIAfL8e1M3NGykQlEVkvNlEhfr/1sV6cGqtFiN7t
+			AEw8bkz+jXiyfa5sI1PQjmkoOJtEMBIKBQABHzneNAE2m8r8DCoY
+			BcBJoArwNE6ADAKAyXMKlsHAGA62tIATUooAgDI8vYAQShiKILBq
+			VoQBgHNIAaLAIhDGoQA4FQmgsLuxBiuIm0IBOBCiGpQALegG2z2g
+			CgQBgLIICpIs7UxwxsggGgShtXJiCxwtCCJXJoBJIg8dQ/KEpyi1
+			aDMMg8cI3GkHTIhTuI+9EHKQ87zzTOE4zlOc6TrO07zxPM9T3Pk+
+			z9P9AUDQVB0JQtDUPRFE0VRdGTSpDoqO57tH9N7mpO9SUKfDM0Kf
+			EqnH48qCn6faGAMBLcw8lVHoOlgBAJL6EOG9R+0whB+Hyjx9nuj1
+			bo9UaGHwebwHyezwH2fFc2QAB7npYZ61yfSGH2fKGH1ZR82VTrOV
+			ifqPOKh9Yn5WKdKM1DyOYgdQoTdUooSj91Imh15Ipb82zckbeOYs
+			6GNA29Rq6xJ+uGzjc4Eki/39gqoXxIyKKg1rMqasCls8/MMu04uE
+			Iu/62JcvbSsOhyzpleV4MVeMGJevYExYmj9QKt8OgJDqDLZdSvIS
+			sjeqSgeBuGkh5nqeGCK1abaNzaZ7torh8nzpTqpIfZ+Nsp7cnwfB
+			6Ie56BAPDAAMDAy1RDrSButsqwbMpriIEp7bKk2ywumkzUPQyeUJ
+			ky8POqryln1praOIorM8FVczUsotH74sD2KPSDJ4Eq59q4satH03
+			MD5AA2u6/BMzXo6dJMo6h+uEgTNpK4t+s3fs/42xMf0qisPTl1ju
+			X72qi7v2aP9jwSlzSzfV9Tb/beHCs35BOfXZB5Lud1N/cKZg6Y0r
+			4U2stUPezgpW6T7CcJw76nwLW8HXeAsu5vRkGUMbTaEdJtbjb/g0
+			cwclUoxMtco5mAAFgcgsmpDAGgNKBAFr4CCLAGIQBMDIB0CEIc1B
+			ABBHgHASfKAVFYCiGIXIQAkBZkIMAAASA1CR+X8EFME99MT+IVL3
+			LiXEmKjYZQzhpDWG0N4cQ5h1DuHkPU/FQIENYcxsx0jyHwAAXY0x
+			zAAHOPBpQ9nLL4cLD6KichqkPGoQ8WhEItgQABEcQEX4qxjjJGWM
+			0Z40RpjVGuGodH+kjAAHwiAMCHg1IMBONkageAmAsACPcfQOASAW
+			ACQJ9Y8yHkRImRUiSkD9MGUkyQ+AMEDH2YMew8h8rLHuVwZoxhtg
+			AHYOk2Y6h0DyAAPaKEpx4kkKeQQeo8TbMDTUuUfx4COO/X6taI7t
+			17H5fCilBpA1YsUKWVA3pVWKr9VGdc6Jj0xPuL489i002UEcag2V
+			OJhZoMoM2w9hLPTxmELmfsmxLjDMjJm5Qg5nzxlObM5R7hDyTGnb
+			LFNu00SIF4PUxidhvnROinYxhODCC0KbfCu1eZMzTvUXdPdNJQ1K
+			upIePxyU9QANSbgxkypvm1OIoAvg7M2ExEIQKgYvZNS7EMm0Tt/g
+			BgDGDJkRxyTSKKM9dKZyVg/G2MLdIqh6kG6XUjTUWikirmPMiZJU
+			IlqB28HeQsAY8DdyQqpL8e05pBmBzKLEZmnpSXSRfWwbqixRjhuh
+			TIWoth/yiE8he86eTqHAVxmw9c8s93dvhIYTaqNTl5HNrrVcjg/F
+			6mUcGmA/VSydpqX3OYj1LoHVEISR5mZHj7yPfvSudZtKAs8dNTop
+			hAqZtFNyxKcFF6KuSK48EzLiTfT+qEwgubYakF8MbVEtTyYYzQMu
+			u4lZkiKIYsex8tR7jvmJpUmKlU5S3EeQKTddFMXG0fM2PsrLFZsO
+			YQa8y3b3Y4GsbO9IAA8x6NDH2P2TLb2emrAClg5hy7OVZOK5aI5S
+			jluJIhex2zom0GftXXBdx66rF5Q6kI8Jejg2AJGepwp60v0NIgYV
+			sJQjvGGAWAwBj/QGSDdcRc/pNZfP9wq+Sc1CWxqpoYYiFarHeH7g
+			ViNDeLUNXYIKAsCBkFWkawIfYoE5kPgFNCSwmqTQBkEw8Q0szO2C
+			rLTWzxVxuTGvTSQkvIWQjUpcTRjFKBK8oLupZepMF/4XslS07lnN
+			U8yGUhjIvNWa82Ztzdm/OGcYavXM0ew7a5TKzYQ8U0hxKDhkvSgW
+			FFIBm0URISATAGXFHTWM0P1filGekFVuQwfg+DwG1V4tE4yzStD2
+			JutNaQ+CGLMWGsU2+mtQHGWUPpXa+CGG1IYUqYdVlZNl1fexueCt
+			H2AYRomv58a3JnPKqufRcbSL2JAQSbxm5uTFpqwK9T72BqjNzTph
+			ur2fMCYZP86qTTFOozMfvDxK68WMxcTKtlSaEwrZIXBA4CgEGDZm
+			TctkJQAv8MmzZxqOp2XundalgY9h6j1X8Vy8ssSpt+4JV0fA9zkl
+			KaibWi7U5Tj1lMzjOrYMX1qRTbtHTWz0PBbMU+8/FCT37Xxv6deD
+			UGMXIsURvVX3BtNaews051L7TCcRsQuJJnCOh54VSkTejMj6oq5Q
+			rDl7bmGpcTfptQ2MEg52ZqYjpnfz8osbisbzndpw3T12aRHHmpxd
+			O8WfpR2MviJFWxOb8HtlLl52d6PcevFEeUY6c6YeuGj7QqvtyYUP
+			L1eM4wj715q3RqwpKKad4W9qfXScjBF5oS3Z8WLPDLq9opY6yjtz
+			cX5NUlk2Y9tKUqZDZS/0B0DqUAAAeBAoCKmvgJuZCECQGkFk2ryA
+			eCUFAJWSxafeyUIQFQkJ3i0BIDIS2HLghuBCDC8ws+dmHRUMLoZy
+			+t9f7H2ftfbUAPi8oABYjOHGAAcA7GsjWHK0MeI9jgfchkQgWBBh
+			XkGGiAARwAP6/u/1/v/n/f/P/gAAqkNgAAOgAAjCDARGeAxiIASi
+			HqYK2wAE8gQgKsLgQAKpBgYAPgJAAAYgPo8ADmOwQF2QIwSQSwTL
+			AJHDNJIgLpKDBuLDbB7h7jbBnBjBuAAB1h0JRompNCuB7B5qcpXB
+			4rRm5OpJ1iWDqG5CCFsGlJ4iUuOjIGxCiNBCqKbujLUjtnuu3MEJ
+			nmPOXD4O1K2O2HZNpHFvFrkPqOqCnNtH6J1FwELPIkCmPEOrhvEt
+			iPBuILPmysFLuJ/vCDwmaHZDmHVKJKPnbm5E4tgLFrICWriGRIYE
+			oroD1qkncwRufNlKarSCpHJnUrCjmksMFiSqHEwGxN8C9i5jJDLr
+			bxTMPNEtJKaqKQhnTJkNtKyqvOrNojEkhCbxFMYkPjDGUH1iKrhs
+			Ju+PHqSCMG7nnPlqrD0QtDivOxnqvquujJdm5ufQ8kzsVsIC+tAK
+			/qrRWslu3HTvBj3NFPnsvn2MCGEC3Hri8CWE5NZO+joLMCKCzrfD
+			KDDKVkEkFtgCJi2rGgDrgwnjmNoLSrVG2NtQrLTDemItnCojOpkD
+			MpqnYl5pfqWGVSMMuFXLbCXtvx6kGt0KjJpGEEMR+KzxcsciKRtm
+			QD/QutxLnMlpeHfRbjbujvBLXuloVHDjnr6qbjXAAB6B7DZqMDOJ
+			YmzLvG7L1qsKQLvmpQmPQjon3r8qyH0MDq3szrEyKGPgBkFl2vEF
+			aRBSwMyDQphSLCZCbPbrlGPmVkBoPD6t6pplXC6IRN4qWLbRziVk
+			kEoxfiHACgDqVH8j9xIEVvdPoqXQ5n9y9iCgEAGESxfEqJbADAFE
+			mk0PAPTS/ErTIF1sjmyCXEfEgCDCSMtKWGDkxzQEnEGMfkakKzWJ
+			zEnkkNfPTEyxHmPNwrMk0nZu0k5OuwTzezfTfzgTgzgMFqpiQs+M
+			jE2Jbj0zUuhwRlBFHs/SwFLmen3tNLzFfFQCklSNOljNRNTlbB9i
+			PFiCPNWDwCpH3lcCtNVz0s/iRzwqvChPTC2CCLqCEFrNXlxH6mpl
+			pDltUvBFauJpbRRtdlWDJRhO+EGKLNgHbl0C+Jruyr9DbrPKuvON
+			pippvGQRxKvpvRBtErrHiEXiMOvnxm7xVKTDSDvCNy+UUFWiEAFK
+			grJkGSOCaRhjSACxASrw3DninB/QriBOHGsnSCuCoJYintVDkpvO
+			aKvKaJMnJJMh6GhKLSfkErGqoD8uOl5TWkykyw8JuuJOSKvDrivU
+			jOyyyPSqDGXQ5luOrQlFrUwtIqRM8niUQKRFLM8joLXNFLXHbqvn
+			iCQOijOjMrUMXLFj+JyKowxw9MvngOq0pDi0IUJRYqBzeDuQxMVv
+			DsVuxu3qzOsO5u00ECDVLVN1R1IO6VTU6COu7E5Hlu8znQvnoU6O
+			3MTHfLuE3zZjunYlVur0Gk8xzyRrhK8w4nXVMNtw8UGUQyM0Rw8v
+			PSFSCimE1gBEvjUpbKIAAAGAGvVGvPWjBvYADgEILoFgMIAUbiaJ
+			HqXiGAHgJibibCEAEAFqVH+PjrmPjPkCXJbPlH8ifEXEHn+VqiUv
+			pykwIThWB2CWC2DIyByB3Dkh3h7JMhbBoBygAWEjkh1B5mlB8h91
+			OWDjmjkiGBxGeBVjFBWrEh0gABFgAB0WN2VWV2WWWpEiEIwgIoxQ
+			NpMhIiDAbiH2ZRy2Wi5q8kUQDAWANAAAi2ggAICCbgHAESYWXWmW
+			moZJGpHh/LnB7wWB/pKpTh5wYQZAAQaQbQcQdGhuHCuB6h6QgJTh
+			5DhLCQiiFCNHRjNDilsOHrVl5uOj/jDPJKRH6H6LqRNuzs8WNSXL
+			lnX1cSUMbPJzQr+wzEzp6HgrBCRh/pjlVmUKoEFihrdPAH0vBG+D
+			hO5HhqPrANflwJ80UsHCkGKpkp5XPGAM7juXBRjOoKDqjj2He0cM
+			6HDOdtlF/xMybGcKQvPTcDuiYRISLDGmVMbLbRmMHwpOsNqVIqxO
+			T0pLVrV1PxcxkKnC0y9xi3SLX1gLjUVyXwv3WtDJ/trOs3eQ8r6O
+			JqM3PusEf1LrhHxvpi4p0HoyDx5CFRRRzqGyVMcxHpqrdxRKsHoR
+			H1lDEHdS9rGjBD4O8vgx+R6n7pGqsquClnSHTNtVBujJYu4DMpvY
+			KqLGKxgUapoi/CHH24FqkyWseSkpgGww5vMw5DoUYqYn7mUS0KFL
+			sxTMCLFi2CbjUQ71dmADNmq1HNwkPKmDzqOGyr6pjjhCSDYpTCoU
+			hlbrvlYyli0VpLwPPLyr5vQ3JPRD0H0wynUttXJDoINuejuwoSYK
+			HDxp9jKSxTaH74VYHiGN4jBgEVvQzrFifDBkWPXq1rsxVDAUrChi
+			0y8EuEkn8mUADgFj+oQi2V9lTMbIIIHKhKjExCCCfzNzmChsiAEO
+			lEal1oUAEEjEcZO5MFWOPkZVoElkjABksMrzKvTR2ExTMpzUtEpZ
+			TRREpVeGREx3kvCFK1KWnZiZi5jZj2mXbFIKBozzoLCHRQijrJhp
+			hiNTo43n3zttajeFbTsz20etKTrTsiTiPB/B9EFjaibgEAFCCZ1C
+			BJXjwQfNL3HTph5B2iEFdCCuHH3ksFRxLiEB5h4FfDgCJjwR4iCo
+			HNiqCMJw5zAC0iYW2kkQ9irQ8iZKdCuYPLWilmpNqipmQQ8CpJWU
+			jFv1IRatjmaj9EAYTyXGPUaNyxEjFpoETC7IIHOmZyMmUCa4XsS1
+			KMfjo30rSOGh5uUl/JMiniSG/IjmBGrGnUlqLqwxqAAB5B6h3xsC
+			lkOMXzAESxzm85fUIw8GpLzuJVjGKRMO4O00z4YKoEMi1aMOirqK
+			4p4k2n0phRr0QCySxjoTeXTJkWM0pE0HKaQaJxYXZLIHXKS3BxhV
+			FnC37O6VIRxYgNwE6HzVE1iOwnaVUVO06F+7LEtx3k4noprOZYgV
+			T3OwzVRE01WGY1J1QX2FRKvndw7Zl1bE0X91cjMPFFCViLtVg11p
+			yzeO3Q2XVCL01MRNmxD7BrSNusEL2DV2f1q1rt6JxgHgIvX2fqXP
+			giEAJAM1x1g6DgE10ALS012oNCd1yV3K8sWvhkDCWPlWf19MeMU3
+			i0rnciZTbM05kb8b879P/Bjhth1ImInIkBqhz8AGlb8iCB1iIBjC
+			DBTAABHgABVb98JcJ8KZkP7igcEsLmlAwjFAXmeAnCIML2XETIVA
+			VANovcTAHgAAUgN8VcTIvDyp0cK8Z2nWoQVCCh7Wq2rh7B6QYJUh
+			mhipPh1pRAAB1Ihllv2AAOBqdiCFgwhrCW28oKrjhm+cmliXVw3O
+			Xj+kGvVlv7gGBm/G4XpnQ8ZXW4SRvCIXXq2LcMVpkqpqIlvtkuqD
+			X4yPBqli1LmpzSLEDl63EyDKtuznTDNaJDfRG85X/3QphiyLWq3y
+			ZYgxOnsC6jFNfy+KEJZr8ntIXVcjixNKxdO0GKQ1IHYECK9y9tyx
+			FW77fFJqPRC9OCp6jLS3ftF76V+U0MUqkatp8CVNy6U0SyLR9qhq
+			+nDj2xrCtU+6NKKs637GBRN7Wjw3ZuwW6a8kwO1bI3oPPOcyvDxd
+			L3CR/a8kNUVN1q2rjqrCYEJ00N7wvJnNgECoHG8xfx8si9JjDF+7
+			AplQ1xacwa3h8ujdY4Jm2azOztyNzXXGSmaDSRkSc5RJ0USroCV3
+			K94yu9nsHqqs0U0DAxUMBj+q0N7jEkUDwDUa/quKvvKJ2CBOtHWV
+			UZYpZ9QCqHJ0eqbQqJTlgjOaLuJPPLvLMkjmcrwNI4t+e0GkgL8G
+			eW/PBwtR54zAA0DJ90UKVABY1sv8+taY4bEiVMI4YLFj6CgAFAFj
+			6rtLmHNnNEFqV+BrEi+EC6IxITkDGzYb5rIb1MWLJVqH8vgUEvYm
+			VGazFIDlUaHMovikbktzVvispsuzkTUEusnxzfCfD+V5UEujVZa5
+			bn7MrzTWAYixlXZ5lU9dhcafO/PfP/QcKVPRr+S1FLopZK5zpDtE
+			sR4/Wh9j1T8iwlvCdB/h9aEB9oHClF+SwB7h5ib/eibuKDaCC565
+			7h7z7B8NpDNB9lPiCh5h5FbEfCzx+enikh+CgJ4nBnSEkEMiiZCi
+			d4aGO0VO9Yq0ImUPPfsyq9OrQ0KyHmkGpOQ9AK4u6XBVf+m+POYY
+			GNvlWK9iAAMAAMAgEAACCgACQsAAKEw6DRCBgUCQgBAIAAaLwiEv
+			+HQiDwMCP+QyR/v9/ACTv0APh8PQAP1+vyYv59TGZS18viavsAPp
+			9TyZzSgvYAPl9zx4vJ2yp+yl/VGMgaDgaNQ2PgKCQOsw+BViDSiU
+			yeUvx+Td9vx8zF/yyxTGgACoyx/W2DwaMgOKw6MAWKVyDU+oXUAP
+			u44K5SeQweUYyQgHFYqVZOVSTCYu7ySOQMAxjKSnGY2zzST5rIXL
+			CTO3YqzSzOwaCwYCAOBXqv4+QRaOV/NYuo4Ox5Hhb2D2bSZLMaGT
+			cjk7TbweLxjY5jp9Pk8nS9flZXiaiU9PoxyDc7udry9rf97zyH09
+			n3czMeTzSGF3uN+HtdWE4vs4uZNcvDHP44jewCu7Tru8Tru6qSSv
+			nB8IMW8Lwr8AoAQq6iEqemiZOO5aDoWgTpopCzXsS0DFP+yrgLkk
+			p/polTQI+AaPgYB8LAIAqBAaB4EpEgwDAQjEcoMCILKpIipowA4E
+			owB8jwuAyDASBaMAGAqMSo2QCymBy9q+AkZgJIAFoir79tpK0xs3
+			A6QO6zb9wjOU5zpOs7TvPE8z1Pc+T7P0/0BQNBUHQlC0NQ9AHqfK
+			aHqfSaFmZxxgAcZ2nqABuHUeYAHofEYURT9QMwkiWIEmCSG2yZOp
+			AY4AEcABo1DWNZVnWla1tW9cVzXVd15XrFkAhQAHeAAZoaAAUMmR
+			KQgskEDV9Z7zAcBMLAcBULCMFgNAAIwW21HUrTjaFxXHcly3NQze
+			n6BCDn9CwAHsC6VH3dZ7Hom57nsm5lmIbQAHWdB4gAdRz4DfCfHu
+			elRn6kh8noukUH8vDNJkzzNPSqKSJcoz2s0viFRygcaSiirJQ6nC
+			WJcniyMrA7x5E+aMIc27YIS6byPI6aTVEyLH5qkC6tA9ipRVjDQw
+			SrGY5EiiKs7mL9rxoq3sklDLMa7Oosof6wxa7LawU7LrI3BLYNRq
+			udbM8r3MJortIugTwoKz1mo2/YBa1NrtJJZ22vMzTFH0mcYpSfZ+
+			p8/sGsntjJvBkSrRKh6Pt02kLQmvWjao8uTLqkzUn4lkVau0y8P1
+			mmydG6DaQU63R7vuufNhkW45C6XIdpIACqpNnTsYy7HsVzafrNwS
+			jn1w2sqgxqop9rLcdLo7KNzZzu7Ixb9blBeIVE/m5dH6mWeaALn+
+			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
+			gAYBI+7A5dSFAqBjYxRAjfhfwwkxMGq7RisFcFLfZlUbFLlLtL1L
+			9MFMMa7nbijBLCwvzQ7409bjJrDjh0QiQegeDvrmw34eA3jmYAAe
+			dOR/QpLj5spWx/Z6JrDlQyQ3S2BuRwgwIrrUIyBYo7hvQybCzVAy
+			NRyS4fpyNSZ1rWLppx4o5cNSZ3o1otwhABwBwDUy4h88oCAhIAK8
+			Q1Q0QiZsxBZ06+InLyTtTNonk3Ipw3Y3j1p4goROAg04Q6I278oo
+			pqhqKxsH53NZI/KwLILmjujyUnTyRByOq/dGImYnKzhOIu5LpNdb
+			haaVJdzxo9D4Q7cjIsZJbwr1KUj5BQp+pJL1o/j1JTA/hQg/geQe
+			Stz5Ao53AywiMpIvBij36CqH74VDI6bdtgQpRP7KIpJtFdp40wIv
+			LMEkJ1SQ4ug78n821Pp5bSpQg+FgkATYg2qWB7ap6S7CJPawA/jB
+			gs1k8zROElLw4/D+LE6+iQyiErgojv9RY9pTFn6x8Cgp7+jYD+sI
+			DgbObJ66iy1YpMo6UCS0rZZk43R6JVqTSP0DdLEI7g0Ilb8wiNC0
+			tkqMhD85tYLMcssFJG8rk/aANAj7xWL7pMYxsHhZ59jxNbEsq1zU
+			VR80w7piLEiWCTi3AvpQdX6WR+QuZ8sOMKYBMOKCgBBacLYC5Xad
+			aZVDQkQBoCRCya7XSaoqtz4BQByawmgBgB51iZMl8OrXQByHsORO
+			1FNzDA8P1sUsy56nNMV3d3l3tMCf794ZQbwdgAF4V4gcAdg4QcId
+			ZT93xlpQ724kQYgkYaMcYAARgAATQADwt517t71798F3oNpOQkal
+			whAKIkcZQzQNAkam13V3zLQDgCY1oCKpsY4GimQD4CjOCpqKoq98
+			OAGAKyaq4rKXwfIDAiar0cccR5g+4YoX4asdMdYdIcit0eAigfUe
+			ZwYfKDRwYfUfSAaWotaNo+ksUFs4aTx9A6gyR3JPUsVp7uqFB4TU
+			S/U5bC7QbDTKYliQDnBP8IA5DALGa78o1uc2r7VxRQElCOYrjF0E
+			FChdz8dAovxwiOSvwi1WbmlQ7cBY46IhAqy/uLhXEn5H54xPOMol
+			kDyzEkUo6BkpVgMksppIFgbb0zQA4A1YiV8qZ35883cmb/4rlmMv
+			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
+			7U4eUthBoqIewfJQM5yixC5driQvxGM85GQAACYBQ64CQBUXICoB
+			gCoAACwBigwBAAgvwBIAo6IjxDUExmYjbSLwULhKhuTSRLYeA1bT
+			lArT4c7UJN5J4fKf1CQcwc7VRMA0pezV5Q4eJCJPIegeg0kLY4Yz
+			wfgxoes6ULjYBiUN0S6iZhRS0TRzKJTrxk6oTqZoxTRUyQpsTaRJ
+			YjDajtza7ajyKKxNaTS0gx8yBFpJgjBYBypso7DgyZaHZaVLDdpa
+			DoxUzbyIxbMghYMkJw7nq4rx7rDyQjxpZUiIYx70cIZgKXSJJlSx
+			Ie4fE8Kw6YJjQA6UDcw9iHrizblCbkqVLjrdzj68aciYhQpPBhBS
+			LgRsySCUppx1jcxbIrjmIsLmcd7trm50A4yLCW1UDyioMDZsZTro
+			jqENrpFQ8q8K6v0JzxIltMbtAqpzcUDxrrDFTnCKjtCJKoS9LsLs
+			dSppJdpjSh5jNKpd5rhUhxkShBiitF8LrfsMJvKuaPbZNOFbTvi4
+			pvNY9LkYpudArwjuEVZgK4kH9WhrpxFXdRTx1FgfpcFahqFU9UxR
+			yarzcSp1aH5EiHBVB14rD0R6IfZEgfQxb1IrAeqtgeaMweatgeUh
+			IfCsQBofAKNiwbp5YE4ekeweqpYA1OxxwZh6gdgI1koe9e85llNl
+			Vldllltl1l9mFmNmVmdmlmtm1m9nB978b8oAJ6IDAd4egeAGwdQe
+			AdgELhYewDqDoBiEsAD/YzQBb/gfwBaLL/YqYBJeUAgl4BR6gA5Z
+			wAiK6H4zSIKVaH6asCkCiIRb9alHVHBgBtgxxeEMiJiOEnhY6ddU
+			1AEE5a6TREy38EMFsMluaUNupUdLqLJN6nYy5EcFqJkIAjrpprkF
+			VJ7RSKBFSvEI5JkJNSTy8Jpk1xiV0NhSBW8Khs0KybqKxPNFpCTe
+			CbMEzl4jLsQvT0aOLrhKrm7ndMt0VV5gxRTbJg0RZtFbCL5wQw8D
+			SV9FxlZKrFTuUnbZpUEYVd15d6cLtVzfcT1Vac8QTKB0D5dGoqiZ
+			KTShic9RVUdNkSTRkng5a4YsV9Yqc/qeIAwmZF414AQAzXhK4xgA
+			ZNoAqeBIoFAt4HAIUXIC4DwvyItKcCx0DziaEYzj5hRDlCZDaixJ
+			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
+			w4UkOWPMucO0IIihBM0tKVLyQ0MbI2joxvKe0gTHL7Da+OzO0I2K
+			6S9gy6y2+eVS0NNFXA7cTUgpTaz2TAkE++7AIKKCIcJMkE/KfW/Q
+			kQKA50oO5ikaIcq0I6AiAqI6kqqcAg/oAqJeKCIy/6oOATACbulR
+			OWK+35J+OwiaQSuvLcQap2HaOSmUIUG+HGmHIUIZY6uGHkHkIIHa
+			sOSpYuLYmomiVAmvZcU9BYwuU8ZFQqpRBkNlBonE0nDKTQYMYNHF
+			JyneTOoQnuownNCRCMJfCKo2oeoRacobQgsqabamMrCLCK3MJXCK
+			oQoRC8o3a9CBDHCGT6iRDMnMVZV2y4i9UhRNbablHUpc5TDnDlDo
+			AAEmFaEmAAG0HCG0AAHAG8HALmqHEIqKmuU6VAbYWkI2qYfoAYAc
+			fUqkqoJXEwAAA4BHEnEqBJatE4rAA3FAI7FE+Wz/bZHLFQO6wvAW
+			HnZRFeAAHNF2HuHpY4GmLkOqIVD6sHF6AAHeHUPuhGKrdZLjGMbn
+			GTWVeKoPGaKSAgKGAaJWDQCWDQAABSA8BSAABMBGBMojCm3ANTay
+			og847zBvbXfFbdfIbhHU95Ve00p+t2wPSYt8OwOVHnHrO2ITH+vG
+			AAHOmOuqluQNf2HPIIuYLYHsOTJWdEIOPSIUu/MSQCQg0+IcRoTm
+			hTAXEQQGSaOEQTK8VvMW+BNY6gm4S1N4VnZ/K0AJDMPnJYQKt4jO
+			IQfTNIwkiOjXW3KewpNZJ6yJJ+w2Qmzqtuw+z1OuS/KTNXW7KfKd
+			VTVs7cU8U5NQtqj7V6XdUKYvgzNOhOx6YmOXLKioQCm2K1OgP9O5
+			HThvfpUlBJLmQOVEUwTaeWmyYuSUeuKc6QvwNbUQgWpEwQzCWeU4
+			WWPcsRi00FXONfXNNXJgKbZ4Q9hHbIzifCYiUVjRVi0Qj1jZiTND
+			g4YSKsi/NVU7ZsMPXAvpOIImv6KfTAguiSVHNzMIW+hsUi09U6UI
+			WhOxg7k9Z9TS6kz+xFDbjzjzOc1jg0MROnUu1xOslSInfaOdHi1+
+			gtbTYWZPiSxAiY36ZiH5ToH1jlPUXQrePIHiPIH2HgjaHyfOH026
+			AgHiApnIHkA8A8A6HeBNnWHgR+HmKOHlCWGMBPnoHYBznuPKO6H+
+			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
+			z1QigfV/odQeFvFu4AAcgdQhocodY4AdYd43PNI3Ih8/1tgfyxsJ
+			xDqZtwcVyZpBiZqanO559xrdMV0L/P8MKyXQmtjTdzpp2DdzPRF0
+			V1qi92nReDkNl1UN0h8ffRCfRI8Fxqed/Q6kZGF1nT8Q929DImvU
+			kSmM8Sys+L8miVjVxL3V6/GgM8+ZszUVxut6QiIBYBh7IA4m4DID
+			wrcEQk4D4FA9gBkY0YQEaqQBQBgmoCgDIr8C4m/ZCsnJzFheHQ3Q
+			qGxPiPnLAzIeaugg+AIAAdQcg66+cdAb9uQdo64ZwaQdiA8egi+C
+			dwp59L7k+DGHGGvfZYvRXTKe6itzUl4jUlt0uFTxfS2EuGUlGHUg
+			WIcPyi8k4lrZeHIn46ovWHqOKda3Yrcg+ICOuF+Fa5C1F2WlR+SE
+			OJOJIfCWo2/liPYfAg2J2KeKMVEVUpGJ2fUpoiD6LV9xORu/gj+e
+			JpzwWow9ABIA8sYA6NQAgAo9xWu1RcDYa30Qp60CM+piGQFCF1Ax
+			7uBKY+r3MTW3jUzcRBMyzEd59CUTDb9epIo+Zg5g+/CyTJm/aDWM
+			s4WUalG9zA00uVfsMz3UE0TSHwDIWj8y8KSlLAlCWW9C4zLiOM+b
+			gzZTBNbNUqaHDZY6M3yD0/ZE0weZXQOzz7TQhP05DzXa5cDxHfl0
+			GfpbBEXvA0JZBDmMyDr5PvhXnkx8pp92pFRemdgjkxDZfxM8LKBB
+			m+aCWe2Vkx/nTNsPWf2JHOObWeQ/Wgmzce5Lv19WhFXppB5VJVe1
+			2h6EvtCVeieM+iqVVETT+jLz7aek+9ekyFv93TrLGkqlNFOlFfZD
+			+lZBYvulwgD/gT9AMFgkFfQAhT8AcNfEKAD8iD2goBe7+jDphoFe
+			4Fjz6DweDjnFUlc4IlD5BkrfMQdUVdQHmTmRs1c0QnAAir9nM9n0
+			/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFh
+			sVjslls1ntFptVrtltt1vuFxuVzul1u1hQF5AUlFQHkIeB0rCAqe
+			DweYIer1egHWy2WQaaeRDWFegKxL1BUCfwJhT/BD+fj+DD+f79DM
+			CAIEfz9foDfj7foLfwAf4Ff86Ab/2YB3T/Am3f4C2k64YBfsYAOz
+			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
+			vffe/+B8H4Xw/ifF+N8f5HyflfL+Z8353z/ofRN5LoQEvABj7AeA
+			llgKSHgqmIPUBEzx5gKGaM0ZwIpnjxAYPnIQCTxJDLxNohhqUjFF
+			AGPQeY+QGoDnK07USdwlaJJuS9SjhfRRLNQuRMJhCJQvqdRwEBgu
+			RfC7xuQsigRQrXxRyOyuQsZTh6w7zso8xzC7CC4jgqqihzJ4yGrv
+			RIidEATa8BpujWyD6e0GJfbpa7C16lrjqFYmzLphSkx74nIoStCn
+			CDRLhcrozoqipycIQoyoZHykAl42yqR77hIuY/gq7JUE6pxFQrDh
+			A/yucFhPQBQu50pk417iLcAjgup36Dhhx3ipTUjBg8ZGLDhvh0JN
+			gwquagpHgBIhYA7UCwyvoywzA0gBYy6vwzxKgCAyo06w0RQBCvrC
+			IsCxpqyx6xzpL6UTUTcTiybPQ3A6ytzli7hUcNLPJvDLo8hUDJTd
+			zPRwgozEw7rEYo5U0Vp8BCi2BV48IiLHK5A7S2CiEXhFK55arJRX
+			ClQhjehc8KRL507hbNrvTrLDrtB3yFxfx5B/QocUQgZJzEwvjpoA
+			cVy1bfrfsEbNhNBug7giLnjCZLhL7Q6JJhxQzfpIUeKuyeJ0oxaK
+			ZihJbfrDSyDda8B3pdSHMTsgyWcDo3Zgi6wwSzBULNJF47rgzL6L
+			g/hz8OJVZyYpJU8YS07Lokiqwqg+S4Zda5EXq5ZEqqxVw9xERVIr
+			YiZChCjHI7x2JyrNJ0JwpcKM0WUOg7C60Xx2ZEo649AmpXB70HC1
+			4/pWZFStpu5vCeqLi8cnC76/bgCKY10q8CsfjSqrRQxP6gbTTShJ
+			hJaPKhBkTRsCpIjvZPQBKdxIgfprRgRqA84loeQdIlocAbIeQAAb
+			wbQeAAAdgdLVYe4e6H5eCeJJgjosacyojTAAQxgvDXwAZnZKBrTY
+			ZsCsBrSsEDheYd4eYdhFjZ41onsxaJhqCeBhRusEknJvLgTrBupN
+			UOA2ilMnRw0rBLpvRgZGp9MqJz0Epc03wh5aJy4mwqo8qFK6roI2
+			o2KkqEE1CjJ3RvrEZzDxSFopyH6lw5zhZ3U58gZGDZMUixwwCerh
+			8qYocUzkR5qLiqTxZEYfjkDlCoMLrjxaKMcEc4s3jla7MEqSc3hy
+			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
+			83X5fF+33/H5/X7/n9/zCuTADXNQw76tsw0Ap6m6CMI37mIo8boo
+			OgztQWibot8hB+puiyVn82sPoQfioJpCboIzB7EII3KgvA9wAH2f
+			aNRA3cYH5CsNILEKFnzGaVn3EaDQWfkdRKjjgxXBDZwUxz5MA5Tw
+			pIAT4sElMpAGkCrJQAatgKkiZJAAwES4AQCJIr8uJEki9JBNSsTI
+			7CiPenDsO8eoEowkiMpIex4oKdhwpucJuHmABxm+eIAHid59IWfT
+			TS4m0uIFSahJqf6VL+nT1p0AgCAQAADAKu1RVAjywTa4QAH0iJ5H
+			qeTpyxTKrTpSNaNlOUM103UoALXyQgJSqeME083NlA6jRZB8MwNA
+			byMLLCaMWhLZx1CENRvD6lQ7BaHoOgiCobRrvNIv8yVowKiPBKcs
+			1oq0yJhASJOA4ELKVICKILDdeSwkDAzbdDwJ9OTnPY+rAxbGrqQ/
+			GbaocqF6Q8imHtI219H9canYYg1woaiSFH6fZ829Gd9H7kal5G7L
+			SS4gqQI04TSH8i6CRuoFpPDfym18nS/2JdS+PXZzDoZijc5xfMAQ
+			DXalIjpjIr/L9PTnqOqOXJMMsU1sEuo+TVO5drrwG+SRUrsTWOi3
+			boSY6iGYawcHKA+rDIZm2ZIPqu8vBTyVa+19wOHBdvoPZmvMNqu/
+			atZ92JxKc575OckuoiyFcltSd6QxEYxHDMVtTKYAn3dh/JMA579B
+			fYBRugR8L4dzfH08B7U8AR8gNMR2V8Ax7ggCAGHUA4DgMfQGAYCJ
+			6gl5J6Cb5hxd6CB7gV6R9XAc58+udAE+0fog+71b//B8PxfH8ny/
+			N8/0fT9X1/Z9v3ff+H4/l+f6fr+37/x/P9f3/n+/8/+ABlxRQDAW
+			SYBACgHQJA61EDw7IHAIHNBEBYsRYi3BCOsdY7AGj6HqPgBZFh/A
+			GAIAkA4F1ggBAUv8BKKwDjwHcPIDY+kgF2Jw3xLzVSrNCJwSFLEP
+			FzqRACSNnx5G5IpNOuk06WU4nYPUnOIppkpONTaSkvJMiQq/WCTo
+			lJOmslBKWjcpbRlVHIN0eNbRzSRqVKqu5gKUnHLmMHEpn6cy+E9b
+			O4Y8jVSBuCO0kVHTFWZIXRCa09hAzeswSi1ZdRr1clOXIRpELG3A
+			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
+			jgrf44w50aIxgHwEwCwADRuKBKjgUrbgSWMlti0bSMmTIiZaJkZc
+			t0qcbVNkdkK7pQpWFbpNy7tlJZJUTkofE+wySdAxIA5XR1MVSc8l
+			4BLe4e7IACj2NxIAr8Q77mooYd4cAqoeIcY5wegdoqqHDpwfg75T
+			D6Fqqk7lT0DVI/MiCb68sjcjaWbxMviuzX92GWsgFzpW1tS7i3in
+			Sn85d7dt0673LUqrxcWTzuczVsK3TwEzRyU/rwttTwT2c19wmnN7
+			RlCoKrGlz7enRY82piVyqtxTWkRlM/al91E3trDvd3bz0okn1cw2
+			KUunNsFZpJD9hgTupghZVyMh5jxwFxRf1uBUCt5C8cD0qRofl415
+			YySHCfxhq1afxHd4F081xjknE9V99BLY7V13oqJ0Y8rKU5TVJu1Z
+			btWnN8T2j8OkBld6Y+RTj08cNAmxBt1z6kYh0jmjLY2URmE+5xMA
+			mAjYhcgfZZZcmscB4gQuogV/geI9ofas4fB2QBAfADG3Idas9FFF
+			IeRaoeC+wA4aoCICICgcQHm5IcYCG5gfTA7AJi7dgIAIAMBNd7+W
+			+7G7O7W7e7m7u727+8G8O8W8e7QOQAAGIgYHBX4MQowEggZKlMjQ
+			wCo7YAAsBLQGuK4AG/AxCAw7+XV0dZWHhDIyhHQygSYXQa4AAbIc
+			42GzolwxQxlQ9Q4UALIPoAAvYvuSJ9JCLdhhofF04aAcwbQ0NSIA
+			ATgZIWeMwdYcQ1Iew2A2VDB6SYSNKnpJb180I/qWEdXB28nHvH2L
+			j/I6Kog5SfIqJi5MRbG+YpSPklQ42Yjgor5KjSOYyLuwsVS43DS8
+			V/y7s9baJ1Dj49JQpwmbTmxBJOBmGtxwakC15JAApSLmwAlnNtb8
+			+wacwAmd7kAn4BYC4yhQIoWylkb6Dj4dQaufocOgAdyaDppg2g4f
+			hQjq7qLrN6zXPLxYszQgSv+iaW+dS7L+BBtB0u8d2jier0dAF7Jb
+			0x0617Vk5ten+zE5JlOls0CpZgtvhdVv2nOvS2M/k/hjxv+j1bD5
+			5uEyPYVyZohv5Fpse1aLLz54s2yt1utzJeUicB19SQr9ly9anXbb
+			Css4z8GlRblybxxgl+jxZnSzTyD1vchmigJdtaT+BeZFuuied5F4
+			V5qsS1l4phF4T5yv74ZfC2ZfXLywr2rZA/ykTvGSUcA9Ww2h5str
+			2mqprxeWJljXeyjXBcN9V2vU/hFCO0d/GplseUvkb0F7GlY9BcrX
+			xPBpm1O1V/4ge1w2IgbQoySs4fIBHnAfB34DQdJ4ofNFIBoeZaod
+			5aoaMGgcIGnpIcICnpgfgD/p9CwfuFapHH/qvq3q/rHrPrXrfrnr
+			vr3r/rwnaGYAAropgKh/IEpUgAERQgWNzQyMiMjhpLW+Y5wG4EeL
+			HuwvvJlgeHZXwexDQAASwXvEYbAubeeMNfImCNY76BIC4AAV4MIQ
+			+N+XRKHLJ7/S3D5hoWwaoYwADL4cwAAWAaoYIAAcWQo1tUDd1R2y
+			R6W+ZLQHeYQ7rShJ453D4yIcg1wAAenD4AEPi1nv4yIdJHVaHsH4
+			v40JXvjf7iJKEXI78NAsI8ZJxKFOJLiMtiws3I6HpEjgRftuqLl/
+			N+8AMwRdkcWaUAqcd7HMRAroTmxkZNrVPNnP/hk0A8oAxvzj5pRX
+			hSkqD2wgAAfz8AIABAQfoAfr6AAAAgIf4AAIChr/iIAeroAgAfDx
+			jbuboHADxcoJjDxkz7fIFAD8fYDlr9mD+f0UmkFhsUiUNhs4nE8g
+			QAiMRf08gr+i77fkNfsJmNEftEi1CoE8odUitTotQotRrc0gVIrF
+			CosSnACAUwnoAtEFtE6s9ois9AU/noBgt4vN4iV1qt1u1Cqb/st8
+			wUXnFNstUpsJmmOsD+ftdpsKyUxos0reEs06qs5uVvsldy+PsYEA
+			cwAYEjepmGivNsuVAi9zw8CzkWoe1qs+u8F1wAAc62s0iMupb85W
+			YsNFt1sids1OyvOhowBq+QiN+vutuV41/D2UwvVBzOXsmjAD3fDy
+			AD5fL3AD7fT4AD6fXy+nyfn1+b+oUlzLISwkCKm9KrsEsbbKs3ja
+			N6s6+MM2bysNCafgCr7dsoyDFqY3MDqsybPxIicHKA2Lyp3FazNj
+			FEWxKu6jRIniyqvBMGwc3jauxGkIQevh+sMq0RKafLdMahaeKWhp
+			8p4fLXHevR+NcfAEyue4PS0dIDS6fIGzAeUosaaTdHC+B8nC/B9H
+			4Zs3H3H04zlOc6TrO07zxPM9T3Pk+z9P9AUDQVB0JQtDUPRFE0VR
+			dGUbR1H0hSNJUnSlK0tS9MUzTVN05TtPU/UFQ1FUdSVLU1T1RVNV
+			VXVlW1dV9YVjWVZz8KoAAMAAQgAJCghE+YAC8tgAV8hoFp4jdaVK
+			BwEpZZaWBuEYKABaFpAiBSRAgBdcOGt0h2Tb9EHtNgAE0YBtAAbJ
+			zvcdp5ydNkPUon4OAgCwAFYL5CgAD4IgwAAKAYCLhOjcCgKRDYAH
+			ofR7AAdp6niABYGqYYAG4dhyAAWxqmMAByHidaFM5cFuAABYDo2C
+			4HpMIAU36BoEI3a1cHwfaEnMeL5HmfClnKduF3EpZznjhZ+RGyap
+			Ijoywoa4zcaQwcH4JqOpanqmq6tq+sTm7igAI76cNS4C+OGijZ2u
+			jYDNQAAPAjY2XI2EYMAaAAFbQAAQArYwEAKmFtJZkc55oiLxRnC1
+			BuKz+QsNkKsZCgbroUhkZt0gR9sCfvKukoh/LyAbt86si3AIoiCI
+			cBCtp41ae9EoSnAGkSFTgrMZH2eyKHsc6YHqdyWHecAEYQdXfnue
+			aRPoljlI2pqbJqwUMLWwSdAE3aiRqwaLsmgqlKYfmkLFybaxCwKq
+			e6qTzsozfNfB5sYNhCS/LQtTroKiyitEoDYL9DDZ/lIjsfmYgnDk
+			0VmSMyVMppSzTGaIEVEhQ/TkmVaIh025bUIHALSjIpBXTlwKKAas
+			jZqDWniImt0iiKkWOIae5pqBvXnl1bIAMvZn2mHIPmPpOA/DSmFJ
+			2/A4R04KPtJyTiDL/WxACI2ROEp0YKHgL6/MqhNClmELKWAex7T3
+			j5aGf4/B8otktP8UohhyoEOOikYJGzp0cIKQY7KFhRiIuFOrEFGZ
+			0DfmyLWedg5jTbsGNwZtB4/0RpzRMj5FLhUWIVkOWZGhPnnI+Rs+
+			NBZt4VxqLsidx6EJAIoLw+CMR9imGNciS0nkniOJRSmawAiVksAg
+			lYOgBEr0vpgHmXoeEYhpE8HCl0Aw4R7y9H6MCYCTGszDmJMWY0x5
+			kTJmVMuZkzZnTPmhNGaU05qTVmtNebE2ZtTbm5N1PAdGSMInCsYK
+			iwgTSiCkTwDs3k+mAkUAAB7dAAAQnkDhaK0wSAVAABcBzv29PxnY
+			q5mZCRYDNHEAAb46x6AAGuzYAA8h7uxU0BZgAABFBMDYvpfi0wPg
+			qAAsx17Uh5D5HrQ8fFJRcDYGSAAWg1hiAAGkOUbgAB3PDYQflAat
+			DDGoIoBllIAAiArAyAACs/QAArA2BAADey3F+QO0SAr5CWlioHTQ
+			eqTh3MJppVod1VwADwHsk4d49SGVgrKPZODNCilKXhQGt1b64Vxr
+			kowBjelbgFp6BAkzdCNgYqMAtl4AANT0ZIyaogDiRAJbSag15OAD
+			HTPKayIKKZ3qgcOVVxMATFkXQOP6iRiXME/fAkIiTnz0RGs4dUi5
+			nodurZDEaOZbDtnEktW0sB7x4EUHiOMlg9B1K4HiOR349h3O/iwr
+			g+jyUqFhJsP8ikb4TxCH+Wcq8OigxsOU9lzByioNHLG+GNjpzFFh
+			u9Hp77Ty1vOLTEmEpRn9xvW8bIuBoIkmBgoVg8pV0XQAf+YiT6BC
+			xGTMcZVpkesBQNITBEsJToWOTNEcEn+B8DmEtmRQ1ZqofGhiU/tx
+			DUEbvWkXO82pqbWJEQPA7BMEGiXkIlavDMJcNLdjc/0nZeGyPvtg
+			/jG+NzyQBM5AoppDIbH2PZQsfUWIan2P3kk+ZKiWn0MtAgysAjcv
+			jcXGxG7UJNxtnedxCxvi6R1y3E5ycCSwZlx+gdEJFSxSCelITGuN
+			XxXxcJnRFaQ3xMFLnllgua3ZZ+SITdIkazpK/cecV+knh/j7M0Pc
+			vRMjUnyIaPgAulR2l6H3pUAo+AGadHsCTUA6QF6jHyBXUw8DdDxL
+			0Nc3Q5hw6vHKkuYAwJhVz1trfXGudda715r3X2v9gbB2FsPYmxdj
+			bH2RslUogFbgAHmAAJRVFfERC0TxYgAG5ENWRsGf4AADt7AADYES
+			0gbT3BEBUBm2K7GoW7nnZShh8s0AALemIABwsNAANAcI7gAVjlCp
+			kCgC6lB+CKGGjS/QhgmBqyQAzv1Zj6gcfPiI6R6b8HQPMdoABcDX
+			GQAAWo12NjbHWOPZ2SFwGGAK12eACVcAbAiSYJALQNgAAmAwkQIa
+			KEOw4niPlaqrVYq5Vyr1YKxVkq+uLo6cB84r3iZBpZU4cPTOYbVp
+			OgN39X6x1max3J3Mjh/EWC27QAAOAUSzb5MAMU/ZLX0B7vwGAGJY
+			Bnl7c7AgWZKQbcF00XNRsubQwuPka3hmEcR0mLS+5sJyshxb8bVm
+			eOIUbxhoEGZks5bXxB9x6u2HYTAeY5iWDylc8AkQ9x4q4PqSyBzy
+			R+vLLVdMnNsfXObMQ6d//TypEUH3dt7iASpe2kigxplnYDIjiHeP
+			NFnHHwuRhZUnMIn+IrfsTyd0SIK6DRJDzCny5IwEObTmIcgCinKI
+			SZMpceilQSkE6iyR5YD4LaacKC5wcIY4saXswMljaeVv8RXMCFju
+			M/KnntMFPxMWDYoeMSL5DqJ3kXEesvjXsNMYQHi7wHokisn0IGk4
+			IuoqtniVGFj8MlKcD6D7IbEnIHE4P2jTIykEEGrNiqH/vaMaEHEM
+			JGIgr4IYsun8kekFMyocqoo+o1QgChs2k5JBsQrKM6FvHnM7M7pG
+			kXmlkGpINEETnrEeNAwhpJjpAAqJJFDFmDB/NJNFjNB8EpjXGFkm
+			tNPNjUtMtKh8NRgFh7ATw4h0Q3B8gLQ7NVC8D3CGhsDNByw/Byhz
+			Jeh7pfpgutRDRDxERExFRFxGRGxHRHxIRIxJRJxKRKxLFFg1AAN0
+			iigFCDAAAmFhASCqAsCqAQM4tfQZlirDGzAAAnAZgPG1AJljAQuA
+			xNNvxLk7OfBmBwOMhzB4D5BdhphzAAB0RflOJ+ljAtAZAiuDgAAz
+			gcgogAOXtslZBsh1hwl0B1RsBeBtBmAABehtBlt+qbKatnuIIour
+			FWjDG+gAANgJROgkgXuZl/lcAQgKm5G9iKKmPtE8nwIDCxI+I+Gk
+			mmLbyBCph6OliMGdKvujB2yEAAB1GcgAKwilh1B5D7FxCEh1yJOl
+			sUo/RcSQSQyRESswOxlmOxp5AJFtRpO7m2CRSVFcSYAAAJObOViW
+			LHsLPnNtIYEYGusYGwrJixt3FZu+oAinHFH1LvyjraEZPDpKSmLK
+			wmrRMwkfEDvKE4nHCBEmB9vMyJh2vOBzlcB5h0CRLfCRB8B5vTCV
+			sniNjJLnkWMSvDLoDeAAyjljjFiCsjiYD8CCkBIGn0rrwgQnNBSC
+			ixNGCtoIMzwqDbDan2jqr2r6HnoTTIpNKmoAo5oBH+DhiYSrP/kH
+			yCDKo9MgDSmiuIwBuImmMOpCjgLJC5sDD0PGsLG0zHP4QKEYsuQo
+			JCC+EeQdSkLviwCXMUvxkRvsjRIePqJ3Ppr5i6MbrKTjjQmvQDHn
+			jeiIvcouItKcD4KSslwRD7j/CXEnDlQTzUMpkQF4HvsrI0r0EiLW
+			QGvnwXJGDtpGKmoky5ozMEPuyAkQPkMTQrpCM3wjM4wkC7DAs8Ea
+			KAE5T1HET/HTwdkWLurMDcH7i0JQu9EWGDB/tnihHKjsB8C3phQz
+			COJUB1jXB9gD0Tw2tRh7gV0WBzkwAGh8AMUZB5jXB5IxBsjNBzhv
+			Udh0RBRCNaSR0g0hUh0iUi0jUj0kUk0lUl0mUm0nUnkfAzKlpwgh
+			ieRTCGgvieRRCigHidiWShtcGRmRglgYgOAAAOx3gAAUKfJ5lrtv
+			OVG/yRufBqByh4AAB0yLgABZhnOSByh3UQlMubCTAnAVgexmg5gg
+			AsuaAFUulST1q0EnKIknBphzqZhqB0BugABfBthm1NVOD3nLj3y/
+			FvmRmuiCqiiTAPxZRPgYuZp4lcJ+CTU4lUqril1ayGCGGGiGB1Gb
+			yJlxyLSMFxyNj7B8OIVRCuitHvHritCtIGOqLbnq0oVpVplOjDGR
+			ifmxkYHBzkoittC/VXyUSYyVyXSWSXyVyZSaCRGXCWR8q3yivLnF
+			MZkFjESoGBv8yqMuQqlAx0o1B+h8iCh8h6CCh8B3iYLfSxB0FcB7
+			B2WFPSj7h7HjrljJCZnmUDQXNBohQXHPixs3jJiKS9MmiGy/GQio
+			mnTp1oVoy/jmKoT8s1CsoAEIQKwEvoOdzJjoQaMvr+oMDKsbEWNN
+			JKM7CuPvDcoGP2sFMDDKilIxzzipofv4i5DssCDLjyi0jwmyDo2e
+			wEPlEaQqn5rRI0oWH9I1nEibERoxCWsVvjLVgAsMMdwFEKn3C1yc
+			r2DoSfvlkJLnTJCgnqDlEnB8wQzsqSTvD9MjzvD7DlCGHLwTh/sp
+			CnDIwAEQoCsOs+PpJIxUoiC1o3noi+H8I3nrHzDLXQPvs1EdT/JF
+			0AEYwjs50wWLTpi1UwNCUInWEcUGz+NAsGJIQhrnC0KJULQujdKS
+			0Ni5B7NMCeNJURDWQ0gBh9UTgDh70Xh7gWXpB0AHXqh8AOXsB4i3
+			h5jNBti9B0BpXwh00fNZta1qXz30X031X132X233X334X435X5q3
+			0pROiGxOm5RmCGldCi0siGgRnUNjq6iNuWCYAegTALx200gYgPgJ
+			SZu70gmmVgN+ukBOhghtmKB00NFNLHiNgTAKxYF9l+hNgrA8AAAM
+			gHFpFRuIQM1Qhf1PhfhuBnAABohzKZhpBz1M1JSJh9j7EEv8FWmR
+			gLKjFslcAoAZp14iHfrBljVTI6R+FUT9TAM2jJ1kCmVlTqmiixB3
+			B5iGB71jB2B6siFxh2F2j11hKtSOmGYznAmEVizBX6Y5X0jDG0CK
+			GTCYSaHfuWCKF/iRG9CNualcJ6FcOyFmuWOVlcScKlyeOvH3uwP4
+			OxPp3YJsO+jPS8QiPrXYZKFEkeXbDaCnCFiIh8h5iKB7h3CNh6h1
+			CWB5kuSvFcPSLkS1iXWKPHCzDdv+NCWdDhLV3NHsh9CYB80PMn2R
+			WikbPKsZiLCjiypAruT8WWPgz12gEYEVXOGtzKT3sxMfWYTMiG2l
+			QFGuiYEuiRHJpEIZPiMfviCwWjTQzTMVP0HJEZsLjOz7sDmmEJzo
+			QHi9ycv64o19TpidrwPJrYu/V+oGWzsUWgDq5+zkwcr3W35rIj5H
+			zpH6UJJMCejzsEh+F3GFIazrouZhMm3DsoGiQTjlkCvuv8kCGoIh
+			o/44vAv7rK5PDoL4SmzjZrI/wejmXRwhJHsTV+EUXUDPypXVwmo6
+			oT25ahswMqMO2XrMEPZcEiIIq2nF3dgAknQn6siFDWABw9D7i+B6
+			tMDdUQh7pUB1JUB9pXgEB7AI62h7gd64B0AKa5h8AR67B6C3h6jN
+			BwDXB1IxB162gIh/ArbCXcY57D7EbE7FbF7GbG7HbH7IbI7JK5Nm
+			CNmHgZCqANFhFgiCgSiFG7CeFjO9teKdi/AYVVAAYlgAAaAQgJl/
+			KjRZFcNu5zRHI+B5h7ilqIE4BLhfBsAABtB0D3Oq4glGZwgAG44H
+			4RgABRAtA/x2gHp9GTCWFLk2CGB81QhzB5B2AAGbbthiBvJbhiBv
+			hogABuh2tY7zNYmpjDV1u8CYASm44ICRAjAXbNZCOGCNp3JoEdrv
+			KwE4GZilqu7rNGOj1I1jB3ukK2GGOjWWB6GZjLCIuIXJMmjHCpuI
+			GkWzGiikpAieGk7J8PmCM6V2uUIfC+O4OwlbzoCCuUiKYntuuzxp
+			U3Y8J5gGCWGXiYGYtsLFRNK7AGxbq6m/C/VZusSk6kaAGrCLj0B+
+			JPB8h5HbB2iNh6B0rerfyJh3FcWAnjh9PVLmvWienPjCInQoLncx
+			C+iyqnPXD6CKW/iKS/DK2QiqrbjDJA83miDjvd4rXQwg2wEXv/L7
+			Odvo6lamjbsIiwIRz8CfuUiNgDuGynnxVmaeoF3QGiDkjl6ETQoc
+			n1W4W3PDPgjL5yjQjxPlWqQIWZzccjvfvmSSnGanHJjlPwsCTiPX
+			Ovzm5qH3TnZ86IW6P8upIhonC8DKIwkAD8QPXATrknClQSvciYk4
+			DJXHDSLrQVMTT73SXKM9QZ5/roC7r4T5TI9SZkMzQfIFPvrbwp6g
+			L3YgypSSJLs7o5r1Smr45u6CafiK7DDzapIcCnEdkai5JSHNy+ka
+			0akni2qF2RXgC36yjWB1DXB9AFeHB77Ah7AheJ65a5h9AVeMB5NN
+			B6h6eOhxjdB2B7eRB2bA7B7C8QeUeU+VeV+WeW+XeX+YeY+ZSR7K
+			7uNmiTAdidgPlhKMiGgUCgiRZONcSfZGCCgUgOUux7nfgjuZYFxO
+			q8OxRG7+SJyEhJBeBsgABsGgyFIboGFLvlF5l6hVAvBBxmgLgG4H
+			7RlIbu7ubtAABZGJe3hqGJh1h607e607CvaUmpGTCKAWAOmAgKcf
+			RPgYUzOyFcO35+pFehJi5PaonN8xvXLq5pafDbkDmEq0kRh1qRiO
+			N5YzD7N4ii4NyMSEyHEnKqh38HOJCIyM+Z/XFOt2ZI02iRY7F/Sa
+			++qiK9LCiNqKLEuUrD4/twVwOuEJDfc/3Vd4aCQl8id5msnrnIh9
+			tHD75S8rZUh1iWB6h2CWLicsB6njkoEA3XymyrLTfICkH/v7kerY
+			DLLtc2h9PcEmS/LbimifCpTLiY2Rf4ocCnz8iAP5/gCBgCCP+Cwi
+			DAEAgCGQ2DQsBRCHAABROIwuGQ6IQWMwaFR5/v5/QaLgB+ymOQ2R
+			yV/gGBgQBgMAAoEAuQQOGAKPyAAQKXQKfyShyV9vx9gB9UuUPx+y
+			iiSSnwqPxeGw+VweB0CtVmEQOLzywxyeTOaWOJxSex+NxmPRW2Rm
+			1T2RwaSSV+U6m1OQxWdxaN2mLRiOYOKQ20AKaAGMROeX+SVuiV+O
+			S6FQyn3l8gC8vilPp75/PPt9aN95u8vqm0l/SqU0+4VKP3e4QTbZ
+			SqQPdX2PSWYTq5zmOTrbYzgQ0ByfGYiKXWuSmS1yW0Xqba12+1xL
+			sXLsxHg1m2z2r4eeYWsXLv3G6x/cwnW33obDdQTYT+w6GHP2Z5yI
+			/J3oifKHnsiJ9LCer7gLBJ0gJBh9gVB56gnCR7iRCp1ArDB8hXDZ
+			5wSAp7H3EJyoidxwRMd4IxSfwrRY+ruxfGEYxlGcaRrG0bxxHMdR
+			3Hkex9H8gSDIUhyJIsjSPJEkyVJcmSbJ0nyhKMpSnKkqytK8sSzL
+			Uty5LsvS/MEwzFMcyTLM0zzRNM1TXNk2zdN84TjLIqgAmgRAAFT+
+			Aw/gxoqFKKhMiIDIi8s5TEwQPgonAIAXQYehMCwAAyB4EUkCKcAU
+			A4CAAAjGvDQ1QAAex9H4ABNmAbYAG0c55AAdh5s8fJ+JLLINAcCg
+			AE6LA9AAD4Iz2E4Kg8wFCyPWTVHSej/m2dZxgBZlnGEbpoAAYJvG
+			eAB5nzAdtQHUK2uShoJgYA4AAXTQABgDwJAACVGgAHoUT3c9NgGi
+			Dz1DUCBIGfR9qMfqSneezNqOkp2nq1WCgBgTVHuo4AHieqk1kp55
+			Hu1SnIHhyS4AganJc22PpQguRY6qCB5NWeUKJk19qHfOYZjmWZ0J
+			YqDU6s6IALezAOQ5LBoMAtPIbBjFogAzlI2AwC6Ik4GgQAoAZ2ho
+			I0zqWfgiBmogSA1NghrgAagml3XLrqeAWBGcsPmm2bbJJ/tgfqkg
+			AfZ7IafJ5Joex2poep16iep20GfB4ai0FNqQmiEMemCFp8q4BOif
+			qWJeg9CIK8riJInij85AqUbmfB8cogyUvH0taJUzm54ezmAJR16h
+			K7yzcu9e7CdsubzogwSRKoiPfttk1PrcoaBgPpc6pPBNy8swr2K3
+			2K6tf2Cnn6vKlew2TW44oiWccsjBp4+bcKjQi294xjwJPeyxaTe7
+			0u68PiLiuic5R1+Sr0qn0L8wJGzGHlfS4wxBinxEOJOY4vxPyFGy
+			Mo6WBhSSRqlRCaY0ZoDRN0H4apuTGG5EEMmQUkipSMvcfAbJ8Btj
+			aMuJ9A8n5tyHPBPUcN55DCSloMCp4yR0TnFChWXU6ZtDrP2RicZ+
+			SMDvlYfo+A8h4HiKfdObNFxPjhOlH6fCFD5SIj+IuAMekWyTwkP4
+			QQeBEXRkMi+QYfZZh6lmHuh4dCHh9gMjoPcC8dx7BGj0OkCkfR9A
+			wkAPQsw9i8j8HMV8d415FDwRSBFFaLW3SRklJOSklZLSXkxJmTUm
+			5OSdk9J+UEoZRSjlJKWU0p5USplVKtUAgFOMQakREGhtgTp1AAHs
+			iqkVSgJgXKxHa4TAEGAuA6XijFBhPBkB0AAHlxgAmMABTTNpfJLH
+			wPsp4shnLOHAOyL41RyxlHiiBLSigHgADwEILyvVfgACeCwHjV2o
+			pFPmOQeI6gACsGiL9ao3VsDBn4ABY9ACkPOPmqEAqnQAAMAQpsIo
+			KwNAAAqA1coNARK4a4psA8AiNkvKvNNKJHjfvOH8c0rblSfGRoJE
+			MuxBYrkDHzNZ7JJR4MXoESWcJSZqlPnCZseg+FSj0VkACoBSR60+
+			ABUWn9QWLqlYvFOj1T6oJWbEpwmgAAHAKUGppTbVWotLJ4A8BK5a
+			Fk0AeAprbOwANZUGAZrC52pUIAcugqxhjanmfPR0jTtiLHWgBAB4
+			B3qo2BSkQk2EG41IHAAPgeLeh2KbHrY1UTgrEj0aiPsfBNDWmPAE
+			QVxpbSBUdY8PyzBInvu8pWQ0pxPB+IBVEPcnhrSDFIgFSV0hTbYm
+			wX7aFlZuihG4ISdakB4ncEae+SajZxaNkhITDJ55bztwwJK8hcpg
+			kGKDO5YCEBu4dlQesXoo5SSkKlYAdGEJliwO4gJX9kDtDikVPnAo
+			rEXVOEyWIWs4JwaQPwO4WojtyzJP4u7Dy4Jh3/r3v3DlQpiGfwKv
+			kWMwsKyVEIVofwkhSWAMJss3QfTBMMlIYJat0CpcJHUPma2KbACn
+			kUNoVgykP8SuzheZSkL9rSnFs3DTBjPMGONK49skJUcgF4JVElGk
+			RjslzOxEm/hbMlkWaMeMudc4UxRuBcuv8L6W4/H8Pq7WI3SkzADG
+			klBEYxD8Ief8g0ZwAjxIfGsmaByLj2AXnMdKHh9R0AYPYC2ex8BL
+			z8OqO4Fx9A90IPRBgBB7mvHSPbRg8RU6PHjFsQGk8J2C0tpfTGmd
+			Nab05p3T2n9Qah1FqPUmpdTan1RqmVSdCaAhAACQiKwykhuIiBki
+			oKCIrlJKpt+OmSKAPXevQAAQATp7A0BGXgIQKgMAAA1sDXCaKd17
+			qdigABeDVHOAAcQ7UBjLG8OwAA7qgJaa+A0AAZwchOnUnsMQNgmz
+			QAJdZHBlFZlPRAZ4cQ7x0gAHGPDfYsRqDCAAM4co2gADPHKqnFp6
+			1QNmqoQ0DKjAAVgaivFSLZAALyAdNCtGqlDUtbo68o5T1YKlH1Fe
+			oU1YNEl5KqJfoAKm8w5PzKpnM+YsOKfNVUrLiiPGZHbuGDKoQOlg
+			bA0qNLOUEe6FvTnsW9K8elE/QwS4CMFYXsch3hjWhs9roYQwXV+u
+			qeIMcksRG5oqcIxs5TdByaUKU3w4BoBlB0HIbQpqKmqyAJ7WScBl
+			ZqqE8a0WcjFHK69Q8MkhWnPctkNNA3ceRPB7jub0O1qI9x3tRHwP
+			JTdlnFOVIQ5AnTmTb0mpYPy19JoYY1IETwfI+SaGkbuPb09sczRS
+			IbygpRmzOQkdadAqD93Z2/JFXk9FxSsuPuScfnyL34nhMueWubS3
+			mm2Iupu65XcWmuZY9d2D3TMl6hXbDLzufj+FOlcy+0AIEvq0PXSv
+			B18DXXdv9c65dihXjKbeTp+MrAOQvSPmo6vkLgwafULMvqxKga+4
+			IQPq++g4y2M4gwRCM2VIM2bkNQoGgcPcPq9u+4NidUI2NkxY6MZA
+			Y4de/Gt4N8pUOEIYs4OAOA7G60LK6qhUh6/0xIem+1BSPEyKxuRm
+			OIhSO4O2r6bWaAhScY7GqrCMLoOw8+ioe6K+wkH8H2y6H+jEH8zA
+			HmP6IibmM4zOjMK+HmLCH00OHq0OHsAdDQHOjkAbDYHskaHsCTDi
+			HS0CH0B1DsHmQeAUHwHvD4HYLCHkGXECHmGtEIH+0mEA6e8PEVEX
+			EZEbEdEfEhEjElEnEpErEtEvExEzE0k01YIil4WGBgIimUJKECIq
+			AuNs2YJM1If6IM7sJqbSAACSBcA4V6maBGAs2YaenjEUmsJKGkHG
+			P+HSHiM8FqGgHIAAHKYES0rMXKB4BFFCV8T2EgCe1oqwl4RymsVK
+			HiHui+GwHWHCAAEsGKFdGQHgnsGUHGGuM4tg3qZmmAXGXKAgqwAA
+			CmBsWGXcUGA2ayAA4cZ4/LE2S2pAuULspIIOe+N2ioOEdqeKKoZc
+			9w5w5pIipyWyqMmsIGp6KSmsKeHqqCVIIHI4goL0qAgoKIHoYcg1
+			IupeZOsSpg/RIATe6oOYIa2g7RJmQSre8BFgqmAOrQqmagU3J8aE
+			bDJ7KIJoagJ4qmouXNJ4auIa4cMEuGwOuMPEfmMAs4KuuCPAyu8L
+			JfEodSbmH6H08YHoIacIU2Hs8kVEHcU28yaiH4HwJ4evCOgYJMcy
+			caOsevCStCfGPkH/Licq9WKaJ5D2tUcmKVLgiGNa+MNIdQIM9atQ
+			H4Y8NgpQpQuAyrBVKuiGXw+UxkuScc+Md0PZM0IqJccaU6fcaIAG
+			njCG+OO2NoxQJ+dfNgeuesZYe0ZY6bBc/6fVIYK6K4/fKoPGvSoO
+			14fQ2mJ6JOIkeeRi8UKjNkhCeLM+/7M0ieL9OSIiJmU2LHAMMKOm
+			xGgmu4NswswyKOYTLedAw+g4f2h6imiEP7A6i2+4MgH8hJBAh8Mm
+			ywdUiAOtOgr+tKs6fgN8IgmAhweK/Ou2/OY4L098O+MERkcjB9B/
+			B3P8/obWMUmkLivlONCCvXIQN0JYJgyyt5CmuyK2IWH6JO0iggII
+			90jGYWK+HuK+sWJmH2APRsHpRsAOHsA1R4HQARR+H1DyHszwHoBx
+			SMHCz2AsHwB/SYHkzmAXI0H6HoHTSoHwFpSuHwD/S0o5LvK7S9S/
+			TBTDTFTHTJTLTNTPTRTTTVTXTYk8DMlinKBAhfFOIGDgNsoeIMBY
+			IiUqIGajOO00a6Jo4cByBKVw4il4ocAgXaXIXarcmBKy1CZEG6HV
+			CyVeM2FUGSHAAAHCYOS0U0aiBYAwBG3WAAE8CwDyoSAMJw7IO7Ng
+			qAM9GHCyGwHVU0G2HZGOFOGeF2VcHo0iGyHWHEZmIobQa2AOJoBI
+			2WmcXeCGBU1srAUGrU7RQxTaks4WzSL02qX6JK2qYGKfF65kMyKI
+			VGVKYzJZW8dfXGdgIGVHXCJKHuqCdeoAwi6NIOuyecKmio5AJEh8
+			v8I+/w+HK3IKuYd8RefJOiudCAvuPQfrQmwJQmrzS7YUr0IoylOw
+			r8fONq7BAHYvCLAGgXNTBgJ4Z3BkIbJ/KaABJpUDH4oQ4c7w3gJ5
+			ZbZYvo4dZovorHZRWM7/Jq65WpZ6RqPcLsdYdGKVDCsSHgb1LWsS
+			HiU2HyHmU2JIJYVpN456yMvc9KgEY4jXNiisJocSKVa0c6oA9lLo
+			dWfGhFMM9wHyM892IM5etsgYMk+AvZIYueI6uRNCIaZAMRQoyILd
+			IEioMZQEaCQYeeIvT8/IOyJGu3NmelBKu7NqvIL4Ms+JM+eJAQVo
+			ue/kLgwQqpO1Bm+NcBOkPMWLOALWpQJTQQt6d+hFYnBALqgUiGU8
+			fHOwgMLGAJJuOafMKC53PoKgwsxAJSwwM8LyvAsMxNN8tgo7NhA9
+			PqtfPkI2eoLGxbHYoHHa6GOmvYysxqcxN068fY62IdBst9BKMsLx
+			NvQkIy6myOUJETOiedBVK5OOMCP2RjQ0r6LovXIVOjMjQ+ACblBG
+			ACjFRQJ5RUbgIWNUJ+jEHbRgK/aPRpDyHpR+AQHsBDgqHVgkHzgk
+			Hq7kAMHmBZg+G6AzhEHwCBhKHkkaH40OHwGphYH2GDheH1S0D/S5
+			czZ9hthvhxhzh1h3h5h7h9h/iBiDiFiGINE6AimgbCAAT+JKmUUG
+			EGIiT2JKXZb248rZZgoQByUgV6Ao2YCCBOUi2E8JT+0sZc5aYsKS
+			EoF3HUGyVYS0o6ASAKUGA8AhFOF0DSEmXaAU3MAWAK+mLnGGHqAA
+			GsHTU0GsHQG8AAEoGIFY3CHs0iHQHmHc5/PCZkmABYA7iPH0AVFi
+			BeoeAcAQUGqwJomAo6iXiIVAL7ITcSytK3IShcpXYK+EehCXIQsS
+			JUpQHwH1CeoEvEKEY3bhXBJWX6MyIUVld4Y9cw6Nlq8UP6iBPvlg
+			ug6KpK+AMIiUf/ZCfBB6vix0/IXAwMOQwSgK/eaE7KIMaWXqIxJ5
+			nEmgP2MFlA7LZKoO644cJlKcvoUKmAiLYUijCIyndEuxOW8LFYNr
+			jFlPTZaAJ+bnLe8YsQsU9ZaXaUJoHwjahiceeciNMUgQt+hfaiZ8
+			KeNKJpV6UqNIJow3MLLi9qNItedTMMLyIbMYddbatYL0pE8St6t7
+			b9MxfeuuvyObOm/jn+ccLfpxalN0Jm7KvPOKcYMeNq/eMoiuckh5
+			qiK6KcetlvByi2flKqfIuVYNqDNYcsvkJkMWdxp9fWKuZ/N5CAiI
+			NoRCL5fcJAdkeBKucpM5roMGyealdwgTOTmch453CqKag4g+M692
+			YxeNAVPiPqu2hKtgMKevC5byg+mDNogQcywA5CNUbhXwhFfKpUMu
+			uRN1BZCLO3fuhhfGOpNghNNgOmXwuNOBn7fhpzldlVCFrhYhrUfj
+			ANmsyQoKLkwnCgPqpHLKgbBZCmZQIWHfBYNgACbnCqNeHZRgNecK
+			QSHyAhuuHrSeHuBju4HPSeHzggIeHiATvIGzRyHsG5vSHgQ2BXEM
+			0mufhroNvlvnvpvrvtvvvxvzv1v3v5v7h8CAleBmAAA2IiUiKeDe
+			IrTwXTE8NsXLdK1GmABbkwUka+AAB5i1k+aiAqUoauLEf800Mop8
+			5YqMEqF2GwABjY0iVIKfrkSoaQU2A2AeAqnuDEEOABFxiOA0AaAm
+			5CVKHWHq0iHWWUAAGOHAGmWfVuAAFWnyqEW2AAHkHwi/viTUrmLa
+			4wUaU2BcA7UU2Ol4BwBJFO2EoRH/v88NIEpKX5PuX4/BmLRIZdxW
+			ZeoFxYIVI8ZGJK5OKCdRcnN86ceK5ApRIWoJmltOs5w+hqhy/fQc
+			rv0POlH8v5LnlIZqOZnMP2OW3guJZWZyaDna7NKEuoZ+7Aa6yhY/
+			jHzL1NB9riJAhIg3peHqbvaKsUJpaba7MQbkLEAI+HagMGfwiipA
+			xuPXpBMOb0HkUGtk9za69MdhMh2WdBpe9rbVMgjVLBMNIa6SeBpx
+			boiIyvOqJAwMZs+aiooLP2N8xue/t2hy14dsaNc1XtIcf2hUdiKJ
+			qqeqKHxZrk6ftdp0hZllcqv6icZ9lGgMrr39fi/VLmRiKo99dQxg
+			t5lqhLdefUf54I6sAGU2MoQ8Ky/bRMJH3tl6NZLDsM93Aqg+e2dU
+			6drf3qrzPAgQNXssKaVKgCdgVKLGevXJerClNiKm56L6vNBWKp3K
+			s6NtQIZ5Y0LUu0IPBseoNkepM6yjY5qbtv21o3lndDlavb36O73P
+			1HpzCE55uWgaIiW8JGzb1VgaIejFRaVmJJgWIQHuLuHdg4H2kaHp
+			DQAcHsBt7wHUzwHyAl76HnvFgkG0LCHwDz8KjLlV1P8T8V8X8ZEs
+			ICCAACBQOCQWDQeEQmFQuGQ2HQ+IRGJROKRWLReMRmNRuOR2PR+Q
+			SGRSOSSWTSeUSmVSuWS2XS+YTGZTOaTWbTecTmYIAAAIAO0AAUAA
+			kACIAP4ABsAP0ATwAgANAB/gAOwMCTqsR8CAKnggCz4ShkIAAKA0
+			DgApDMPAAHgoDACvT6uU+s3WD1OBAF/1N7vp+ABOsNvABtuh5gB0
+			vF7AB8PumTQJgsHgBAkcxgAQhKokQTDUAOt6PAALRrMUANl1uEAK
+			dmrsAPR8vcAPV9viC1O8XaIgkCgO4AbfEIWBmqBEFAAVWK2Au3ga
+			fAAA9GpdK6brrdfsdmYbnq7mpd6pQS8P/uwjceTw+Dbwb1Qv2wL3
+			wz4xLqwv6w37xDpfiC0/ou4gy6L0gcBPsgbyP87UFQXBkGwcmKkK
+			Ox5/H2gR9nup59Hqnx9Hm3x8nlD8NvggwBAK8B/wi/6jn8ujngEA
+			Spn88a8Hccjjn2fLfHweqrn4fifH4fqnn4fafH6fkiSSAEiqefJ8
+			qefZ9yifSBR+p5/QifrHr3LB+tw8UwPE76Dro7j9vCvLoTXNk1Pq
+			9ExRS9L4KQ8ipgG579xg3zov8AM+OonroTQ86BSzMEZH7Os5S2pE
+			ZqRJCmUVRx/KYvdFqnNE2TNA8Zzmvb4z6hLop9PFSgHPk1xQvNMz
+			WAMYOgrkCTahFDqXRUWPBLNFzovEzQiuajr3Qan1AAFUKuAllLyp
+			4CVQgtTPDSR/L/StqwpJh+yrJEqx/Kssr/NMssfNdx0/Sq8p9cFZ
+			yRCroKnSNY3VJCegE30hQrH983pc1bu/MEI2HMkSRXgsYp66U8Kf
+			YNaPO89IVxRSmXNLdyWZEtXII6sXYOhNhwHj002HS85zHAjfIZGC
+			fVFUUwqWg8IqO+Fw1vIZ6oGfsYH/KsrUuoGer22ULVQAZ2z6ewC6
+			SdwDaYfQH6eeoLake4paqdIG6wfQK63HtlHnKR9m+fWxnyLmzMPE
+			kH7Vte2bbt237huO5bnum67tu+8bzvW975vu/b/wHA8FwfCcLw3D
+			8RxKNCrY4ABKsmXgoAEqjUgalIEGyBgW8IG4zxSSWcp4OgiBi2AU
+			oQiBYDAAAgtwAA4CXNgPZwAAOr+EPzz6HsaphVGScAAG6dTD+Ew5
+			6HxmiZAeBHSjOHInuKC4AB8EQYM+eZ3tGa7TG+dxzgAXRsGVyZ+w
+			rL+Y7arzfK2p4NAioi2reHISAqAAMAgogPAn0oGdn3T/4AQBgFAO
+			AkBYDO6PGhFahAh+j5IEPoexPh9j0J8PlDwAELk+H+uQ56bABgEV
+			4VJFRz1Kn+AIeAew8ChD7H0T4eI6izpFQ4Pg3z5UgpDKWktscEkp
+			pMh6PofEN0rLuSuv5FjaSpJcPWwJkyB2LsaQOoFBJCEzKIPgwAga
+			dWZLFXqys6Se2MqvVSn5AUVTwpeZivBXCxmJISKQkJia6FdxOiQg
+			Q+6M2HRLjqmpWbGYwLRVexuK8fGNHUXsrFNyaT2KGU8o1f8Io8rG
+			jwxmJivyBIwjIukACzmUEDAM0mQh4VzLrSyhVLK3R+LbXoyRSrFk
+			WGPOkv2LK6FSISXCdJdq8lboVK4keOSW1sr7fMj+V8jDvxaRpINM
+			DBTws6XqU9hSxFBokmTHONqlVKLTlcpqS7npCMcPmx+cMimHrCPm
+			n8hrKppMtQOvCOjL20wbZwlkAI9JcHwgc0Afw7CBj7VBPmDDRB1p
+			9HuAegzS2mD7AlQsegGKHD2ChREdQEaKD5ApReCKMB6K7HAPGjw+
+			mzBcbRIqA9JaTUnpRSmlVK6WUtpdS+mFMaZUzppTWm1N6cU5p0R8
+			nhPhzONLG/VKrqyfB8TWBxl4Lk1lnp2QaaM0X9lndaW8KINCq1RK
+			oBJ0oBit0vL8UgYo2x0gAHKO8xYwhsDqAAOoeRtiaHAKEC0DRRnl
+			ubBCBEpQ7B6miF+NwZpjEivkXc3JWTr6tAAOMW8JILyogbAkcd2J
+			Z31MIWY7mptl7MWZs1Zuzjh4FGPW0lYfCUURoag0Y+VMGoRoETvC
+			cgs9DoADXgksfg+UOD3N8PYeRVzYm+HuPFHyQIfQ8SCkaDEPx7oc
+			H0lhCKTUmJLSlAxLkOFbKtRSmI257VOWVneglAqszunoUNI8va5F
+			LJyVgQWdV3gBFXZYq+dd6pHkEuqzKRyZGKq3UglmYrJFjMEu2wM3
+			N/4nHqPQiuJCpVYXrvhdlVis71p4m8Qq/iLIQxzYEimLSdJCXYWK
+			sOdSbjpNJKEQRZV7lOJ1jkthLcplsL6hEX9gUsrmSww+pZVUC5ES
+			tmklugCXlwqwx4ta56FTHPmX4vRYS0plYZjywYqZXMoqyAHIaKES
+			EZX8vzG1FK030TTvlFOb8l2OnmlCXdkbMr/RMkXB0hWDJMphnlEh
+			mhuWeMyIEPQgbNLBj7V2OvPZAzFoWxIOxog9gE6JHgAjRg+QJ6PH
+			qBfSQ9ws6VHPRQCI+mpAWHs0QerFRxpPHyPoIOpWbx7s7qnVWq9W
+			at1dq/WGsdZaz1prXW2t9ca510U8nhZzDulKQEQgZxCBBR2GeEoz
+			C7MHVARVwuBvTkAbAc6Yt4MAPgSAAA03hRX9gAq4nnMUAUhFIG0O
+			keT14HCtGUaocQ7dTkzyqT4CgDDJnALeBB5gAB7G1AA9176j22J6
+			OkB8Cjmy2lCBWBsCJZH+gABQBkyb8dvVdmjrri3F+McZ41AGBKho
+			iJQSYhiDEEeRqlAOo6HqZ1fECAGiePiSJBW1KePceZVx8D0N8PUd
+			8K4WgAt7cPoELEMxBcnbYpaEYgLqLxKlJSRF3TAYHhVlzA0xoAVp
+			mJBCbdwx9PSyNOUDJjyiVU7hi8YL2RjmlIhgd8Lr4PUrFibE5ma4
+			WQll6LLMFZ4DPHgWOuA4z9akUXLBd6U29+kKXLCV6+xkKS3lk3Cn
+			ljSSzZ1TveZ5lsIg0sNphb1RLKk7fRYSll6KKWvMPF2OJGLkxvJp
+			cx1fW3w9eU9blsSr5ERmtWYC5l8Q+mEUeYmGsmJkv/Ezv0zlXp3i
+			+rJTR5UwX5x5lxOUc8rn9TLGWS/n0A3gP6XSSfkU5MkpJlg+3x73
+			kJzroGBh0rl+ynpSNL5e63QYVBoCB6oLRnRH2Av/UMKDD3Ac/+Hc
+			oMAOH00wHkAhAOHmoiCgHCa2AqH0A7AgHuYqHyHBAqHfAaH41KCC
+			/i43A7A9A/BBBDBFBHBJBLBNBPBRBTBVBWpgJ4Len4ckLeDmIGBW
+			ZkCETWxK1aP2AUAON8CA4eAAAqLMAACEBWdWf6KEY2m4c+kmHcHo
+			SqHgHsSqEyF+GyMIMM1gkwKCwkB8BOAsKSseAAByBGfqAsAcAQYu
+			stBZDXDZDbDc42PGtA6euW5CSIuSQkw4KCASXgXc5U7UkOWE6cXU
+			XCHy5wNmHeKuiAt8RCuOgk6MhYhmXvDoR+J8HxDu6g6SiOgxDo6g
+			5gVuQAVs6mPm7++WwmieVc8qw4RkO+vOUWKQOijSYQ+wVexQT8Lk
+			OoTQk6QA8ilEv47a+gkYxUjemAzXFiiQi4kGU+PMPausvAvgl6Vi
+			kE7WQAvWvaWOzdGQpILwVskc8i8gU6zM6mIUT9GS82i6WOwkTav4
+			RmUsgW9Ils6OWuiU9CVm4A2UvKj4y6UGN9HwlqW8XOL+y4mAjbH+
+			92R+WqsCzWS4jy+E7+UyYOmcyqP8VksK8mkeYol+xkWHFCPWigPA
+			P2P2AIduiom9FKlY68nKO8O8w2Psy+Vc+sZoZizuZygkz2SyAEHi
+			ZwVAaE/kL2rG/q/gT6H2ouAoHUAVKOHuocAw52aSHw82He0YAQHi
+			BxKoG4A3KuHyBBK0HwHlK6H6GfLAHuBVLGH+CtLMldDfLTLVLXLZ
+			LbLdLfLhLjLlLnLpLrLsAAFUcaGYAAOOKYB0ZkceKmCaIHC+KeBY
+			Kss4OqN6J8BAAqdKAaAQKuBeA+AmdMKEBYA2LHB4KvMii9DUb+WM
+			HwH0KYHmeQMAGGG4AAG43MAAHlCkgwS+p22+KGOA4cA0LGqxMwMm
+			q0LOdGOOAWf86zM/LvOJOLONOOQYPGXCfKgY5A5k98iu+4IEAIAS
+			UcSW6skIOetrEqHmSOSWHyHqR2gvEU59DuNqgqhoVu6GQ+6IWoKe
+			Hw5ISE6GWKQiSk9kQmQmYCmSwcweS6lCu87SP3GYj2my7u/AzUxA
+			PyjE61GsvYi8OeTPGOTpJYwwy1F8ZGU8mtQvFcne5WyXG0kXFS7+
+			9AxFFuTyzcw4wRGekOXsN8ZWtezQukhC7aknHFFSPuuw/CwgVgxO
+			J6wkWiNuUcnklI9GxWjildQOxql09a7GKRGg/AOlH+RSWvHk7oyI
+			McL/IKlS98vOXC+/JQyaynIeyiQGmjFKVq+jIHHWgW7awIiaTVI+
+			+sk3JGIOWCPukFFWzWnKZEichDHGRaPrTuSiZw/QKWOk/iUmACey
+			SsIGoAH0V2HQn60FKEAzUqHYawAaHtKuA2HeZUHyxIHe0SASHeBZ
+			VKGzAEH2BHVUHwBXVaH6FXVgeSEBVnJdORVtVvVxVzV1V3V5V7V9
+			V/WBWC10DWAAA+k2AACwUEBOIGCyIHDQ1kdDWK26qwCoBuLXCFDQ
+			AeASLeYYgAL6L+FGGMMHNWMOHI3c31NGp2f6KvN4AACeBmKqBA4K
+			AALEOOLcKvWFXzX1X3X5RIx1OYKW5AH9DoYakUAIAOUSu2U8KkuE
+			YENiJ8HuHkgktw585JYegxYpYuH2uFPBH4PQhkMZYoucHyHs9kh0
+			5AYEuc8aO+uYUK6one+ymmzFHI7yPeyyZiUWxw8fZw7ulqTJQWvf
+			RcvhZ8nROGUQ8hI2+jHXNiUQUZaYnkwJFiPbYXZtQGWNTwIHQfQC
+			jMbSY5RdGtC08tQ6S0jXG+8eIdIsIU8uu8xGAKxQwUg0QGL0yym1
+			Hox5Hw+klETk2U9e6VScwamaAELeL2XyH4Ns92lKhFSO7pHexgly
+			SKlMlWng68UxTCVjTEsoXqkvUDZekiWGS3SyyVTAkXI8+2ifJFRQ
+			IJTs8BQE+/QRJSZM4BbSP7UBFOP7JnUKSGL1J4H5JvUWSYIHJ4z8
+			Sye+geIGhoVQH3KUHU/+AcHvVUBGHgxPeQAGHcaIHeYqGwIGH1Vg
+			FXJ5X7fBfDfFfHfJfLfNfPfRfTfVLUDuLZeABaZfWMJ8CWcsPCcy
+			IFBy+wsusKdaLOLcN8BcA+LGAxW0AABWA44XCRCC4bbCcMHySEAA
+			F4Gqe+3aZuGWG8n5CczupgqnMsABXkc2BIAuc6BVMyAAsiAAAYK9
+			C3dTfXhdhfhg1a46iSgYXdYHRwhHRyTWAGAMRkXDPcKWuM6ESY6N
+			PAgqtLDvZIhqhxEgMZPChFPe07PUgxiLDvZG5I6hiHYXX/IXGTJU
+			6qU2kSxFdUkUQSyc9A4AhE7o7A/AV8ACZi+tGglqOiT4VhZ8TZOw
+			68UM6/G2jlaVZclZaRcqvGvGutREZK1QYJYWzwQK3Ak1SCUGUzRW
+			KuXtkoVVc4jTaRRkvm66joVadzjyjtDyTUnVR6kDGvY9P1btQ2v7
+			agwzj2lgXmKYRgKvavaGzm9gH+Xy35d6QrSmWExUjiYgX3SzS2lS
+			gcXNHxjU8lP2Y+YORXHS4FJI+8jyUUmHSQ+JZg8WyuP2aThbc3Fv
+			ZoVFdlTBja/E79dmnhdskUnyADd0ADnbOWzuMcSGZ+SYOlZKQy8b
+			UigeT6HoxOH3K0BAHaoWAkHuBboQHhAEHxKiHgVAHiHboiG2V2H2
+			FBotA5hjozo1o3o5o7o9o/pBpDpFpGIWDoABC+IECAZffgKeDYc0
+			ZlCTB0Losm4UOOCQBcKUAvDOAABSA0MmWdm+cAMcKQGqHINE3MNs
+			FkGeHGrIHc0Gpi4Ic3qiAABoBCckBqBFBjR+sLpJq7q9q+cLhmH/
+			h/h+9ULyRa5Y8qO4Vk6ZiISi5FZJEctugrYosKiA6dEE30t2hzEr
+			ieyUh2cnZFDoHytHE0hZGShKVzRAnIPe+tjMTXq4VUvEnaivQ4v8
+			ZfTbldFjc5sgl0lqK4ZRaHaK8KZKRonLi3QvHatZsUuq6+66mRsX
+			FG+I78i5bmj6wbJBa4jOQEkOWQ8wko7uIMwqklF8fQu1k4dyQEQA
+			vCihlOWdFrHRlSvJS/JTI3TY8nmUnRH6ADlqjOH+OelWUYcmueW2
+			WwXXjVQqWnmKQqH1sOfLmQx1S/cq7eke+NmfTK+Vt3I9nKU7vUv0
+			77Q67wkKieaTf0IGWjjlFww/SFc9JYpIRUPYmS/OywOkSg9kku/i
+			H5J2n6YqHcn6Vg3eH0WHeLngVIHq82H2BPxUHZU2HuB3xeHi82Hy
+			/0AWHixIHmHtxyG+YqH2Ddx8oBrByDyFyHyJyLyNyPyRyTyUb9pM
+			c2KYBAIGKqKeCYPCLWKeB8PDDQKmLPOGpzbcKfMgKFhE2nNyA4LG
+			OMKEBHDMk28SjLy6bYUUKmHQHkNkHeHqgcFIGIMGG8NAcnd6gE4E
+			KeLEKJNuOOBDMdg/0R0LDAOOsLW7yX0h0j0kJSYCgVS8V8ZjQh0z
+			DyRTZMSi6INqQy5EgzE3RQR4VLXwH1DvEzPIt0KuyUHvn+hySjiL
+			sLE8iAgZrRvjusuYj7IsVbua7/sjtrkhG0Rlj5mE7u+lddhmTRFt
+			t+kQ7NtFQg6q73wavJG+xUi48c7DQPdhwBR1GTRsXfVqu+PIg6P9
+			b3blGeg+XrCSOlI/sYkY8f2+niTLm3Iq+0ia+IYXR4WXdUVgTimo
+			niXQvoznjKkelqX6ACKE/AXQg2WqnkUVcOtClJahlZIxvXipcPS3
+			mU68YmZHafTHkjc1czsjwjc8POjjICYs8MnJwEjtZpm8ITwRjsUC
+			iv2P2vi/uCPzjPwmzwOmScnuWO/in8RT6KXGoHUGIFJ4/WAEHKLz
+			6cHrVQBT6rxZKuHuB/60HjAEHzVEuAWUHoHL7GHAHr7MH3VmEBg3
+			0n7Z7b7d7f7h7j7l7n7pWCDNfcOPMOKeBeIGDwIGMmKmc6621dg6
+			BcA84WA6AmOOCMBYKiN4N9MW7SbsjYU8NgL+EmF2GuNOHO3PzvI0
+			f+qeVkBmBBMqBmBDMqBEAsc6BF0R7r9d9f7m8M6/4LIr5c+5P0Sx
+			OWuN1USI5BYumdE9POYG5ovcOfrjsDEiNmuBiCKeHtENsTiHrvin
+			S3E06hjO6oirZozOsKRnM88oYIbTRraVSF2SZFs07Ds4inRWi8UB
+			/a+p5wvJQR/gv9F866g725T1QMzTkTIaIAAIE/4FBYG/gAAYMAIQ
+			AH/BIFCn+AQFC4NEoTCgAAgGA42AgNG4pBYlGoM/ohD4E/pRDpVL
+			odMYjA4tFo1JpIAY1KZ5OZFFQJQZnP5tEpZGaNBJ1K3+/YLBKVDq
+			POo8/X8/IzHofBH8/axTaxKH2AH4/XzZH6+oZV5dTphD6dXYRZaw
+			+33Z7s+ABXrVD4bTYZKqbXJVGIpSgDBAFFYTJJ9MpdUH/CMnNLjb
+			K7EIXms5NYbBcXCqWAKDFZ1OJFCsXjMbJq3McpgsFBs1DKHtJ7Y5
+			pu4dp3xoaxCXxKn5fnvBd0/XVyJVeoE+o6BHJp31iwI9gP2X0KO4
+			7Q933sQ/E7wV5X0C/Q8n763q3fc4nr8X2gPpapr9/x+f1+/5/f8/
+			8AQDAUBwJAsDQPBEEwVBcGQbB0HwhCMJQnCkKwtC8MQzDUNw5DsP
+			Q/EEQxFEcSRLE0TxRFMVRXFkWxdF8YRjGUZxpGsbRvHEcx1HceR6
+			gw2gAA6NgAC6Yg5IYkIKD6CiIxoFpiBzWx9HAEAKjwLgeBIAAiBY
+			CgAFYOAeAAJAWBAABQDExAUA6PAeBSQgE0cfJeqAAHufSnFQZBwA
+			Abx1nmABtHOeQAH2q0pwIAwCIqA4CI8EAKgYAAPgpJ4QgqBoAUvS
+			UuJCCM30RUNRVHUlS1NU9UVTVVV1ZBTOpWg6BpugqUI0hqjrIfKF
+			LYsh9oUfldIYflf2GAABgIgS7oUfJ7I8rqBHueVkMaAB8nqjx8nu
+			itmI8ep5KrX07Hqir1oUftwn2fVdoafj7M1XCZKimQAo8hh+tU1l
+			aH8004qkiyHtROqm12wCWNiqCj4NWKuLWv6IVm0TFoy0yRp001jK
+			QmChr8yLNsqt6npa2l9MkyWD1pjraqflWPZGxOHM2habtQwzEoSj
+			iNgHL042Q0WY1g3mPsmyl45VlWfMdmVqZXWeNJe1SPoqjt6o1ON8
+			oinaBTjcyj62mN5IiirXgHnC6JdoiuH4savLGfh/LOflgLQvtnrh
+			lLKpYrG4rqu9Cn0vSWN02SEJRwh+5Kp6MsUATENVm2aNhjq3tkrC
+			rJSz+WMho2PtBfrRtLjLT6WyD8YFr/E5/kDCKKAD7Ns3bEuieylt
+			0AB8KW4qJnsrdDXOdCj18hXboofQEAQBJyNWfQDeYe3mAMfQXekd
+			gM+qewgeweAG+2fQI+8ebygUeq7H2c5yfOforfV11W/b933/h+P5
+			fn+n6/t+/8fz/X9/5/v/P/gBAGAUA4CQFgNAdFYcQAJaLOBsABIQ
+			XJDD0TECpBUjtagQhUAqiwAAQVABwCQCgABKBfA4CYC0hKUUk2Q1
+			Cox8llAAL4aw6AADjHaPYAAvxrjnTsnh+YDQErIAalUAAPATJFB4
+			CcCwAEskhSyl6DMUYpRTipFWK0V4sIFM0W5zJtFbj+IkW5XjfyjK
+			7OCQhrK1R7EVYkoV27tlrl7H2RUew8VkGaHwPRbBv41R0W+Xte8f
+			S1kEK8r9cJBm4kWK6TdOsYTRM2Ieaxppk5HsEIiRAz5DFdm2Mm4g
+			uTZypGENjKNhZNWLOhYqvQkTVDGGyaMXtjRuGYMCToYZu5lCWy0N
+			ifkl7oyUsrMaZItzqGktLMU49iR1mbpeKozE1xgSBk9lKyyX5tyh
+			wtdEbiNJL2RNWYy1OVBrHFtiNAY0lk4zAzHX4uuNBo2hOmbiWMfb
+			cm4l6biWc9ZYyUFOY4W9Z8+yyNqdaPkvReS1nBbwZWTrDSmG9MQ4
+			s26/ZrTAY5RVykg5iMjaCx6TJH18EKdARedzCDJUaJyw+LrpzMup
+			IMxIs7QAAuYOiPU04+yOgCeGAIfZfh5u8HuncdBW3XD3OoBSow5W
+			pj6OyAc7B2gWVPHYBqqQ9gi1VHcBOrA+z0ALHsUEAg93wjqHbWMf
+			oNKzO1izWmtVa62VtrdW+uFca5VzrpXWu1d68V5r1XuvipxAGkAA
+			PEACUS1AZgeAAIJjUlkECKTEDRjYK13NCsYpdN7BgIiFEQEoGUoq
+			fJCCUC6mYgJeA8mQACVo2USR0WUhA2FBgAHUPIvQohiDdAAPIe8+
+			peqlAcAlL1vUvAiAspIEYFlMqQuOBRSQB0rAAsw1evt0bpXTupdW
+			6yMFX27ViTEiUZ3Dr2V3IFuRvbtj+psx1axHiRyCHwPMjzaiKj1H
+			ivUxo9x6LbWa62Pg91xr2IIPofLYmRGNbUxEgmBWckrkCTR0UhSM
+			krjAS5mZDphq2wiTOiuEWFK4Y5J8185y1xclIa+RtImJyrKzil0T
+			Ck6yKckZqSE1KOuacGWsk+L8Sr/Zabx17r7tNPTlIxxRH71ADThY
+			Ca9G5o3bxa5zFrScYNYomRIibHpJuXa0xKU8p7JzZMbZOkSxCETe
+			WplxnEsmUNOIJQYfQ/KCt9LKWorpfaFJ0cIZU9bem+j5b+XvN2Ly
+			4t4lyyKXLNjFmIa1NhxJnWhspk4YChePCaqvZXMPLNHzSQcPua/N
+			TGidaIomzErmMz7lLOdj1d50R6U1q9GtOLvR/j1qFT8fFQSHuudm
+			TofQG9eDlee8t5tSx9gn2IOiqQGjwnjArssfYFtnD2HxtEfI3tqD
+			tATtcfoQdtHBuvt3b239wbh3FuPcm5dzbn3RundW692btQ6FVjAI
+			QAQiKcCg2wbiYgzMaCmuBidFUeSCAUioFwHJmTKl4FQGk1AGI8Bm
+			D1g7fKaUjadsixrVI5JQQQedubA8cEKLIaQAB2j0bhd9U4G4QgAh
+			BCIHAIwKAA5bBW1BpOK7u5tzfnHOedKlmlj5kOaZEkOWKs8ta5jd
+			Xrko61bTGr2s9ZsPi/I973FkOqAAeg8GqLLvvQMhS6XhRrmDQGFp
+			BcEM6wPgE0gBZCL7ZThEr0rVzaWypNGcWNl/UYPXShYWVHDOEKPQ
+			twsoNG5PaxJXL+KpVSnJO3Vj5O86lRIxjM2pGGxE8ZPiTJxu4u0p
+			Y7JufuPcGJSwY4zE5i5mEgnK5BzDX7smQL/joi7S8gkp8ppIhatc
+			JOwKXN4jjFGaL9zIcieeKDFkeWOz2YGi5YacJi2ovQ+h9z2+i3Mv
+			ZbJ+mc0CQjPLrc+j6H0ccvisfA6NxBo2jd6yTJxYf7FfzAu/4+xH
+			dr2zmmPaW4A5+DmXiD+XM5qDILKR1JzijIiw47u7HofyrzVYnQfY
+			AqDZbQjjNosoejWYe4fAc6oQgoe6pIDkDgcjX4B8EB5x5gfQD8Er
+			YyqQeoJkFQdyowCgfZ554YAIfQEcGgd5Wg07+zncHUHcHkHsH0H8
+			IEIMIUIcIkIsI0I8JA/7eAjxTKERKJI4ioHIgoJYgoHAgqwxo6AR
+			pD9ggy9TgBsgipNcJiIJSa5Sy5LwHQErmRfqDYiqFDpwhRN4jwBJ
+			RRGg17ky3JPIYwbwABP4s4aIcYdxaofbUhGpNxLwGC0oAAFIDZMQ
+			FLhSy4kK4AkTwsJMS0S8TETK6b17JZoBj5eAho9YgaQLOwgRc5q7
+			rxQrsD3BaLrKOCPxcCPxq6giQwow57tD9QtDKghQjrNbtAAwBAhB
+			dJii/7tAtLysUwfrypghWxoMUhkiUJjrEAmTojEA9aUjFjv7Grz4
+			nzLZIaZrLYpbD7SAwonZkRmw272idJKQxTNSWY2cTj+SXhf5kwgq
+			YZzIkzISiQjhaYAKZi08ACYg2r1rRh0j2DMpprKwgYxhWzGUfKUx
+			qMiL/R0KNolQuwpxOIjw1btKKCkz1yW5QofY476A46e76gliLgnq
+			gAyYpyeJar78kJwAr0UYwLvykjCB052DLI26Z4nqiz1ZuzThp8j0
+			gRf7UhV5maFowsgxeZzz4D4EcR0bB4pzsZfQfo4Yh53MA8BoAgeY
+			0I6BnUrwxZPA9grZZjaDWwf4fSrwerX4FMt4ckEAB4fIC8upa4jo
+			fQB0vQcZqYeYFsv4dbY4fgJMwh1wz6tA07zkTUxcxkxsx0x8yEyM
+			yUycykysy0y6KYOTmAgoKQmIJwgreQgSO70SYpVBpExSUzi7B5KS
+			FjigipKojwBxLoAABbhkMpSS0ZMc2oABTBMwBhRoAC5RIUOUL6iQ
+			pcqpEzNopwW4aQcy2C2SHIayHgeyHxGY0bmc3oAAHwFBIoFgDYCB
+			L5MMiEzE8k8s8085FaarJQwCaEU0TsUpewg4irohv8VDtBZjAQhS
+			OpqggS9IAAe0rzPwgTqBfkmiQA1DAEXhaZc6NLI0XwioBIBouofA
+			j0VLAAipdpsS8RYq8iRYwLxzoqjBXAq5xEUQ3cmcdYrqfglT8qf7
+			OqWYxzwyDEcCVLKjtZ2oz6NJ2C6AniR6cjvhu6aJk7zTsbziVzNK
+			Ti7lGKS5m5rBfgkIgUf66EqMTpkDG7SULLsbQ6WKYLKrDAk4kqaI
+			nZyCNjip0TLwxCdY3b7wrBshZD4pYwAkf5zMgoqEmb6CHD6CexuS
+			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
+			8IKgsKwrp0JbkI73qMpbJbiJp2x2qXxSkGp1cJZbyhJ0RcjTyyEG
+			idcFheyx5fJjyI4nCWp3YiJHMaSKgrphxPpf54yIZ5AqBz6ccYyJ
+			xxSIRxguJlYyURpDgxwtIsicCcJwAhZmBzACAB5PQtYyR+CVrdyQ
+			wAogkgZVACcgYwgBxPQDwEKCCB4EwtQBZTZfCDEb8ZwmhG4fbkAz
+			jnYuMdRYRBQmIlAoByopJlhXyrIySHrAgZIZQZg6IZgZoAAc6GTu
+			IeCzAfBxRbhaSIyI6LsFyNcX6Wpbp0LWA8RgRc8GUYsYQjyZSSqE
+			Zzin0ZB0rWEeBx0KCdBzpN0I4ngqyfi48LxF4uiq5dZzZ3hZR7Ra
+			aXiOpag8jWwnsf8XSP6xghEah+BUCPY8kJKsxZ5KRlggpy6TciZm
+			UNkcRXwcocTAgcocy7QdYdhRsoSqyq5ZyR6b5qaR6WRzh0hZMSTT
+			53zdZhCJ53L+yRiDApCZR2J4gosFqOAqJMBHJbZ8KKIuqhAlIq53
+			p3qs6QbW8z5FgixGiayuBwQnZj0qpYSdMETdJj0KR0S5Ma6JSfrd
+			Kj6e5zxg7ThhReZ2K5UaaKzT6uCSESKj65Rk5ZaO7SSiMdKj8b8H
+			kab5L4pfxkqI51sj6MR0507fMdRzpgieyd8Yp0qXkL74pMAAYlSa
+			5c5HZkQkKv5wJdkrYhMk4Ao3RwQA0hR3pYQoJB81zWxrpXwjAixr
+			qV6wCQw1pmSp6rymAiAcwbpB9GY3U5oCwDZXwDQEK3gCAkIDYEoy
+			wCQoc4JX0jsNzWojprYiwcQbQiAXYUooYeAdg4qFDxVK6Q4iwHAJ
+			AyQHAIxzABQBwi1MQkrdx44uTFzZCMokoeSu5prchvQbY3QXIUkV
+			YeAmICwDhzDlq3ggYAAEgGIkIEgGBFFI84h3oArSCFSCwbwaokoX
+			4VQvVRwvqroC4DhVABdMY3YDQiwHwKQiwBhDiOCL7Y4pL8RYwcYd
+			ovQdwepB4W4Zjyge4bBPQAQeYtMtoAIeykYe4Bg04c4DwcQiJICf
+			RGQf5XwAwfxXwAYe4hACAaoCghLFjq4fj5omgBol4AVbLA9bQ8jG
+			BKQd5KrBIr8/EaQf6EFc88kLCfpQAf0WAn85jesqBj44j5YrzFBF
+			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
+			Plmtm1m9nFnNnVndnlntn1n9oFoNoVodoloto1o9pFpNpVpdplpt
+			p1p7M4LILIMABRxweoBAd4d4dgLkaYHYpABgfMIIDaV4foCsEAfo
+			BgfgCQfllYBrUwAkBIAYe7CLWh6wfoBYrYfgBBAbSoh5D7WIlpQo
+			wFk4vAfJCx0xHoplfJEAp7YTaZ8CdZ0BYVk1TzXkDRiRUZJJ5NKY
+			r6XIvFKZZyUyySc4e4eKaqxiN6GIqohxeolqrarpAAq4e5Nc9lAB
+			A8Op06gBmBfoj7AqkyNBngBABa7dVAlyswDAEAugDgERCVY4AAcQ
+			bQlQb4aotUVRNL5wvi44h4CICggarAukvh0os0gp+db4+yPohwe4
+			eUXAegxBzAvFIQmzYLYQ56WY74loBwCpuMbN94fAey2wnwl4loDw
+			Ewg6AQsqh6ah8Aijage4kQEQFwgYi4nQfAegyBAtTAkQ1KGQewuI
+			C4loE4GQgYCIC4hbnoh4ChRKs7oTJLr4AAWzsS1TsshZCYslCUG4
+			DAnQIQLAloCkI7uuFlFyd4codFbgawkQaQZYkwdIciGQdSReJ5KQ
+			A6owD6igeYEZr4f4A0gNGY3xTCxoeJpwCIeRp1gAnwd4p4eDChDT
+			Fz64qQCyxQCYxApTU4eqroew3g4IfVNwjIeA4Mzy24nQmRCTHB57
+			Ap3BmhUja5E5FQBT2ArIBlb4EAt1kArJ6ZTQo5VYAge68YeIu4A0
+			Hghge5FQ+AhhbofACItQeIEpxAfACTHsy1zaccb53AiooYArxwAA
+			DAdaSgBAexuJuYvAdopbXJKTx40QE4dUA5G708EDCBWIhwAgfoAo
+			fbWOXBGxgx6ZRxgxARiJ99GGLqXB2KWgsy5Ag7Sq8xC6D7ZyqYA0
+			FqiFIhX4Bss0TIBhQwB6DiCAAZcIfbBpKTAoD0T4xrQIBVPwplEZ
+			k4yAfgdxMgeQcSEwdIbwhYdAcxdgc+i4k4dT+QdodpdhxyJqYJTx
+			3kOxkLEc/h9L3J78gahFGUgBk6J0AB1kDrdikhoSXh7M6GnGl75h
+			6xPJijzBjCM5nSY7D59t3lkyLagqf6XJh91liIBxtoxoDCEwFxqA
+			AAIwJII8TmqorIfrw7jkLqqK9CNYpVLZwosF0NBx5IkA8gcIbobQ
+			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
+			rqpycw1bHwkavyeCdjaUKSvsfSjaj6molKda+glRCqjyuUcxEpCy
+			Ygy5bDoKY5EMiQ9626lCcseKKCZ6J8migagCTpvgtInzksXiow9c
+			gapRDMhymZhCZyzo9iZaFr5qDkeqlkqJD0gygheo9TYSsSgyKCHh
+			cBKUnIlcgklSdquLEbnzIQn44MWSYRgCFgqh7JCgfxK44JvyJisy
+			gS5RVgfpkiHavJ3Z3AfAAKVBbYe0wQeYBAdwf4djPgfYCKQZVgC7
+			U4gUeiwEu6YIAgiAeIA7JAdwBqG8HpvUUhHYpwgoCgfY6YA5aQlL
+			qJ4wdwphHkIYiAeYDEIQA4tQfIAi0hKK0g4IkYCAeJugCAeRuhgJ
+			4sWBbBg4fIBQ8Ifix5FMzJqwBoigEYDLxYCYAJlAB4eBugfkwUes
+			tT+E3ED6WAtR+wgoCoDpmBmR9y8x96j4kZsQjAc4bsZaWslIljCk
+			CwkYGwJaH5p4BIlABABg8znww4eLRoAAXYUIiAcgbKUQyoeYeAnx
+			x4nwEQFwqYKYODD4C54pN4fIewlgZgXYnwZoXQtQsw9ikSlwB4Cg
+			hgIwL4ggDwE9AxNz98aAmQnoAAYgWRs4XgU5jx4b1IJg+puSErPB
+			PNEAjAdQcYjAXgUJjQd4dInweAdy0gd4dg8IpYhgHgKCJAHwKKJB
+			689yqynhKyiStBM4boaAigVgRZtdKUFTLsjAA5uwGIIgj4GRVUCg
+			kYd4dUgidwgojTP5aaj7LkNrBQiIcAnwZIWglgdIdArwdodgigcI
+			ahjxbKHoCEDABwghXIjAfAA5jQfABA8LYA1ScKTihoAZiwBYfbxc
+			3wn6ChvcaSgsfajyloAICIoICDngzCtSl0eYoLJrpo9jZSr5j6Jg
+			fodQ9Zd53ZUiFQlSryYU5wfQfaIhEKHao6mIa6vwfIBCK4L4b4bY
+			aQbMVNc9dFdNdVdddldtd1d9eFeNeVedelete0U4G4HIH4Ho0gAo
+			DDegJwd4dwd4HQtjm5coj4mDxy2Q9blUoyz7j9aKvKdZDi5Md5qz
+			0oAYBcgQehXi7keoBhXk2Af63SV4CA8IfNk5HCp8eomK3CEQebxZ
+			vYoYeZeBHaMQe4obFCZYtABs2YFJxQf0JxgwjE5YikcACrtIAACg
+			Bwj4IIFQDAAAIUUCzim4gsXT+QaIqYfTFA2wigYoWyCgegeItQEY
+			FxkgJALqJAEbxpDctCaSnhhBq5NrTQnwWQSy0gcAay4AyoxQrx0o
+			jACIDArYLAOw+pmIglMZOKa50shlKVEoXa0gYQV5gtxQGoIrxYHo
+			KUK5uy6idhNyxIis77yoZIWpfgZAWi/saolh86H4CYDBkg0wggEw
+			GgkYEAFwrZqkdC8A2QdohgeoeAhjFwlgeNP4AAZIW6/ry4n0XyCI
+			dQiAAlYg+4ggJgMZujGaeiiVDwoY3IiAZYXbJEYCkQrZVgqccx0o
+			zDz6SpZtUC/qW1Aolqv4xIe4tQeIeA8M8qj4hgBwB7xYworcW8wy
+			DK8KZbaq1xGRDMHyLhfgfqws6DRYA5xQfQA03spwBofgz63QqbkA
+			hM16HsKwlxgCz6hofgAwr04KG4d4C6Cixy4ccphBHSIj0wcBpQCI
+			cNqM4wlwBaYgATxYQAa4YAZYQde+IhSgN4ABpQrYIAloFqFyNAhk
+			2DhIAwAgkYJgGIDgAAEAChywFoDiEoCIBcUmIuMeMmMrhcValyrg
+			y0qrppehaKTaYqfwyxc91cH8Xca6Ty0UaRrKVePoioe8Y5Fby8Zb
+			zCW0Z6XMaSUF5kayYBnsbQgt5tYErxhBmcb8lqfMcKsCnclGNTrk
+			ckNbrZOse8cCnMm2TJNV3ZNg9tDyakeKc6iY98KSi0fydrjkiYw9
+			hxHihGOdQElduKr0b0ilZEoqrqhmXS9WTUkMi2WmWUjaeI/Mkyjz
+			j8j8+EkLEZ+CkGWyc+TmYONahwtEGSFpV5DKfCFwlTnam5dZDaum
+			bb50BafuN4tFa6ouckoCoSa8hMhOY9lyhmWww6uSSEtKuir6nFq0
+			hihOfkrMgsquYBu+d43woA90sUBahyzrbSlas6lEtAoaThgJ7xdi
+			KQ9SHZLyvKtyxxK4nxUhLSkSfhE7LqBqesv4AIfFxqA7coey0geo
+			A14IdszIA4e4CwCAA4BYBIBwvoAIqq265YAMZ0zDMwBRjwdwCgnR
+			WBvVkscEDAjIfRuk1SH4AU3JigdsSwlofYBIrweADiCk2SVs3SVo
+			AM3pLRpYd7uYdw6cvwl01VlZHAjAeoBhgsvlFGr4ioBhxQDQCopg
+			EABA5AFYfIERFIe8Li5dwEXj3AdhfIeIiABQB4hgHoKgglwQgp8U
+			qYw4cYbAnwYYVxsm0yETKoAADwEwj7PokYEQF4goDsSQklFVFWVI
+			lodwdAnwVARZgobwaJ+oBAkYEoFqJF6IrYC4D4hgHQKAhgvW3hM0
+			YYYIVq/oYG7IgS+4AAIoK45Asw+AvYAAE4G4goCQC+6pMr94cIa4
+			rz2wtQeYdwnweezDwIYi/p9grYGlzDtoKBlFJBOGPE1pkD3AdItQ
+			XQUK/p5h14fAstaxtgrYGQIYpgHYJtzmVhNsEgfYfGOQAAb4aIig
+			VQRcNAeAdQnx64j4BYBi1wk8/gJYj8/u2NjZPs+m04VotRjAtQcg
+			cBs43JflVQBIC/F4Cwj4fq34AAeQBps4eACJtcudQBNkIi1wCQe0
+			O4AZYEX5dYbR4pjWhWcZEtFZq2hdh2cac5L0OKeq1oq2KidC7Zvw
+			eweC0gf6UQBXFsxABQBQekfh8B71VgmCtCFRUgdCtxx4ewewDEfA
+			WwbgbAZ6NGM3SXSfSnSvS3S/THTPTXTfTnTvT3T5MwHoIQI4Njao
+			EAfIfAfIBwdQdYdYJItgfgCpV68srAw7ehXBeogbkBarx2UxEdFY
+			AZuwAe1qSeQAn990cAf3WQn79aDHJewnJYBdTCwBNllyHi36H81S
+			1wAYex4obwl4cZEZZJigCZkgAoCA9KBwfQBTsAEDdcQQjAHIEqFH
+			eSFADQCCH/e4pmbYlomYhjQxkkaogoc4cBjQYAV5td5ZpYC4qYF4
+			HLxbOuWQqyORUjaoqoAG0VQJikS2oo/uKN+NNK5gdYnwWgTVSoa6
+			4BvR05jQfsbL0wCorYJYMg+rOpkikAkBaFz/nS+mhjn8Lg9YeAdI
+			xgXY8IYoWC/r0gkYF4HyH4G4JbxZzB+A9Iq75u9g6gyYjFRo8N1G
+			nLq4BwCIqYzRkm2QAAFoH12YGxzQCVGpNOPiCIc4lgYQVQrzRgjC
+			AI7wbw8J0A+wEYggLYPQz91/tgw6TK0T/sbo2YgocQaYrdrghgdg
+			dAigZ4YcNAewegtQCACa1wEAE6JD061x64jADYFAgoBzQTyzNAAA
+			cQbFq/1LDAnLRcaRDQiAzBC6MStGjhg4e7dJFNVkHAtAAxGsPpDn
+			FnMp7YBhkQdplDjq26ZKrRvYA+E4CsNGFWFjlJMxHSyyHYrOGQB4
+			cI6YCH74lNY9jQAISYAoBIAYQgaQYYYtWfUH+BNAMQoiESNIgQAA
+			GqFoRpDpywgAAgUDgkFg0HhEJhULhkNggFAYCABBFQYAAdCYKAA4
+			EYVAAVBoIh0jkklk0nlEplUrlktl0vmExmUzmk1m03nE5gr/gYBf
+			88nkHoL+gk/AE+AMCoz+odEAD6fFAob9oj7fM8ervfoAfr8nj6q4
+			Aeryrb2eVEe7zoj2tQAfFRAD5fFEebvnj0d9Efj7nl7rFkAD0wFW
+			pNdnj7fVEf1OxFKpwAf9JnlJAESnsJxcOAIBy09zlCguLoMLoEzp
+			Ono+Vy8Fymbymrg+v18uAefhObgW412VAUSzYD3nA3un2263EEft
+			dpVS3OQAFMye31MK0dFoL9o3OpUDf+P7k8AW42vAAflyoDAgAAgE
+			8nrAHl4Xm+Hv829iUR4GbiXDgW93j9v87Lpu6x7CuSAB+H6fauKo
+			o7cQI56gp+8ABPyz7dwc6bctbDbZsgozuoEpjFKMrp+OefytqoxT
+			Mwg6CDJ8y8MIRGL9ucycPMrB7PObHLsspCcNOs7MJtHATIMlG7Ip
+			9CTcxDH6mP48L+ss/zYw+fzjq4pgAr3LJ8n20TFqo7p+NEfYCgMA
+			h+AcB4EgEAqIH+3rugE9IDNSiSeOSAIByyyEUoEex+H0fRznyBx6
+			hC8wHgMAICgQ8LPnuoB7IEfgCn0AB0A0cS40S54EK2o6gsoBR8JE
+			ChzIsA4AgSo5+vufACyQoh9AWfAAHUEZyQQBMFzmojsK3Nc8Aadw
+			JAAB51o8AR+OAyLJgSxU1sCCp3gAfYDnzBABwWegDHiAAD1aAAPA
+			LZIXgCEgAAaACRW8iR7HjFk9wafJ7q2BYIKSHYpOACQNIEA83oSb
+			5qQWVxIVyd51KIBwIvSEYW1eBgIOAEIXIEDgUKIBQHRy76eUC59R
+			nedKtlQRR5AAbxpwWCAKTwEgW3cCAKgOAAJg0ngXiGreP5Chy2K2
+			XZT5Zo1xASBbgC6OwLgAEgX1fQiBAUB9iTwlJ7noohjlnSxnl9bh
+			4nYrYHgnPAGAdWgHgoiQfCtPAJg2pOCM6kx7nqpJ3nI4B6XoABmF
+			8eAAGwZmWHweyiBSGgFgAFAaAYAAGAiiQKA0iQKg8iQCALoSGnOb
+			0TnAaNNHmdyiHidsFmcXp5qfSiLhLyYNhNx4EgYiQRhk4ASBkiQC
+			3KhEDqfSyuH4pKoK2eB1wW5KeHacyiGgYCtnoeETnmeFcnj7kIty
+			C+Rgm3L/HmBtxHiCPCn8ATvJKA59JECp6agAh9PSsU9Gwyx8ySVt
+			kZ2krpBQSicxZRDUAHAMng8KAD7nsQc8pQo/x5jxHokwn6+wHD2A
+			aBACA7D0gFHqc4AiEwCGfH0uQA43zygEcWckA48ntg2GyNUZrUCd
+			Q5h1DuHkPYfQ/iBEGIUQ4iRFiNEeJESYlRLiZE2J0T4oRRilFOKk
+			VYrRXixFmLUW4uEjCqF4MwDB4DyHeAweg7B5hvT2CNQo+wFDqHUO
+			gGw+46AQH+VQApnUgoPTipk4aWTNjzH+Acf4xh7AVHqC0fwCh+AW
+			SzItaJwiBALHq5MAYCzTvtPePU9IAh5K0T6UoBZQAHGKT8WIBrLB
+			6gNdhI9bIBEFnbIKqM55pzIrjH8q8A4/YGD7OAy0yQ4zTv+XGA1n
+			IBwHNaZyXFU4AB4AlHQAAAoDSthABUBkic1wAALAOekBQBT0miZK
+			TyPoAB2DlTw1UAA5hvLcF+KtwpdV9AOPSB4EarwDAHeCo6bYDYHt
+			2AQUkBwFiJAGYK1cogFAPFEAWA8pxxkcFJdWUQXQolNDkG0iorwA
+			B3DnHuU8fDQJ/AABkEACIAAKAZVoAYjTUQZFJaDNJrQAQCFESsoQ
+			u47laFWIEPEdZWxcCiHcAAdY5UTnlKSB0E5ImJkaYs5oDxAgMgiI
+			EARrRKF8FEGqMRE41RioLHwPUnkZFuPbW4AegIAAfhVAgAAFYO08
+			Nul+ScqxPBuDOKIOIapPGylbe3V0ZY9D301AABoEatAth5raBMDD
+			+TKHoJNT4gQ2xlESHy8cdI5KPjGFuOksRgAJAXZyDIHxFgEgKPS3
+			QgQJAZlbbo3yzzLRnkSHeOgpI8h3ILnYrkdY6luFEL65+WpQzJKa
+			REZJBpZlcj9H0ic3c+U8G/gicFIRuD+IZKLMs1SCAEKaHiBYdkzg
+			NWeH8ASWhBgBj9PSAsfQDl2j5AeZWXx6hzKvAJfUyMmgBgNACHsa
+			4zRjiHi7gPAmBSDhVAAq8DgAJsECBwc8AAmDUrudBgYgxECkg9BM
+			1ADYEiNA8BOBYAAFwHKvwtifFGKcVYrxYTc0aTIBE7REdZUiQGRl
+			NIEVA5iKCqlhHqO6jRX8fGALMWstpbCiL4J4XIuhdjAjwL0XxBGU
+			ixvXMHMQwy2TEooIEY1QB3EkkDSmc2WRqTMkNP0axLRCpxEMNKTI
+			1BqDOo5Nbms1Jsicm1bwhtGBxDiIWKSfbMmcTppaZGg3N6Azqmsz
+			ubNDx1dIIfgCdwg0eyjZ6uofPTR7j1ydPkeY9h+T/H4P/qXQSGD/
+			G7zSaXVhTkUonQSVuOimpxG7SCdm4B9JO6FzxqpLRr9E63SeUxCK
+			9oDGZgPsWARm8XowQ7LI4+zTV6qM8kDPl1Tlo40ppJkSREPnORik
+			rSRpdmITMUyVJJxyIpU2elbMqIqbJBOSlkrpTFCj+H5vlEyJkKgD
+			HymlbwEsPOeTUUiO6FR/x5Ukk1PqtDvgALU8kbqiB5KLNqBI8IAw
+			GJMAEP8e1+bBIIUyAAdIHhwFPAhCMf0u9tqmHoq8Cw32BAKHfhSE
+			pR913lK2OwD00R4AavCPsBKmoQnqH+ekAY+E8ALWQ5QdAFL5ESH8
+			8eO6e72AAHeClXo+gI8qACVUAK3OvlJAwAldwMQCglAABYArkx9W
+			xHKNxXJ2QMgfTwBgD0xwFFEBQDsogEcGkMG4M9bgpxE2CHeOcrYE
+			bRAABeDmtoDAJHAA/IrBgJWPLuITXXkg4DgD5hGACvoAJ3ridEgs
+			CIFk8AgBU5MCXqgAMBJ4C0H5W+zIiVGPsfBEssj1HiTweZgB3jrq
+			7IZwQvbBVoIkEYLSyQOAjJEBIDBEgDgMJ4545ZAsslFO5sRxRRBm
+			C3o+MoXNH/dE8AmBf6PjQIUEAADUJhwPUlJANWlI+fSDVhKSOwcZ
+			6V5iiBnhhHChrBlHCiwCiAdgmKTgdgmqTgFgGjgKWCtvqkKCVBvh
+			pFNBbBMPEB0FhEDh4B3FuKrCBAYAeq2gYAfqTgEHdAAAIAMCtgIA
+			Mitj0HQMdOSBuv/B5CkrMluBlBdB2jAh4kTirCth4h3rjCBgKgMH
+			cAIoGAEikh0AGwgByAGB1EEH3DngBCtn2qHiVAEh7iNALh1GBACN
+			/jIB2jKB3ikh/MpB/lppJrgEgABigLCFSEEEDo9pNADulDKlnvtG
+			RlcrsCuith7h7O5igAEgHgFOhAGAGB4w5gCh7EajJjwi+qrABpoj
+			KiwujlCh8APBshqBlgOsWxSRSxTRTxURUxVRVxWRWxXRXxYRYxZR
+			ZxaRaxbRboigpgsgwAQB6qwgMh4B1B3gskRo2B8h+AEh1B1h0AXh
+			8h8h9AJCfjFB9kTsvj7B/IPAHh6D1gCimADB/jBARh2hih5gLh5A
+			apeB9gNh9jkxvuxkNM6qqh9G2h4KTgIB1nyFnE9MpFssxPtAHkTh
+			+yADIDLDOFSihiBh5iJB+Rjrjijh9j9h9DKDHh8DKJiCuF7CtkzF
+			RkYh+gDkTgEGQCLgYFaAJgGCRAMAIHHsxjSiwLflRifjgB9B7mcl
+			CCkvfEThuhplLEUiJHcjgAMgNGcnPHOrhAFGmDziBHhCJGPnglyq
+			DCtgGALEFgNASNADeENiJB0BwCthohgiiB0BvsgqOB0lcvdQJmCg
+			UAZr3AKAMGcgEHHgAASgaikgHiPEnDKubsZt8G+Bzj0yGCJHmkTh
+			hhYnCh3B0rnDcATAYL3AGAHj0gGuMAAANgTieAQgWylHhq6B9CeB
+			xBqCkhwq9gAGiAABuBqHChthpnCwRgAAiArq2ghgsqTgFQICUssh
+			5h2CJHUF5PfvjnYBphjoRioCiAMAQE8Apg1uoAKANjyACieAEgHK
+			jn8iGKcCxB4w1inBwBqlNBYhLTDB0kFgLAOGcgcgkCPKGj0gHAKC
+			eTKETy7CBGuCBPEiki2CBI4FNByhvkThphmoRxnrgQ/CkDLh/pYk
+			kEIith6h9lLEzEFoGsEgBCNISj0h/piOOjfNfijuHNGDnrhLth+H
+			4uIAKKhh5ALrw0PwkCDKalaFcL3AGh8KTgBB8OkB2k8RMADjFABB
+			gADGmA+BqBnhhhjxcUhRWBADVFxLtAdjUhRCBqTiiCRMKsLACEpg
+			ZAQHySUlXgjgWmBANgIqW0h0v0wUw0xIksXkQCESEOH0BNvtiMuM
+			tLgEJNiPOTcSxwDrPi1siMjmui4h7iiHFC7soMnsoi+pYixiiMqs
+			tPtKNlCt4MuzOMvkPt0tvjYNKsZMyDpDUIfs7GQtHDOs9iCNHVLV
+			LUoHQEg1PiD0HLsN3NnR4kPM/M+VMMZM2kQP71YVJtntCkB1KN4N
+			FjtjXkbNSN+j6DgNOj1D3D0D0tQijj/VktBDejhELt1jOULkeoBE
+			XkIICN8w7tYEDpxVStgEPEXj2D0tfVXR4EfNstuVrEiE9lAkyEsD
+			pEeDplJCdijEZtpsxDjjjNt1cDYEjV/VS0zNxWANikcGRlAigExD
+			ln2kYjbErWG19NJDJWDL8igDkjsDMh+C3h9QhEzCrimB7pwABB7V
+			jh7wHp9JwNwgBUG2FjNnknPgDnhABgQjhoTjNh6jwgDBuOElME5h
+			+gIB+gEB8ARkRO9rBISh6Dwh+uRh4AOBzlsgGFch/ACxqxuj+iBA
+			EB7FXgKBvJsQyuHCg2VOpACith3AOwrB4gNKhh9gDFNTnFaUVD3h
+			8k8AEh2r3AFB1lkx9DnyKlACvoNgAB5ARLPB8gIrBIAkF0GpbpMC
+			RAOB+ANgAARgHq2gCqdAABzhtkFjXvnmcrDE8PUjgAQAYlNT3iGh
+			tvCAABShCGWB3QOmdS3KSAflkgGmIiLgWCtgPAVkTk0nQT4gABqh
+			hDgB5Q0OICtHDHEJnHnQWgKlaPWHHv2laAIiLAAAWAeitgEAFKxh
+			2laB7B3jgB6uQhsBloRhsBnFLB8U9XvkTix3MjKIOk8SlgAIFikg
+			TgZncSkU6h4B2HnqNuqi3EwDnqNqfHVGUVJHcpvAGlaOEAAATgaS
+			mL41JCmIAV6jjEbMupYh9B6PPnZByhulchzBxWokzXpgcnHgWgdL
+			3HciJP2iiPsVlPcNFszo6LgNiBzhukThiBVqPi8FhDMl8ETzWAWg
+			dq2gWAdL4uzCkzoETgFAI0GjakrjCFNhujgB+h8jgB0YQAABiBar
+			wycEtiti5FuErANgQL4gMAPr3ACgFLb0RJzAJLwhwB4HYB6yGk51
+			eCTgEh6nHgMh0MFgCFZjIHCjIFxMyz1jIAJLgOb2pIAAEETjSkst
+			WD3h7oQh3GcgB5JDnh84vh2FNX+1Q1XnPE5k02WElikNmIMCqNEC
+			f1pOhFyB0hqhpBkgT0x5Z5aZa5bZb5cZc5dZd5eZe5fZf5gZg5bg
+			STFgGxqB+gckRgfkHLRE1AWEHAJADE4jBB5XAt8k2Nbt8xpCiD4E
+			2AHAGh1tOkwpGJPARh4rNAHB6AUB8Q9gJNYEb1LVeH7laAHB4L4g
+			Hh2W8yIDIC4B/qPqqjJAGrgAICnVOqH00AAh5DfRHvtClQ21HDtD
+			ODKDLDSl8FuCoNaDMtTjPj+HPIQj3ZVJpFRCxB6pWtiDek70djeE
+			DCeLlNuD+FySrk4k7pwLpkKiBLTrHYLFNB6T6h9KeaPMEgEr7aam
+			0Gc3vjCr5t8C9ZMnkKbYnPlD1LhabllAKjgHhCkgPgUjgRqEFtkm
+			SF5w1h+ikrLiiBwhskFsitSgOAQnHy4D03riBHeD0rDNAw56nEEY
+			RDt6QkgioTAhzv9m/U9iiBzhxHYBvhrFxE0iBAdgnr4gdAmYjAGD
+			gVZL0LHMbDCh8iJKw3vHAhlheHYBohhnYKssRgOk8AmgyCPGbzmi
+			eAGAJkF4Wy4VPCRhunTAABUBEnYGTziTjAAAhArHyIOjgADgFziA
+			SEFv6vtU2Rqx2CthuBxFuBzhwiBBiBpqhraiiAChzlXgBpOZPkeB
+			/ADETufwgB9lcDKh+jgAGh6KTlMplk/7vH8nkyHMIVdQ2JfkJa7h
+			9gJFLB/gDQ400CuJbDCyPlxh80npfE52Rj3h52pjcA/hrhphjMBZ
+			hcLIng3gAAeD33UCBlkiiHJ0oMDCIikgWgOKTgLgHiRAmAYsFgOg
+			JS48L8ZcZ8aMCUytE1KjvSDuHkuEUDDstkiU4h8i6GzHkMc8hrPi
+			y08C109MlC3OP1AuIVAC/CuMqCz07VEHkCvrjYY1HMz6QjrM8Mys
+			wiR1WkhIeVNNGDZEtM5jQM7DYVRiE1S1bEqJf181a14c1Eac8N4E
+			C19tCUNiGV7V6PsjQDfEdD4nOrIViVjppVjNOD6j/Vg0HNTtUkpk
+			ZtHiB6vjMjktYEE68kFkEkSU31Ws7DR1kjd1UDdDU8cZ4DtNhWDN
+			c8+tlVP2GEdjiVbtpEg15teVYNqdcOW19sY2+jnNiV/NxsYtvEXk
+			gERkIoDnilARKysLsV8yCyJjJjur8kyU2IDivCvh6xDB0oDh9R9j
+			2ABcHZp6JSIDekwisCfgBU+N8B7XrgCgIm3ADAhk7ABHdEK2QABA
+			D7AOOjsAAlYlbh5gPryh/aBB6Q3DAtUigaRj3inS9AGxqxvs7j3l
+			YsalBNAh0JftiB8gMPzAKlub/inRtij7vgA59gBh4lX+V87DTqrn
+			8i9FsgBFuB7AJlxZUFsyGLsUpFaSVL3APgJTG25JnBzCtjXgEMTL
+			TngiRKSAjJvI7CC8SLsO4kThehTFLCzCeSjj0gPgTiNSmiLgUmNg
+			UCkgBuHbik9qN3ziBBshkjgHUSbh4it7EIRntkFgHgJFaARAXa3A
+			FCJKBiBASrW34+oB92QMnjgB7h5CeTgKPhqBkThckN8QtkG1PjzD
+			dgFgHSgAOlXzaD0nFCth1hz3ER2cqieG9JY16vuENP6wIgDloCgr
+			LlcgCsTDsiutaCjV5kKpQDW9JEY6QwbQbDsgD/BF3/kq0CkgMu8/
+			lEAFLspEUieB8F8uIB4luF8NZLjB6MgU2qkNTYnGY56G0syDklNa
+			utuEMdmCBbOYAfBvJgABwBrrBCwYJFLkFdpgKgNCAAsABYNA0AAc
+			FAIAP0LPcAPYJPQAN53vIAPF9PsAPgBvgAAGPx9+QoAv+QAB/SeN
+			AAAP+WAd8AcABF1hIAAN9gSWPiQAF8yCXS5+BSVhCggWXP4EvyWg
+			KgyWFy2WVABvedAd3gib1aFvZ/AB9OeNP9+S4A2ebgOFSGWAKdSY
+			Cx+0WiTUCWSx/v1+05/y4BAIAvoFYNvgUCgRmP6XAR9vt9LRrtNl
+			qS75XLZfMZnNZvOZ3PZ/QaHRaPSaXTafUanVavWa3Xa/YbHZbPab
+			Xbbfcbndbveb3fb/gcHhcPicXjcfkcnlcvmc3nc/ocgRCUXC57vh
+			7sF+Px+gO0AIB+G4x/AWgEAgDv6/2u8WSy1K6gF8AoIAlugMDgF9
+			vkGvcQnwBD+H8Ah+q0hQBrYj6XMqkqQH2nCPnyhQBHcnQBHU8b3n
+			8favn6famAAwEQgKkABAPBCzqCu4AgfBcFsDCZ9LXFx+rMfqTwXB
+			MZqk/aNH0e6NMUlwCgShQEgbBAFARJIGJ0BYGriv6hH4r54neeoA
+			O2l0PJAeZ2p0pqUH8r7GrGxUQrWAi1LkkC1SMBMoxEAgDJAAgCJ6
+			v6Nnwjx2nceMsn4jQBgIuIEAMBKbsOAE1QQ/C40GhS8pYfy9JbGr
+			LP2r8csrQ8LJPSkqngiTGxAk6SIOBUEJaoB/1OljwoUCAKAUAACg
+			NBE7JABQGQQtyQH67gAHmjAAQ+fUsw4lB/q/UC5IUAkTJuAKZPAh
+			VbQQAsTxDVQEVSAAKg4ta0H0fB+gAfNyxCk4GAhBAFgdRrvXOe6X
+			P2l1yK+chuocdJyI9ciXA+FFEA4ElESekgBpcBgIsW8dspAB4Kp1
+			Qc23lbqWTmr50HAphXkoeaLnXcwJgyuIYiABwAATXgAAgCyWBKGq
+			v5Yuy7r6jZ93MVxjnMABznElhyHPY59nahQDnKgQCHm8a5vHdSFg
+			OjR3hCddigcjwBn6nQGHiCFan0mQAxum54gNEJ9VUyscxckyWxlS
+			yTqgAKBVfTaWH5T6p7fLKpr3Fcb3MaWyAEMMDnMahpmBq7o8dx/I
+			OeOIABskJMLvmCXAyu72ci0TvJAEILIMCgGpkLAbhAAAQAqBnPdf
+			2HY9l2fadq20cpLFTMRck6W949qWq/MSWH0fVNLvSl6nyr56Hapk
+			PeIfHmHkr56nir57npcx7nqr583ojZ7Jceh4K+eZ3q/QMtveevqA
+			B9syWOhb3+LSfhMcpPhL73r2973ruCpGnJ6bB/hmizwFgQitNhU3
+			/O7QSZeBpm4CtsZwZ07xa08oMM9BMy0ETMQDL63iA0EC0QdMuhMz
+			UFW8QAgGm4tKuFCKLTUrWGKdmKJ2heupA6ayzkkgy3OEpIYQu+JY
+			P1ShKFKncXMXopkSoiELTHFAr8A0GIiggos8MC4DwMM2i4yz+YVr
+			LihCsqUW3/Iii3Bo9pZoStzJDG0tkQIGE9f/AovDN22whbdAEoMf
+			VNGKSFFyJDembxOhDIBcyCoplmh9GqNpUExx9UsjVGsekxvLJcdg
+			fA+Rzu+HyXgfRhwBjzPEPSHqMjASfWW90lo9S8j+HqAhJoEQHgUA
+			SEc9YDFqj5AOAQA48gAl/KYSVKhMAELmH4AwfQ/B8gjH8PZlcAwA
+			sKh6SdhRLAHkrPSVObhmB7IlHMqpM4/gJxLArIluY8UUDyUjIQfx
+			HIkTWLa64j54x/krH+PdDqkkPFMHyj8qRXwEAWbQAYCLXQFlxAM2
+			om5PFFqtAA9kpg9h5KlJcApJAAAGrtW2SAAqSy0kgiOWAfL6yhLJ
+			HeOxY6KQAAbBGwQEJWi5AAHWOchyZVivLAAPIdxLD9s3p9ImALFQ
+			ALdTwW0AhLgDgJeEVADoJStD4m/Tklw6RxEaHSOEjT6iFxiUmglX
+			aBl5LvJ0BQDBMl3oIUC+l6A/j3jxHcuYeY8ImvyH68ZLNOjK1LJ0
+			AYA6kUFvZIcXpF5LlDltmuShVjazLwVgCoFvM+EXwTUISADdMWVg
+			LQPFYlET6pFMHUOUjxjY/pTbwAZW6aFxUeWgTcAykYoj1HoRoeo8
+			5VIvXEgmFsdj4N+jvHFUxa1ZKIAcBIrVGCdARA0ggBwHCQDVHSn8
+			dg+yHD2MallS4Bh7KIAEg8liEiWDwVVIS7BLR4PyZwAMB5OgCAPQ
+			QgMr48AIjwIuBId6IR/qqAG8dtkZagAFH42gBY+SBYAbQAEeJaxq
+			njJ/Asv8BUzrKiug2CNuY3ELo+AgdysHjFfLffmEKYAABAG2NkZ4
+			0XbYpxVivFmLcXYvxhjHGWM8aY1xtjfHGOcdY7x5j3HxsQSAoBkD
+			4xQ/QpmOH4Fwxo+QEQHQar5Zxah/gHAMAUnJ4ZJVuL2suKZZx8AJ
+			AgAccgAgFtkHyAkfAIsAj8AcpsqFunf2KjfT6Io4igkOUmlN56wI
+			nw2hzCV3SK1TWtLc50z8EYKobXNPeKc1wJAiJkCAFLrgNgWK0BcE
+			JLgJgbYyTJ948CQD3HnqEeZLh3DqKYMcWxEnrP6LwpWIyC3hLFL8
+			mtI6CGBYFAQQqWpLASAzJAAhuyYyvkZLGzgaQwiPD2HiTofg+CdD
+			2HquYeLziH7TJCjtdRIADa7o1e4g+3h5DvI0BADCCAD5NTEuYeg9
+			CPKB0XrIfarIij7JcPBxo/K8TcAgBNRChEEV+YiBO9idIkEuHWOl
+			LBjlzGOfSlQhe9iwD4qVt0AFfitGG4DSABaTTyWwiLrNnHDKSRLP
+			eBACraFZIWvGPrho+qTlfHaOmT47x1yfq5XzcKj1VUbWeflWtr6i
+			kJAAB8FSiN0ks4EAABgEiFVuJcO0dGqRaEWHoPFc0W4YxcBACtBA
+			Tw2K0AiBZBEQx8M6AAPQfJTBRjDG8AAcA6SHDutsTcdDrgHDdbAA
+			YdqiJpk9tT3+iIEEsDvA+OmiID0sQtH4lFt4DB5gPo0Ogm12qZGZ
+			RwzeYKqy8X7LAA+aA/wCrmAIPZAw+1XEfcAYFhQAh9AEGAVMXxeB
+			xjYGSMYUOP/de7NeHMAAMy7iQKkBizoISQ2MxfFYDgEiBASAYTIL
+			oOwRAABG6P3n1/sfZ+1jd3DOIRW/b7AH8R8CU8HpIprWXI3pdpHX
+			E2RK+H3jyXM/CiI9HsSse/Jl8XaXyrCfQWQpM/ieqfcMcV+fo5ge
+			GWLAQiid8gKf2M4Ls++jqwm/Eg8v6ivAxAgiCiogejitWg28wjUM
+			y/CsascM2gukEiCNYogNGjqiogmjTBEVMRCt4eAt4LMjeO+TyUYU
+			WMMhkJ0MOLiTsVwAG54JI82PWLajo8ym7BwjuiGicWAmQO2SyiiO
+			2I0iMWYf0ZwWqt+jSLmJDCGznC/BEjDBK/Qzy/QhYgCs4jojmM8P
+			Ki0LmiAgRDom6iJAceCj0hFD2j+2JBMQUpmRCiMRqSEy0KY2JEMi
+			Eb5A6kYjKRwjAkqL62IJXCqMUlcMUHiHzE2HZBoRAAE2gMAHoLcA
+			IlMlSgupKWWfFFUf2HoMMIUAaAiAWA2ta3SAWoMr8AEAimmqIPkV
+			qVAMYAOHqAOHiBoH6K8AoxAKQMYVwQWKcJQAWeE88JwaQHoK0ACJ
+			GiKLuSwzyJQAQKSAcnQLuocI2LWbKH6K4zkLYAEAUQWTAiGruRAQ
+			XGOewHyIkJMoEAiJkAOAcoKW0AIfkAQH84CJuWEHaWOmYsK6YAfC
+			E4MS4RC0IREqIqMeAHuHuXMaA9CZwsuIEA4BCVoO2K+HYHOk+aAI
+			ce/C0baMsASAchu5AUAkTHmTOR+0WMwtQgKO44ej2m4RUPAJAAgA
+			iUQr8QQZYQQAuA44y6EAkAwJABIBoMWVUG2GeXMHCGsfM6wZEk+H
+			iHWfkLu3S3QSKTEemq27QAy0gAABQBqURKObQeyJcHUHCK+qkJcH
+			se0AAHGGymgH0p1BUgKsId8JcPCJAAmAuoU6AIQJABGBcK0lqIU2
+			qXMG+Gmk+XQeU/mfciGo2LjKKffKwLUJ6Xkki7SHkk/ClASMaj7C
+			W4uAMJ0i2L03YHiI8iqgYjYJYXYJlFiK0ASs0AAAmAwLiAiA2LiG
+			4HaIsro5qk2WQo8QAJuJyu+JOQqby1eiWHomgq+AIAkvY4IJQAIK
+			+HeAgp6HeAip7IGWY88NC9G5UH4bAAFIGRCw2JuGeVoAEwah6g+U
+			Aeesgi/PshoLimCjoQOTsRu82iGTG9Q+8LuBqHCHCGuGc+3QdQfQ
+			hQjQlQnQpQrQtQvQxQzQ1Q3Q5Q6xeBGBOBiD8UgDWyoAQG6MMAKH
+			aUoH6AYQ+H4AsLyH+dc6egYREUoO2AIHiHgHcAmMcH012PAH6AWP
+			qa4SWmvIHJyL4kkJaAYqEbwTaLwJOqEHkQXHlC2j6QWVUACPHHYg
+			wKEAEiWAEVKLaXETvBqhM6UlivxJeH85cJQXSLcJYBEBaZUA+BOd
+			cAkAoLiA2BQK+AyBGsMASJA2YIUHuHkQQHs1KAAGoGOmgG0GcIc6
+			u1cLxDQJQ4gHzSqPIJArJLQBqZUAS6IAkA2JABeCGJdJYg4MuHiH
+			UJYG4GaQQHzOqpqI8GmGOT+5mk/Dir8U8JAAcAiLiA0sxFiLiAkc
+			2+oBkJBWMMvUVDUfmJZULAUIUHoHeXMF4FOvoHYHLCwJWAiAqJkW
+			uAAAcAmJABsCSJkAiAuWebQWK7QeSfmJAHxFGI2HmIU30JYeyQRX
+			lXilcAAHYHMKYHcHQ0W/KjaREPAJYAUAcJAAa3BYQ6Co83UWWJcf
+			aI0qk5MJYtqKYtrCwUuMAQnYQhKWyYzTOTm2DLCA6BQK1K+UXXYX
+			YpEiMIuHaXMGgGCSxUVYIp9AQgqA8BQJ0CiDe7E7IWLZiGqHMp6u
+			iI8F8GuHQAAHVE0igJeHYVoAeG0AmIOHaVo8ERMRQXkHuAiIkHYB
+			Ak7a+IkM6AIHwbQA0G6+MASHiIM0BA+JaVUH+pkvyUm9GfevswwJ
+			WKgAMH2WpBou6AIEy74AanC2gGCGwF+GQGDQ9cexqDeAABcLuEAJ
+			CA4JCBiLuxExghKAiAUbQAfdAAADQCGBOAABOAwZVchdZdbdc92+
+			60DP084/AU2KC/LXfJpD0IWkSXtIMq2fopKIefcooe2/soi/wfA/
+			y/4JcrmfS4kWAfGHjekTIk/d4Xq4lAYq5AZAegog8gA++OCMA+Qw
+			mwvBSg0gag9fTVVBtBHfCjWg282M6iG0Osa0MMzCTDvBxNSiqPZD
+			dEEL/fIi9DeiGf882VgJuhwAKUHB7CAhwTUYpgZfyjRBUi4iHQIT
+			PNdLEWKshRfg4KY0ShEjMc4TyRzDim460TXBwwfP2gcbw2Iiev6j
+			YgLhZhGgkjgznhYQZDmhOiszizffowkbbDUkOeCkATPYmQSQ43mh
+			CJKWYRdRwjuiiqakWgpEWKA3pUqMULKS3YnOraIWWeuMUHSmYH4H
+			EWYI0ADTclEnURIHkTuAGHygu5cJcXoIUK8rcm+bIH0AsAsAqAUA
+			Or+MNkABM40BI82V4PBXqRC1LPYACHrbcBCL2H2AgHsAOHoBeH0A
+			WHqYaa2KaRUU1GeAKHqbQAaHRPWu8JMKTbybYnxHksS08IPgGH+2
+			gp8gwLuAMRAmuH/O4WKAUfkKgI4IcT/PGZwAeHmAiAAAeHpPXPaK
+			iqLYQAORIqKUVmkWw6AAwBAJ0owQRWoXMHGG3Mm/2UISMAbCPYoo
+			qI2HrhAZwAoA0JkAoAy08JPL2e2HsXMY4I8WHPxEcqKAZIa9SPBS
+			gmvN0infuMq6kKYe4e8/20SwiQWVsJAAwA6IFM3VCQQAqA1CEAKI
+			VXSJYBUB0V6VUGwGZMgGkXM3G5kHMI9W1NiLu5QbQVtUrYoHmtGW
+			SYKJkBoCIbAA6BMK0fIK+HAGroVeOrmKYGuGUItJQwcRFocfyy7Y
+			SzLgTYY6cAACSDDmSA4BMbQHaHLZoF+k+1EJdqWHUX8ifncJkZKW
+			oXkHy2wfwg6tyiKPepSn9Iu4u28AeAkbRCKS6vOAAG+GsT+H2XTP
+			8PIkFTkI+mugzoEUW08kq6CbQHorwQ+Lu9QRCAW7KbLkeLW5EU0r
+			vEWAIZaAGozl5jqAYIcHuAa9CqTbnjqATi+qAt+AI8a6YHwINPYJ
+			JUQRCG3XYvAH+qYJZG+VeQ7AJeijvTC9cIW9YPUyuSJY+wOQmUap
+			nguUlBNNQEAHEHEGwEDdfu7u9u/vBvDvFvHvJvLvNvPvRvTQ4BEB
+			MBcAxgCD7CGCk26AUG1kDRUO3Ran6AyL0H8AYJ6MUmILQnfIsAU3
+			GHcAoXQPmPCQQAaAcAYH8r8TpCg5djUiiiGeKWPNChKz9r4gUUlt
+			i+OTWLaJeKCAseEA2iXlyfeAM1YAFHvPZTQM7txmUa/mUvkI+3mW
+			KHcWOHqHUa082qe8kA0A87wAkLiBOBoJABABcIUAW8k4iUmcBL+H
+			q/6faXMG4GjEqjwSzAQfOK+GuGKWPraYzXYAeAmSTYWAAAoA4QQC
+			KDCVpXHfIMxWoJYHMG2IUXIJY2qWPQYZCHw2xVkSqHWKFNiXYJ0A
+			4BGIFMzzWA6JABQBwJAAr0cM8z40+QQR+JA2qKYFyFEp6HJnC4+A
+			AAUoSLSViAsIUCUDIUQAsA8QQ2FoPZ1z2HQLjsGJBz0WEp6p2HYJ
+			A6vKoGwI0G6GkIc30TqTAUgZWl0AAAyBCLiA4BKbQVy4mXNL2Q6U
+			uHgpUAAHgHUlULuAYAebQuQfmJcp4I0rnLISG4MhxsNqnZbNoMsU
+			r2SveRBVkjAhNA+62AKAUXMgyl8eImOSyAkIcG4HYT+T/esLWAKH
+			hNuGvmTFA7KVNfla9bBX8BJbIIiQUTbl54yVqHybQAqG9cxbcdcb
+			6WmKCsSU+6AWkJRk8IgvoH6ysb4H0AMl4GoKcJIQeC2HCFMGyGxv
+			V5+OWDcAABYUWAAD0KkA8KkBvDCxmd6AaASbQAcAULiDYCJdOBQA
+			zyh6B636566NNdi/HAu/C+97GeDykeJrtiT3jsHeaHdeAXu4ofeH
+			mK/eKI3ePoWXnrGfAfJea/6q5uM6vekeUS2UuuuTEpOfyf7w+zch
+			SM8gAt+NNAm2ymnAhEEf5hxhRDHhbf/DLgGi/ffMBfj1j8/9BTSb
+			Z9GMrfyQTf2gXf6gUkfTKbXBhRtECi5hZCTB4z8TsLilETRgih9f
+			uLoscpEiPv79DlBZimWibCoicMqwiMrgQm4LU7KjEmCVPNTCTL6g
+			WdxEhSyifEn7Dh6gait+tDgRWTykfP+qBhOgjfYbdEnJVD2q82JE
+			J9CjLYmP1IfJkq9EmIA/n4/wBBAA/oLBH/Bn+/oIAYPC4aAIpBgA
+			/YhEYW+Yq+n+AQC8YKAHy/ZM6ok8X4+3464RAoy+AGAgC8gGBgHN
+			gCA30BJA+Y+/3u/wFQoW/HsAgE/HyEQiEwQBgMBQGBASCA4BwSAw
+			0A5ACQCAgIAKpCQC/QK+AE9hK/QA+wg9AU8hY9gk8QfaH2BaI/wH
+			H4RQbI9QMAAc6AkAAG+wHFIy/wJFoI/H7CH7A8VH4KCYUCoZFAE9
+			QPFH6Aopp7I/NPBH8B7c+we+IOBdU+gFHHYCnTCYIEXQFQAEnQFg
+			BS9NIwBONNUYgDAcBQADQT0AOCtMIBRhQWEMa8HTqmqyXqAHu9IQ
+			BQNpgWD7GAsbF35CH4+oRIIIDQl0AZ3AABAMiADAQiDqogfagAAb
+			RoHoAB5ne1QCAI00AtMAYCwkA6IAcCbqAU5rEgAE4aoIBAGNREwA
+			Hod6EGgYB9gAbZnLcfB6oQeZ4NUfZ9LcBgJMaIgrRKDQRsLCCKAP
+			EriveAsMAABgHs+ABxmw0xzG4ih7HoghumkeYAG4acFqkiAYB/Eo
+			Hw2xSxoOADVH8fy3AeCjoA8ErCgQBbRnoeCCHIbCEHseSEG8ax7S
+			ibVCxmhCtMaBCtsU6DkgUigEgWh7jgOBCKHkdiEAdHoACGLQHgAD
+			IRugdxzIIaBfI4es9vIeq3HKb7xsuigMA+BNSBBXQBq8g83Vg+qM
+			gJXwALCiiVoId51n0AB8Hst0lrGBwIugqqIHidrZGyZx3gAfSSyS
+			0ylIyALWWDNy3Tcgh9RzYCHpAAADgLXT3MahaKIQ018tAiB/tVY9
+			5X+/oC2Ggibsam7jvef7PILh7MoO0aCqKg6z2OfyM40ih8IgAJ0v
+			efiMowih9X/ix9g42R+A62R/AIhB7gBQp9HvZyMgABB+AWcLaAMc
+			YEneBhugWdAGBOioQpMfwCnyfR9AhfKaXkpTG3k4qaHzNx/EIbxv
+			GoQkT7Hsmy7Ns+0bTtW17Ztu3bfuG47lue6bru277xvO9b3vm+79
+			v/AcDwXB8JwvDcPxHE8VxfGcbx3H8hyPJcnynK8ty/MczzXN8WFQ
+			XBuNqlAENM36ayh9gVrgCvQA09rcBrTgNfKF3PfuAXCAubHuBaVn
+			1CyaYKvlfXImc1s1jc1n2AVnLctyQIgmb2uOgqIKKx+P2Oih7+vI
+			yHhQhAAAW+QDNUeYDnkAB5AQkS/fBt4BNKAAIHgxII/oxXlOKd63
+			HicmZr9AuBx2AGANuwAUA0xoLQfFjBKDI0x+Hpt6PKQgcQ1jVC0E
+			weMeI6SXkmJIPhmYBkOgAA2nUAAWA8AUOCBlNTZ03mTZOvBYBFB8
+			rRISRQbw1TZDBFUl1sBHAFALLGBQDICwARBOhCUxoNwmmFA2CQ97
+			ZyJJshiRM+BBB2DnNVDV/g7TVC8FGgsd46jVASAuWMKYcQIKkBCY
+			WA8EUTQvWePQsabyID9H2ssdBEB6jxIgPIdxbhvDTLcNgZZHF3n9
+			PeARCz4QHEQA8Ck6AIwXljPRH8djJh8HyMwtojg8h2ouIcRRYpjT
+			0HQXYihG6KCVEXH6QQ9BFElmgeAfZY5f0TD8YDHghRBnnlkLKsh7
+			JoFjENIguEhA7R0MsYCAk6xFAIEIjya98i4AILOMgQ8mxZBvqZAC
+			PlnK/33PZHuBNBY7ATDnPJOYsjTYjj9dgwY6ABR4qZASOUBxyZ6y
+			kNOBJgICJemOZgSMjLFh9AKNkZAtxFwAjOHAKcawM3OUTopRWize
+			w5AABMmsNhpwRPZCK7Gi7cyZnNAQWMOwSwWAABWBuNdI6YUxplTO
+			mlNabN4Is7U5CJyDTjMkRV2Zmh/yvXBJsgso45IGIJKBF0ul21GH
+			sPNP6gWaHmWEuAoZJKsp6IIjY+UeYrysIIPQeJBEDGkqIPtF0Mll
+			QzLMiZfpjjVmnYIainNc29M5ruTSOFcq5NYawwJsb2LCImexX5nL
+			ZCLV4p3XCoFi2ykgr6aheVi3bWQr9XaxLZSZxRXMQ+YdgWPzCrou
+			agp7q6TDMcx8pVhmqrIeHIosaEDGrFLGr5q9rXRMCX5Y0i6wTkGU
+			ebB5ribIPENmkZRE9gTHPAORbuwVnTeLHtbL+cNrbKXMunXauNjy
+			R2QXLam8LVLV2RtKuZfxprAMDsAQS8L1LGXeqPZAiZDSJX1XSZW3
+			74KgmTYAQWV9RF0SjdnTs1lyCRkOa5T0itCyLmnYCxdK5EntmmHc
+			Qsf1RgBDnaYPQ+Y+x2mnH2RAfg9yqgDjoTMehIACD5AEAUAjJyHE
+			yTcPhHRQjSj+ZmcUg0eQD4/H+AeR4/8YHWA4BYCQIAFgLAGCCXQ/
+			gHjyHkPMHhlR+ATHwAoewER1ggHGOkewDx6ArY0P0CZrHqKKH2pk
+			B49TEgELQf0fB0MYljimPIBZIh5gKJEP5+ERx7olH+7I4o/SxgNH
+			gBEsg+VMkXIVWvB5bwGGyHiBuTI/QDouNKW4ewBUu0MAABEcxwAI
+			jlOA/C9RPljpqACZEAAFAOHXA0pIBQCjGgbA/G4BpppQFuS2bKGt
+			Y1XyMPevIqpCNjppIgAsBxjT923Qik0CBppGQ0HuQgax4gALMRch
+			U02P0KSNTuaYCYGjoKUNMB8FRBANAlUmkhsi2tsDFNUiyqZbh3Dr
+			I4Pna78gLGNCoG6fIIQVnQtQYoAy+7JmnjkPAdRjR6DtLGlgggzB
+			eDuAAMwXvGAEgMNMFUN4F42GjgO9AAxbj3XuOOku0ZFEUmNHUODi
+			dVBpjFQWNkZqXeKAAAuB1TIFgNKZR4RADYJiIAgBbLJJl63tVS38
+			WMrREB5jtIgNwZvUpAgAk8AAZYvR1lvPpRoF8awSgwVHswxoDQJl
+			uHyuJrB7uW1uqi80fZCGbEQ4iWOPBEB3jsWcNQZWIUDFuAgBQwtk
+			kkpGfEckBJgSRkmNVhi8qxTCj1a2eRA8fSIECX4wEfiC7BGKAHsg
+			48tmEmKAOwykRFNG48IuwYgsuLqGkMdUIexGR1HHwiauoUuB9gfZ
+			mPsDyhWmsyAGoUe5ayDy4UqAsfOcACj7AYPMBgvQHjVAsBQ24Asn
+			ErAIPYew+AKYKJna1CBY3nlEKUTImZQCPj7AMAcAwJhpDRGOPCm/
+			+f9f7/5/3/z/8AEAMAUAcAkAsA0A8BEBMBUBcBkBsA4F4GYHgM55
+			4MRHIfYBoewe4ewEZrg/5qosRjSyrBIwIhTzZdYlY0xN6ua7oh5X
+			4A7ww4oA5fDhIkgCpmYfgAhgIzRq57Jj8HYfBNR+IALSAcxq6cA0
+			AxwDQioBItwfjTJ9LRAAAeAB7jAfz0ZuIAJjkHIscGzRSgA6AC4f
+			BEofYcw0wpi+IihCoiBXAsZXAxorQ0wCwrIAAEIFo0aRgiBJZhAw
+			r0RszfghAdgcgggXwUjSgdTtge41Qcobh9AArRoDCNoAAKINoCZ+
+			SM5NIigBTab0SzZuAbgaJmYU4RbjAd4dA1RALQ4Bo0ZTA6ADgEwx
+			oHIJw0YDgE79Bcz0q7RuAdgcxFwT4QIdBBAZxQoCaFgAAMIP4DAA
+			ADoExTKA6KJsy4CG6uKoRfJbQigagYotwZQW414jhrLagApDICYi
+			AFAGwiAF4IDb5XSty+yOKojhwhDfgggawY41QagYhHBA5O4xoBQB
+			iUxJgEQF6SAFIiABSR70KKZKUeJjwt7HY+Z7QeoghKo1RWw5L1J+
+			QCowo9w0xAwhAdwdRZweQd5FzuAt5nZcCDwtA+R3j2K9wey2odA6
+			AAI2zADBpE4fACI8Yd4ESTMnA8ZmI6B1KI0oAsgeg0YBAcxEoAso
+			z1ghQCAtwf4zgio07QwiqgoyYAwfYQIboVgaIQEB0sEsKigNwADd
+			wigMx7IEY4oAAJb1cAi8IBQA4sYPAJQFYAAFgDiNYj6w8sUvsv0v
+			8wD/ynLApsbBj3kqy6Z2x8BmwwKpCUapR9IdipozCZBmiqhQBP6q
+			we5GirAgkeSVSroeCr4yasCsgggeoeSs0byDwt6sCVIlZfS/ixZf
+			6zCzMqc2ptCu8qc3awy1M3h6q0iyi1Lpi8q5cHs46cJ7K0C1U303
+			an83ixy7Zs7xCyKuqoE684yuETpsa6R7AwSw60S3ixC9CWiz05iW
+			pZCwi1qkoxS1CUpNJ6Rci6s9K5zhjAggwkxdZfK4SV0HQ0kaM2J8
+			C9D0q1cXE9q9RqqYqUa3CxCuh4EdqYZ206L3in6KbxC8KX68iX61
+			066wC6tB1BC1Z6q0M3yxM7aKbAh4y+64BrgyhNq4ghx2pjTBS/cL
+			JNzEZeRdSXpc5fS+4hKha5CV6ta+whpFwj8HRk7Eg4oAIeYgz24i
+			gdq+yTZc4d4iQexAwfYdheStYfz55XweZ1ZFDFhk5CAfT0YfofL0
+			YAYfAkrDIfh+BjwAI+IkAAaPAxiGoeweofQBgBgBYAIGIGIEIE1P
+			gAQEbtofgCQeYeQegIKXQfgCofQBLQIdQDwcgbYeACwdYGTPwfwD
+			aV8HEtYALk40YCQfSFT6A5I0Qsge0PggwdoCDr4d1WD5bBw0DPw/
+			ofQwoDAdADoAFSRJEI4f4eQjMI4e4CJLodAFQcJNgBBZ1CMLI4p/
+			IB4bw4FaY4gopCgBy9xUYi8J4DYGw2QHwG6NYCgBrn4CI0a8IfRQ
+			rrQdIsc2AABPpFwaYYxmYfojwAAEgGY6AEoGYxpAIiAAhJlML2ZR
+			7uJPQhAYYVojgc4b41SX4/y1giACICw0wFYHY0Y5wiACDkQwzM4s
+			hJhsiMYtxFhZwY4Wojgry2sPi7CJQAAGwI5TKJ79BixCpYc7ZZNf
+			AdAb6PgeAxqCYAAagYwkQ8JLoBLXYADgKFTgibzlYBAtwqptQebj
+			AAAdIbw6AeweIhAagY7m4Zw8czYhADgERSQDQEJXRDQ0wGQIwigB
+			44lkFnBtLqYigcQagsZBotwagZJb4bQZ7/EyoFYGzRQFgG4xIBoC
+			IxoCQDgtwC4EAggk03CuFCUKQdIiAa4Yo01qYhEkVeYY7wRHQAAD
+			gEiIwDoEh2A/wgjooiADTo1kC5oi1m4iIhAbgdY8YcwcY1QaIYog
+			hGZZLT4fQcAwKtYpTZFHgsJhAB5hV5JY4hkHUb0dofQfCURdKUYA
+			SEdCzEYxTOZfSniXzVTnkqAC0qBmJNgpYt984nZZIBw1VlUqIeoB
+			YYwCAcEcY0IAcp9fAe6EACZdiUtbAsT0I+xqiwAtBegFoaQaAZEY
+			EwOBeBmBuB2B+CGCOCWCeCmCuC2C+DGDODRzYEoEwF4TYqoAgGh7
+			I4BY4piEADQhzIk7wnZjk3i5Biw1ZfY5C+pfK4tCzVQAwDJa6Z7I
+			hmQCpQofoBM/wxVZ4xUKwxQe5SBkZY8mgAIcS9QtSxFt45JZMJ4d
+			QC6dQfIA0G4BDSBuwGoEcSoF4Co4AAodCfIdoag6Csg1Qc4cZ9Ad
+			AcRLoy5EYBTc4BQsZAIxoFIGifIEgFp2BOIsYCQDYhFt0U5ARsqt
+			odwcg0weIdA0xVyLAdAjgX4VY3buY5InAAEYkZoBw0wEQFwwoHoK
+			xSSCButzQAAcAaotxmwggaTmwACCpFztohADqEwHQJxUcZYwtggB
+			ABo85ihugdwdBFwVARzjAbsUAwwCQsYIIKhUaJ5IkcIAACwD2PQs
+			EThuKUAhAXwU4ggdcQRZ4e00gyzy9tMu4HosYGYIjb6EZuFoAYgV
+			5ZwYYVzfbfoB4/LUICo6DcYAAFoH40wEwGkcThYg6ohPVn6bYe9J
+			toNeoAAb4aZZzYNXwBY00ZZSTYjsAggeEyQAAdYeDYF0AejDyo7x
+			z2ohQ1B9wxk5yhYfmhyncPgAIB58EPgfiatOpq4olaK9Qe49tN57
+			oigCIgwA8EtER6h5CGYQIbYW4Zkr+DeqOCYOYAAD8tYK5NZpIhAL
+			Q071sA8uMuYJilcvCNa62qWs+tGtMBcwelUwt7kw5c4x7A82Iikj
+			qG66YfaoweYdY1Qyip4hAeiqmwJGUzSq0z+V59NKpBhFSsOOoAAe
+			uh2yGuofFx6hZdw1itMI64CKaxE8xsi4qnkNE6Gt07K1Svc4M4cH
+			s5M8U4ywk8M3s5s20w+u5soz9yI1C9U4q7WzlCiwanizcvi5u1d4
+			21R6a0e4C0q5s8y670pckD8+RCh4q6S3YsNBFAk46UehE/Qycis/
+			a5QyqXq5NWprIxq3a2hgR6BX6uVBlC61EXI1CV9Cu7K3ywVExsh6
+			tB4gy2K8lDiG60VEM8Tt69G48JE467K7zDAzSoB8GFRdW7RYAl6F
+			6tTEYyvBohwyp5qXQjEjj2vA52qobx7DCsBjBN1ZxNgwJ7euo04j
+			hc9HAALEIigeIsQAYbxYL5If4fecohYfAeYewfiTM1ryFZwA4wiE
+			XIpgC1pHIj1HAerEra9Z1eGGL2BBihYcyhYEAAIHgHgFoCzJYAoC
+			giQuIegewIZdlTwARdQBYfYbgdIC4cQJLPAeFxfHFjtXyeQwwfhU
+			dOq2Ywg/oeo6AwAAAdoCdWPQlWhsppwwoDIc2qwBQerQV7IALFYg
+			t7Ie4CBLocwFIb5NgBJnFW5cmnowwb8SoBobsStbA4ql4ARD8JxF
+			wfYEo3ea4iAHoE44gHwFDkSX4ffFJTYsehsjzDgAAYoWA8ZcIggG
+			QIgwoGQIpDh6o99qJtLeQAAXYUQjgcgbW8c5giiJ4xoIQLIwpTx4
+			iYmpBsmYotwUwRQkURY1R1YiAHgJoxIC4DwwoBmogAACoDwhHepE
+			67BtBRLrgXJZwZPgJnWbRTA0yZw0w/Y0wGwJcMADyOAsReNuI1Ac
+			YbI1QXIT5mYBYBosYdwdLfA74/rVQEgGIwoEgGA7QB40zor1iIzZ
+			RuIdgcotwaIXw1VhHQQdJmZZg2RrGQGP4FqfNo4iABoCohACIDDZ
+			F75saVKoc2lKAcoigaIXotyQAhBGY1QcIbZ9DyQDYESI1syIzjo0
+			wDAEQiADoFEPJJjF7hV7qsy/QcocQtwWoVhmYeSsoAHj5ZwfHGog
+			5A4mjlBi144/txAxQCL9Cnr/HFTAHq4eh5i5S4tRx6i9xZAqjw88
+			NDyWQB7OgCEmW4yuggzVwfgBxdYA5fcKweOLgAge4BAfIBQbgBIe
+			QBIcStQfoCQiQ99/w3gvztofIDKtQfnpIhYyIhoVobYbQaQMetX5
+			f5n5v535/6H6P6X6f6n6v636+BoEAEAFQZgpQAoGBrDyQy4xiKcd
+			s/mu+uVEvyqYK0hdCuwgoCPK7yOmoi7P4ef2It7GO1Ku6wIgD8AQ
+			AAIAgwDfYEAAVbwYAAEfEKAL9gz+iwAf8ZAD+Aj/AD1CL2AD9Az+
+			jAEkwABUeAACjz/lwAewJekYAcmAQCgoHAcFGohCgAFgVoL6cYHA
+			DnasFfD1kzncLxADpcbzkcUh4EhQEAsKAs8AAnGIMsIxBoABIMgY
+			QDEeBwVk1flkYg11fz9jz2d4Fjb7vj2eUeaDCeAAbDLeQAejwfkt
+			AMDBIKA1oBgDAAWEGWJhqsgQC2WuuUgeh0mlAD7fMGvUKftYb7Vk
+			SrSbnADwdb7AAcEgKAA+JwVAAdE28BAMjwRDGN4um5nNgzzd0mYK
+			pfQAczdk13kzyeGpfb6igPCsKJpmsgfFWT53ruvfjzpb0DfD2grx
+			dmNa7MkTRYk1BQHIKHAkASAAfimsgFAa0b2NMfJ7JMaBfpMaRgIo
+			pqPHye6KHyfCKAOBSChsJLJhuJS+Q/BbSouAB8Hm+R7PkeqPGyZb
+			qm+aTqnueaPQShTxL4AoDIGu6PHw8AAHIdp6sUe7GnqebqtajwBH
+			8goBIigiUn+gq6oHLi+oMfp6JMf6UgC9QBwUg0Fyqiq7IKAMtzDO
+			CBIMA6PACCC6zujEFtBOSCH6gp/nmAYwmyYZklBBlGUbR1H0hSNJ
+			UnSlK0tS9MUzTVNvYN4AA8h4ACmuoUI2AAvLqBFOVXVi6skyw7ia
+			FoABWDk9QWnUv1bXdeV7X1f2BYNhWHYli2NY9kNKuc4pe5iWJSgy
+			NTjLiNH9Z6UtRMiWIyjx9nwkx5vuAB+LwAB9W+j55JMeh4ooe8xg
+			Bd6TQykx9Hujx5Hejx530kZ+I8fh9o9J68pq058I81qDH03CN3K1
+			CKy0uaCIMx66100iLWg0OJrrjtlYvjzTS/ZbHRTkM4IJL8uADizS
+			5TOGW4pjFAYq0mMZEjFt2daK6PZL2K5ZmiNY5omb2VjCB6BQaY5S
+			luX5dmWnZDm2KgE0GqIJq+tS9i1cpaAaB7Cy2W5jruWWjQFqo0fq
+			7o3ayrsbblx4VFee6MuoBgGiScgAruyZlvfAbFvWKcJBdm44ke4b
+			vxjQ5xsuq6BPAAbDOCdMdoWj5Hi+pp00cucxlWcS70VdWolNrW4i
+			luIyi8y2thjUn6fh+AD1R/9pQR9n6fZ+Y0j3X9dizU5lPqNIzZmG
+			o2l8lox216+Z3yXMSjB95kkSCeugx0rqdwBAIAR35kfKMn6e1uKa
+			ep9nZhfaYC6oAAMewDw+ewEAQA5970f5+HwPgehAgBO+HpAFhoDm
+			GgFJYAYlg6yUjcWgP8FcEwBDxHiA4AYHgJANAaAsC4CghrTA2P0l
+			wBR/HfAqO0Bo6wfO7OSP4fQFCNAGbKy0mCWUuD3IGP9GBGybgAHc
+			Bl7o7gNDqI2AQrBpgCD3MmBobYIS0DxLOQ8lhK01kGHuAsmo5gNj
+			gJGAY3ACh9oIH4bwAY+ivDjQIAUcSBHKl1AkSkCxFB+P6XiBp9oD
+			AKEmCCCoC4AAggpIcAYAhlh+D0IGOcbhf11AAHkO0ig0RgpLdqR4
+			GQQy+AyCKZMA4C0rExauQUiy3R8EDdoQaR5JhdikJqOQbZjZQvyk
+			I1ogwHATGWCKF4pADwJsnaKt0fJBTUEeHcOoigrRIGFHMN43CQTL
+			BGC4cADgIykFpOOBkxoCQGsdlGaRMq0SUryAAMUWhqRjizHwz0AA
+			GQPKqN0qoBoEiCgtB8QUCQGlKTiOuY0VIiyajwHUSaXhfAEgLMsA
+			gBZAwXA/MsC8IBCqENiL4S10SlRtjOJqKIQxtF2EUBkD4CZQgbgP
+			AABACpfAFgRIMA2kLlQCEFAIUiiijEHEFHsPEga9iCzLNSLwUo7U
+			WIaAABECxfAchNLOAwCBA6IkqTUVwgwBgEkFANTJvboScUVOcN0a
+			06RUCYKkPMdpJh7IyIIPMhSgB+RLJGAl+JoE00wTUzYfxVkwrRX+
+			wc3DtCTABH0lZQtdyMFYkKXxyLj3NEPAaXwAgDG+NQLqR0jYDkyQ
+			Ma4Ph265gDj4AUNgBY8wFjfd6AAslfWPN6AEv8jIA3/j4A0Pu2AG
+			nVRId7Mx2oXxwjfGwNhZNvbfW/uBcG4Vw7iXFuNce5FyblXLuZc2
+			51z7oXRuldO6l1brXXuxdm7V1wQAgBQGZiogGWgDAy8ZnTDm3LPT
+			KPpgI/F1JlUEQR5L/S6VLAKAIBAAwDN7Jy2FnScTGsiH+BKOgIjU
+			4DIoPoAR1R7AGJqPgAs6VLAFL9Osc4GyVD2N5CdgA5TcD+XRTMAY
+			DlVEPNBROoZWLLD/iQuOOw/QEHVAUWAEAEAHG5AabyD6BB0jiOqO
+			MbZqV3mNXyak+w923mmYnVQA5fADAIIUA4CRlqYlxARX1kjaU8My
+			K6XxvR6iWDwHYdUepjEWD2MaytzAAwCkFpYQMFYOpqgMILfypxfK
+			KsyK4QUDIIyBsQNqOqU1eRzDfNSMEVw6zFDxJMBYDhkwdBJAsSqD
+			AAEPo8Aeh6KwEQLkSTjedlTaWYkGHWOMkw2Rkkm1Kt0fRJhyjfSW
+			u8ihniBhSDdjcEALD1MoOa1tjJWEHGjTauwxooxFPdHIN01ICwHE
+			DB2EwsgRQs0kQS1hSA9R4keHGNcgY3RnFMKckgbqSxyDeJEkEgwP
+			wqIEB8FQ3haZfGmSIRhNo+nygAG8NAg22znnRiAOnIg7iKNXI8A0
+			C5HgPBHOqL0bw4gADoHPXuvIAoSN+HwUgCY6DgEIIkn+mTLi5pkZ
+			8uMfJuB7APJqP6H6VKDxlhwS0fplgCj5MmRNLzWIaS0JHi0fYBko
+			gFIoAF/ZLR7gDCCN8W40xgXb6Z03pyyA4gAwwSYJjTwVF1DKXWN3
+			Tz1qvAAHQJQK1aAbT0AW/xOXSdc7V2vtnbe3dPWW8hnipmPJ4bU8
+			Fa5Bh+D5W0xGUi4B2mNXIQZei6SKD2Hn4cedZPFrmXuABDK+x3rg
+			HgSZ3rAGBEfR35rVhBZTrjYbN3e04GcuUS2gvtLb2P8jNDBFrPqz
+			mZZZteM9eo2KNBbRrxKzUmjpbZW5ubyznSewUb7+X6k86sv9m8dm
+			bT3QM2aAaGX3qWsyfbPRST7gGzOjar91Qfcu8Np8sReviplt5bdA
+			zFmDlXMORb3YbPVUGWuEcfTNkTbXFJSwF7xKd5stlBmKHLORmwml
+			LzHOm0mqjHvomUHQnTmXv/mdP/makVN6G4FrQLwMC8FrF/mGK9m6
+			rRkykynanelrG2m2HWk4B7wFJRG7C8E4mEO9HmK7FxkskZFuobNs
+			iMjqjHh6myh9CWHuiMB4Cch/h5GZHfkqkOm2h8h9GGB3kwlBHboB
+			ABB7n/gAsJHaiDOgDVCUh6CsOBC6isAQLIiWBuIkmNslAjAjAugF
+			CtB8AenbgAgLwOJtkNANsGh6gPl/h9gIh6gCh7AbEth+gHwQmliM
+			FBrMCNnsuVCTB3gMn2h3gMNFCOIkjSsIjJgLhsAPiVB4IpgECWAJ
+			rCDVCaCkgLBwlxgCDGgHB8qSAGB+CzgCI0CWhyDJgBRaQtGEgTsk
+			B/gFo6ADDGh2gFtFB+ADDUgZAQAJAARjqQgSALsbigizhtBkjLMy
+			i8vGjXnnEuAZgjC+AYghiFEPv1DSLYCDB3Bxi+D5iCpHjcBbhSnu
+			hxhuJ0gEgEi+ALANiyNmCFAKgOCCgigujJpeN4iDJhgAByhtCDSD
+			CDB4vAgABjhcxIB1jqgEAEjLAfgnCHAPAUECKlCPAOgVDGqpCKly
+			h+B9DLG3DFB4CPB7nqh6pGhnhgirBmhfirACL9gAASAVgFgAAQAV
+			CyAHAIiBgTRAqStJlHkVimtXJXgABThFDCh5B2CTAKANFVAHgJCk
+			AIAKSggajLAWAfCBgDgEyBEGHaEMQVN6CPBvBqiahPhABxiZJGgf
+			AntJy4o/tqi0LKNLAGqslKIASFB1CFIACChxhtCRBaBPB0FzB8iK
+			AgAqk9AbgkizgJALs8OVrJLDslFpQDEGBrhmiRBQBCIjB3h0Ogr/
+			AFAFopqZB4gNn2h5gMKgCOCUv2t4vXMlQIgAAEB5DeAKButJgCB8
+			qJsAh/PHvYHkCWCKTjiRp1CdHAGrE1iwAAqXiCCzktiWLUgBqcH9
+			iajqnbISJSmrh9n8ADQjDHsAnmHXFuACB9i7gHnaxXhshrBngSO3
+			z5z6T6z7T7z8T8z9T9z+T+z/T/0AUA0BUB0CUClfgRARAXBmlogZ
+			DWnlk+mrxiEgwhkhmKj4m9hVicnxQRkdB7B1B5OTh8xegSB8g2Mo
+			AGAUHMAIgCBygDIaB2M8JSiMAEkyAJm5UaIviKB9gGnZwtvbr5Pu
+			iWB7gEHsiWOOAAAKB1CgrNsSq8h9OACMO+FomlAEsSnCo3iWgKis
+			IFCbUdAGMJITAAAFgDiFAQAHiyAJgDp4SagAB2OIiphxjUj5vFDq
+			joJ0miHkt6DSnPmwCFGim5JvjQv9GiHjTTikAFgGLDG+h+tWm6CX
+			m4QRlxnfmRQiTbqDGwMmDLAJgLFVJnOdEgkhiUvCtyp0t7HgyRnf
+			G3iCivqVgIsvGsGiEqNQG5jWnWFpG+gLANCkHIneiCl3iBmA1QiP
+			B6B3jqjviTM2CDAKgPqIKEudAUgZlVAAuzjRy7KrmHCPB3h1jGlv
+			RrCKBnhhCal8jcKqjNAyCzgLtHi0E1AGAGjLAFgHs6zos2CPSayV
+			K7ByhsiBhwBpCBh5szByBuCRBwhtEl02AAAeAoSdAdgnkCKmt0CH
+			rLTLjSyCBvhoiChyBsCCjoCTB0MfAAB1hzDcDHiPATghEpgSDEhe
+			hwhySCh3skPpE60iECAMhwgOm/B9C+MWGKorB/msNPuVGqB7gDiR
+			B0AJWWq11yB+yrh7CggB2fHKsK0iFVCELDEtOKrMiZAFCah3AJHu
+			sNCaiUC+AFB9AGggh4BNB1ul0DW2W2leA2AAJ8CkAlC6OxCTAzmK
+			Otz6uvA6AkuxAVOyG/Hwv2PqW3XDXD3EXElLO4nEmQO6QEFpwEHG
+			EVu9u+vVGDvAPBNgB7iTSWvFPFPGF53OPIPHl+F1l+vL1JGBvNmC
+			DTq/l/O9PQiU1TU9FowAXbPUDmpu3HGMlfPaDnPbGVnjQHGUmvvl
+			NQvu3kj2QJmcj1vVmp3bzbFHHPPm0fmhPcmpmgwFiDzakGE5QFXk
+			UNQGLEmZrzXorDkuHVGniCnfo6PBm8EptfGLIbHMwAvuU1FVL+3k
+			DHCHnTTMDTlyrznXGbm+rzjHvcmyC6M6zZPd3yXlGqP5wEmS0fjn
+			CWFBtRzNP/C8QRGHLMwLB/tWwL4QB8nym2wLq+HYHcjWtWnYJRnW
+			CRkuJ0vPFmHsnFjHrMFukqh+B3FTM0iZDsh9odh1vfLMCCwephHk
+			h5mZMFABAC4lAAmAiLFvJRjUTFCpCHnbAAh74ggBAEkMwVDUlzCs
+			AFMAl4AANGNSFoCsAVmPhqloQ0XHAqgBAkgkgAAJYSH5C+B9gNsP
+			gbB+xYgTHrh9AIB5ADB4gfEqh+oZCTFVFrDLFAGGh/ntoSENgEMk
+			H7iRCYCUsUDRozjLAGBxqVMHKZRPiDI43uEWADskB3AHHuuVCKAE
+			h+SdIxSdLUmlB1s8B1q02niRgPp0h/AHPBRUgAB3gE4eI0DUgSgL
+			izgSALCzgTgMqSANgDE9BxV+y3iDB2WRN/2RtPgXAgC+AaRuNLEQ
+			NQDQtAB1hwCFVfyChvMkBlBfKgByhuskKCi+AMAOMb14CFAJgMiD
+			AjgwJdpejmlziPBthmCDBuUFpHB3DcBqBlNFB3h2J0x82EAlZ/AL
+			gOjeDPCPASAajlJPCRmGh8h6iFSSCDB1OHIgBzVhh4CKBqhmQnhr
+			BmYeAFDKgAAngyMMALp21LCB1ljGj/viGiiKk6vECTBfBUipBjhb
+			Kwl+gWKRgAASgXE9J4iBgMAQiTANgTV6uclJB4tFAABuBmF9t/Db
+			DqhihcTEN7CTAfAok9AgApRkptMqCSm/ZS2JlHh1BwjGhxBrCCkH
+			CPWQjUhnBfCpG5gdAnizgaAiCyNOGyCYm9lIXdi6mAkMHnbLAABt
+			hpMkBUhIH2yniKKYjLAFAKFVRiCPB4gNKgB5bVoj44FJGPgEh4Md
+			BsAOCHsILBi61GzkzbG5m5rYDcbg3IVpvmnIgC7kKKIdmL5eC6Hc
+			QRK+idCSMnh3R5gEB4CtACB7bkI2UXAEBxUjHZAML2B+gOBohmhi
+			gcXFb172b273b374b475b576b677b778b8lHASgSgXgTiNBUHXAV
+			z2mykyzlh9x5gEh2JCgCB5GrgBBvgLgKAIhLJeAMUWoaB6hUAGhT
+			AKB92iAagDCSA2AGxBgSuKGrgBh3oaAEBuozcV3kG5m/Iqi6gIYx
+			mLiXsUGfE2sFmKk2u6HxEvMAwQlxkOiNq808na7lvvmK0uXzCPGw
+			1kAHCPL7qqWsm4VAi732YwuQ5Ik208HUiLnjAGgIp4AH1dnMFzjc
+			EOQ0SwCBsnvckgivCeszkyFywTNQEODGh8EmyziHr78/qYdAKCjL
+			ANgRlVEL3aySGAMAj5iTBzBwjU7M6iXkHjSwFlFrvVjs1Au6Ib8D
+			EunK86U1CkJYyyFzB8QPJ1RD9VHI57c/iBiuafgMi+MpDLQmiPZ5
+			iRD51uK86SMPzYkuAEgHDJs7AGgIDLaplVAWgciyKlCDAFAIiKAH
+			AJjcR0jrBuCBhwhqiB1iDGh0BwJ0pXMJEuAPgTkCSMkCAJCHAAAM
+			ARiPasaujnD3AABxBpjLBzBt1/KxgABwBstyBuiRM2CCgMAdDqht
+			AGhzCph/MHneDScUNLB8lVAMB0sMT0qJr4gBB8jQE+CWmEgFTYos
+			WiCpgIByxUDcIkC+AGh+KSEqCBuZikAGB1qVCek/7KthIsItU2gK
+			eEosiaibqIB/gFATh6BJh4yD79ekT9g4J1o3gjC6AWFTA128z8Ov
+			A3AjurgUgNqSAFybHwyxek+wew+xLfXGPWHFXH4DO7nmGIu9VGmi
+			Ju4pgAFw3NPCXR3PCZPE+8CKEnl6vHl7FwF+juCTbM9FvOe8SBpg
+			ir3Yngm4LYFBoIwAfImskVHHezvgv66huRvhms+vnOvf3hrEGVRD
+			fPxD4HYKPgXolL/Mu6/V7jGPG+mYXhHK2oPb4DrIP6maXmnc7YPc
+			C6fOv14KYG/RGuCCHClmmU4THmY4GZPompPeE4HCnIn8MvNffTmx
+			Xui6YQsBHHcoc6P6v68HjSevPuX9u6wE4CvdFdFtmaNP/U9VL/+z
+			PbwQ1HwSmNYPmBYBwqkNDtDWiAP5/v6BP9/gB+Px7QN/vyDP1+gC
+			JREAgB6RKEAGNPYAP4AP1/gIAPWNAB9x5+uqDv59gMAv97wKTPyI
+			umNAN8xp+vaCAB9QQCvKdPqNPx6RoBP0DgcAvkBy59Ox2PiLgB8x
+			6rPyJPetAADPuJAWsAasAusNWDxKsAC0xi3W+2XC3225RIgEAkCA
+			DgQDkGBP4Qx5/Ap5gV4C2Iv0IPcDPgUQUHWyK3G1RJ/xG2WCOvmM
+			S+JAnJgODgF+xUBuyRU3JgaJAEHxjRWy0yCtQbWv7J2usaTJ5gAZ
+			5/gbMbkERF+AmwP4Bx7RZN8R4KgwEgALdIAAUBAqJxJ3ut9AB3uz
+			NWkRC4EADygcABcPRV9PmVyCfPqDuhvVp7PKDvR41pyG8fAAHmd6
+			wAOBICAACIKPUAwEAGAAEAWg4cCYAoAAWBzJrog57nog5zm8iRxm
+			wjz8oib5snikZ5LABAFQeGAdAmAAJgw84EgcjwUh2iQDASlZ+JEf
+			SSIQfaKnWcaDnaciKnwe6Im6ah4AAbpqxUBIFpEI4tgy6gORuBqR
+			AsECtAOBS6N+kq3Nsj59pEex5o8YRXnkABll1Or+IOFwcggAAXh2
+			CIAAkDEHggDCPAmDiIgJCy60etx2SSABoF4iR5Hajz+LAaxlxUAC
+			kgAHwqAYAAgVJCAGNSzyNMnSFXokbhowCVRFncAD8oPRsHgYBz1A
+			TVQABiIj1BSHMLAeClVtbNVXoM+KRIGiR0nArRnl+79qK0eh5K0c
+			Rts4AQBI8EgcvUBwToiYRxHOAEpnqAB7gIzlQVhZyJQfB7KAQdzp
+			giaQLAAAh8QQAICNMBiKn/fR+K4hABtquKWJQk64VcyaRJEBB9vO
+			5cEMohqD2eyiOog1qOqWA54ARlh4qeAZ7gKAoDm4BMsG4zp9n6fY
+			LH4fZ9AwfefFQaJnmQTl7aTpWl6ZpunafqGo6lqeqarq2r6xrOta
+			3rmu69r+wbDsWx7JsuzbPtG07Vte2bbt237huO5bnum67tu+8bzv
+			W96aGIYhwUCkBCfJ8n1nqaTWp4BH0BOWHaAQAgEewBAGAR3AXXph
+			gMAwCHofcnAIcgBHEF56gWeoVnmCZ5hiBB/ASDABJDUGXOubTzqa
+			kS4TQAAD5EBqsd8AABgT3TY3q37S1AfrU+Uj6MI4iSutkkx7Iiy+
+			RH+iuhYV7TZIOAQCoqjS04xUNxZOwWdtkjx8et4YBwQAoCQfVtQf
+			RcV9e8gj4o8AwB0HgXA6doDQIQGqgJcAAeI7SwKbLeA0B6CAGgRQ
+			Q+gj58k2G/R6UxgR2COkyHUONAJ3TOM7IOA4CSFkMIIAUA1B4DQJ
+			EVBaD49TlCDjsHMVoYAqE6jyHcb4io8h4ERJ6W8AgBHdFyZGW4Bo
+			EEEAdBMdoAoCE3jyO+A1Gbw1HKYK0OMbZ3x5w/YE/QAACQFGsUaS
+			JnxB0nFaH6Q6BC+ADIPAEwdgRrDqAbNYhGJJEn6IWfsPs+AAD/rw
+			HuTyC5B3PnjTQARzizAAAMgiAAHQSTIgSAuggBIDSKgLAgRGLBWh
+			9IBXcOpB45RsEiHnEMACSDODlG4gEAb4o8nnAwCBG6WQAAdBSVoD
+			wKyPMzIqsCPpJj6AAHGNRB44hqoIQ6R4bw1iLjhGyPMjBBwKA7O+
+			NcBw5kBAEI4TRNC4yRFfPUBceIGmBD6kAPljI6GPm4LY64kwGjkg
+			HlEAQ747AGzeH4xBUDswCj/PU+Mrw7wFoJGuBx4bMTfwJAGeciTk
+			CrANIuPADi7R8ANXgZYj5BkyCSH0OFvlJaTUnpQ10OoAAMQaCK88
+			Frzw2QaOnSlqgCY5gADeEcFQAAUgaNfGdB4BXK02qNUepFSalVLq
+			YvYtpL2RF1LSWt6hL0NErqmVgfhP2SD+PkPw54AIuEIK6PomKKyI
+			j1HmRFOFaU4k+HuQesxHkBkHiER6NZCJj1qIOnAiUgiKsmSKSsmQ
+			+0jFsLW940ZcWLqPf5EqyBbmFNamKXV+zJ01KuTSmmg1jaDWbtAZ
+			1R9jS32amu0otLvC5wZUhZ2DSoLXWgNC8Nk9nGLRJIrZUjtp2RD9
+			qo7uj1prLWvcjJB+xSIER0KfY5aRBWLUTAC/Ukr2jUmwopcgpZrF
+			xW4Lexm2r1C3HfMwTIgyriD1FtqS6xrirbXbtHcO0VmbSvfsgmi8
+			s11pUeZJZJ7JAwAl/Mvb4gpl6vLPK0PkfA+WhYCJRgMgRJx7myIc
+			ZcsBBitLiXgQcfhGh/TWeSXGuJEjvgDJS9oll5XokmIISlVpOQAg
+			FHrisn9XiqgDTcUkeeHB+MsAKS0AZXx1DqHyVWsIAB8GYHwZoBBX
+			QCFpLMRIBBaRmltypahe6ry7hKRszMHpBh/AMJWBAeQAh4g7H8Uk
+			CI9QED1MRf8CBl2BPlq6Wo75m85G/PUviiZOXaQVz4wI1qpaJ2nL
+			Zb4uZWIlsgQ0ms25cIk55to9IlY9H/XFZsggB4ETpv0IqPA8S7h2
+			HfuKAAD0UQAAcBK7iBNWyDxvI9KMjw5BuEcW4RRDRJU1RHk6A5gp
+			kx8pPKs0JCACDc2pJQfJDp+HPQfLcwUtLlCRAPAmgh/6DyElakPh
+			ECIF19TXzPB8io/M+VbImZhDpER7j1IjFMioIASUJWBdKvuvz0Au
+			NZchyF0nuvSmOz4io4RrmcRAWDBBBwLAbQsBYDhrACmgAADIIKFg
+			CnajGyIybFySuVX0SUeJKgADYGRWweKHH3jnHBhF8nDwjHnBqEg8
+			6LjU0UgsW7At4NmxIfuRIbw00AitEirceA6yIxmQRwpUoCwHoPBY
+			DxBAKweoPQNbq+Bch/YbK9FQAA4RrFaFgJSa3QTBFpcIRFCJFQah
+			NQsBoGpHhTjVG6AAdw9DOD0Hud8mTUKrHX713kAw7D1AMGYa9ebB
+			XileA6haghB3TTWHqA2az2ldD84kPze5GCWm1v+qAloAAIDlUEAU
+			e2eZjj9Kq89Z+rSCWau3jdiGLWbAJGqA4BwDRrLiKawvGxDCGkQF
+			8MgYgvBa1N+F8P4nxfjfH+R8n5Xy/lEBgAAgUDgkFg0HhEJhULhk
+			Nh0PiERiUTikVi0XjEZjUbjkdj0fkEhkUjkklk0nlEplUrlkSGo1
+			HySAYDAQcgj/f4AAUDf4CAQBfUzAbxnwDfUDfgDAIGeT9oAGfb8f
+			QQegAeBBoL7D04AAGgc7gb9e79AD5dT7AD/fk5m9cgj+f7+AD9tQ
+			AuVyn87AYFAc6nwAAYEnYGBgFv1gvs6A8DAkCtU5fbsfl2fFsf4B
+			AD8f07uOYAONAAEDdgtd2AtkAoSe4AFQhBgABQInYLA2YAWWAGew
+			EFfj7zD1d0Cb7UtD9yYAfD2tD3elkAwIvoZD4LAAbEevAmGtNzpE
+			CAOYBQMvr/ft9n2Yfz9u9ur9/89zsgAdDh1brcr4zL6uQTDGLB4J
+			sWBQGp2EIXMaDoUMavaBHUcSjl0UR4gAd51LIuKcnw/C0q4nCdn4
+			fLvMxDacn8uCCggCjDBSGoHAABAFNmCCdhAFbGuezBxm0/Bak8dg
+			AHmd7JuyvoEgWwwCgMvrewweyyOMnIEAWnYJAyBQAASBjZgenYcC
+			QwwHgqzB7nsnJsmQzB4HWyB8rkdL7gAe55rI9KcnieDVn2fa5PY3
+			KdT6wKBAkDEjgO2yfxcBK5T8xzMH2fTMH6oK7LoAFHJyfTKtzEQF
+			vE2FOr2zAIgugQIAuuQCNqAAHAiwwGggw06ABHKyHwoiyzIAB1HL
+			EB1HM/C6LkAYRHtWQFnazIEMm9i2NunYGHw14FHw6ifMaoDbHWry
+			7McBC5H2DK0H8A7J0eo53AQdLMgCya8tCrq0gKuQDne14IGumwCH
+			urwAsSAQFxFER8gaeoAHoDJ1LLga7ACfpMn2Ah+DsfhIn0eSW4vj
+			GM41jeOJCN4AVGzAhIGFqB4+8GOpYBMkgANgiBQAAUg0B4AAaBMj
+			pplOdZ3nme59n+gaDoSRLY3MOIQtlFMcyzMJwnK3LdSLcPhS82R+
+			dzJuMgR9asep4rIeqmgAex6Lk5iyHye65Hwe6cnmdq5HluDMn2nJ
+			+NKex5oFvOtxAubjn6tC7UUfR9afpTLu3RjEz6hES6Um6CxFyXJo
+			Xp6GpxyqEu/zXO8bTSdu/0KEYA7/KM90zvIHzXSc+gXIJ4fsLO2u
+			Gn6Kg7dIJ0U+ttnPc9TEQCM/1S/dZz/JrB2/EcHqeoRFy/Fej4HJ
+			870yfL07LAez3XTaLEyEpn0PrUX6jdex0ND+JgHXc2gfH00xztp/
+			zQBZyggCJn1y/w3pf1ACWB3DkzLNHac9EnIAWku1LeeorhdESOIg
+			KemBg/jNIbH86Zx4/FgF2H03dNhcCnQScPBQf5VS4nHUrAgzJcB/
+			MWO+uyEpSIEABHoZcf0HTjJqUa1se53x/t1H+AMdh3x+wfH8wQuw
+			/ADgHAEPZao+x7D2AIPY76egFAKHoPsnwBR+DsHYfQnj7juuvjDG
+			R+JBnbuWjKRYIEbQCAJjgAoe8cyfD9AOCKC4AAtJ+AmO8CI7QSj5
+			AMPkCg+gCD5BCdtbRAinFkHgAQd5mQBGTT2AAvhhjbAAAOPYxYDh
+			3ARk1Jxo0azblzAGZABKIB/SnLSAEu7DFGRnAEeU3KigCD4WsPxp
+			srB9gQKPJN0MKB6k7AK6YAwBTGgSAeAkAADADmGHcOlEA7R0FHca
+			BYDhiwKgdMWTMzE3n+j5asOQbpqx6jzMmYEzCN3ivwksAaADfVvD
+			6TmWyIpZD0PMOQPctDaXBJ9AOAibrOZwAGASX1+0OAANeNWeouQ+
+			m1G5KU7xTTqHUECJ+X1/5eqJgPAkY1JBO3ZFyHYOpghgS5O7mQAh
+			1b/GqTum+Y5xkjB/HFKlS455OQFgOMTConxbHgvZAUAsxYBajHIH
+			sZMdg50QHGLkAhm6LgFLWgw4FmoFC8TFSuAkxqWDDFxIEPId5+Gu
+			FkVQTsCYF5mIvMamko41RkMWbTWYviqgJGLAMoUAAFQPECr5Rg0B
+			BXEuqc5RVELRjxuJAYA8voxRYGrHoPGB9D09FdAQZgGQRaWAkBmY
+			0aw8TgjxHyUcZg30fD4grAUgg/ACOCl1GaGa7qNOJAKO4rwCxps0
+			AGPsxICZvgiaat2hYDW9D1AaVUghpyvAGXEby3ZdgBKnHyY0B44A
+			JSaHnSyH7r7JFpQs5dpzxnTj6iuAoaYDr0DTAI/gexewDDrc5B1E
+			o5x6DzHkVE4wyhojNGONpod/8AYBwFgPAmBcDYHwRgnBWC8GYNwd
+			g/CGEcJYTwphXC2FyWgwBgDkQF6wBg3c4AFPI+7mIlsC/ApJgUJS
+			Mc5LQARvrtG+H2BQfEUAZS6H8BNDcpXXD9HxQ8d5RzyRpT5ZMzNV
+			n3v1NsAYxuSidV1oDk1/BuZFgNO8doAI+TMD6HPJSiLqnZGcT8Us
+			gQBgSF9AKi2SwCycgOBUhIKwQANpXfzM7Jr3TtlqL698e7FgADXG
+			OXIehwWCtfAAOccDBByDcYIdknYHASGvBACfKwDAIGYAqB8gQGQS
+			1mVS/t/7rI0tXJyPIdROx4DpL6cksg2xooSHANdizXC5AlBczQD4
+			KMrAOAmYYDAIicgWA/AdQ45RuFHHSOEo4+B6u2IEktv5AtmGYHON
+			0gQ+ViKVHyWQdg6JVKUAkBcwwMAfAQSulmZulwAAcBOYO3wAB0oO
+			AAMoXKEh6DwLIYEwYBzGv4J2Oochk0KGTbSXKxevgQ0s4PXsDpOw
+			WA5MbNszGzCBDWGMWQd66Wxw1AAfZEDZDJt3LkOsdFZB7wosO6eT
+			RsidUTHvs19pAtHGhnhO49++qXD7HwWSiFdHemYOzN8wQAAMAdpY
+			dKZjihyDeWJ0tYh6TMAOAkV4A+6NtlkLG2iDR3i2GlLs0k7xvtnv
+			PM9p/mpuyBHaH8BBC0rjM7bR+Ovp7dTAM5oDSx3Zt0bD9mY7sf81
+			oDSMAQiAfAFmLD/i4qcfwNB0CrHGM/DHkfJeTIWHQAAFjuBAO2C4
+			gYcU+pW8oQJlZfQ1hEBOAAFAGWaAOZWV3ofofYex9l7P2hHWiwIe
+			hGiM0Z3o55cSiUnLUozwM2025rDf016CbE2HrDZWxpyn2TltOpW5
+			tyLI3du3dB7Z+b4ABrkjHAOC+B96ayJY1p9Mu4y8Tg3Ye8eJyr3T
+			kdRkHcyQ2wruncOrf+d6eLx3TP7nuLDHcn2HJLCLBCDoNELHvqwP
+			5iDP+n5qKH6qNHGngOZABKqEQnRv1qMP6ERi0vzGimoDcP2nbnSv
+			3neF+DDntDDDsrAnqOUwKHNCaKLLDHuQXtQwanUqWn1veHSj0PzH
+			4nUwIQhH8nJihP7P8KXHUsikRsiPcozmnHHicETQpC5KHDyJKwow
+			PvgD0llHZCeIWC1wrDyEPoHO2jJoEESjNB5IVPyi1m7DtsVlKoLh
+			/h6kRDfDyIaoEE8j1B0i7jfGGG/FKiZh+r4DPurh+B8DvoKAEFkh
+			7iih+B6w7DVvvB+r0ADreCZh/BzBzBtRBGlRQIxPeQGvzo1P3CQA
+			gAcgjgSEkACAtIHAJB4AJB3gOh8gEh7gIh7opgaGngEjLh/mIABj
+			Jh1gFl0igm/IVDDDFlmkrh6krAJB1gKxmvQI8igFGC5B8gIqyAHJ
+			VADCyDfOQpJqKACJVpLB+pcjBh2qWABB8klAEi0B8AIliB+R3jAB
+			8jDAEB6qWDZDGjoDGgKAEF6gDivB2ByFeBxlfj4p1DAKtKDEZgTk
+			rAFLGD8iBB2Fdk4B6lTltKdjDH9h7B6jJh0BxunlFAKgMjFgIkUi
+			uqDpmmaGCqxvvGrBvBqCqm8k9lFAGK7pNADrZqMKZiBADukgIgMj
+			bDQEngABvBpliFlsxCeFIDSjepviwAGgHqQK9H4qHs8gAKxDUACD
+			FswO6JzybuZJkDQspiCHCijmuEQP9makZDQqtG0l2HhFNCcr1jDA
+			GAFkrKNiyudgAJqSSCctLDFgGAGivCaCdxJD8SPijvhKdivSqKWH
+			3h2B0mCFMDJqhuIgNjqDwjDGyC0BzBvm9ORLDMoowi6GsobwPQOJ
+			WwBC/ndnVL1l9y2jLFFKwStGlSFjpJtAOivEmj4gDi5BwB6GLLUJ
+			Xo0k9Djh1nQxFFJi5EPlwoKgBh/R+h9ukjEh7AOm9B7gMmCO+OQr
+			nh+RxClKERygCPEQPJVk9u3ACx7gAAJhtlRgEB5JmO/lvPoOvqWw
+			Ljbv6i4oWC4nxB+MmADBugDK8hvL1x2FUADh4Hrj9CcADjjB9gSk
+			9hsnZB+BdBqhohmBUPa0PUP0QUQ0RUR0SUS0TUT0UUU0VUV0WUW0
+			XGOAaAaAehGnZB9geKRgFkMh8AHpxB8gHz/HhH/jNiaILnjIHuZI
+			bIuHCzznMqgO0QbJLUowKQAnKnkgC0nCylnmxpNi5x6y+KznQCBK
+			eltHhi7O6B/m20zCcsXi+gFBwpQABJDO001gLicgDAHDMALALDDA
+			SggDJghAbLrgGgGQXJ3IIikwPtpIkBshlGwB4CBN7iyB0yRgAByh
+			vGCHdgJgLKWAKANErOpCdgPgWVQmSpLSvy2j3iGKbgAB2BxjMB2B
+			xCdjmC5Brhl1HhnBhljiCAWAbpQATgYtzD/jDAKgQC5AJANF5PQC
+			ISbPiirB1DMBohevqC5G8jJhuhqrkDt1OivAhgrMdNLEiAHC5AKA
+			OkhSvqrONllTbFFCpKvlFBwhrj8BghXJI14EQNIJmAYggLrgNARK
+			WAF0fq9gPCyLFiBFLONlGh8kSD4h8rkG71IB3iyBZhPGLSLC0H7O
+			qjzFDyAjMATAXjG2ADbKtCEFIjMB1VXFchxOUFJwgrvPkvvKkniE
+			Xi+ygt9idlVivD/yvi2BzhwliBzBwSllFAIEADcvQB5oOokw7nnn
+			bIDj4oCofkSO6LCN3gBOk0njEh/gGGmoGy/B7BvMhDjiiqpErHrj
+			cjtF/DEDHPxVsj4n6oDgFprCdoLjFgVBshhhoBs0X292+CIA2q9l
+			3gdjtgXltg7PPvYvRgAAzggvTgTgMkWgJAGOqSz2+3K3LXL0XPbm
+			jwOzWn+v6woHX12HDPhkTCpCcmvEnDSudNBB4jJh5tDB6vnG8ueU
+			0vpytm5h4h2vru6V0JziBGwk1vwWDPy3S3iH+qWjc1CnHD03OP9H
+			6QdHIi2v2iDnviGP1njHzQawCj3rC3oQbv/wdQXnGv+n4o0oOpKQ
+			qQgDtwBwTk+l2jdC9lrQUCwHglAH4S2jdDLnRwDHbkOEOD1LBIBv
+			gjyP4n/XtHUWNCdjsivDspMQfDcwL4IQJv9OWoDqKQNn3E+CFQKp
+			Rwan9qgH1tiHxKMD3XwQTKXCuQcYNTV3/LwICKwIVT/KgQpjjFKH
+			bTnm7jer8QQQpmnoNJXIKCdTVCcE5pYJGGn00jyD0S2JYCyEJFLj
+			PIgKanMh3ILqaj4PnF1C1B6Gmh9yQABGEWDIeIfJdF+B3HTS0gAk
+			NHZI4IsjvouKjB/xFH/h/h4B4Dmsyj4hzPAP5wQiRxSCNo2ggL2A
+			BgHgAjYgYnZB/gFh+gGh9gMB+lkgPh1AGBzgsoSAJELAGB+pZgBB
+			4gGkfLeC0IbCdT0LCgEh6ErAKByFRgCB9FYLoi5gClwzpjkAHDVh
+			/AFE5gCYii7pZpajBh8SOjNjczxDAIpDcotUujlgHqGx602Erh6D
+			Xroid5qGQABsrAIDnjkPjh2hzKmjSz9qJDMEXjMARgWDqOpDGyPi
+			ch3h0R4KIkkDMLFkFDQKxVrBrGLSjgPATErAPgSkrACq9AIAKid2
+			iDMG5DJhihajgpo5Ro8gKgOJmAEgFM93ik9i2AJgMjGgXAfKWADk
+			YEJw/AAB3Bzm7GrNoXmFKj9Stvjh4B2MhFFEo4FS6AIALC+gQAVC
+			vaCFrCwOXwrO6Xci5BoBgCjvtlaKIh9mrC3KUHtTBS3gbglJmALg
+			QM7iBBxBtGCH9j0i+ooT6o8kKCjhrhlEJG2EoAFRlDoSzDZ08DYa
+			2rQEQAKK1VTMxCco5k8J6DHDOB+ltCeyYuMB15cYAWzH9yjzUFtj
+			jiuOZn6v8D0jGjO31lKh8WswaL13jrwERH9gIgLDFtwpuqtOqjMB
+			yjmDkWHqkp6i2FHjchzqNInC5iojkB6j8Qpu62aAFCvB/yvh4APl
+			jh5ANVHh+AFJ/4NnGtRrVERAEh3ErAKhwlRgEh3krIKRsB5xBYRD
+			Q7b4LCyh6p6FMLpmnC3ZRvvDzh/kogFTqDA01oEEkl8wJCnDvhoB
+			qhpBmgnXMb677b778b879b97+b+7/b/8AcA8BCIAegegkKWCBAfo
+			5h6gsm7h9AYG7h+gGJxB8AIEMh9GaC40gjPTXoVLBJXHLoFDNCjn
+			ankuvlFHrO7UDDARyn4H0rCX6aQnGh7gIFiB0AThyDMx6iEMX3yX
+			xHFTbn7h7jDALBsgOkXB3jqH33Ym9QrFVAKi+ghg0ErAjgixpN/C
+			GvxibkTalCdh7MVk8i5B5h3XU1IB4C5BvBpD8BsBlliKoC+gUAbj
+			XgXAeDXqdidyAi5AFAIC8XyC3lFB6h3jMB6JIu3iBBzBvDV1LKyG
+			rOXvpEmgANJmaAQgXi+t2a2c/CHalCct7iBBshkich0hv3WCyBsB
+			mzRjS7NjGgdglpQAHAKDGkBCcgOgVDJqDYMXhFKh7rEjMBuhpDVh
+			VhImEOMjJgOASpmAbgjLr9jKWEsCcgIgNCyEsCHQgFI25j4h4EKg
+			ABWBJG9BvhqijlQAAAJAKDF2agAAFt1AggsDDAJs5pNAE9Mk4LkB
+			rBi9B4zk4B7G4izvyWXlHTn6WaBDMAKD+vLpuOWjMEPk1vglKB5P
+			j6Ek4CxjAOajKiyB5OTi0p/vAIVcJE55GC0pWImqEJcC0okO0S2p
+			3DtF3DuFvU4kJgAjgkSDQh/zIB/pQC+smh6KEMmCDD4h/IqPdpWA
+			BgEw0IXhsBjBm+VcB+lvKW/xpDFgdXBjuA73DvYGbi+gzAhXG3Hz
+			3jaJNK6+mew+xexmiHV3Nv4rB8gY+jHXimlvg3SywtDHAm7aWXXi
+			yLIiyGye8h5qHlcOCgAahfAG510NoXgKFm9bJJGD4h9O6FYkP3Q3
+			jn1XlXqX1Xo4KCC8XnLcgiFXqiFv1oAQBjdQAXvkQqLwYfTQAfQL
+			DsxHPHLp6X0WFnlnPXoEQwJpvq6rCxmHGy7qKIgoDnrIgwYCeESY
+			Ynv4AQQzbDti6Wn32Hp0w5q4IH0YFEkSzYHfTqeyfiCcXwdPbwC/
+			uwnwDiDHyneqNYHn0y+QIWzQAfxI1oCnUqRownajcEL/h4XQplYj
+			1KR5FC2sjiAP1+QJ9vx/gB/v5/P+GAGEvyEP19Ql/vsAQh/Q6Kwg
+			Av1/Qh6xcARaHPsBREAR94Qx/vqLgJ9AEAgB9Qt9vF/zN9xUAvGP
+			gB+TN+veZRV7RZ1UWLAB8S6UvwBAIHO6ZSN81enPt+gwGAB8zIBv
+			4CgV/PoBgMDv51ut3z8DT9wUuRXOLwe63S8Xm9Xu7Xu/X+/gIgYM
+			DAR5gQDgENAUYPwCvwbucEuYqTQBBd/V8NP4CPwCPgHPcAP3HxyD
+			v0Bv2UgKPgd5AgAA9vBEAAN8ASaAx8gB5h530ADxB7gV7UziAACW
+			IAAt9AvlvmuzAB7V0AYAAF79PORB3B12V4F6J/gOD5zVeODgGMgA
+			FPjo1AAAd1goABF6A34v7rAoEAXkKi+IEouB4LpmCYNIuA8BAACY
+			LgO+IFJmex5ouZxeJceS2uQAqZgUBrpqqlJ/NUfR+t2ATyAAC4Nw
+			eCwNQeArEgABgIJOBYGpmep5I+XhTncAB2HOiyEouDAOvoBIGRAm
+			brxS66DgmDDcBYHbYQUk53HQi55nYj57nqg59HvMJ8I+faJgAdRy
+			t2fR8NUuYFAYmYBgImYJSkAARhe2EotxFCLgK2CvTGAB2nOj5hFY
+			4p5Hc1R6nm1UJogu4DAQmYDRkB4KOmJYxq6DoUP9P4AAMBMSHyj5
+			8Hok52HC/x+K+ABzG+fAAF+VbvnoeLVRQk4CAIk4CgMk4PBQ+gPh
+			Q2EkpOCgOJmBEIuQA6DgSB6LAGAqDnKbaLF+UlankdqPgJYb2AdE
+			ABJmfh9IhM6PrOi9mv8DAQQeA76OW2gAAaCbzn8k53nM6Z8HrLB0
+			IsbRnt3LKIQBUgESWi6BzfJyRAM6wARimdR0q6Z7o8oEiKOn8mNG
+			i4AnrJh9qEgaaHs3aWABdNfYghFsgAeoPHkAB7gykJ+gSiB+o6lK
+			wuuqrWJPoc3r6oKLp+BB4wECZyAoAGowEj1In20UntqArpgEAzpu
+			viVG5fl6In/N7kJZDl0gABIEgWs4CAGmSZNIAwCnhuqY3SfQCgIA
+			pkmkZxkiuwHFcXxnG8dx/IcjyXJ8pyvLcvzHM81zfOc7z3P9B0PR
+			dH0nS9N0/UdT1XV9Z1vXdf2HY9l2fadr23b9x3Pdd33nTh+H4jA6
+			fvhj+eR5HoFB8eUEqFH8BiGLF4Z+txk+8H/dKHbwzgBgEeYBbBMo
+			EH6A8xnwCB7AYkJ/NTuCZocuf3SYsT0pE1LcAUe76NY6Z/uKjBeB
+			8AROKOsFI5ygAJKWkwg5dmSuUAQPA+gEBxgWavBAlLIB9DtVqPtN
+			xsQKnTCqG9qwJwXoCToSdGhL27l0bw45mI/STEYJmO4dJEBSCGHS
+			AAco3DdqYOmC4HYDgAA0CIBI5YD0bAQNUA0Chqk6QNL2iOBZ6yFE
+			XHsPAmY9DfgAQmaoZIujvjJFyOtJpFwiBYasDoJptAKAaYw5BmI+
+			zdlAKcPgexBx2DkI+MEVSGFxQXI+AIAhBwEALJOBYDpJwjhhQEA4
+			CZJzAMxH804uY6RxEfFwJ5CijCPgIASScBwFV7AJJmBUDp0wUg2l
+			LKdxRDCLwwJmQkmY8x3I8FOcVbZqiFkHXXLFN4DwKknCWGRB4HgU
+			vUL+wQg41xkRZKozxMAAB0jgJcPkfEvB9pmVQVY1SV0VAeQeBwEZ
+			sAAoAHyPdVM0Y5JeHoaoeg8CIDzKOzibY+CdlMRKRdlZF00MyYkB
+			Iiw/QJKTfeYZUQ9zcABn2P+gjTD1tlJe08Ahqh3gVO+PECJvz9EQ
+			AM+NBg9wMHIMcdc+ABR6n+NHJAnJFzbtPJEWQ64CB+DnbCNoawth
+			nBAd7TunlPafOsDmABqxMwbkpAADCowemyr4p+5YBLYAABjCCCUA
+			AJgMxCAsAw2B/WyVNq9V+sFYaxVjrJHAkRGiEF6LtSsu5eYF0rIo
+			UCe8roLzYIOPZXZoyDEjTQPYeSjh5EQQmR+wagyDznIOPFLoAB4D
+			tNUPue4/Cl1+QkPGfiaCBT6jmR4j4+ptojLqX2iAAZkRQLm9Bxlo
+			iEV0la4p91rm4MnaPbIvTJZIUQrPbl+FtIW29RDP619s2HWvtUad
+			lsuyU10tZFC39Z5ytHY2gC3xJ7XvfSWnN69vJ/PwKqzGBdqzy2Zu
+			USK76IyP3BSZOVsKfyo3rXRdS57gzrFjpReQkRHrw3FvukS1doa0
+			vVuCbVOl0L+l0IURAvqv1RNwLOdN7j7n2twewbW6SIUQ3Ku/Wkqq
+			IzzyuISR+SRFLyxSvA9IhWHx9JnIsR9pza61mmIXDAhlkiRELIcR
+			khhLrO3mHzK4iBHSYlCw+PIjROyMkuXU2UeF55rvDKdQwqIAR3lC
+			IKUFnbErSD+KIAEAY/B6j1HvFuSZFwFFOtAUxChQFJnMJeXYc6k6
+			OkXHM2wubbC+k/tbWUugM8+AFA4BcEQKDPD7BeOkAw6QZWSH8CM4
+			o9winjH8Ak6BonommKBRMlJ6lSDyQeA4bgEGZNDJHmweIIjfj8AQ
+			RYfAAzRarOKeomYDh8gPNiPY2gAjsm1HCdY7BJx+AGIsOYFo4WeA
+			TJC5E2xuAGDcNoAwccQjbHWAqBw+gHAQFdU0ScD4KyLglBmQdGJF
+			8B2zAAOEa5qhfx9AAOIbMgYVljJm3NAwGiThBCudMBoESZuD32Aa
+			9LG33sOHgOsj4sxLD03KNYiCMViAmQEAsBxuJgEXBCDEi8hVAIy3
+			zMhLY7CZjyHYScfI9iPjdGkrUcY21azlJmBoER/pCrBYwAvWhyOZ
+			gNJOBIDT90PnXkhuNMRFxmC6JcNgZRLrFGqHxOgmiZebEXkcvEDJ
+			JwGgSOmDgJaApEUJkgYhd71B6xYVkNk/1eCPjsHMt0VkZEdGqAUu
+			c5fPeGAAA6CdAQHuHNXkMAADAHyZgHAWxtsgDAJkWUCRcb41CXCx
+			EkSEd46pugI6oBI6yvyZvNgvE56gIAV7VBLw8BxMwMAlm6Au8JFx
+			0jd7KPIk45hvG7GaL7hA5xvkuXghBiJdHr4dpYPhNnvrcrpNw3dj
+			DJSqwtfgk6BTICJKTrTJKKptWT0hIuBli1hwEmiHyAhWpcwED6hM
+			eOuRqgCDmoSPYk4AoYgGHvOQ9Y+QFq1HYCAdRowDKTfaXOSA/idj
+			kAIHGo6AMHOAQGIAUHybkcGAIBOI4AUeGH+AwJYlIbuNIWwHyLOA
+			EH6KiJgWEAOGMGqGkGYCcz1BHBJBLBNBPBRBTBVBXBZBbBdBfBhB
+			jBlBnBpBrBtBUBCBIBS1AXSDUb2AMHwAOAOAQHvA0NIXIHcASAQA
+			OKonKISeGAOIEH4AsIUH6COeMHoBUeUHuBUJY38uahYKKewJyJkM
+			4bsHgAEk+HyfG1QHkA2HgAkHuAkZSfGNUPUWCHwvqafAwZ4AINEZ
+			KAKH0OsAkHaasy6NwH8Hos6HGSGTQH0AoN2HoBqssH6AUwQrSJcK
+			ctMciI6Y2H2NwAMHqQeAa/aX2HE1AH2HUOm3gAA7wNg4gNw3yJmB
+			4CgQEAuBAoS+OaMYckiw8X+IwsSHYNUFeEossHQHAIgzGNiU2AAB
+			aiCX2AikOBA5aBG37E2cWxOJGHsY89Yi4UgAAGEFe/qGAFi/qa8C
+			ECsasCECqAqPY5w5s36IOyick5G7OHKIOF8FIIg4GNUmsNUHWHMV
+			qY0AAA2BINwCuDqPwTuq6cmHcHMIuGmGEIOHuzSHgHYIgGwGcfUl
+			cBCBWNwCACqNgBCBZD0latYisHiJmHaYEAAHeS0ZwryGGFoN+ksJ
+			cAkAuJOCyDq1oT0jeL9GyTEQkyuHmyWAAGQFoN2HeHSTIPKr2ZiA
+			aRqAABIBkP8SovmYxGyHYHGKETeHuHsOFEUAAG4HG4QHCG4IsHyH
+			YNwXYn0zKgOZgRSOaJcH3Lc1ShM1yAFAspITnDyOQcCOvAyleLqr
+			2fWI+HeA2jIHiAuR+H6/uVIP0AAAkHsgoomP8ADL0AOHgQEACPgt
+			oemZOgWLCIVAMD8G6FgGoELBvNVNWrKqCasI+ByrSqQIuDwqXBmq
+			eOmDICAqoqsiEAqAaq2qhNZOHOJOLONBML6rQtUvsI5OYrUrWIWr
+			kLuvyjorurzGUTOIOUesEr/G8sInasMKYjuAAHij+6TOqJGKWUes
+			qn4x6r0s0leiqs8I+zPJOvStKL4v4zyvJJOL/OWLywCtq58wDDBQ
+			AJEtuuYt0t03+fjQbQObK3+Zk/yli90r0wQldOi+fQNQQvI+OKqW
+			AkgRCukbKTouun9RCtktuwAv/GALqI+I9QuLwrovMLwSYRQvWT8k
+			EwEveaOJOToP8wVQrPiNOZArarSH6bWwKqNOZRQ32WwwJP6uSaYI
+			vATR6OQbswo/Se5QkuivhQDRku8w8lca1Raa0xeIFSQtCIKK0Lue
+			bSQw+eGiql4liSGuSSeegJqNGrmJ+lkIUyMJaSIa6NGnKIkJFGSH
+			8Z2xyIbPcxcJmymJkVQH4/4feJ2PUymn0eaHmKKKCOSHtU2HoHoA
+			GHgaeUmAKKW0wUK2PVQAaKcLSIuHATepgAAHI+cL7P+zwkjBUACB
+			2B2CcTlMkAiHOAYHFKoHwASBuNQH6DENqH8AWHyPaVMomXSuyJGf
+			cuyAGHpFAHGK7E6JSgQKYA+JCH/CiMsIsZWyQJEAILMRmHqiFLyw
+			cHQepCKKBLcHMBU2JDk4QMBAwOmo6NgOkVIG+QEAUHCK6AGHyP80
+			AQEBCBSiEAkAsOmBoCMIOAgAqIOXIlexaLgGqNUF8FWVqHCGoV4Q
+			4PiAOOmkK9EA+JOCYDQP8AimDPyuMZYIOHgHUI+FqEwJC3MIsUqJ
+			OBABSOcAaAeNwWaJmBeCKIu5pGurqN4HaOmHpaci5LCGaF7VGGiG
+			Essm8CMC5Ha2mQe4g6oArZ4AQPSwYeot/DAmUAAGSFoIsGkGANU4
+			HHkfey41iAmIuBOBuNwBeCAOmSSQ6RwNqtKfiPSKqHegMAAGsGGJ
+			OHoHcsSHcIsGcGJVHRoBgCAQeBiCASs72ASAUJOWW58IuANc8wEY
+			kJiQgXepQG8GkJcFeEgQohoichWXuWCRkA4BMNxIKNwm8AiAsNwA
+			gAsVeH0JOAmA6I+UrRe1EYCNwHyZTVmG2JcGKFmZ2HIG49sbIQ8O
+			siePY5quQa8H1fArkSHOiXSbI/EIUJmeVQ6wLE2ri/5RixqNGeGz
+			aZkAs/Sg+UAsOPCK8fwLqWeHyQfEOOvdOAKHCQeADG6twtGIvDkO
+			KHQBWHLXogTOnRqTSJEHaAYHIAcEqBEHGBKBiALMaAosgH2AiHcH
+			aHeBaxThLA0YyV+euQAwacCAOAM5CKiGmGuGmGeCTOPh7h9h/iBi
+			DiFiHiJiLiNiPiRiTiViXOGBUBcBkCkaOEOPUPQTmv7TeIeNULGA
+			MG+hgH4OCTOLSXGekAseGH4AuSewbhCcEM6uIITNEfWe4NSLQ1YA
+			C8COTCie6AwHiAOHqAo4QH9XIZKfswM00H0AIZhOiAOH2NgAeHaN
+			pYPXkNOG8gWjmH2AkJcHqBass0iPOfeKCPOrS0q+kcfOWRCBAH8a
+			sAqG5HaHUG4ihCEbCSZYqJOCgDYPwA+BVRyY20wRRaXOetUXCI+F
+			2FAVqHWj0ZxO7IsOKjkNUmBYiCMPoB4CiiEQ9RUckxIllakI+GGF
+			a4QGEFaQoXWIuBMBgOcBMBkPxms74BIIuAs7870cmXWIOG6GeIOH
+			EGuIvmEAAneIsGoGTVHCcAAA0BGP8C2DyNoTvFyhUcfZqIuG0GVf
+			SmiSCJcGeGDVGHrLDZ+P8B8CkiFo2auK6Yy+KAEgZcIwIsoABIdG
+			44+ngAAR6Hah0G8VrJuOmCuDo1ABGBc14SZSfS4cVPLmGFEN3mOs
+			O5IL2kcJOCKC8RaWcQhmutOlcnkNUHlK+AAFsGMS0GgF+JcAWHK1
+			AtfMmJCHuAufUOSK9D9rQVqwzVsJfMDEIgoAaHm1pkQP9UQleyI0
+			yI+1KjIHmA7piH4AUJJF+/SZkH2OmAUHmK6AmG6A2ORYRSoZOAaP
+			LhCKA2AGMHeAiHYEOHgFAHUFpiZtDtELwDQAAgoQeB6n8BcrSDpN
+			tBlNwAADMCEBMAABOquQYAWXtOFtHt5t7t9BhOSw8rVf9OcrdOgm
+			xgpSTPQr8l0UmsgsJG+7bakNUHvLDeaIOjssTPMj/nnPSIuR1u+J
+			WJpPcszvGNPPlPdPqtEvSq6+M91SiijvfVwctS/gq5Ytw+QhZv1v
+			ct3v7v6t9Qcoi+QKrS3QhRYLuIExBF8wyergrvwws32tjQ8uobLR
+			uwIY2u1muJkJPVsSItQwPSVrauStUt6vZR0V++G3GuehaTpxSf4x
+			qLsknRfOjraPKtBTCtowJhawbShOXUkYaQAcEP9AuwE/TxMTmwqf
+			iL8JYtYw4RFPoxO8xjNuFTRT4oYH4ZaehywknxtRaJ0liJcegreP
+			SZgJotXT4J+LKaeTceGK+XUlcjmRG32iwI+ZgIkLsxkH9UfMuJST
+			O1gImJkssn0XTUQKKaGIGy2kmHlkYyukmAQfEKCy4y0KJX0LeIuJ
+			wzITeGlVrUMtT09BkBmMGAp0eAIDCHiAUHcCifWH4AgPuHoBEM9i
+			+AGH2P8ALCCNrE+IRXmH+HPKwJFbIIuA0KcAMgW00X+J+adWwoTG
+			7W61huJi+JcHOBIG+Z4AezSL+++OcArr9L8pRIeJTHuvAqEBiI+B
+			KB2NwBgBK1ABABFX6UEv4Hg0MJoKJeeJcGOFwQoHIG0JcRoNwSi4
+			eiRGaB6JOBMBm1iAlaWsRpUHOJmHUHIJnPKIgGWFw4RmOIsRWOsB
+			IBcT4AwP8lCIuBIBoWeOcL3u6HOG6I+HQG7gZLC5MOKG6GmNEUqI
+			uCaDLHa7qNg3GAWoGVIATP+LwxITb5YIP4mJdIiIsloUuUsYeJPl
+			oAACODGP8kQ7+WiciHWHGIuGiF4JO5AI+V0IsGqGXVGRQIOB+CqP
+			oB+CoSRHec6G6GiN2FWEYstKUzxxskITkAAByCYPoByCcOcbnR8T
+			rQGgu3EpQ9uheaczP7cN2FGENpjKVi0AKlAAiOcm8BOBkNg84OtH
+			mAKAWIs8AWuepm0haeMNUGYGZkzDQAAHOHMOKH6HSSYf8y4ZOvrT
+			SrjzvNAzIPSeeIQRTMal1McZiK8SYadM47/1uAC/Q58/T8lwafMN
+			EHaBShy1RGSaIaHvnRcJZCC/AFQBAHEBEAuAYHiAcTdDWAUHWHUH
+			aBqxTEfhbxRQlR8KiH2UwAKe8nKH2GuGqGi+pt+IAAIFA4JBYNB4
+			RCYVC4ZDYdD4hEYlE4pFYtF4xGY1G45HY9H5BIZFI5JJZNJ5RKZV
+			K5ZLZdL5hMZlM5pNZtN5xOZ1O5iLxmNzQAH+ADQ/n6/QS/aMCn+/
+			n+BX2/X4Cn4+34DH/WQC+nw+QA+Xy+KFWQAArM/QDaQHaQCAARb3
+			zbwRXgBbX4/H0B37VgNAqGBQMBn4AwSBAE/wM/gA7w67QG8gu8AA
+			+wS+7rl4FbYRin7BQC/7aA3+BLK+gEAAK9AOAAm0wtZXwAwA/gFn
+			XwBnvs90AsNqARfQCAra/wRQwAFcVqONxnuBntfoHyQI/tkCgLsg
+			g+gUAAG5ATi3LirbbQJa7LabcC9OQCt3wwINldfGAn5meNQrHmvx
+			BvvAnueSBGsYzFHedChnqeTOnYc7nq4+oHAm2QZiGBgAByJsKgSB
+			jTn4pTZs6zzhAABQGP0vzluMfB6sUYxZOeY8XMmfKhg0ELtxqBb0
+			tOEIXoEFAcLaAoDxMiKqoEdpyNkeB0NOeh3sUZ5hncABqmXACpM6
+			DgSNWL4+NeCQMtI4KBAG6b5SIhB7nmgR1HAAsZIEcZtnqABaE+c4
+			AHkdzLAyD7vh6JgMAABoITeBQHraDIRKGBIHPIAq/gSxUyoEeR2L
+			acxtNkeZ2radBxNyZpgnaAFPtyBQGtkHIjgoAALA2BD0oEE4boEC
+			ALzQg54naxRdlEfQAHW8IATUzp5nlYCqs6BoItOJAuAgAAOhQ0gE
+			gW0NIAAAgDP6ABznesVvrEYBnHYABsmK+oHnKCaBNOr4KLEewMHo
+			2czHuAbnnwArntBbqCNq04InhVoIneCqyn405/U62Z3oEfwAsUeI
+			Q3MegPYeqbLLqod/LKfbZAicQLgAB50VaAjboFbIAggpx/KSf5tl
+			oaT4p5m+cZznWdoYoLXtWH6ygAFz8Dky7t54joEgM2QziEE4ABOD
+			IHAACQFr6A7y6Treua7r2v7BsKWvuz+OoQ5b9X+giyLGocjbagUQ
+			L3A8EgAo6BKqxR6nmzp7bqe56M7wDFHy54AHweyh12xR4HYxS8bc
+			fahnoeKBHqeChrAoapIErihn8pwAH0fLORArSDADmz9SIrO1M2gq
+			suSjbxoa4PaPG9HUM8zHeMz3ffrYzLNPQtrTtP4fisOy7hxNjvTP
+			x1roPld7MM/4UzoKAbzIIz/joH1LZeD63r992j5eh6Sx7sf/nof3
+			Hk/CsyygE2X6NJ8vv/osvtd8/C2lHY66E+7ZimmKei2x6p6ABv6P
+			KfF3JB0On1LMacAkFTuP6TKbJ7TyXjvyfEQN1sIShOgbgy99iHW7
+			FGKaU02aHSnQrKtCg/CWB9QBIGfVz8I4BLAIEZYz8LymvWRmVmHk
+			LCsloM+XQf4+Sjj9LE3gv0Qx/j8eKPA8Y+ofw8AAVUpsVi2rAKcP
+			gAJR3JABAIgAtrICtprOCP0+g/B8ltH8PweA+wDpri2P0BR24sOp
+			H8PUeoBC6ALRAPhEC3CBDHRAftuxD3XEHke2IhgQJKAMH6b8Jg7A
+			HjpCUWgfwFR7gKHoDloQCgAsKAKAUfBqwBj8NIP8fDCx1F9NmeMB
+			6IAGH1ABIgf5oihPKi2u4eL4R3uqLq9uG4B1gDoA+OFYgDY8PfIG
+			bU2RejvgWHqB5bQ+k3j+HO58c5ijaH1AaDEsQHgemKCEDFQQHQLm
+			rgq58fZpx1jhL6moto5RvrAF6KlKY9B4GdAeBNN4JAXNUAYBE2QJ
+			AYmKA+CooYC1HEJoAQIYgsiBIFcsPEzo4htL1coZYEQLDSBACods
+			EIK03v6AAAdpBZlckCHw4EAAxxaL1psnQfcTwEAHTeW81YDgKmyC
+			AFk1YGgSmkpgdwApin6UxIKPMdxQxxDVNlQAxQ1BkuVGqMhyoB6w
+			AABEC079Y1YgNAkacEoMzTqEPIAaqBDBxjYMsLgT5zzDGrhiZMfR
+			9QDHFaGEBWILwfmrAQAp6hHhujRLEKoRblR3jpM6ANN6IwGmnVQa
+			cGoSTtg2CQdsBB6iKvRc8h8gViyxCnEYZJAtfgEJvAmBY7aGjZAq
+			Bsd8EYLy+1oOqBAzqEIJTIIMPAeB9Rhi9MsO4dJAhsDZQAPgb5yR
+			5HjPiAOUz/YlzyROdAzrbn+vmPNaQrrdm7vBAGP5MTqTuNMLcBM1
+			cu2IAJPqPUDq9R/F6dEARYA+r9PoNBOJiReR+AIGABUdwFx+gTHa
+			BYa4AR4P0HUO4dQTx919BA9U0F3y0y9OvDhspTRAOgH8JMcQ3qPy
+			SxRinFWK8WYtxdi/GGMcZYzxpjXG2N8cY5x1jvHhKQVgwBqKM2Y/
+			wdl3wGVIqd6skD+AQVIyjoHYlGdIUofEK7uj/HW6Afi5iyyXASZU
+			A9PYqECA9kYwRVSmGfp8AgAgDJUgEAOU8gQ8QMjvACPICqAMBsbZ
+			tL42hyTNNmdg/gAU85djzViBUagGTuD2Te+wxRXCvYiO5Ba0KsTg
+			mnH+AqAwHJDlDfM6EoRmh9ltAOYNQdryBRxWIOgzo9B5H1fMWR8x
+			mlKP9OgXdYDsQAIaYW5x9Jxnxv+O4bMfabzQmzOSPke59dKAHASb
+			IFYOKEKFhAABBCwB5DvWA7mw6hs3MQP9s0AA9h6GWA2CVN47RxFD
+			HON0zhydoGnAPaKVJAgLAfNJvk06ZS7F3RkZYEYMFYtkOMXcto8h
+			1JNmKsQeZihuDTXqOAbBzyjGKAoBtN4SAvARAAB8FJfX5F1AEeJd
+			70ToQqi2yBPI6k3l7IEOQbhzxcilTxts+oEwMHfBuERQQCwGpvWY
+			UMDwLDZAGzjUwv4CD62UUqpcACmTZDyHWW0do6SxDQGIuYdI5Dcg
+			RAorEEYLOPdgViAwCBbQZhJ3wB6uJA3FgAF2KNYA6xyIHHifUdI5
+			UAFhPr2g2QSAsqCAsBw74C1EHHA8ZYAoCFJgELaMYbY6qajc8oOI
+			cRXh6jZO+BEcyrThP/ksbMB59R+GCAAPMBLlR4gLMln8hMYzTgOH
+			utEB/tWEvHHPsgdT90QD7A8bkfgGixSXM6PIA5kh8gCK8xItoER0
+			GvAgO1lA+TgPWiCUM6Y/RsjCGfZXHv4fxY1DUABQR3whn4BaboNx
+			lzv46aWbINgRAUAABQBkB6gwEpvAMb38b/8AEAMATHDgzQQ/gvxt
+			IhRth6IfzUq7bKDlYoZwAzqEhuwfhA5vjcsDIe5FZYkDpwooZxBi
+			ZxwAAeLLKLaHhyD1JzBPMFgfYe5tyXRzRD4xQfDKq8ja6aQrKYxs
+			6BAhhbo4YhsAwjT0J5Z7B3R8qB7t4g5Ex28Iy77XB/aaUIJ86DZ8
+			5+Z8zUZ449B4zXDDJ9RjyRhs8JghCuJ3Jf54MMQ+Y8iCyB5754iB
+			8LY4Yshtgfh0JDx+Z+qlh5ZEQgiF59Ta58YtMOQsprSBaxJ7DSiA
+			yC7fp/R+kPQ0J/R2w88N5bosiIAowzqJpuCJqKYqR1opwo6FSFZ0
+			BuZ2IpofpOiEYsZySKAoUC6IjZYvwtA0BEAfxGYoTKsUouopR44r
+			wrKJ4AgeyEiKiMaJ4+hiAeItIfwfTESPsT4f4AUZSL8ZaOIfoAbC
+			ofxFRiBDopReqLY2gAQAyHgAaJwfAcZww2pdzQA4zbkHKRrYIg52
+			UH8AYhIAQG4G4JIBgcwFAbYCqE4Ep8ASgAofoAo5A2ZCrkh8xhQs
+			oeyWhiI8594+xe0CkgkVwAIdx8Idr3x4q94zCbjzSaB0QAr5pESM
+			0Lo8g1BQYfzjzkrTQd67odyAzkor4DhNYAgEw54JoGwDg46nw1Dy
+			Aso6hYg1Ruz5YAAdwdA+oaYYxesCaloBQ2TnQ1YCACpN4DwFIxQD
+			gE4xRITQMAxBAgQZYXI08Ewtoezh5bwcMpweoywEAFI0gH4KY74F
+			AGayozSp52A5KFcDwxQYgV5AAYoWDPTVgCACg74CgCpCqoQ04HwL
+			JN4DYExmwiTCpyZKYAAa4Yw06qQzobQaAyQbQaQyRbYgUuRaIHwK
+			RqjoA2TOBMi4QiobYZ43IUgQpcxYoAAHAJj/IF4Hw7YCICo0gBAB
+			otq0J5MJc2AZ454UoQxcweoeIxQCoDhN4IgLj/ICICxN4B4Cg2QB
+			6oY7k14iBwYAAbQZRYAeEE8E0zoZ4+pwoxU7Q0ihhN4BJVIAAC4D
+			w0k+wvoAiyoApSSXYBIobkYhBBAoYaIX4toc4cQzoaQbBh4eIbSM
+			EXAAJWIgQCY5KXwAQeo2SKaA0O6FjSg/apbkcOpuqOY8RoR7x4q9
+			bejsJlYvzxwr4DI3K+4zofK/tG0X56xiKcR9ccoAgegCIfACAfAC
+			weADAWgAwegBAdYdYcQdwKQqwfYEhtcH0K51Lk5zZu6JoDQc4cYc
+			BPEetMNMVMdMlMtM1M9NFNNNVNdNlNtN1N9MgFIFoGIcjEQAzJDp
+			gfQfYBaF6U4o9PyyY4IfABABIA4c4BoBYBQckR8pVPQYododod4X
+			Qe4e4fQeyPdAAt4752JiR0AAQdgGoc4HQ0YfwHwCAcwCIJoBIeQB
+			QDLQo0gfgA4ywfoAwy1Ug2YCUTRlwoQxKLYAg+sgqHAskC4zoAwf
+			I1YAQ0w7lDQtwa5CoAKWJ9MCp/KCg38hQgSwAf4ChEB+6Fi7Z7lb
+			gfQ2TNx+6HimYodSzQA4ZDx2h6NP5uA6DxozrDaRh7TWUmgggea4
+			p6USanw1cQaaQqtYT7QAo04CwDoBotwwrZTdwb657ch4IBgBw1ZQ
+			g77ShvZYFfQrypaiVigB5WLSge0tsDQugzToA1YBgB768EIe4rwe
+			68blSRkOjDJbY2QfcXDUBiC9KV440/apxMxMZ7CCza5l4AACACxb
+			p+izDaA/MogzocAbinUG8/YtpZilZd4AaRAFAGg75MrUB6wASyos
+			xtwfI2RNRN6OBTcdwcobxOjbZYDaA2QDoERCrxAvpDRHwHA04CQD
+			BNENzbAeVAoX4+odgc0GIxTrpNbvyyw2QH4Jw18qYACiQtoCgEDp
+			oA9HgxQZIbpcwY4brygd4dcTQcA7ZkwCQ85haQgoQBpx4qD1IBRA
+			AeIBRh72B3o+ytofShAfthLQrfoctZAcaWg6IDiMADAyxmD44Axy
+			oegApNZswCQeBhAB4eJdskiWgehd4ezkp2IfYbIZ4ZtClOF8V8Yh
+			4OAADRgtoIw/AFggYNb9zHb+IAANoIr+oFIDT/IBjVQ68RF8l/t/
+			1/7HMAsMRtcBEd6SBFCeUr9hiLcC5w4esChuWBrcwxUtBwQegxUD
+			hwkYZw+DZSxiZXiviHqGsFYoaqRzMGECzVcXCABw4e50qEB1iXqa
+			UHptSSMHUIWAYjEIsJMLLXEiQhTt5sgy9FOHx7hd0RB26BSBciKY
+			54VFSBxMlAUOaAeBcQEBMQGAkMp2p1Y8bDJ3J25+VmsKcJRjlv1b
+			8OqEgpQoZMo4BoR8pEVnLXkMEL55B4pMaBta7TMRMCoslpR+cRp+
+			J4uJZ8UNyESAsVECiFhLEUiPIpQo0WDEQpRucVZ9kXA3RwhjlDqG
+			q7xtwsh0g2cX59hd4pwtuFEbTKJ1q7taA8w3IoUGEaMYqJaG5iCL
+			wyZ0AAKOKMcWAfYeY9CPuXCMaKcZofmXpiTI1aBvCNww6HjktSgd
+			cVVfB8a84gQdaXSRiReG0eYheG1MItoTLXoCIZoC4EYBweoBoTAA
+			lWgDQ6gfgDY6gAIAtehiSDQfKysaIurMb2VogArZ0iwyYzIcSWge
+			rQI8Z+51KOUYiEjSlK47gBB8I82g47gBJd53IeqXTcg7hjoBypwC
+			wzoEQChCoeAbhYAe6gI1C9gDADa2YBZN8/dbBa8QDc1p4bIrwfUZ
+			pkoCs4jTkK9gTlcCkiArlTcobYCgArynZdRCKsQFhN7eepRN7tB4
+			xEUDgztdODgxQbIZg54bYZo544Vgzw184EBHIBgCQtoGQIw0gCoD
+			54ZdyXx4LmGByHougeQdooYaQYQ+pPTdwcBeoc8tY1C98uRqk1Fh
+			JVEyZIsVsbZD4oYbwaaxoRodYr+FwAA9hqgIIK5aJEmimI848Px2
+			US45IvCcQ5IcobgrwUYQi5c8Q9haIHAJRqgCYDL8Aj084zoXATZO
+			gcYa4+owCtoCZWIBZDZkpkgAAGoJY2QBbtLSogVqkJCpYhl0IzoX
+			ITpYAcIa4zoeAeQ3IeIdJOiAtXBx4GAsRmDSL5g2eFEMNmdr5E53
+			BMlGxqocZkgAz1UV8CgfNWxu7lAA9rAgee1XO5htyMYycdUZbUZ5
+			lnI+gBI7QpAewBYbWXD5gfIeYfIDRLADQ+yDaXR96eYw15xD4qqX
+			Iu4E4cgcIbtMGAHFHFPFXFfFnFvF3F/GHGPGXGfGgj4FIFYF4dBl
+			4Ap0Yfd1h0A6YrUTcbo7g4PBqPYcACACAB4biCoAYcwfopoYEtAe
+			AWoavK8VR3YGY7jjLsIeADweANIALUoNACAcgCQC4B4cYCSxEhkv
+			hEw+Ift4xu1bYoU/ybhYDY7XY/ABAeo74A4fA7/CAoRxIyYbrWWa
+			2IY3lKx+VrKBzQMWeGJz8PA+KHIpRYEPo8o0hIQ0nTQz0oYgkT8F
+			B0oodvg0gEwGI1dvmlqpoAACOdalt1QvAtodwco06maL8G4bwaQ5
+			4doc6LRdxrUIOPQA1gqY407xogUrYoYBArCph8MoZNp/+BpBAy1t
+			+FI869I2UCAeoehYEtAyzkYCoDI79yIewewzrCvPNm7ZScQtDZQv
+			0iGDODiGyXasIwL8CNKvoyYqIgsr0758kXfS8K6yg04B4B/QR+W0
+			UEodzZyAQsgo9YWM9bza553ZhEqXb/rXoBQ77pA0lm8GrcnkA/Az
+			gqw3Qv/Y0+aoICGw8KR3g9HYp8JMYowgTWFWcVozCVOigoYCIC5N
+			4DgEY4BbKMAAAcYeZOgbwdaPEBwAYdhN4AYdVf8vBHIushKS4y1s
+			osQe9DKX442iGeJ6UcZWKZVf/d4AQeSpXtEV5iACrZwCt45e4AhO
+			ge8YTUYgQBoez/IBYexqgAjY4gQeZ44esZBiIeYa4aYZV0/Gvxb8
+			IoIDbXoAAJYgYFQ/AM197HQBS9gNwI/ygFIDfvS9gw1/nxn0n0v0
+			2HA+0IeLML+HNKhE5jrMZ9TUWFhFWCBuOBsp+Cdp33cEGyRxQdgz
+			ruMFUypPJh5PMy4fWFDgGFozn3GyZu+AtKh6h1Z2FKp9OIH1sA+b
+			giOHZ5Z4h3/7zt+IOGfl8I53cSZ7kOBIKC2r2I/giD0LloZtcRZz
+			YfR0xjuK9orQYisNIgABAIAAUEAECAEHAcDAUNAAGAwFhIBgsDgb
+			/f8JjQAjMdjMcf0Jf0YAD8fkZfsjAADlkTAcEAcVAUDiccf8Wmk0
+			g87gUWmMrh0Cis6jUfm0JmcMn8NgtMg86gUejcYf0hkcYkz8AFVf
+			tbqr/fthsD9flVkb9qlof78e8JsEHf77ib+AMpfUfrQBfz6rcljA
+			Cfcjfz4sz4jVoAT/q2DAMZw0Jk8YlMjfEIe8te1ufsIysDuT7fjy
+			mj7AIEAD6hGgf4DeMNfj7hr31D8sLye4QesCsL5fL6fMJAr9BYLe
+			T8gQDfz0ejdttuhIgrQAAkfbkhkVFjfY7Pb7lT7vf8Hh8Xj8nl83
+			mDhHFYSBgVAhgjD/Eb1AjzLgFfAIB2Jgr/gqCHwiSOLcxqOAGj8C
+			oIkJ/gI6zSIIdADIOfKaLohLpqQkTfpKsgALQkKYpeAoBgQg6ZoO
+			AyLANBCaHw6J8K6laOgarp/gejIIAQiR6m6rR9nkjIFgYiQJgvEo
+			EyGAAEgUgYIAsl6jnqeaum4ai2t860Bnye8ao0fZ8L4fR9LkiiCg
+			cCYGoeAqJPiAB8HoviTK6A4EIKCQLNMliBgWBqXhAFESocAB4HWv
+			h5HdHzCAAdx0t+eB1LkA4FIKF4dgkAAHAk0wFgegoQhmgoHgqhkM
+			AIAyugG0wAHseKEnObjTVYkJ2nSvhjlseAAHqeSugQBCXgMA6Xyc
+			goVh5CQZiKA4AAQBb/vCqrtnacqQmiYCtHmdyQnmeCtGsY55xMkI
+			firNIfCoBdmWcp6JoQ8R/LRVZ5IKfsHnidq+G2aB6AAfJ7K6fB6o
+			SbxpN/DoABuJV0heIAFAACILQE86ErIjJ5HahJ9HwjJzG2uRnF8w
+			xxmuuQGAel4PhLhwFU6AAHgsgYYiOgtOWfiavq26KSAAd51pCWpM
+			MMcJrK63q5Hse55TcfStH6Ciun4F7DH+BaQnyATfnwAcNwHicLnv
+			CQNG2EMlHgBiOH3qGkbQrqU6KfDfoygYCWE6QCtMiiLuxBCNqGnK
+			cQw/zrKwfbYPiAQCJYfYEASBJ5oaAZ9KYeQGAOA5pIYfjlHsFDeH
+			wVpuG4aZCa90vTdP1HU9V1fWdb13X9h2PZdn2na9t2/cdz3Xd953
+			vfd/4Hg+F4fieL43j+R5PleX5nm+d5/oej2APBIE8HoouCOJO/qp
+			I5BKNJiAR4ASBAFGeCYIgmZE1gIdQCAIAJrgyDIKmeBn7tgpjeHy
+			AhmH4MwBKYQOjtAIO0L5qB9BSAUOh+4ChzJDAEPwgo/EYIeaY94j
+			I/gFldH8AlBYBSPgYJCP04JNQAAFHsssAg+SJABNgQlDY/R0HWOi
+			ux97fiNKkVUdwoxGyrEliA9kn6Ji5AJAMS8fjVwAAKAWiUlhLy3k
+			lQfFFipp1FFhISBoESEgbBGbPFpZakiQgTA4VplhGR9HNHQrBXQ8
+			CBj3HoV0Z4v2lDuHQXwARC11EST0ABwpGR5jvL4Psu7LgJkFCQGV
+			hwFgPIiAMQUew8DTD+QelshI8h1EZHaOcjI9B4ldHKcwAA5BuGGk
+			ISE18IzaAAAWA40wJQYLpBUDhNICV1gLAmXIBzTynkZHWORqEL40
+			kZGwMsvg2ZjRWlUQNeDNgAAHASQUAsjyHp1ZcBUjIEwNLARKSAjM
+			hCtD+JPH4vgAB4jrMhIU0BCR7JTKPFYrQBQDk5bkURLJSEoTTXa3
+			1nMLXsLwMcPVpp1iyNvLkWEkKwSCgNAessAyvybEDXigMppNElmm
+			VM9wjKW5VEdOsPlRUUW6EDA8CNhw/4QR+MUABIBch2j1MeXIjg5D
+			/mVOyAJJhB2HHZH+PpGpgYTD/bOQeeZ2zUEHQeX0g6Fi9FQe9DmH
+			MzFToZhMQsoZFS6EYYETce9TSQi8GqNcZgSXpVlrNWetDxw4gAA2
+			RoJpOwVIDDIRoBNaXVgKiOAAOISK4gpA2BBZiIzpInrtYWw1h7EW
+			JsVYs87O4eVQOdZGyJNy3EqLiTqDJH2Dr+g4SosQAI4FdjgSEe49
+			bSD1aKPaNFqlBjsK6vdqE5R+SFHkO8jI8GMGnHuShF9piSzjHuPe
+			EaMW5WTH8s+pxU7HHeO2UQncPTvwZdcTO5C7CdkbqcT2yDprnE1I
+			tc0ibNicFNJ2+wmFFT/kIchdaPKULsILJJEm4hHSaM7Mk10654yj
+			FEIRdohZL13ABj1e2Z5EKoXaKMm3BRH6VlbJJZ8kZTYhkGTKiYi9
+			0Ds3fKg9hVJLyGkWjyU8nGDLJFOuphYghM563KJIvBD60TFEhbSW
+			peCHsXFmK2WEyM4iQEnLqvxihFsfIeAEWEu5KIMsbIzOOPy0bhFo
+			Y2YkkJM7OmVJSc2KKHj4mdH+1ogRuTGnGMahR7RtAAuPLsQgvgBM
+			imlH/J8zZqAAj1NIXUfo9h7AJq6aUfo+G4IbOQA0BpJjjj/HkPIa
+			rXDrAkOsAcj41UY08se6fDFjHcAaCaDMBQEAMD3B/QcD48x/j0Dq
+			A0doEwMQRAEiUzYAh/D2NMR2PwEjMj6AgZk1ZGTkEvOQRUfpBQBj
+			1hbBK65HHAmJTcAUto8QAjuJKAMrQCB8sOAmPIDJ0h+JsiUP+JVT
+			yBF5ACdEAsqAKl8H+AckNDUBWsAwAqup0yXj3HeQU32uo9AGrqdi
+			7UWCCPwYeBckIEQLkZG6NMuQ9B3rYHdpEgYCAGMOvMWQkK90rj5K
+			0RBMwEdeR6laaYDYIVluMIKoQuSj6DzjkCXzhBct8EvBWDawADQI
+			GmASA6kgKyX6bIziGJYEMpoHV0O8gbHSCj1HjMQZzAhvDTYFaGVg
+			D0JJ8NMBACpBQTg2NMwwiU0CCpImdgu+rHBukhGCKouU52ipcAAO
+			gcBmVTEZXO2dc66evOmNeQkeA5zTD6HsQMcY22BC6FMOmlg7i+JF
+			rqCwG4FUlALZQC2LIJiBgKAbd08s7SMjSF8rMcttx1lyHANdgTFy
+			5AcBMRII4YQHgASdzlNKzAGNzAL5Y8kcCMjqHB0VIEbSQjEFkuEd
+			I4C5ALAoRkCoKS5DVHbs4e8EVdAVamgI4xWkfQmdKARsAAAMjXBA
+			2Vs5a220wI1CNDxpwDF8JUSvX5K7BXaqft5d1lCOXpInr8jBFjFZ
+			IRqSp94BHFnGl5s2GrsBB3gHgFAHBkCFgAh9NDh5gVLgh7hahtl9
+			BFtLQLQLwMQMwNQNwOQOwPQPwQQQwRQRwSQSwTQTwUQUnhgPgRgT
+			s5ECr6iytYnssMm+wCDhgEBmALAMALhdojgCB2H2BviIAGBsjhi6
+			nCh9s2ABAFgChmgFBkAajQB8gdi6B+gfiTh+AYACh3J5gCh1lliS
+			jPB5pBwyCbLMoONXDslTCJP+sRGKCOugGujGsALjw3sBCkADv6CO
+			EYh+rdqqElCkK2itgDJUACC+B3AEGMAJlNAAAfgTgMGXPHK2AIK6
+			i9iXh7B3kSiwCBh2h0CtGQDMqOIpLTk4pxgPgUllgglygARUKHAE
+			CMgEAGqEpumDh6B2iCh4h1CCh8B7CQhuBoPRh2mmpxh4h2GMw/t+
+			FdvqB9kcOqgAAoA3mzgMgQjTKHpIB3jTF6iBo0iEh0hxKNrWJ2iu
+			hzhvDDBxBtErw/h7KBFdJPgAGTCXgUgaE0gXgfJagGFQgMiutOFU
+			EMIkokHJF+rWGQC2hjhZxRQ/t6orL9olk+vGiXpbOXAdFlgTAZkJ
+			AGgIiBrZiEujCuh9h8pAOFgABqhji2ldirF4h7rWG8lmAEiXgMAP
+			owprLrppoJm0lmAGiCgKgOiMp5CCh3BzlvBki+B7p3I8iBiYilI3
+			l/pzB2DDEpCtAJgMkJATgYl0tUEJDfCEh4h3I0KYh8iQhyBvC2pP
+			CtFTCBgMAOqTiSMGunDXyfQ9AAS1EJB5p1h2B6Gsh5sZB9IaC3I3
+			GKLIABlLjgLIJxEaiUiEr3NHCOTGGumsMPB7D/sGMNror+MUp9sD
+			ieHsC+rSIXE3AAhgs2hBhqBsBlBiQVTUzVQMA5AAAOkBgpEBgUid
+			gviNJuwRq8CXg6AlAWAAAVgOLAERiGF3TVzizjTjzkLFSGrJLojt
+			QaMME2iwrMLIsarQO1P8mcqAiQxeqNrhE3TvB8Q/l/OJh2iQh5LX
+			CSp1JyxjPPTtrfGDh6w/y4E3RfEPGdDNr8Cqr6rkiirlznLvQavL
+			LoEFnWThrwCKwarrziNijtz/MMvaLwLIChMMkTsTgDp5LziVnEw3
+			inLvnwoTDJwzl+kxJvP3mdi9UCCRP0z+tZT+ti0OignECCCaCnIn
+			lmAFESiGCeCbDF0eivL4Dtv0ibnuChsPCfjjkBsV0drvL+iEUPiK
+			MPETziP4i3D4rtMKyWzp0kiPDJIsCuMYoRl4CuEPjFMXkatuC4DO
+			k3DJPdkPDGpKLKDaLSCbseC9LdiUiyisC1suiSh/C2spCLCRi9O+
+			iDmBHtCDixDKD/AAquiTi2moC6jAC4B+gBgCgBEpjGs6nCjjs+kw
+			B6Cos6iTIYU/B7h4kNi9JLqZGugOEYkMAABwNIsEjuNIzknigwAg
+			AwAEB6gKh/AJhzAEBxAMhwAChvg7gHtTgYqAAPqVkGh5tYkCh9AJ
+			mBVoqttkEDteB/MAP1gCB6kJNVKqB+gDCtD/DHADDMh2AGBziSv/
+			ElB7E0gMh1GyRDkJB/HHiOB5koEEVxCCV9kGJUALG4txjgMpkMAb
+			ATAJpnthAABxhpCtFpmml4rZiul3ALgOkSysx4AICXgRAXCMgQgW
+			o0ENhuhnCQhuhpCEyQGKDjKIp4AABvBtFcpPDfrtADq8gCPZolxJ
+			gPgTgHElSXrQB6CtJ2pwrgSmunTOH0kJKMm7OGl0oTkBHCiQmkC+
+			AQgXCJF/SuJMo/ENh1hyqXB0vqS+pny5ACqIFmiEgRgYuo2e2mTM
+			AAARAXwwiNCkjsh2POgABnhejfpApvh8iuh2BzDDWbiMgYGGgAAY
+			Agq6t8CBuBIdjuroF6iEh5h12r1CBzBvi2hehU11FuSpAMK6gYge
+			PGFMkJAOq4vtASiQlTDtUHUViNOjCMhnhdCQh2BxpOlugABzBwGB
+			B6XcW4EJAsA7rAAJAML3HX3YAABnBcuRh1CBlGDfhwBsFw3n232r
+			AAAjA0K6hiBzV1KXjDBoBytnB8qgLr0WnUACB7EJALhogPFmV0Cd
+			2JseDrh/AGslgQtzTGB+gCIOSQp9sitgVsiDtiABh5Nhj/l4h9h3
+			irRmp3jnGdimB/FTADGtI8h70cAEBlAHgFgIBon2B5DlB6gEDlB5
+			hzDJBfhsBsBnhtVa4WYW4XYX4YYY4ZYZ4aYa4bYb4cYc4dHggQgR
+			AVAmCmA7gFgFGHWbgCB4m4B7gNy+h/ANMYgEEFgCIknFibUEB7gF
+			pbBoonmlCEkuCqh3m0h9B24LhhsdEUjgB5AOB4Aeh/gEB+gdH4AC
+			AMjBOqpJCCB4EoT8M7oOO1McIf0UiNACJoiCZBl3FoivG+MUtgHs
+			MijTHECLGJLnw+02lngFOdgRpmY3I/ADkNgPNnAQANGHArAbAPlM
+			AEiJQDEJF/CCh3hyDTDXiBh0Bvi5BghXFwpAiujfCtEpDDExCugS
+			gYllgmAyPVgSAYUc0aOgMEMWz8LHLNTEsGh0hwitBahNFwhxBsJy
+			3yiPCB3iCXgqA52egNARiJO6mDmu5YDTrWMGiTTurTuJz0Brhkjf
+			hoBgDfo8iCgPgSGHYfF0gKpGgAALAQCQgMASFUEBJxJmP1z5hzEe
+			gAByhuC5ReiEhxhsCu6KitLSiMuuCHy5HyiBmGESgUAbEJAHpDop
+			IMkYyQCM5ZC+B0hx6JLWFHrSB6L4CBiICB3SDpYzlU6cgIo+FVFO
+			CB6BCB0MAAB1hxiQhoBgmBPMLrUJl3I4CtFGDDLSiugMAQFlgaAh
+			We6sESpPCMlGaaPPC5Buhrl+OSJqiCgRgVWegHAIxtDoyzJyJ6iQ
+			gGmIlBjeO1h25e4SiOGuEYqmrJKUgAgLCP25V8siit7FDVsZADC5
+			B+IAjICBgDh6ESgDB4puiaB+gFKDgGi5VyTssiEaiaNdkZQ6iCgD
+			B5kJACh5lltXNVX9BZtXABhFBnhlBihkYd7d7eDxA4AAPuiXgtEB
+			gTi+grid25QPiaTcgAA7glvITfrALCW6be7q7rbr1ar9y23HiUEL
+			TsGuzqqQP9reDHLWF/KNlFTwztzvEtmLT0Tzy+MlpCz2FBh1iMyV
+			sl4GB7aao/YGRepVCRT8IfbvP5UGURUG0A8E8EIfL8HU0DQa0ELs
+			ITUFjwUHLsUIUl8JETJnLtCnHLFl0P0bF2aoCEQlrIiT7xjT0SCr
+			tJLKzoUBp78GUFHsLvo85HL1MOLBN3ZkIcY/FoscKEDviUj+0XiF
+			CZFnrqsA8M0J58MUiGMQ6oFnk2znUriETKG9iqUeixrOjBP80x8u
+			sHKZJKCNM9gAh8ETl/rZh6rKUz08i4jN0/EBmdMni/DFYGB/quiw
+			jDcujGoOLQD/FViLi8i/CBc9oKDEtlDNNXDfCwtVVxMwC4nIDosr
+			rhMwACoJDEs62/DlB2KZEE4wDtAQCP1XBuIajxVabsHXgBA29WAC
+			hfB7BfAFh4h9h7AtAJB2gLAmH+QqC3kSh5CWiJh9gHC+B+gIGptk
+			NcikG5EHgCh1K6gBGtCtoSh6ALh3o/bJB+ABi5B6gD4uLKADh9K6
+			gMB1vu15yOooDL0RB/ADjDB+s9COWBB+AHtzKUiCCM2biCgUAMvV
+			gD1u6jhliBlZJ3sXadiBgNgRESgMAPFlmTZ8gViMgQPIF+jmhwBp
+			CMhtBmoYLWDfaFJOh5aXBzlWh6eP23M2ERN/FmiJAPgTGzk1iXpA
+			itLOMc+NCtI08Y1KimrCHwQakxiuh4B392iVN8WUWxCNzpQ+CcUq
+			ri5Ek6ZHEoP3CgiaAGD9iVpqSlTv+fB1jfpUz0pgspj/gGAISMAH
+			iJCnLr3iHuGKZoXWm8Hsapajhy1HpxqHjTEi7LqIAJALjTAUAb1v
+			N/I0mAY+jrEsCQCQmNCQhyhtyOh4byLQLUCvCEgOgTkJAnA0k0uq
+			IJpykxSG9gH3sL3JOEz7CM3kBqhi6wpOWtiMhyhvF+Lai5ZjEJAp
+			tS3ch+Fwh1B5DDBXBmBwpzB7DPzErG9lD/jrPsCJAKhpTXxFWnVU
+			CV5tCOgHoRgR1xxYI/YpbRw139NsG8NiACh2FloXEoX+h8B2Gmzv
+			Dx8cDEjjh7gGDhhdAKgJgJhiAG4hh0zpBzwkhztDh3B7BliAMthu
+			AAQWDQeEQmFQuGQ2HQ+IRGJROKRWLReMRmNRuOR2PR+QSGRSOSSW
+			TSeUSmVSuWS2XS+YTGZTOaTWbTecTmdTueT2fT+gSgSCQXH8BAIB
+			nEHUtfgcDgZ2P6CgV6Ph6DR+P1+hB/VkDvd7vYH1p+gR/wYCgQCv
+			oAgEBVIAWd/v9/P4Av6tXGD1K5AG5AYAAZ/gUAgC23R/gF+vp+gB
+			+PnG36CgMCAMAATK4a3AABU8AAMDgUAP4C1J5hF3AB6BZ4aMB3yz
+			5q5bG24Wz4UBW0AAXB4EA4AAvoBYZ6cMDNYEYZ+YUAgfhgUM6J/g
+			izvwFPgABMcvUACYQAoAFEZh4AAgC5aDvx9wV4ujRP1+QV3Oj4tB
+			gvYAPd6VJ6vPGnOcB7gAfZ8qkDQRNEGwjvADQRgI8oFuGCgNssAg
+			DMKjZ4HW+JaEweYAHCa58tGxrVHe2DCgiC7hisOoIABBrRASBjhp
+			GdxzsaZRcQEYJVvwvDCg0D7wA6EoFgABwKOGDoUqkEQYrOAoDwwg
+			y6tigz1LOfr1gAfB7LOZxdsaaBePie7uLifqzn8xIAAO8AABuJjR
+			BcH8HggCsMSugy5oKfZ9OrQAAPggrHsKeZ3Mse8PgAdpzn0ABjFq
+			1p+UECILNEHAkReBoJQeA4EqkCYOsm3kBnys9EPiuqCnkdaCmsYi
+			pQIgr+sachvPxAipA4EzAB0JgGAADYStE9SC0W6suTPMZhwEeZ4P
+			itzjNAz7KNHNgAHs/zHH2s4BsE7ISsKdB8noABvnPc9GuGAh5gOg
+			p+sKAh9uG5iCxqAAIrQgrBqkfoFxGf4BsafwCVmAz1n6A9pH4413
+			zceAEoLDB+gU9Z/AZjDXsdgkBgI+N+suf8HgIfrRMU4YDndiYEHc
+			6i3gGfmGAOHhlmSYhlKDneeZ7n2foaNoABHNwADCvQSUGAAoMNou
+			gI03QAAUA8HjwJYWAAFgORezWm6fr+wbDsWx7Jsqcyuvy5IXPp+r
+			suNsr3Ep8nuxrERIgp8y/Lp7qkfJ8b6e6znxvgAbmqR5Hbw6owHQ
+			VKrPDSpQ1wW9SyAB6v3xizzPf+QrrKiCyAuM24ohC5z3PiEXug/V
+			dKhC+I83HP9JeyFww2qIT6hmo9rpvPyopHUt0o+VKcz6j2s9Ddaj
+			24B+OvVBn/utsnyfVITY27Yz3uHUIT3KD9N0jNXu3Frtz2LhgG84
+			AAWBTktzGrNrqqS6sarX51Yhc2OHNnfs4AZlikHod67YzbpHbr3K
+			QvYzZR0qF+d29xihkiFFzWyn2Cz9FsJsfolZ68FINMFH8PtDC3jR
+			j4Nyto258S6KoPgPRNZkR/j7WyVovx+C5j8LwP4/BjVvHVMSP0fB
+			fh/N8TY20uz/FtGSHucN6Jh4cJsiCXeEwAgDD3N1CIxRjG2j9KOP
+			oexRyuj7H2AWLBbx5jzHqfgwLIR9shHwP0CQEh7MOKOP8dg7GNEF
+			LMQkA5sRqshIgXBs0gyJiAM4C8ZIOQXgIH4AgM48QFDwCoP87ADZ
+			KACOkYYf4CmCgLbqwdQcZFBgHUg4U544EjgDHkg8e4EFzjwBCOk/
+			MrnwvzM4P84w+2JgXHeB8y4/DAACXqYY4Roy3gAHiA5V48QGjsNG
+			yZfBfEMPoSQPwByMAGANPKPJiY/RqrwHuPEgoCAFHDAsBswCMzCg
+			jBgZYDwKDhgLAeYUBMlgAIzIKPYeRBRjixKkO+WQAB9D4LOPQeJU
+			nHJuAYVICAGT1gIAWXBDAAzNvNKmAcywDwJrwduO0cpZxxjXPiPo
+			yBqh4qQHiOxEb/zCgXA6xOeplnbgGXC/8gr1TGj1HqeuMRZ3DAAH
+			GNs7BdCDGbNw110Rty9FuMLPJCphDDQnebNMgo+E0PmqK4wxo9h6
+			IjfkiSF5UmogIAQYAA55qkABPQUhwQ9aEQ4dEVJ4ZgaMLWf2tk9T
+			dU+wMPKAk0T6ThgOAiaIBwEqzAJMKPIeB6x5jxPipUqQ9h62PH1C
+			pLCBTRptppYECbEzKnDAuCA0QPgpzaAUA44Y8R1FSHiOk2ZBQFgR
+			njPNAbdAADVGSs8d5jT9GNHGNw/FBlpPKM43doYLzABZDzNcBAEi
+			CjrHmdgSAuBrAAHUPI7A9zGEUAGPtB4DB5zXjIaIAQ+jLAKHAA8y
+			48zAS6UgPYCxqTSIlXCP0CZfI9j+AEXKY5pa/llM+P2ADDk3DvPA
+			AQfSD4Y0+HI/VvTq3ZPhMm+IfACQEgKGCBEBoDRk1lAQOsuYARyl
+			aH+OUfBVgAj5eoCeCgvhrjXGaOSQmM8aY1xtjfHGOcdY7x5j3H2P
+			8gZByFkPImRcjEyBQCgGIhUrAsf+AIBeGwIDbrIAixaWwGjwoMEC
+			J4FCuj9AQ9Qe4C3o4CNvWp4FWHdl+Ug2qChei7Fvc8P8wRdzgZuM
+			UPuHg9TGvOAIAJB5aUHltfQAkwAA9DGjNKAAd4Gh1AAHcBvR98yM
+			QOTcP5eBgl4XlfQNwwABBvsoiW8ie4EFhT3dAA87ANAtFnBMCI8A
+			LwPL7POvlfsFyEv4oSfos46hxFSGeLg+NBl+ttS6Pg9b4ANgmQeD
+			gJhydlmiI3QkdI4j11WtYO0+IvBSTiHINtEYEgMIPC2HoCgAASgx
+			TgSZbZjRpjCUgPIdxjRtDMPiAUA2gTMAAU6YUEgMjhgqB2g8AwCM
+			IkSp+NIYBZxoi/MbVYs+7VtDz3uvAAANgkmABaD4wAEALGFfSZNB
+			5nITv5LhOE4ZVjLD1oOADaqIxaCc0ftgAAFQNrwCEFbc4FwPmAAK
+			dQAAEgOHxLUREdg4yzpknyPFVNjgADgGudygZUgQArtGFU5IH+rM
+			ief1x3JeLX1AG0VIYwsj4jjGzWJGtPawHlAeWcCgQZ9jjACO0AA2
+			BzT7UGnqPQ+jAAWHWBowI+TkgB1GPsd+yU1SjPWPEFXdh+AMetNB
+			gc0qlHMwIALAgDB5XiHxWYe5yZbmjk8oMBzGEMYJRHd5EZdzCgHH
+			qAk6w9QGDvASPGiI1hejPAxkf33v8ihyO6QYNJBgRF6CQQYwGPt8
+			nDAYAhB4dAkAqAACoDaLzEus+B9v7n3fvfebRBZta8Uru5Tb2CgT
+			f3RL9Wy4NwBZx9OBcL+pv37wAKIMaohWcpU/uPHWMaHetWS6hcW6
+			LOcu/2nzAIcqLw1uXiOW/XAgdIfAIe+0d6gmdcIk4OdqwiqPA0gJ
+			A0qye8daeXBIdTAsYoecaafeqiMKAKLSeMfQeArSdOa8ZEfwzeeq
+			za/MgMf8gUgawke+qydSbRBQpkeEN0MqMsASAWYmWmuKMsgwzeeu
+			gyuMiQiQqiIMXseOLaeSXwuIOYeUeOr4rmXwMSfgabAmNtBEe+T2
+			dMMQLgLofkfug0LohwgoNsTULmmGH+VQqqLqH4HqiY3mLnDyhCL8
+			H4HkxChoS2TaieH+QEiKH+hwS+LuieMcdMiseiiIAEfs9cL8isAC
+			H4QETSAILaLwMaQKv0iiH9FWZDEkNqH8f+h1FMMeHyLe0JEeHuxO
+			bwZCz4YoH+A0A0kYeGH+HIHILGnGNinsIQGARKdw++Z+ACBmCEB0
+			BELUAMCgHeAWHWCihCAEA0K6AAVILPFKVMN+iYY4H2AMYEY8oEOe
+			HCPAAEHmQeHwAgO4HgA+llHqTQdXDKOeH2OSAoHiA2MuH6mCmLFC
+			MKH4XomQAcmcHeAillFjGcISZiAAAgHyucAeAGPAAOHoMAAMG2WE
+			Hy6YAAAYAgQeA+BKYmAYAiMsBMBmIKBMBqIK4LBAHoHgLOGMFhAA
+			HQWQcwHc/+/SKkWIOGBwCWQeA2BIgFCEIO5KgKUqIKHIGuMKHGGw
+			sSHYUgt+Q+G6GoNapiAACQC48ESKYm5+LOtiMa5+kEXi8WS8KkHQ
+			HAPWFmEwXOHiQ2gi5JDAj0rq3wtmOGBsCQl2A40GRqNALOrYAAHY
+			HKIKGSFkRGbmpuHyPiHcHURGxI5IKkMoW+eOArGE5rM+SkIKAeAx
+			HIXCqIAAGutyMdFcZCoGMLAYUGH44iHo2Sr2hOSkXaz+SQAiMAo0
+			02PQb84epLEYcsHmUgoSfAW2X+8Ws2SQAqZaASMsTwQeBkCGYmAg
+			AoQeHgHULOoAfvNGAkOGAatkS6HsKkGiGGO4cQPip+HSHGO4LCPi
+			rmye5IOGBGuQAACyDwmuAaAstSHsUgFYGWHCAAHIHcPw7wnEbbBo
+			IUAIHyNEA0HIVIK+YmoEOYOKpuMKlaO4HSBMHGMcASS4T1B+e4wi
+			v2RqTaYOQeAiHm3OkYXhFYT8GufqNaqQf9BqfC5KX6POAGHaQuAG
+			HcNrIWz+Hkf+AGUYN2H5NmBKIMCwGyGyGgGJGhSpSrStSvSxSzS1
+			S3S5S7S9S/TBTDTEJuBkBkB2CuAiAiAeGej0PMLSBGKOAGAejQNW
+			HIHUHKDAT+H2BO/XDiv267F+dkeGH0AWAYAUG/CSHuebHkzAH2Hs
+			H2YCAkH2lIAy78H0A4wERKr2i4M5U4OCNwHeMsAGHYpklwj00HBe
+			NIn+A60fHwVe0oIwNiME58zoM48yHIQeAEHOgAhMPKH+SOAOH9Qt
+			FKMMAePWCYDCWEBCA+YmAsAuMsogNxR2IyHY1+AAGcF0si5aHgHY
+			MbLiQEpIKkA8BUNEB4CkYnXGZRMM5Gr4I2UcPWFGEIlkG4GgQE3E
+			QeC6D4Au3Q3UJQSsoEjVX+PmPWGaF6XOGKFgQ/LAByWCAAtImuAU
+			AbKYIofAqsbw/k14AAGAFWn3YKQ/NiBYBuvUBWBwvURmOGAqA8Kk
+			AkAyLOTfBAfA/jIUmK4hWuF2PwGsGMQFJwMaogtABCNEAYAeOGAf
+			P+4uCUXgqcIhLuIKG4GYp8TQHaHQPWGkGKPwt6WGBINECCC2WEsK
+			ONQtOzHIqgIeRCMaGIFeMbbMNHNmS6pKhCLOAMK4QGBsHPMUASNa
+			uuYEgkQwwQNEAuHOPIASHsSOhiT8HG2SoIMcAOPWHbbqQGAgqGAN
+			LYIoAIHsNEAgHKAmX0HAArL0UGAqVWAqPWmA2GAQn2HiysLiMkkY
+			AULEH2AiGcAKHyZWHEFCG4CfTHd1d2I0DgAABSuKDiIMBANGAACA
+			aa2kx6+eQeAcr8AADaCLeABSA0vVd5etevexTA/CbVAveKT4ezNg
+			rwUEefQYcK/kp+6nKG/m/hcUWgKkHot2McUET+ILACn+HSt4HqWU
+			oKHih4RGcsXWcrOKdyWOWw1udlDWd1RzBOIde4IdArA2d4dkdsIn
+			BAZEgOeVBKeXBUrVLygKqxCTc/DJDRDbeLcpCiT6jFNsdOpmAMo4
+			N1SOITA4IkfAgQeOMpCUAVHigWeOzebtCmzeLyWxNgdGa8qNC2qM
+			uJC0gQfEqiOGgYNognDW/EL1B3DdDcfkdNizixU0hkTWhOXqMKii
+			W0NyH+HpF0HuHeTXY+K6Wyz1EkNah8MKhkfpEIiCh8TU/UPhjcSs
+			b5EkboXkMjE4UGH7QgxSOwRJFhSWwQjFdmpoeqLahoACZAmixOHq
+			lKpLILF+IKHKS5e9k+kE/KINIoIdcoIbQbeyJQCBlWAIHM9qAuHM
+			A0HAWCH4AgBaIMC8QwAaXoNFQevIv0puYobcMc5BSMbxNg9koEAi
+			q8AUhUQwH9cmk05AHgOSAIHko4qgOCRrAeZm3iAomcHgAxIkmgIW
+			AGwS6CHNX2AM9iM/FsTcZeM5g6AfPEAABgB2PAU6MsA7T4WGBMj0
+			+WS3IUhEctjUUiFmUgoAOrD6H0hIhyRhKWAACECwMAAcAm1sIoQI
+			LOG6GeKkG8GgLOHkHePiGwGcmdpCUhYiOGCaDHIIA+BQPAAMATLQ
+			AiPiTeIaP0KkHKG4UgFOESnEoAz7DCOYhOKdbBOmAqMsCOC+WEV6
+			ZQQxpjM02kHKG2MaF+FMPjLuKkLCMaHUHIOwPgSij6MCQuroOGBC
+			BaPABEBYYmnkMK2WKkAOAYLkLgHcHKQeHkHYceHUPiG+GqUhO4Pi
+			S8MaHWHOO5j2ghMQRqAkAsPAAjOgfWtQAAAoA6QeAxGsWsnyHqML
+			OKHWHMPXNUPwHZs864XAqUMm4taEXwPQpcSOHyTQduAWAcMtaEMs
+			T+KkHAGsPwsUYwbcUWVXFdeKLIdQA8BMXgCHa6SRnou1pGHMnEHK
+			HePwGYHANSbbgRDWXoQeAmHYAsnuOsXiIMHyPQRLQ4AAHOBPQKH5
+			REIyNpVMk1ILuyHnc8ARIANHoWG0S1JzC85IeeNwi4oIWmhPVNkm
+			NfkmN0YGfSHxBcAJjGWwN6IKDTSgGiFJlTwpwrwtwvwxwzw1w3w5
+			w7w9w/GgBgBgBwDArIAUGkLaAI+gz/n8MNcii9IiHaHaC2KyH2aI
+			e0e6IagSHyAcmyGvBcAMHopZNqAyxOHsAaHmBTIWH2AkH1dmAqi4
+			rEaaZMQrIWMNV6AEHTifVwMNDgMuL1CglAHgBE0eHiBGmdVgI3ii
+			wiolndm034HEX2AYHMm0vGN2RoAABiB2ucAmAq47c8ayB+LPYiI6
+			p+HmmdNYLOHIG0PWFyE+n2cQMa3EMABcB6m0A8BSvOtoAsA+qato
+			I3qmPWGYFyQEGeGAnFJOMs2cWE54QeMoOGAmAwrMAUgARqQs7Ugj
+			gsSrlCLPakPiFGEG0fp0UgVAOGBoCKm0B4ChYhtkN3rF2KI44kF+
+			FSnEF9Y5fkIKBGBWmuBEBUmusKNEA6BQLOA4BUSjrIIubyKkGkF+
+			PiGyGSMaHgHOpGsqUaHaXOAI4sQaMACsDkucAiAxeSIbX+UIoFFH
+			r6PWFcEslfAFPINEBGBYm04KMsAsPI4uCOKlJP10IKHSHCLOGkGF
+			4548NUWiAAHQHGQEHr5KAKm0oEBUQ+HwAcOwHsUJHmNaH2u7VtOm
+			Hnc3dmo5ncAIG0YmAEHoNsVMHwBdsMAaYKAM2GAONai42TT+IXcs
+			46HPc2AiHFc9BWH8AcbrbnIMPW9iO4HoAWn2H4u6zAH8ysAoHyAw
+			FYAOHwAUGyGuFKGcEfxB7y++DcayMCAADyL0PIMaBxymx2aiAiAV
+			N98SAADQCHT4BOAwmv718n8p8qJbe3UBCDk/8ybeWU1uhepu/ocJ
+			XCVPfYp8/VJwNMHgoQcaUFfs0YHTq0rcQGS45YMapIoK71Kj0T86
+			cYdBlCdkfxApgXghAvlRBN43RvBNhlCAI7gxDAfPRvhgosgRDCXw
+			eAdua6c/iorjAgS0qSoF3q65gy9eeK0IMuosgNDPH6/GNiWyfHhu
+			33h16GhP/ObsfAg1Nkfm/OTaIA/3+AQA/wAAgAAQDCIXDIVCYfCo
+			QAojC4TFH/FAHF4JBoNBYLAo9IQBJZM/n9IpJIpTApRLX9BX8/Zh
+			AgA/AFCHxIH7OQC+YoAHrJX89Ys9Hq93o6n/NH6/X+/n5TQA+5S/
+			nhCqfMarA5u/32/XuAJS/X4AX4+pQ/35BQE+wDUnvKH297aAX7Ep
+			jZnzNwA+Yk/QKBX4/n2+7BhwI+gQCJ/JQHeQDapKAX+93u/31Jbn
+			JXpXAFXHhbaJJ5NH5BJdRXJNrddZNfsdVstptdtt9xud1u95vd9v
+			iqAAMBQwBRWFXwHRi/QI+zzIAsBHuBQaBnwB61BAI8wJCbzJe+AH
+			xBAA/ZMBo8Dq4A48BIM/QPXH9BAC7u6AXh3arHZtKJKfgEM2eYNH
+			YAB5A8dSyAK8zZAQdoFgACBuAuAAEHdCDUq+g4DoMDIQo2LI5AhC
+			ILIQAzsAAAr0Jkzx3u6ep3I2eZ3vMZJcqGdRxM2BgJIQHwpgMAAF
+			AchAEAWhAJgw7QDPI3ylJiYxZnoABillKaFIIGIfgfAx2r6BciAA
+			GAgAaAAJAy7oCAKkoCgQ8wCSY2h7HmmJglWeQAGUXChngdTzAQBM
+			ggOBTugLFAGAihAIAqjYGgijYbCOBIAAqDr9PJQyYgEjYAHGbC2l
+			0UDNngdaYqigx2nSzaZoMBgHoIBdXuEA6EBAFVJ1sBQAASBqCAyE
+			i2gMBTUIIdxyI2fKjAAdpzPMZheSnJ6/nu8x3nWsbDvMhSYgG/Sf
+			QiCYEAAB4J0mBoJO6Ggi0nHiNxUgilIIfh9pKcpus2ZJcHiABym9
+			eiVJm8ybLIqKqsOkCDAJbsKgRNYBgGggEgY7uJTXVllnQoZ8Hxek
+			sRSAc1o08qzPEfJ7LI/1NpLRcgoe8p+PMfV5pulKqn8hE1O61aaJ
+			IhKPvdkKMgAAYFzSCaNgDiAAHuBihnODZyJuA96N+AWhPiA4AAOf
+			txKkmIGnMCThHrILzJixF6bMsgBPMfICHwkZ+AOewEmsBZ7gdFR9
+			AKeawAACLyn8C+AgVLCcIpqjVIHNaCkMbhuGoQjf8nynK8ty/Mcz
+			zXN85zvPc/0HQ9F0fSdL03T9R1PVdX1nW9d1/Ydj2XZ9p2vbdv3H
+			c913fed733MBUFQYm4yqxoKdDDn4CqRQ4gQC2ofgMqvXTW5q1rUR
+			YlWFAGegKgkCRgAOA8LQqAJ6nQDpwgoegGHkJi8n8AiesEryEpMu
+			KJvnXe6IOd6JjtaQPohAAx8tZgI1kfzWwAD2AwngegHB4IKbOYsm
+			4BWqEIc+ZMhADhuNiAcONLjb01gQA0uID4IgHLjXQAABwFCDAxCK
+			TFMBlSgsqIg4o05s02JxNkN0aBfRUCJgiO8dJMQGAQO6CMFsKXxk
+			IAsB8hANAlEIiOk1yg7x0EGG+NAksWDOD1LaNQZI61ljpLGBYDrW
+			QhBUQoBoESk01ElAcBctqg3MDtHOvQU4h4IjlG4ZsqJCAVA5TKA2
+			JAAFzkIA4CchAIQWruRQQogzHjbj4HqTFKpQxjCxKGPozIAFEJBU
+			c1l8ZBARgwSCCQFyawDAJIIBAC7CWskHgwf4gqDB8twAANkY55hv
+			jRPMPIdhMR1DmKGqksZC0OgiTWFINwE1xgVPueRNR5CHqnJuVNpZ
+			nwADoHCeYWAlyhjxHaTFioAANAfAYABOBGwMAfIMDkJqrURmuisS
+			Ydw5ySjaGaQSPBBB6DxLaOEbBQx5DtXoAgCxJR4gZKGP4CBbS8rV
+			AOgUfQBC+mWIIAUf6QWrQDHsd0B4zgMHCHcuI4RBABglPJOsm4Bl
+			6DpAcOIAFFyxs3QYbGjCQQMjcBC1oequm2KcMsQWoo/wCF7Ac2YB
+			zVGID8MiAMeYER5gYFw28Ag2hki7FwIB39X6wVhrFV8OQAAXkmEE
+			SYDZIKzklP1WM3bLgLgOUmBEBaQQxA/BIAAEtc64V/sBYGwVg7CW
+			FdWsQmz2Hrmlhya4lQ/S4EhI8zUfQ+CYy5IMPsfVmR82XstTWXQ9
+			B4ExtETFeZBi0kGHen4AA7oinikuTczYAB5jxJiPofJBh5jwszbM
+			qRRLKF9ZRDiHUtjbn0nsbqxRtbkXHnu/e5hrbnm+IWfQipBCKEOm
+			tRuGs1ygsuuyZW5E91TQ4IMqaxJXCVD7LTck+hQQEPjIgzgAl2rx
+			GuIpc81BHyrmVJKTlnDCwEgJV1dWWhCCVMAJsWa9BBCUEdftDciV
+			8yIXWIdhfCpF2rYGPoSIjzBcP2Sw/ecq7AyZEvJdNoqhZC22oMrV
+			BiBQySj7YeAIe5Dx6XnkuVEe49R6D0HYU4spMzymaonaMyxkh/Kr
+			KaU8f4+WzE0LYYAvLMLTFxk8XEfo+C7nyMkZor5gCFj9AMAY0I+h
+			9FmzRktNlTiuZpJKPYj9MK3FcHiR+otrXE37sabA15rDb3LNpoKw
+			2hTfBACAAQEoIB4AsHeAoc4kCPAgAM3QDoCB7JHbZdgwBB4BGuK3
+			Y1pQAqUYRIzedxhZD6DwU4PNTlkWClkao3IzY7gUNRH2Awnb8acm
+			vAOO5XQDxvgVa1o+x2saOToBEQgL4doUywO6UG/1siCIwIQPMdhG
+			x5I0AAM0XxQx2DlM2A9RgAAjBfayB0E6aQC3TconM8wvBTr7F4Ka
+			CIBgEEICoGutYGQPtZTgQQCQGzzKDzxdiDBt05kxF+KpfYyBbDzA
+			APGYYAJ3zrAuBudYDgJEEA6CghAIgXkESMQhiVKt2344SSYbw0l6
+			CsEclO1amoMKAI3K0ggJwbJrBSDgjYBwE8mAYQgBQCyNgCP0Ah6g
+			A0glkKgX8epG7IElG+NYnYuBPjv4mO0toCgGkbAsBxXXSuiHqV32
+			Zh5JegMUruhUBRCANAlO7yWmo9iNjpHCTEeyUwAI5L6M8YSeB1Dj
+			M3wGRAEWQqcUMm8+JECDMPI35DifFXxnd3wd1rwAByDeKGPYerHS
+			HgHALtEix76jWzLiQc8hTzyQYLNRIfhbSUpN5uARrNyCnsCNSR9T
+			bSCTACAUu4DaawApxHuAppwF2oj8zo1UfxGwHj8hCYJoY+OfjZnW
+			AMeCax+gPPMPsDhY/u/fAEX0eIBYIkhQAPpuoFx6AeTMPACgzR9j
+			rejJ4e4LSUD8ASPkfIfYA7NAfClAhQAkAwhoAQQIcAcAbAQLQ0B8
+			CECMCUCcCkCsC0C8DEDMDUDcDkDsD0D8EEEMD4EoErkYh8EwAIYA
+			h4l45j2JrglA5ixKzYno1hJpgbCC/bIhgbGod4DQC4DIUoBQCAA4
+			eAegCYeICQboCQbYDoewAoewJA+Zm5nxTg2J7A8jPhnytw6ZcYc6
+			aAB4cyaAiYgoBb2QBhsypIAAeACIdziYCUNr57QBzYAQnAAACYbw
+			ChIQcBLgAAehNLppE6AblKNBNYFwHpSbk5CroIABDxNZNQhD2Izg
+			ehswrhd7w67BTgcgbJegWITENpUg8wBJopSgDZcRFRRRCgAAFAHB
+			Iqly/IhLUZ+4oICQDEKokqYQggcga8W5ApjAsYbAZ7rQdodAsaQw
+			7oIYK4DKdAEJSZkAgwBoCpegCBEpy61YtoVoRxfYc4b5egfbToC4
+			D5CABQBj6DcoE4GgjYFYHjn6VzaZb427igmIawYxegZgXAvrHomK
+			SwtoewexN5xgFQGqdYFQGxMrujgYmLgY8xhY8rT5ecSC4Qc4bYgw
+			dQcAgweod4mIcAbJKYcwbosaXItoCYDRrMaZNZIxdzfIABWxcTAy
+			3AmIdgc4vqTy3S2wAAboaheiTwmJNo7qI5rJTcTBYIBAsYEwGRkI
+			h5kCaZeAegggdYcokofIeae4p0Pouw8Qt5AyCj6QzcrqBYf5KYfQ
+			yZ+yjYBDaInL6ojYBYaqaD9CWblIAQD4+6lwfg5oAAdYBZqIfQAa
+			m5tiHQ1AxZIICwcgDprQe5ScOhThmp7A9gsipYkoB4qQAbpAdYAc
+			uoeoa4VgZQEsEUzsz0zwOAAAGRoYAARYkEZQmIEx+0W0CLaQDgCR
+			CACQBhrILoHYEQAAEYCxMsz83k3s30384BDMGw2Qj4kZDI07BYs6
+			HAtYqqzs5qzIxC2Qgyyogz/wmIeq0cPsmxmc6QAC1ZaodI8ySxs5
+			qjba26XS3Zs62a9rp06q3xBjFY1sSI3Se7dw2k+y6U+jd0/BhC5z
+			CM+8tEV9AUtDDh+zpDo677QRl04s/oyrEBhB7A96WzBYp6ewiMtA
+			xpcTABocybDMya+y8Kxc5FBoh8V7yVDL1S97lYmVCS1DFR+zWKSa
+			/6+zCa7DDT1RpCZQiw1S98485glyxM4olg+TFAqAgQmkGBbYxE6Y
+			h4u6mo8gfbACCIgjT8PokJfYgigQwwfYeQegeSgT3Itj2KoqzYgo
+			eS7AmgyYsLJItjGwkotQmgtIp8vzMYhIfg8YswnYuAw0LQqy2ayB
+			8SjQhYfxjYAg0k+YfI0gAcSpBhq0W4rjPIdcLI8rPsOSHSxw3VS0
+			4MCgAIEYMIFgDgd4BodAMbMCVAe4BAJIBYeZvKj5bY14jMfQBQnY
+			wQtqqJrQfRlsKa/x/A8A+jG7OKWo8h/QgTBwkD6QnYf7ZNWLGcLC
+			Sb6ydg/IhIfM1idj3ggwDAEA7oFYHRNYC4CpIIBboxFJOM9iIg8w
+			dhZov7OQADvBejhYAAC4EAjZMZSdbMlIkoBoCkhZpU5gmbBybQer
+			O87QgxaQZQXJPAZYXTiRiQjYKoNykoEIFZSa5ABYCRYIBLQg1y1K
+			BZvooQeSTAWZPAZ7b8Ps7ID4FCdYD4ExMpiQhAGoJIjcaZNhFE4g
+			/o75gblpegVYRziRPomKUpCIChhwAqKII5NYGoJEk5I5ydf0OrIg
+			AAbgZ5k4UQQ0qC0QgwCgDBrIIAKStYCFoZMwDchNsZoZS67a6Fs0
+			TAggeYdxKAWA8wdAb4gweQeAvobYakNsl4AACgDJcQGQH7YgBwCI
+			7teQmICgDggzg0sjaY1seKWggig48wWgTzrQcYbS2b37Pwk1sDng
+			GZEZMAjYBABjjwFUjQaym4/zJy2jz8m4bgtofAdZIKyomIf0fxFk
+			/6/8/74qjZo4kpwo8QAwsYdYBodIm8u1DdEM/K/BoQBIfZCFRbo9
+			ahCocaoUPw8oCN2AEIoYft7IqoAQzYeQAhfYgYqIBwfACIdgBwe4
+			CAfACYeYCoXoAIc4AQCQfYegfYE5gIBZjYewB5jYfClwhMAyjwoM
+			BYbNFdTeBWBeBmBuB2B+CGCOCWCeCmCuC2C+DA2IEYEYFYDQkVuY
+			qIltYoit6JpS6tkBTYcxTYAVkAlL/yyobEbwfYGJny/IAM3adh7Y
+			fACABwBwbBoghYeiqgEgdYDIdABI67/Jm600rM40/g2w6RNYB4dK
+			aACIcjYhtiDAA0Sq1ABItoeQCDrQd4CQdoslRa5Q3koNeIcLYgBA
+			byFIfw7hkY8zUKSRMwCpcQB4ChrLpT6ACY7oGAH5CBWIjcmi1odR
+			UxmpQYggDAEIhAl8NQdA8wYYWLiQekjIv7OCg6ZMpLpIBa6yty+p
+			IQ6og5TjfD6ACCVklTHo8yPAzaSxbVRweIdwzYfMq8UQ7plhXZia
+			xovAkEOTGrDIEYF5INYo1we5OgAAaAYJKYeQdz2SbRHhcRkAjcUT
+			nIGRrIBQB4hAEgGBnVCEKyxc7AgwcIawtqfk8V24fAewmOZBejpg
+			ggEwGCdeeRCGRZv4DIgwCADBbkxotgjYmbqRqgdgcYkodwcy254w
+			cAa4obzYoZkxr4CRNZMCVhWhrT4NeLf9tRpedhfgbwvs6w8s6Idz
+			+zpwyFDt0Zloh4fRg6g7iWSFD5XYBcloh7pQjr58/oB+iUOwDg7o
+			dAfRk4eoes8THI/7B1MofoeBsy3MMkhYDY+hDCmpnAc4+7uytwkw
+			B7ptmorgfZjlFimoArXbKE/o0JIofcZunC5AtjPtZYCJBgCYfofI
+			9ABIbIAptwfAaQWYYwG+DOvuvxy4N4AAGqdgAASYkBCgmL+FG0Ck
+			V4EQCydYCgBprIK4G6n4EICuAWv+zWzezmvqxE4yxxmtNK8xmow6
+			1FMq04m86Mb06eplgS0k7M7m1JPotpPo8zz09Qg2Wc6aT5Gb762a
+			zQ8Dp+W24TBw1gj6zVjRyk+og43DCE/w2M+wkYlQ2S8Zlw2N5KGq
+			GtDrCZb7yTCZ69IS9C9CxYlzY8OQlqyTE9CzhBIoxrA+HNHKlRha
+			8BlUGy6cG+UBoZlVFCG8V56orj2Ivc+FBm57Chj1GoiwhVHIhgnI
+			gZlwjsGxU9H7E1fwtZkgqIwolJqhrwlIs4gjMQy4yqAQhC4QAI8Y
+			ywpk6YswfepQtjuwgbz6yAfQeYfAeRPAnCyDJfDQsEOg7Zoa9gha
+			9onAmYt7TombKy2ZtguA0IqofAzY0PE0fTPJmQkofCnLPA0BBgyK
+			Lu44kqWIyAj+hDPrQXL1S9ERye5Wzp3IAIGAMAIAB4dYBwb4GMbw
+			fIHuqQPABYegBzfJm/IQ+lYmM99hk7MgtsOhE0AYhJ/VXvRAoghl
+			YErAokLA2dYY+iHjaQ1tMolfDgetBiG+Ada6FQ7twY7oCgCuKQB4
+			7scYhC3AgwboaRKdeCyDx5xjAwCgDQ7oEwGJXQCj4ZCoBomIDAEd
+			W1ZY75ZJNeWwgwa4ZAvoawZAzdeCcgza1YvqFohALIO5EYEaVbDK
+			ZWUuJ9dqb5KgWIsag4mIdJHTvvdROAkpSJCAGoIxCBXjoRiM3Zbs
+			+yyozgeXVtYAcQbAvoWITMNuZAmIEoGKEwFRcTjghABYCAggFAGz
+			ywxxydeGgmduZIdQcgzYZgXpfbwYnfXBSYHwJyktsBIICJ6RCIDM
+			f8+11YfGopkkPod4gwYQVozbwbOIegvodAcpPCzQ8zsJSYHAIhCh
+			chNYDQEnoID4mJI26Q/s5RkAkqPAtoUIQkNobYaAnYletYkgCwDZ
+			SYHQJMZQBwCZNaI4gwEgGZP5DGVg1wdYdItoaHZoAAbYZIgwdYdg
+			zYfuTBvzY6xRpKtzt8/tOMPrH+9ZFRNZQxlq76a1GAkzqa4gry+r
+			4m5ofICIsYdoFd4xABf6oos5xLOo7tRYAgerXQBoSAC4cQDRogeI
+			CADgqQfoCEAQDeoQeoEgmy+onIyQyxx4aiFPNf4P4X4f4n4v434/
+			5H5P5X5f5iwID4D4E4IAkQX4w5f4mwwYxZ8QBKkMAwfcAwAYc5IY
+			B4ZjpQBAc6SYeIewd4eQXAbwbwcgcQB4DRcoEYDYDIFtswCXmAeo
+			CogDseDqML9fj7Er9BT8Aj4Ez0fD8Br6CL9Ar9ADzAjyAD8AL8AD
+			/AL/AElk0nlEpAj5AoAB7vCIACLtCgAAL6AIAfz1fwAfrzjD+f8k
+			fYFfQAfYEo82kj6Cz5m1Rkskfj+nr9rFTkgCAICAACsAAAgAAYAC
+			T2BkddVefr4r1csdDkoBnIABYPsYLB1jA4JsYdEoHAAYD4GAAHBE
+			5fVQADudEYf89AAGBMlEAtltDkjxdcgZy9e8ZeMYg89eTr0L9oVk
+			Ac5BQNr10nIEA2zAljAYDrwF2oABoPlu8rz4e8YeLso74e1B1b5e
+			77nWrsE5AYEsvTkNy4kgq2SqO32NdlMilFDnr5fVHg09uQAAoHst
+			0kvVsoNCGGAgFsd0kj5fCSO67KSgSBacpJAB+JI4jzp48apqi9r3
+			pI3iprqAwCq8CwOpa3ScgO+DJgO/aTOcnJ9qWg6SHseSQHqeqQMj
+			AYGLKBAELKAgDpy+yWgSBr4q4AB7HojBxm8egAQWnR+pIep5Iwub
+			JgSsoIAmtIBAInKDowfB6Hs6KegQBavAmDT8Qwnylnmd62SXKKvA
+			YCicnKex6qQfCSn8ey6n4rx/H2q56qDP6bAWkoBAunIAgUkx9pyA
+			R0v2e6vLIuoGrG91JtWnc9wOuR+PQkLVq+kr9Pif7YpIkKQVDVID
+			M0D0/gEyp7AWfQHmMAZ8AKNhnFyX5uJTYNhWHYli2NY9kWTZVl2Z
+			ZtnWfaFo2ladqWra1kJInI5gAHKQgATqTJqkgJqiutr3PasOgAE4
+			MAcAAKgcBAACkGoPgAD4J0LdF935ft/X/gGA4FgeCYLg2D4RhOB1
+			SpkD2CyKSNUur21TFKkH2qmMI7jR9nyoh9SYeKenrkSfY0g6Sned
+			SMZUkDlJ7E7Nna87/gAeR3p7T6S5in02nueqcoMnKrU6kp+ZA8uG
+			Wfc0oUnYsDWO+Vg6Y8tvM0lDZawqT5akri3yA7Cure3SvyA1rYrC
+			k+rtU9kYsiyVU4c8rvQerUAPak1zLArwEQ/srqPymz5PpwTqLDpm
+			qQEudErqsEaAOw3EacrWgzbUShwNhmpPFrK6a+sauAGkUgUTxe4p
+			1iGr7euT2qwzW2H7j2TbfjyhqWpCons1sgqifLZTvBUEn6dKrH6n
+			E/HXoihMifasT8eefnnA3nAEqp/H6ffqnyeaxAEfq6H8jysIMkHf
+			fBPR/qOAKsptmHsAAfJ/KWAKegSkYAHufMnuKubJfuzY70ASTMMb
+			oSY7zDGlQDJMk9bzCoHQPggwQGcEwCjeBmN4DJVgAg2QwAQPgCx9
+			gMAwP86AFQDjsASWAe5ZTJlXAYaQBhR3xJIAIl5hwBB/F5HqA8r4
+			/D4j5NiPmFjcYhwsH8AI9hOidQ4Js98sQ8zDACH3CxyzSIGtbPaA
+			IkgCgIFeAWBIsoFgHmCAcAwsaYUTPxAAOAayXh7j0J60QABryygD
+			AKTkCAFCxgcMCS4ChZUekkAoB4kEdiSHWLKPotySE6gAGoMUo41R
+			jHJUCkFIYAB6jzOgBACxOQrByLSCEFphm1FyjosMfCDR0DgIwLQT
+			KXh3jpS2PZlw9kwIFAAD4Kai5dKFASAxyayx7jyJyOgbpY2jk5HI
+			Nw0IuxUDqY2RgHgUC0g0CMosCQF1LkmAOApxjiVkjgGqVAX4qnuD
+			hGqUdDRhgbhIAkAAB0YJGHQA2CcspfTdgHQmAhbLUlgskJ6M4XhI
+			B1jjJ6dsAA1xmDwAAO8dadwNAfAaAADIIzBHvJyA8CZLQSgvUWa8
+			rwDgKEkAcBMnoAndrCZ4OwcROQEruMaOg6ArhLUMnEVAAy8jfARJ
+			yAYwQAAKAZXkDAHs7wGgRLGBIDZPQIgXn26ZwpjR2EYGqMo6A0xh
+			kgHOOk0I9x0HcZq4KBRX1EwsAGAgrxImIj8IwPYdidWIGTp8iFyL
+			XGHreexHEuTpQBAIJa2JJAE06jpBUOQjoCjoLLP6AMfoAxVAaHWB
+			8foHh0Aijg/oBo9B6DzBu+MCLRI7l0sS/Q2QixrDWGaI+CNq7WWt
+			tda+2FsbZWztpbW21t7cW5t1bu3lvbfW/uBcG4Vw7iXFuMs0EQIg
+			VA+O6Lt6iAQCn6HujUA46wDXXhWbkcSPQHDFNeAwjhXxyj+ACPgZ
+			IvhaC0HKEAIAYAEAQAqPoFZIQAgQHcPAdgGx0DnHQHZ7A/AVD+AQ
+			ecEY9B/j8AknyI5GCNEcT4dCtSx2rknAIUWeA8wIEyHmTW8rQR4G
+			kHbhBJ5Qj2KiJM3tsrTj+qgfiYxbx1TcG3rEWSJxpao3RoubRwRb
+			E/E+H+Rg6tGQJLyAaA4wx1SvSZOhQg9a3ietDasSGJw+3sliAJMF
+			7DVAKAaJaDQIlE6QFkjvHMBZW3dmcIwN0Z50GOkkZ+SChyd83nRJ
+			KQaBhOThRzAYYY9891FlmAuWUdQ5k7pAAAmEr2QVQklS40MjxHUE
+			gAHaOlOpylVl1zxfSk5YS9GCyQV+Fh+snqTdaxRPCbR8y2kYZCvb
+			m3MoPbhAWnxZT3tjJyAwBRhgFgKJac5hyAFgsWbeSgyhXjEHXzGA
+			gBWtEbYzHSOZLw7Rzp3OcZBbw+SqlkSAa8wwJAUTvL7CwurgSfVs
+			qABsnILwhFeNeSUxxJRqDCJKPQeRJB4DvOgOccCdzlEYPFfQ2JLS
+			fAIIwP0CKdx+8Eb+V861ZFEwrLIO+v/EEoFW4EqMAIBVUgDf8xF7
+			xGQDjtI7FJcoAAGD8h4AQf7oFTs7dOzuLQ/wL5U4yAIeIEx5gXFc
+			MkXAuw0XH6B0HoXQlsgADoAAHsShUEmJiSReU4OhLqBaB0mIFwHr
+			yCYDADgAAOgSX10PsHYexdj7J2VhLmnWLCLkxJVhKGLdvZOycpbP
+			EVk9HsPMq9iWLMtMaOmWpVGkDwHaRg/xJU1Mwdlm0jqT0hNBsS65
+			xTR4Et4aW1qYKwmoLGn81rtTVvKclJO51rjjSwth9K2Y3NUaUHha
+			o2vcx5kvuKQc3WUpWifNTbyWEBLkOHFfP1VGRBNmzJXxn530OM8U
+			OQ4vN9vMV3ruZ8z7L0bjD4gBOvShwTosUIQbsXI7v3u2oAYk0c7q
+			CXrj3MiW0qaXiQlQJE+YAI9iwD/e4SVjxdIbPpewP0dhmmMP4mRD
+			zH0ikC5B9h5B8B9COCRnvnYHwnsh/I3i6GJPrLEnvHnLRidotCjh
+			9FBgAB9KTijH8ACrEiTECkmB8PGEnn/gIlUh5DJB3IBPaIEIDK7l
+			iIGIEuzQcrXgIAygIAYKJgIA/otABgPHjB/AXAEBzAFDbh6jMgDs
+			nsyidOFB7gDEvB0gJBzidOPgDB9l5AKh3gMCxB+IoohCbB9Jgh/p
+			+CdJ9CfQRgAB4AGuRHsijgBh9CWgIBwgLDDh5s/n7vrQcG4IrH7g
+			CIeDDqeAAARALFCiLiylPjSGNB5B3DoGLDcicgLEygAJfi2NIh8C
+			InFD+H+vbALgQCWpFGjFGgAB1BxCMB1hyjSGkB7paH8EXxMi0gAA
+			ZAhF5AJAMiynrmYD0meiegTAaDKiuDFDGB4B0CehihZioB6h3iSj
+			FiMJFCeqct0ggDBAXgfDKo0RMgFixjbqXKYEYiUGSJihuRjich0h
+			xCoBiBaORHriMAegoqJx5i0xNCxOBI7FsFPClnriSBvBpijhdBRB
+			4gABvhqCjo+DBAmgxgLiXAKixouCegFAHCQDaOoFjh5GZgABeBRi
+			jhyBtiQDFiQBvhsB1gALNioAQgUC0gnAyOtgIgLKLwnqgAOpDuNN
+			QFDKUlipUiSBshkCvB5h3CSo3iMBoBhKGB2BzijgLkNluAmMMgGA
+			HpAKYAMAQiSjaCSR9iyFLjsFhI3iSBrhiivByhyjoBsBunuBzBoE
+			jh9GSo7DdgGkOADFJlLgAgFj2HRNNEkQQh/B3sgAAxwTBCbNHh/h
+			7EDh5kDn/PUipEoG5Cowuijh3gUSUB+ADiQN/gAgDm0Fhh+ocACB
+			ugHB4AIB9AMBxgOBrHvOMj0h9AMjzJ9ChocCeqYTHB/BqhqhmysQ
+			dTeTezfTfzgTgzhThzeCAoAAIFA4JBYNB4RCYVC4ZDYdD4hEYlE4
+			pFYtF4xGY1G45HY9H5BIZFI5JJZNJ5RKZVIRSKRkV3+/38kpi/wN
+			BAIBAG7QQCAU1wMBgK7QDRW3RX8uQSCQI235T36Fak91XVX6QKxO
+			akC3/TwI4Xm2xa/na/UkAnwAxS/gE/gG+wG+QA/7aAQAAn+AACBY
+			GAoE9gm9bm/rzBJqAH4+35c5jd7YAAi/QoAAK/r4An7dn69X8AH6
+			886/sJjM7ebzRYEAQHftVdtCAHzaAA+AE97ntwEAgGAKEBMpqwAB
+			3rN38/LyAtQAH9vgC/75qcRxcQ/c7ubyEgsCcgFAPdwJfni7H1sH
+			s/c8/fNhLzin3BrpdwFzL1A9dmcoB7sFw5fCKWQkAAGgk3YCOeBI
+			GNOvwAHUcTFmUWzBHqeTOnwerFnMcJ5MQfbOugoq7OgnzdgiCoFA
+			ABIFt8CQLt8EYXu6CQML4AwFM6B4Ls6A8aAAfR8IEcBor8ep4rse
+			55vMaZiniAB2nQ9rbthHrzoEAYCLsCwNgQ3gEN3AK7BSHa/AeyYA
+			QIzR9PqgR6HizpwGq8Zsma8ceM6fh8zpDbGLy6iBJkzsDL8DgSL4
+			D4VpuAoDLsoK/N7Pi7HyuQAH2fC7TqvM4MEeR3va9C8zE7oGAem4
+			DAPLgJLsBgIQSvAAHcda5Hkdzxn3PB2nO9qntOAa7AOA7fAsDAHv
+			u3zcoFXiBRmuwIgsgQbCZU4HrsdpzLyZ5ersd53PMchytsdBsLkf
+			h8NPD8yQTD5+gcxZ+A4210MWAJ/LsAZ+OY960N2AZ3Jve9GuUfC+
+			H+fsEgG44JPMAIDryfgCvGdAJHEAB7gSecyH6vgKnmDLeH5LK2tY
+			+14Q/SgAgSf5vtWAROAsegOFEYRXlsdCV5nmma5tm+cZykJATIgY
+			GAAeAAB2+ZQvnYLOvlnSTJ0uwZBACYAAyCDtCOFoNAADQIRLpWua
+			7r2v7BsOxbHsmyo6wq9MbtCCsawkP7UwrEz04zPbpXENIEfjx4ie
+			jOnvvu64Ufa8nedbFngdTzHwezOn3vbws6fNxAAedsx2fK8nxKJ+
+			ydCL1n1uc+XjHc8SemW1vog9yIJ1a+oav3UIl1rDSf2sOoLDy9ZE
+			AK/Nyu3fL1YjdL9lD4Lt3jWOSwqY8axLBz1PbTLv2fc7Z1DDoK5H
+			dIEAsCd1eVde+ygCr4oq/QI3yEOT83t9T3KdeS3aBQS+Z/3J+zGL
+			s07U+Ou/gvHNUfAAhdDdPTgAc1tJyiamiMJAwwppXmGEPQvFcI/h
+			+p1gkPQwY9jGjzf0Pl45gi8mCOakMgQ+TzD/MFBYfI+h+j5HSaMx
+			aknGHUH86AAQ/F4ldH+bFDJyl4gBOpEIf4+x7xHUmUggQ9zFmOAE
+			UxvbmB8D6AIe0AKdgAD2g4/OJq8yFDxPMQJDgFS+mFhiQNtCHHau
+			xbYQuNLZo4Rxa+BIMIEgOgOAEBMLMFAVOYHyFMBQ6gGFMHsAZXS5
+			nwnJHsAwwQ6gKjnM8ZgAADh5gQAAAwegDkyD7MuP03YAR+G7fsXk
+			fwCjFj9ASuoAh5h4gLHajsApcgEDyZ+A8cpkwDjyAW/M08AzUmmj
+			CcWNRxwHGdALJoAAIgLANk27CLY+Znj3PMpw+6gAQndAWA43Y9kj
+			AAQuj0fcWD0Qni3BYvM0DOu8M1GE3Tv1iGNAAPQeRcpqHWkmBE3w
+			BADF+cce0eo9R7KRVm/9AAEXymoc4o4ejsHRnzPmvJ9IBwFl+AUA
+			tXYCjdghBRMwBYD2AIcAIAczsFy8j0HgeYcQ2UeuLToPozo7R0mL
+			SoQIFwPGfgvB7MxE5fgIgZPNT08yVH9P4MYbAe5eRujQMW5UvI6x
+			yGLGaLxig9kJNRBAd0HoUD/gOAmb4BwFS8gOAoXkAoCTQxNb0fWE
+			c3ZuHmHoO8zozheGLHYORvw9jxjuHVBoe9eAAAhBUiUJwZgNgARU
+			XyfReQIAWqCc8hBh1JECsi3wvI1xkECHiOo9cWBwDZMEPEdp7QNT
+			XAAD0KKwQGgQN8jM64GzFveIaaKMUYR8mCAAOIahvh2DrPMN8cMG
+			hpC+HcAAeo6z2gDS2AABAESbgDAS/KxwDDSsEM8AhdQCIwj9NOyA
+			+xszXDqNCtMgR9qyndL27AxqdTFunNuno54/6RF3AOosCxlwCv6X
+			JKKIRtQBjyXgAUdwBR2HIACPYBYBwEjKKCAi3h1AEQtHyCcfh6DJ
+			kxAHAwThAxlDTGkMwZUcsQYhxFiPEmJcTYnxRinFWK8WYtxdi/GG
+			McZYzxpjXGxJAVgrBmHEgYb0+GGJyAMeBSwF25JyPc0Q/xuADN2L
+			iLQ8BuEEVmPt1Z6DMjnHObF5hRQVj3ByA0fIDRKgGHqAcD0DZVj4
+			PbAx8T5DdvAIJObH8QEJj2NtKFd72pss/AGAWT58x+OMLnGF3D/X
+			XF3AS8drY/ADntHkBBJQ8QJXDLc0h8IHAJM/AmAlLIQQMAiniOYm
+			7izzDdGqxQb41mKOcek/o+eCC7A0CJLsFwO5d1cN3kk5UOo1mNGy
+			M420FrJGxAAO8c5ux9G2YihUAA5RvG2MOA4CRfAaBAAjJMCRvqOk
+			CRaXwArCdijpPMNgZNKx6zniYksdVATE0jibOEvw/knP9MIotXoA
+			AKn7AACoHB2gKgbL5RKsIFjOgIK4jtyY5xtm+Hvf7ZaRxiMUHMN0
+			8c1E1OfLymXfCWEtF+AgBQvwQguF8AoBsuwBQET8HvvE+w8LeAAF
+			yKFig6xxmLHvudy5ndk3reWaNtAEQLl+BqEdEoNgkHa4M8kg1smI
+			jxN2PUeBu2/nmGWLyV4yhdaUjCCMFm1wPglmYA2gzUQSl50+Xbgy
+			ekObtPdnOoxnR3DoLyMMViE7bKHTCBIv3STIAXIEDkJ9FJkOcIEr
+			Auw5R20BFyMQdjlBqIlHsOogd3VJr9H6A89o+gO0BH6BDNcQjEMB
+			OV6BSLxOVgAAUO+TQApOAAAGPg7XrDn3UACA6MN8V6MNAqOBiICY
+			NADH6b4CI9jJgKzCXo+3r3ysCe2PkAwCQDB5O+AQXI0hSjJGtjf7
+			X2/uErZ4llHoGFIgABycoAAmSBzM+6b8uwOASLLA0BFEoQQU9+WA
+			dr9f+f9f7/5/3EhtA5p6Qg6B52ggqC7dyUiJqahuRvA2Yzg2aLak
+			gxBugeAdg8zlwxa2pvJwbYsC0CAvIeYd48ycIvKvqyRJwehy0EkC
+			Y1xDicKCC2aNh2Z/wg0GcGYgx+gkB653Chx3bQx4w+A1h4R7TJkI
+			R3pYh3J7RPiUgxofUJzOg86FIxo3I1gvsJQ5Ih8LAvrJh9p+Z8RX
+			jN6AonJ9I+g1B3LJiT51YwpkR/zJkMh5J+hcjV0OR8ULwosMMMKA
+			Z9id5+qBpPqCB5hgKB6cyC67RSS7SF4mSF4wgfhoI5TYIf64ZfyI
+			QAZNY9CMA5QdsRQewpBvsRhOxIQ9AfYfrm4fy2w6iU6dL1gBYfwB
+			oeh8yG6+aILCYfIdgeBvYtqE6MKBABgfCJo24eiKqX4gQd6N6MSN
+			Ag6YcAcZDtrtyx4iaNj/0aQk4GYygDQH4DQDBTQd4G504SICIeoC
+			gCTRoA7lIe43YAodBLIALKgxABgxYewD5oItgvIAwdI7QAgngu4f
+			Y1hn4gSiwzwAoxYegBhDIegBpoKTyacYReJPwepn4CQc5q4BAeiX
+			cHrC4ucXIfiHJygBBoIf8jA3jjJkoAAGQD5qACCsprDgwAAdIbw8
+			xWpxRwDjQCQCovgnx2CBD1y9Y27ORHiYEEERzqAu0UJ+cOJ55iKv
+			zOR3ggRUBAa+488DIfTdjwicY8hBI0Y5A5iAp/qAp3TpR4MoxRLl
+			IAAEgFiTTsQvhvRvKl0CakoeI9ob4a6DUF56zk6+YAAE4GRn4FAG
+			Zn6nYAAC4EQ8zT48w+I0wx69kEIvIYIVIuQc4bxyKaTYodA8cBgC
+			YDIm4GAHyTQBgCIvwCYDguwCQDJeQ54eweKEYeEoik4AAZgXpoId
+			4dQ9qaCEc1JDQvMLhMkvErwDwFIvgJoNDsKfB9qkI6sJQg6bgvIc
+			wbYvIcYa4zsoobwag2xyoxZVAvwG4JZLJNQzpAKjIFZEpHJ4iXwB
+			IBqoJKohMqwfMV8BxIIeAzoZgXYuTb43YeId4xYbobId8lodbZQ7
+			r1xUwgUMi6j1Aga6gfgAw9MgQuZD8gRfa7oe5/RmQuYcY1Ix7lBf
+			Y76IBPSF1DiNah5D4AQBBXYDQm4va/BPh+iNQehgJfJoB30h4BQB
+			wXoBMcocwp4fwBAfSIwFaCYCAmr4A9EfwAAS7DgZoScadJVJdJlJ
+			tJ1J9KFKNKVKdKlKtK1K9LFLIhIF4GIG4M7AgLIoQA4bx3yFyC4B
+			zCAEjJK+YnQdifQBAbJQ4AgYIxsAMegmIAIfAe4fABQeIeQeYCU2
+			iSwA4foGDN4IAAgfLb5tMM0ZBgIzpXUNg6AgT/D1x0RzJHgwZDh7
+			QBQBJEo+KT8dofofA0rQhJ6hqeB8IAUfwAQBovxjg9oeICM2ICqV
+			45c7wBAvgKQGgDwAACgBRLIDAfYyYd4cYvjqYAAbIaBJQbQaBoJO
+			aIEFrtCiYAAIQKyTQHIJSXczEMgiRvQvIcgbQ3YdIb4uxWAzodYc
+			42wZIXYdaowxZE4m4EYFTa5UA3wCYDQuwHwKhUrlhuZ5aE7ZTtgg
+			k1AgQc7JZSKEElocSgIaYYyV4dAcY2wEgFxEoIwLwydihEqeDlA8
+			yfRMwgQfRSDwg86ksERHctqt4vIY4WQ8YdIcJO5pEqCdoABMQvwJ
+			oNI7QC4D4vxHIzUfgwdgKpAaAuRIQzobAZg9qkwzrlyabXkqZxTd
+			LoA3boxEoH4KqnQBkHIgrpge7pyLIeIvzm48wZwX0/gZoX8/lb5r
+			AEKTQDQD8v4Bg3YEQGAuwDwFQu1GdrYiCdBBQcgvLmIuSphMk9IB
+			oBw3wA9rQAEzAgQHQKA3ZVAuyFwzoeYe49obYdBDIUYWwcoAABYb
+			r8Q2Z9JKIfwdxBJJwfgCI9ofAEpigfwBMEYAQ8YeoAkugAJvY+io
+			gwoBIe6ZgCQd7vwBIfCZgug0wyouYAhOgt8loCIcI2Y4TObC5eou
+			1RIm4CgbQDYmweqs0KgfYBoB4BYFAZ4XQYl51LV899BnAOAACSwv
+			gF4zwAEaozoQQ+ciz7oA1DYIoFhq4DoCaXYGgEJqACgBlAF9OA2A
+			+BGBIj0ABtUZ9BsZggiag4qUiYK7Juy7RHao6oxhRukA4AAeQdoz
+			oeQdhCYfEEcDhxDdAvIeJy1kRzLnFtY8I81kS8ZJyC4gRzQ0pDkC
+			Rtlvah0HgwyoghbVwi0G8YZ1h9UGo1DAkIJ4J3p8KQ4u44B5BtJt
+			CUiNAxo9AxbNjNgw5/pchYh/kOsLZ+R1OMR4MNJKZ+R3JXgy6ApQ
+			680K5+Y1B8h2GCA4ozS2R3o26AEKqoZ3Y+Z5JkUPKAg3w1aBGJeP
+			5Og6iCJ04mtR5eKCY0RuQfAemGdUg0SLcRqCjaAAC3gAYfRegeYB
+			BBgfIfkTSF68CCxHorrZTJIugeooo9AdwdweBKJeAoL8wu8jYBQA
+			pKJkqK74AopOwezIV3EEA0GCEYwDSdgwockAuXR22CGB2aUZwj8a
+			OBVKouwMxnpEpQRiwNAC4eoDQGo1AGoAUYKkIccdYfTeIBcEYDuV
+			hVYAQcw7oAYdZ8pM4gTa4gVIAxABA9odACtCwfIA7YMkIg4BKRdX
+			wdpq730f0OQ0L4BoAB7xqWhoL3NSZ3gvIDwCLTRE4AALYGoEr1wf
+			A3wY4WguQdociMIwpxyFODADAEg3YHoKhT4CKoY0yB6JodYcQ32l
+			Y3zZIgQcgbYuQdgc+LaYLYQgj54gSwBLLaQv1jqSYC4uRKgvIdJB
+			gAAZIW1oqqqDGQOJrPs00IVSbNpRBqID5EoBQBgvjUmD8/D1x8Ie
+			weg9ocwb7O8DmINAcqADoEw7QD4E7pFagB4CoxYCIDQ6q6g3JEQC
+			w3at4zoYgV9lwb48ztkEOpJTsm0vIGSXdGYuwCbk1xYDWsqeM/gx
+			A2hylk4ZQXJoIdwdI9sup5wgqoVzwBuQ2voE43wIwMBEuwrvdagi
+			EFIzqpIvIbAY48wecTAcYbJiieQxZFo7u3iXYEgGBLNvusZ9o5Nm
+			ghkCSzI3weIdO8BwwAAXwViV4dgcw8ZAw3YEYGpLIdAzaeI2oAAa
+			4fiSDKkX7Q6h0AUnUAoyovj15FIbYyYAo4cfZBOfWXSeA6CeCeCN
+			R1k9IAgCB+R+TKwzzYUQVkImIARzA9phQBAAgBAbBlE1cO+uSPAo
+			rPzJiESHogYaAmoaQaIaAZYTubPG/HHHPHXHfHnHvH3H/IHIPIXH
+			QGFLoQQ1AGMIoAgBetgZzNyvrOwDVP4eYISCYBpKgAgeQBABgBob
+			pKguImovy7R9IuiI4e4CQeYegegC9HgfICeOg5tHSA57R9AvR8K9
+			iIwuQrqdNAAAgEaT4By/BPUXIu6B5XdRQvUjb5BD4epBOlsDgfAd
+			o8aYR7hKYChfDoK6oxaXRoIeIB0/gAKXxrQvgMYH+kgCoBhLLa6Z
+			ge4eAv0n6bwbpHocwbwuRyWrAcI9urI9rjQGAH6XYF4H8v+wiMlm
+			qsGKWI0BiuovzYwvyqgzq0A9oZ4Yq4Zv40o+dXJLIBW29xYDIvwH
+			wKYm8zyiAgXLZ8GI1ghJTZobGoJKPWigIXoVmZ4eYeA9oEQFpEoI
+			gK5qHe5ErPpYr/AAYm4jNpoAAWwTQuQcIa2LY0ZNRdUtoCIDA3YL
+			AOyZgDIEQ3ZP5PJ60tkGK4k24ZYXHaAdMt4xYdQcqgIc63/Yw3YH
+			AJRn4IIKxYPbeH0JcxC2fnBoAdQuxNo8ZxYvM6Y2wb4aqgKmZoQJ
+			xn4GQIZEpZVboiNtYcobo82rIvKbhCaDwAG5iJowtqb8gJhLM7D8
+			apedFZIchigUoXlCwBodQyYt45mYr1wco7Udg1wBYxYfQDygK+Dn
+			QA4uQeACFdxgVUwhIBIeqZgCgdmhwe14kjA5w00jEjY9odgCVzoe
+			4BBiiNogoAgfAm4CoawDwf4BIeABj9Am4TIB4BwBgawZoYAYV3HI
+			f2GA+bgyY7QHB/wGA24PI+Zrd+9DYJYGADgAAD+AYAAFwDra4CQB
+			fgf2P5n5v5zFfBkZvzNrhujOTpmpaakqzZMyVf7XYvNc5oAsrhBx
+			uFFdw8mFeuPWBCilogTlxxpzFhJvKJofMybpkBmHog/msuwhuIgg
+			AAgUDgkFgwBg0EAL/gsIgcOh0CiAAhACi0Ui8WhADAYCjEei0eiM
+			Chj+f8MiMMgT8fj7AEnkr+f0vk8UmwBh0Xh4AAU4ikQAYFn8JmwE
+			AcKnlHnk9AAHpwAjkeAwIA0ShE4kE+jkImUCk0Mf79hj8lUgndXi
+			Uim1DgVHnADf8Wo8dkQBo4Co8qmkLf8ysUymcmmUnk1ilr8AL7fU
+			yfj6sj6e79AD5fGSfr2fwCfTvfoCxWDcr7A76AgFdAJZ7/ez/dwA
+			fj5dkSfs4f2IAL9wAHes4fr9eDwdb6iT+pwBf0424CBgFfHImb2B
+			j/rD/egEdvCnEMd7vgkzr0GEGSAAElTcgl6vXnhPookD9Pt+Hq+P
+			z+n1+33/H5/X7/n9/z/v8NoAA4AoAgKKIJH0CQcrIf4pM0AIDAMe
+			IDt4q6OqgBC3Jud67naAiSIGBqBuiAB+gIfgAHgBZ1gAfYCOE46Z
+			oYjyJKafgEgACZ4gsqB+qEmiCn8AbJHeCEWniBx2tcAqXKQgQHAQ
+			A4AAkAwFgAM4dBU8Z9KEZpbHyAB2nIwK+pWkqag4EyjiIMIEAABw
+			JxqgaTIEfsnHQbsQHSbqjnyeyBHQcThHQcCXH6siMKsgQDgUjwVh
+			vKYIAso4FAchgLBClwCgQhhwmulxaE0eYAHidsZpsATpKWgVOKOA
+			4ELqkaCq2AAIgqqoCgOo57HlFJ0nHMJ6nnFKugAfB6skmqaLBZaB
+			10jwCqrGyoLgqEUIwhAFgbXICo8BYII8dhyMkfFARMfiZnyyKXq6
+			vFWgSyQBxAAACgShAEQ0paEN6hAMg6BQAH1MIAHQcJ8Mme6ZzumZ
+			8YVdqGAMA6PAgCiqqjOE5AAEAWxAAwEoYfR9skEAVqEmC2ORY56I
+			EbBjoQeh3oYex6Jmc5wnqAB7nmyQPhWqohCtEYPhYqqfKbgL21XE
+			N0K9RLIIQeR2IQd5zo8eR3MkZBcHgAFgTCBQGI8GglAeAB3gKe+z
+			n9nJjnk80wvE/73vGfKhA0bgOKaek3s8jx+5ql8UoMnSErFwkMI0
+			l8an1xuBcdIMTJO273gKAoBn25yOAGfUJAQenNy6AoCHMBoGAYYi
+			osq3HUGIX45wB2PZdn2na9t2/cdz3Xd953vfd/4Hg+F4fieL43j+
+			R5PleX5nm+d5/oej6Xp+p6vrev7HhBeF4aFLw4WLAyx+nkmDetwB
+			uRH0EN5xAuwBHtj4FHKAKLcy5DyAD9qBcafQHHqPYeoHiWD8RGTs
+			lRZSmADAMXcpjKB9j3RiukgSnSeApIGBAlRDh/AEMkVgihs16vwg
+			+VczpAmckrIQP8fZDB8DqRiYsgS9ACgjKEAEBRXAFopHmAkeIAB6
+			ANO4B4CqVwKANSmF4HgI0qALSmAdbxPCfKIIYPQdpRx5xVRUOxFI
+			1Bjs5GrF0ACxgQgoYCCAFTAQEALI8BwFBAgMAiJnGlWZ5yap3TsP
+			xv6iR4DpIEPNmQAB6jxJmOscqYRdCoHOABXpkgFgOKECUFgFAAAb
+			BIUIB4FSPAyCIiABYD05nwjsseE6y5AkzHKNkmY2RnDyJ4AQhACW
+			xLXIQBMDSIASAxKqBSWqAB6DwJmMgWhLh1DhMkPofBMxwDWYRH4y
+			UlyjhTDc2ZkpVV3r1govMlDRyEq9JmM8XpMx5ItAAPId6KRpjHNa
+			PMeBLgGLhAADEISVwdhNAclQC5Hl5kIAIAaOZCVjD3HirweJHh7j
+			0MkMUWprRji2a6RQmYRAtAQAAEQLLZgFANKU7YeI7DJDQF+cIbAy
+			jJUFIYBICyIAbBHRGA0CRHh6GvAANcew5QADlHkzkX41pEj+cyTw
+			fZHgDorVsNIDB4x8MnKUhEkhDh8gRZyOsFQ5ETAJScfEBA70RgSH
+			EBoAACB4QFVURRehPCSgJRSPsCagB/VmaYZokRKh8ACTCA0cYER+
+			AFHmAgQA2RojMEK9mwFgbBWDsIfAOMkyBhNJslshgZCBo5sKf6Jx
+			HgrA2BAAAEYFkRgjAvSsBCQLI2htFaO0lpbTWneEXolJRD0wHIMY
+			OMJ3ll2wH84e2r+x8EMXWTEmMfTOQ+aysdtRroJDwHUuoe5DGsGS
+			MoQykiLjhIqHWTMyBDDFR3IEPQeKxTxEsJJBk9Y/6xnwTMfY7x8Z
+			tENIPeshMc2jloZU/SfCGH6EVJ8SG75LyJnuVRHcyRX4wrLJq4Ui
+			BIyNkXaOvOGpWlrMqIEXXB4AyrlMASApHLm6upSWyTsnpFUCmuMc
+			5Ihg/YYLpg6Twn5ai1ERxURgu7+TpLvI0dJ+irC+sojCa62pgDBY
+			3MLbc15s5jIpHyPkxCf6fj5H0WIfZlQDD5HoPvJ4BEhj6uOAwfIH
+			ADDaAcJAAg6QCjqHqPUf6pDXGzADdtOjjaYHfWPdHHLpyZm0AAPN
+			Yh7s8NMNdnkl8/j158tYfE9h+Z+6BtRofRDtbDgJAOPkA4G17gOB
+			8Pl94gVVACAdBwAgDdLv5R+AABo9J6gCSGswl7hyFELWoibB+ZgA
+			5wJ8WRk+KEDYPAYTlOmDx8kl1I2cCKSAIGtrvVUgwBoNgAAyPVHo
+			PAPAbKgPgo44BmHCHcOc4QGgQpTA8CtEAEQLEeAcBUo4JQZKvhuu
+			0hGTSEGUIENw1IAN3XILGwi6BJXDgRAwVJKZTQEkeA8ChEADQIlH
+			AMAomYEgNGSH2PkyQ6hxGSFiJdllGyZkdIqjWfIAJOlHXAXfCR7V
+			agNAeUJaTVx3IpG0NFQCf2Fp14Ws0toBSGOWPuWArpJzJX4AUAti
+			4BCPW3YFMe2PMOgrKjqb1Y7DuhnjI4tdWUUC3EXAOAlV+/enRhNx
+			Ioeahx9kz6mUcCgGWAgE59bGO6KSWHPHqwiABwuplt6bhgnq0VpE
+			3wDH0dxwh99dAABgECUwYhBbMBkECbygkMARLHgs2UbYjcGO4dBM
+			x3DpYaPUmY7/IgAkI+IlBa8+ztI8CkHs+gKGSHMPRlgqhqjbZ1d5
+			kbcj7EqRAiAuBcx77dGwBMAABh6JTAFCVIZ3kanHxHBzPpBtUEEw
+			kUeVxdx8IgH2PYl30XBrLglqpWkrifkbI451WFASjGkI4OcBwDAG
+			jCXyAUd/ex+gNGGMMX4d9E/z/p/X+39/8f5/1/v/n/f/P/wAQAwB
+			QBwCQCj8gWgXAZhmu0gKC/ACB8GHAHjCC4CTjPGRl6DpMaCGCjHD
+			iEADDSh9EpAEI8OPjAEiGRgEjBOPlFmlsDPjiHqMuZMHk7QRgAB3
+			ASjYh8gHmEGUC7IUiasHDECKGliBgFB4krsciKI8F6h4JqQljkio
+			F6qlowgCrqAJK1AMG1AQAOErgIgKCGAtNmAAAIImD2pQh8B6CPJA
+			iPJjCZhuhpGEBvBqG1DGiGCOihAKAMEpmPiPANgTCBAOgTlWkKpr
+			C2lplaiiFjGYqCB5CjpAqDhaEWhnBgp0h3CXAEueAAAPgSPdJ2iq
+			paCEAfgrCqqWCPJYJPj8E/o+h1ihCWiBBxhsmEBZBOI+IrjJARgY
+			EpglAyJ6gRgXE3j/jesRknLaiGPJkUhThEmuhwBqjhOBEQAjguAK
+			kBgRk3gCN9gKgPkUlLG6J/E6rjCVh9CGLjEUhaBNoeh0hxCXC+pZ
+			gNChALgPCqk4iPARgXihAUgbiqiptCusLrNKDXR/maCZhiBYIehh
+			hYpWOgATgZEcgTgaErxMCPATgbEQAGAHiKuPpqn6D3uFk7KfmdHA
+			hohgiXKQjhGdiBOBCPAYAfkrgGp3GeGEBnB6KaB1h6FABphxjWuk
+			CeQlq8E3gIhpgMjxh7rQCrRUB8KnExAWqpB+AFNiD2qvAGAAAHhv
+			KiqrypL4sGifB/gFjxAKEUh/gGIOwhDPCrwhETCFgBKAh7n3gCA1
+			hrBnhlhQQDS6S6y6g1xNPdgAArCbRBCGAtiBxgP+LPijgtgdAQrM
+			LOgAAPAJypAGADrxy7TJTJzKTKzLD5rVCaxusbuzTOmURiusLcGQ
+			tdulxFJfJALflzLrEnDgJimHpyF1LcmdB5ixxxQbLpmExwiVoVpA
+			B4HxCBO9uiCFlZiTqMs9Dzrzj6Tkj2r0ikCUr3EntUkbCrifL6il
+			iQCMimChk5iwNBCCiWOjFmj2MaiGwXOyTqCPDSkQHFL4CckMCCOy
+			TsF8MLFrlXl8ooEakazyC6EXB9u0FELoDLOgNaMUCzCKsUiSC4C5
+			CljyMMMHIUwhiwjBjCMAjcULCvi/ETE7gAmHDMjFJislgBl1vnjM
+			DEHGspB8F0gEB8gJh+ynEKiFh6gEBtgIg9AChzgDB0PJh8JWMziB
+			KONcn90gjJs8AIAICZiLPJB3LztBwXvYNAM+UmtDD6Ruj7x+CDUq
+			zL0tHhgBATgnATgFh2gNh4gfB7ABh5hFDjAAgKACh+gDAKNSCLNN
+			AAMsER04owtVEZQhiHQgIMwhACB3T1h8wfiuB/iqzilGEZ0ji2iV
+			PhIYU9B3gIjYh3gJEWvgj2kUChANh3quAWgKEegBK4gABzw4Gzh0
+			jhARAXiqgggrkrgQgWihC8CEFdLviEB9B7CPDXqCGWAABnhgmEBm
+			BgGEIpNQFuE4AIChOBCBAZAhiBALAPTqJ9ADkaCmJqgBDyJRCZh0
+			BvOIBImcrjCZ1aPdt9x9gAATgcEp1zx9AER+MEijFFAABxBsFQhP
+			Ieh4UgGmDvDSiEAQAUCqgNARiqpYTqLwM9PsM+0NmzhzvoS2GdFk
+			gAB2BzEwuFjAiuh7vpCaUkClI0sIiBKLlvtOC0mBB7t02GvrKezy
+			C+iZh6h5IIo4gFijgMAOypHLCPTODJEUjeu1EwqCkYk6h70ex2T6
+			tQAHkpjSi8k6maPpzbALAOiqqUgJONAHC5lplLCPI5FqTtSdhzhv
+			EUhzhvqRqDGzh1DJB2ByroifAL2nKugFWYgRFHgfiGAFgLCGBth0
+			pWBOhhBss60UpFMQj8CVVpomimieQ0l6hlRrB2EgRgAAgWILzgHO
+			JxgCoejO0niFFVgDB/w93NQlFohukcgBBylpoQG/ibIDt7TxTrh/
+			nRgCKfiLMaABPbwPh2yzFpADB2hpq+gd0t3eXe3fXf3gXg3hXh3i
+			Xi3jXj3kXknogUAVgXhuopDoiwgCDKB7wJC+wKI7j2MaIY2bCiiO
+			B8gFXwh1sJPfivjEqeNjCFgKSNs6O53TCJMBCJClABInn8iBXqlA
+			B2AOh1GdAIlzndEiEQAKB7Rpsn1Yh7ilBuFph6kawqowgVDhAEAJ
+			CEAdgXPdAKqip3gWE3sLTIo6ObCuDxLYJjR/LnPLAABoBemEBmhd
+			w6Lo2mk3gRAWk3o0iPAOgUt/AVwPRCLWCaiWiuQhFkCGBkhbmWBo
+			hgG1FgG1F5lvgFk3mJOOSLgAAQgXkQAEoCmwijt/kclYJ8EgYroY
+			tjWRiPExm/qehyBuGEBdhTkWh5uTkBgTCqgjgvmzE4kQOpiEKWIJ
+			gFlZsHE6DvQ6t0QbB0kUhUhFjuQ3kwpOkQAeAmPdAPATEcipiGAM
+			ASDJAFQJTypQFEllh32yAABXBIJWBzhwMiDVuNVkOmCEAIgLijgW
+			gfCqgbgkkp4aj+WIjJBlBblABhBWm1E/iGAHAJEpgHgJChFGiPAW
+			AdCqgWgeImtzgCAEVwgDywCVB4h1IrIsGdiGBuhomEBxBskwh7B5
+			0kPjitPtAAxgB1gFGcyiWeDKiKVB3OiBB8vmB1E3gAwl0nL93NWc
+			AKCXB6gIoevPQViHACB6iqgFBzmzDPOoiHiUEah/5okoFlODU9wl
+			CUPiThiyDdhkhtBehpAe3laRaRnbg5AAQ/iGA1CBgRCBgjiBlpv+
+			AEoFksAgxBATgMp6gJAGCqzITjaSaf6gag6RTMzu0sE6sBXTivLb
+			HDjFLrTbOgOgLtCZperqTbJQ5PGGuhGYiZuXpFHAyOkVB1GQrkjJ
+			53zgofDuMz6nEZ0mClGlk6o6LV64Upl2j7L3C0D5ToCdu7UHsJi2
+			sEManFToj0EzUsj1McQXj1L3sCsIzsCPXw571qtaCmVysOioOaT+
+			MKuekQAEAEkcmVMYsNiuJFB7GEGRiXWLjhULCSMVwo63Csqkva37
+			C7UFX2StweiTF0sejBDaiw0JEZIJIB6DB7DO0TnOT/UROFgCh6oO
+			HMB+B+0ViXtjAJboB926CGB0gDh0gEg7q8ADhyB4BnB3qpNKEnB7
+			nBwXs4Lzm5Umi9b2D473ryM/j67Dahb7HjAm78gFBvAKhxAZB2AE
+			h0grAAh5gBmih1gDgfPfi8B/gGjAgFkZ1sXK08DJEUJqFVqws3B/
+			GHu7jbijgCh4NRnOoYiVSusHrXCKRiABkUh6AGIetRIe09CicVkQ
+			AJB52omLSpADB+ilB1GYM1N/ihAkAxSpVni8iaiTIUjxZxCEQ0cm
+			h6CGBohjGEBpBjGCDvAPgS4OWYGMiEAaAjiEALgQUr4/xh37nAh0
+			WwAABaBJmcmpCZmwoJgGiEJnAAASgaChAZgkE3gDo1D+BtBoEwhR
+			hEGuvJs5s+3uxMCBAdAlkRgcgmErmwiRKwyNvtnIiCKCiBBrhjij
+			o9iEFTCXByBumc9QLiIdB4mcl5xAASERgNgQTHAIEQRAiEAOATix
+			qeh1hxiPE8xHJBAABwBrmEJyWc7nmBB7FAHzSp5irMAYKJJGij4w
+			Yp3HN+CxiulEauGCBwhrCZhqBhmEDG1bZ30ATyi6iGYsgAVnw9xC
+			OmioXMsNxAm+vhjvWzDJB2hzrqOhd6Og0kPtQ86eFHQxkekBgVCG
+			JLiBB8bohghsJEh2B5kwhsBzXKQiD5CysUMqEQOZVY1cPdhom+os
+			B/gFCVAYCVQvmBXIkKDuDZ3LaHCEAD7oKukccUz0hwE3gChwmkqe
+			ijsTj3TVujM5iLwPl6L7jsignMa8H6I8CcBlCBhQhshsBpy577+p
+			ep+qeq+rer+ses+tet+uahATATgWALl2gLu9h/BmC/FVCaz/B+Xs
+			C2DSz9VCjvqk6/gBhsgKAKAIBOmJADh3toFAXRBxgKh7ALB5A3QM
+			oCgAGAirgGB2J6+XEpgBtS0iCKB3iHN6B9AJkwh6ASpWEFGCCHRx
+			DhC476j6vfijgIB8qJMqChABtoF6hskrgBB62kCVASxLgIiEAfAY
+			RpgQATiEAMAKihF8iKvtdVFqCRoMqwlli0B74ThiBXGchhhXGWLq
+			gAAKNId0ANEc5agSgaiPc7wPV2AARTj8FkCZ5ckwhqBhDhB3h0ly
+			h7MiGHlljSiBQ+Pd/xNvCqgcglKJCAA0IgQAAUDgAABEMv8AAEBQ
+			h8PSGONrwh9PiEO90voAM9gPEAPZ5P0AAgGQ8Lh8EAACAYAgAMCA
+			BgAXkECzCZQiXw0BP6GgGXvZ4y92OSZ0KXudvvkAMpdvIAUqmAIB
+			y8JheCAYEQ+tQ8PCeVgwITMMCGHy2dUAAPx9wx3OqMPt8z56vKGN
+			NhvcAPN3T62QwCgaHgKHgADguEEMsgoABAMVyDgCGZOfT+X4SZ1S
+			H3yfNVj0xoL+mReEAsGwQFafDAmHikbwcUDWbgfGAADAmGAQDyR/
+			P6XvN1w96O6Hvh6wilRylPsAPd6SSLz65QyHQgGhiZud/va1gGGP
+			5+QgBPiZgDfQjmZJ54V+y9/wzJPydwiGwQAAIFzvCz+ES6dIQnyS
+			ACe6dsqhqdJ6/6EAKyYFpIgr4O8yQBwif5/H/Ch7PafxgnAUxtCY
+			+kRRHEkSxNE8URTFUVxZFsXRfGEYxlGcaRrG0bxxHMdRoOAABS+4
+			ADm+gQPMAAfQOm8dyVJcRgSAyZjYIsfhSDQHgABoEIIAoBv3JkvS
+			/MEwzFMcyTLM0zzRNM1TXNkxvghr3slEsLIROLJTjOzeu+fqGL+t
+			aOPNB5/T4AB6Hknx5nivx9O+8IAI0nx8nuhh5Hi6B8oYiKXunR50
+			uhSYAHyfDpUYAB5Hehh+n4hh9VK3qdH8h73wLESdzs+lXvpN8SPf
+			A0VPmnb51rBViPotUD2Ml9lJ4y7CPuAVlvmydjV1OT313OcUP0AV
+			sKA6lgqoAABy4AAFAUlbCMGAiHocl4ESzZ6XgIArB2cBlzXFLaSg
+			SBKfofAUFACAafHseq9H2frmHqeiMH5h0AWWwdxThbigIJaACQxc
+			LMTehj2H7C5/gCnzewu3x+ZCftVABlT21VPuHAKe1RgNhB+AIfbw
+			AMuZ8gMeoFn2AR84GBR+Avabwo5OJ1AIdoDDwAZ5gKch6miextAA
+			eABqYAB6wNA1HTkhEHxHA0319as61xbNeRrbE27huO5bnukbCMIw
+			ugWe4OnAGBxgKcoen8eB/hyAxzAUJYBPkAR9AofIAn0CSmH+A8A5
+			Y83FwOl4Bn6ggCH8glpnyAi9Zcgp6X6BR0Aigp636+7qdA8T4bPj
+			vMpJkWyV1ZWzIRCizurLaHgmBqDgJcgIAoh4ShixjaMuAignoiy5
+			gAdJyOYdp1OY4yfHac6MHadKMAWB6ZiKKwJAACwNgMAAFgcl4MBE
+			kjUxYevCAAcpsoQeilgADbGURgbo0iMD6HsQwEILibghBaTcBYES
+			ZgWA8SgERNytLCRGtc8x8k7kIG4NIjgphGDwAAPEdZJADAKJeBkD
+			xM3zEPBcDslYLAcmMASSc+6FIdv4HiQwZwuyXjrHI/4eR4RwjYeo
+			Pp6w+x9HMHyPk44AwCkvBCChKwGwRAOAAA4gYAAPgqIYB4FR6HIA
+			AGoMAmY8h3P+HgT4bg1CMDyHaeFhxzB9j3O4yA8IEQKEHBUDZ9YD
+			gJEEAaBMhBNSEAJAbBpERnIAjNJ8NMYR4R6jxPCOYcJ3B7DzPCZq
+			LoECbkGJmy8AA+B7HhT02pOC3yEG6Ie+Z0R8IEKRVAiI27Fyqril
+			2AoB8o16AAVaSQeo9Y8MILWyAhoDDwj5mUPIfSAnkLIIQPxB7KjJ
+			KEPAgFnKQF3D+IOhQgg+AGScBGccfgEyOOnPIXof63ETgBPaAABg
+			9IuANHrFwALQTJDmPcOgy5LF8rNQAnc+Q+x6J6HwAYfQBB3LrAOA
+			9ZzGTcnfdgfdZSAmRmEACIQbY2hqiHbrSOklJaTUnpRSmlVK6WUt
+			pdS+mFMaZUzppTWm1N6cU5p1TunlKwSAlBSH1Cw/w9J6QonRa4/h
+			9sOVWnAtUVFxk3WUm+T55ZXrjGeB0D4HQ9gEA4AEfA3gGjbBQOcA
+			o4gMnyH4G8+hiCGEzJ2AYfj7wGj8StXJ94/x2n0GwTuvbLALR2BX
+			OuwLLJ5SnrBYZ3aND4IUPKyIlg+SbgWHGBsww9yVudIeAMfRgz4A
+			PAaTcD4KSDgVA2Q8BICyHgPAmQ8CRj1xH2OpB8yRlR+EYAAXIhA8
+			R2nMGwMw440xiRLVGAC1j7wHgSeOkkBzRzGgWJ8VQybtVbn9SeAA
+			EgMSVxOJeNoZZzBvjUYU/oesnphD1PDMoliSQBLrIKAch5YiZg1C
+			KlZ+JDwCkrMaBdZROznEIHMNs6TXB4jsOYNkZpx3vEsMElcCRN6O
+			AAA0CQh4PwrErAaBK/qEUSF8JeOkbxBB5jtKIOYpg1BkDzAAOwcy
+			gFkrYIMQ8EIKQGT0l+swkoCizn2VET4bY0iQROdyZWVBvEHp5Tsr
+			snwAwDE+YEyRC6gSfAHdgAOaYBzAmrJWP9B6hiGD0Hg2El+VCCLv
+			IIUBZpDAIX8J5IuFhqzqLQPMec967K43XALe6VY8R3Hhe2cyJ5Pg
+			CANIRG8ph5y0pyVsTtsJxGIIkekZI9K4jLn+WQP4ApJB+ANaVDxx
+			Zgx75nsgiKeErEIGSAUg9jJkkEj9AKo471kjbCsG0KcaoXKe6511
+			rvXiLA2gABjQIRCBwNJFR+5zXqJEuSxAOTMOYSoygqA2BDShl1j7
+			J2xtnbW29ubdTMm87y01eJ4dvbRXNQy1npLYgDKO6B7UJa6odP81
+			T028J9Ewhg8x3qXIYPceafR8EMe2plUA+lQROUoOzTRbbcqAQsS/
+			dadSXoXVkhXUzLGyNvVw2htKtVgLFRFhyaiyFhFqzQgpaF/TB7X5
+			C2JaydbpnUuqfeafJ12zU3EhI7yDydktJuuMmYDQGmMXHZuYKXCX
+			w5ff0U22DZQAOXuvkm4CAFm1LVU1BSFySDyHhEvdY8x5To4jxmz1
+			cCWTvYEs9jLHKpp4WRNZkM8suKDVmqtlzKN0ueqWSRlQ/ADsz1cU
+			yuZHO/Wd78PkBg/QBj76SP8CUHB8D9O5UPPpHBG25AEOIAAzB9C+
+			AA/16jY0S8ZbZy5s6LeObe9V6unoYPXAIcIPADY5QFjlAuO8dg8Q
+			jD/HgAEONGwDj6AgPquQDfGD/AKT5OiAFsLkQQkUn1C3TOaAMPQx
+			gCxzvr+qbWeAAXZpw5ee09KEkiksH4uxCJ56N8uzmiNcZVgIkHAR
+			dcCAEyCAdBIQc25Dzekv64IeVEIYHKG+L0HIG8L0T8HwHuIxAUKY
+			eUJmCoDUAuAAhcfevunoAiOYvyRYHYHGIYGaFu3yHaJ8HQHCL0HW
+			HGKmh4BwCcJWBuCcdUh0vaXk0sRSYSIQUkIIVUJeG+GqI4FaEsja
+			lQIYJSJmCgDKMYAgAsJmAQzeK6h2w2MsRWHehSAAFgEoO4HAGsPC
+			6QAAhyYuJ2AossnoAqKY6oJeAkAsJWAiAqJWMCJfCUIRDia6h+AA
+			F6FMOYHWHKJ8Ocy+HejMIQAcAmY8AGIwIMJIIEJuBABOi4NSLIBG
+			IQAoA6IZCakcPojoJ8GsGOI4GeF6I4icIQxYKYj0JIXnEiAyJXCa
+			X+4Y3eI4Vy1IbeKoMuXGmE4COaHqJIwWWcnoAg6WX0XDC8AYJuXm
+			JeyKAAHWHU8Im6ySqaYeXE2aPuuu2umiPQdyToHxGwzmbIJeAUAi
+			X6qgOaAiOOHaA+HUOaAgOOWQZE40RI0+ISHWkQAjHgIatwH0kwmE
+			HgPSzkAUAvG+ASIIdCT4HqAsHoHmH6rkHWAwHSA0FSAIHiAMBYAE
+			H6AEAMHvAWAkUqHiBaZKNYWcXSTeGAQAEEHCHCG3JC9ZJRJTJVJX
+			JZJbJdJfJhJjJlJnJpJrJtJupsA8A8BMDKQA2KIaB6XeAQBGAOAQ
+			AOHSXGAIxUMkhMneGSHm7ABYJ0NOXWjKIQ1Sy4AMZmHwAqTq/Oys
+			HQAoAmAiFefgPeHgAmHcAuHKAwHCieAOH2CwPov00g0wSuH2i4W4
+			MGHYJmAIG2whL4PMAeaSA8OYH6A0nWsOs7MSsWP4RO7cW0PpL0Jg
+			HMA4MMHzG+n4AGHqJmH+PSASAQJmA4BGfe6oIeNSIeBABWNQAdNO
+			h0yilYPAIsL0VCa8L2UUAAG8GkeoGuGWeoYSJ8K0JmtSzOJ2iima
+			HzFcVeUGZImUYFG4AWJWXM5+mmysWaJmlW30I4f/MMmUlyNsK2We
+			4qVSqaV7McPuPCAeApB0UIk6dymuQejzM6POysIeyorgzlCbEiA5
+			L6iqAAA2BKJmqYPMPgjyIeHkHYIeIuIek6OYHSHEYUiORG5YlfP8
+			A0BDBjOoJeIES0waIuJIHCG0eof+xcQAbCPoqWQC7w+WaQZWoKWQ
+			NoyWl2wiAMAJDdA2iZBwHuOguKzaAOAOIJKKqtRMT2MqQktSzGPz
+			FqMAP8IMc5P9DSfeAgkLCgAAfGOYHYHSOYHolScyIYmMUcMKH+v0
+			H+AM3APQPoHcPK0QMKACAOWCVwPcnmViJIH2AUKYHhHKZYZqNsH2
+			JWAeHmdaYGzOg8AEHsPYPcdmH8aKdomEAKKYHmAUhMH1UeHiAeHs
+			AgEkHOFEHKD9JxU/VA12DiAABoPoEiTkAwSGQOS62wzyviXgDoCS
+			jKBW2mWpVDVvVxVzV0165mRFNgV23K3QlW4jGcySyi38YI3kH2PS
+			mwayHYUjFsfzTqUwa6IktzWoHeHQUygSVDFtFAhOHXMMqaUkPcMq
+			/6tqJeVVTE5gbemw3ERLFeg3VsWOkdQo5BMc5Kg0XTPOc3EsTnWM
+			Tulc/cAKwgzkVnXwcw5Cc1RgIMl4IeAaAeMQ6YS3FmliAc5+XIIM
+			II6Y6EX6AJY+MMAWrcOrNgSAcwUQHmeoqWI4HiHfZU4iPS/7HXY2
+			+87QJmKqQoKAW4uoumMknkZAPeAGZQygQwVWH9aEZUcWZQcaqWH+
+			msH6AUH0N6AQoOAKHu+SaLLgZ2AY0AqO5iJCH48mQu32ZQEwcw80
+			GqH9LKGSL2bW1M3K/KRW9SRNHZV3btV2ACBmBmDMAIHSBEGmZwAY
+			HICM0yAEEYO8AEAg1cH48eeAO8XkHqfeAKHofedilOAgL00w00c6
+			UKAMJBMXC8HsMQAiHUAzC8HuMRcsH8AMN5c4dShMHsAQxVImPCZG
+			RIAYHki5LgIPLgX6ADUKHsJ28Yl4IQAmAlFTTeSvGEuNSpOeZYUc
+			H/FNRyAAHQHGIwHSHCYamULk8IifAwJmCGCmfXQuIOW9GeKmQSWO
+			teSSPoHaHIIYGkF/D84EHML0Hge4tiIZBeX7BYMZDOznX8veWwH4
+			H1GKHkIfWWJeHEGyI4FmE/c+HuJ8A2BGIICyDoxqtfSHCkRsHaHQ
+			JIFIEMJAG4GiI5CaJmAyA6+ufOAAtMJeCIC9GGQYl5FnX0PLOtSt
+			g8AAFOEWJAHMG4mbNofiX6zyJmA6BQIeCQDAgwAQziIRSExwyy5o
+			Y8zkRMfAPCGUFweoGCFaKgNIAAAoAsMQANSAAAAkAyJmBOBofeAm
+			AyYu1WvaQE1KTmPOjyU2PJSWAAGQFsxUHGG0IxRdOEIal3huNM6W
+			vgJY0iASAcMyzkvULkJIHtgieuxMPorgqoQFRWTpWWOYN655SS6W
+			mmHyAaL0HiAxD+HoAqKgRgY8/OuMHYdaAgHafWACa4H0vNlsPSl6
+			A5H9IBdYhOAs33agH4HUAwHUA6E2AWHYAWBSO2ACAQiiHuAcHeHe
+			HcBqZKx1I9F2VwQsECHGHEG4EBbvnFnHnJnLnNnPnRnTnVnXnZnb
+			ncR2A+A+BNZ+H8GkZLIiWhTsAUAWG4Adn8HDYIAMHfYIAKGbZEAg
+			GmMJM8HtkiAymKHiCtWWH6AoVaHxmkz4BMV7Y/Y+HqAiAgAeG6JK
+			ciHmAgHiA2HIBEHEmM+CBIQPg05aYmsekWHgMZpAApC9pomSOgtu
+			LWmtYcwY6W+cXIH2AaQel2TsH6HwOYy4tnMkWWLTG5RsXEXCqtao
+			dE1Uzkhyc4PtDefYA6JnjHFmeq+UdqyigoX6H3FtWQevBMABj6Iw
+			7oh2LPP8REZa4wyc0Y3WyYujqyAWfeAUAYIOwiMwSA4qIyHYjmHd
+			GVOCASNmATkZQUmc3TRUycP2n2WrRdGxegLSK5A3X2WPjGPKW3Bp
+			qetym6VO0Oyi5OyoSSOq3QlMuqoIWpFoves20jjGIe/wX6kZB0m6
+			HcHWI5Q+RW3RFIUDa+72WrAuBuCUIOAjCWtjQOHSIOLlABeDSsHO
+			I5BKvS1gOrgI0FP9q0fhNavWIQAeugi7puh7eJvVWaHgHRBwHkdE
+			yiUSPCHgzCayHq8IARkgciPMh4cqZI+S/ZUOIKHiMjImxweQPtHU
+			Pcg9aOOgAUIwHcBCHKLXLhT7ublQXEc8IbgKJYalReQwO+AQ/GIg
+			7+AAHcAcHbGwASHsFYAyHOA+EKHMFSG+GxnfxxxyRMFUYnbYB2SK
+			FCPofWIY0JtK14WOAiAUIOAeAUfeDSCGBMAABMAwi5TPx1yvyxyz
+			Jdys/Zpgto5e3YTqMqlMUG5g3YUyHq37W5gJRMIQjZR43zNxenD7
+			Wue+HQlsIYHzW5emwK4XNm+UMqu4tqQAs6to3QbEO+lYg4g/V6RI
+			PdTjMjXnEs5M49CkXY5e5O5aW7VsxwIczsJeANF+zltpXxrxSNrw
+			d+6OXIAcAeX7FlqnhoxyXqJfYJ1mXKtC5oLPjG1ZB0AGePRqXKAY
+			X6z4OOT4OYHgHYxVaetyuKy5Z9wQMI7WYEsgQknfPMzmV6ZHacZU
+			ZE0z2cmwAOVW+RakH41ePAH6ieH0LYLYb0PM+C8WZw+TaorkAKH0
+			ASVWH4YGqQTi8icoPeIkZQFuPoHCxWAA8uFXSsRS9TMby14bU+CB
+			4gAIHABAHABYXWAQDVToBCHwPGB8N9TKZH1AHmJWAMHkMingHuAk
+			OPc0LXaEayAQr2H0s5dCxqAyHSSIZxcqnhdWN4AIJIHhmSVMAWja
+			Zu0m0hw4AcHq2oAcHuSsaFL6oeIbwIvaIZsANnkOAnr84k/aSKJf
+			AWWCJez52OHYcoyjGIJYzkLQAAAuA0fetTQEm6HgHWO4VFRPqmIQ
+			teIJrSIQHmHZPIVs5ltIAABKBkX6BJ8KIKP9WK3IbGQeAiAxS+JG
+			AAHUHKPCUMJIwKJ8GwGaKmQkB4CcMYvpDWAuMyPLGAlXZ965Bvhw
+			JIUkIYHIG2OYGOFqIwHIG4OYtYIIBOBeX6i8JmAeAqJeBoCShhvH
+			bp34O4VDkkHeHUJIFaEmKhC0I51rAoA+hwAWJvQAIeCIC0JvEFVZ
+			+Oumg0LYUWIZ+YOYFYEihMOXWuIQA6BE0IysIIAyA+IIBcCCIOAy
+			BBY2SSIACAY/AAAgGAQBCYVCn8/oS93lCHw8gGAHg636AGkw3oAG
+			UuXmAH0+H+AH7DoXBYqAAcEgSAAIBwEAAgEwKABMMwWAAQCYq/Yy
+			AHs9Yc8nnBG01Y683PGX/QQCAZLCJRUoVJZTC5QAKw/wFDn4Bn3C
+			as+wPY3/aYTXa5a7JUQABX5NwK+5vCIS/n5JX/e4SBYQAQ1FQCC4
+			Q/AI+gA9Qg9L6CH08gc9Aiuwg65qB3eC3W+3w+gc8NEPIa/QZZAB
+			UQFU6u/mC/qewbUwHG4m4wKzud1u95vd9v+BweFw+JxeNx+RyeVy
+			+Zzedz+h0el0+p1et1+x2e12+53e93/B4fF4/J5fN5/R6fV6/Z7f
+			d0xAIBSCLW9rS/6jCH0CQSCmsBkAHEA0BncAgCAMZwFAUBhqwMkR
+			4wgHB9wmGMJn6Ch9M8Bx3nedgXLSfwDgGgx8wABp1gCBAAnuxh5g
+			0dAOHMfqzH0CDUxvHDggQeIFAACxvAymB8pvGaMnyeh8pMfaMgHJ
+			q4gKAwASalYApmngCISASZn8k4AH8fSCRmhy8NSATAzIlYCgewMo
+			pguAGAFLC+rYAB6HexS3SqhAEAUmYBgIhD7pEfCMr0viurhHEtIR
+			KCZwOmZ/pQfJ7IIfB7oIAYDJmBwIJumsogOBaZhKGiZhMGSZgLFS
+			CzM1K4HacqMnScSEnUcL9Hukpym8eoAHWcZ7gAfJ8IdVUogMBADp
+			gAqKgmDCbgeCSKnqeckgcCiHAYCExqsfD7AAdBwIdSaS2Ghx1nKf
+			EvH6kstIq/r6TNRiZJYCEsIMvAAzGxKyKnRIAsJRLWoSdx0oIfix
+			gBbyHRmhEtISAYCz9VoHAmioPhMl6WywoCSnmeKxnoeCtt5LmPHc
+			seEJKhuVrUvgAAeCaZiYMwGgAC4PSxJqZnUb6b0mhB7HikpzG+sZ
+			xm0sZ9n1REvNgnjDZuDkog0ES6AQkoIA0sYKg8jICJulNE28kpol
+			+sZqF/StcriAyEH7Kx2HvJJ8Aqjp3AYeSTLkAB9gFpQAoIryUH8v
+			CsAEfqKgMfT6AsdsggIfc2qwriKn9xFhARYJ0g0cIALmxSZz8ubU
+			vwAADnwl4JnaC6YH1sN2S8fSgpQfQFaYeoOHgxwCn+PJ3EudhKvf
+			4ni+N4/kPETK4gAboAB4kwAFOhQI+jKMyeS41Wx8ByXgiBdlDGH4
+			SAAEgL5t7P0/V9f2fb933/g8+XKvgaucJ2J+r8hq1rUfO2LeISwg
+			hL+WPDvIySNjw8CSj6TwPcehYB8klHYU1hS3x9LBb60wAA7x1EZR
+			mQkfUEV1wBXU04vI+VIFYZYW5L0LS2wsIWpFyhWWnlccMQp7BC3s
+			JnLfDpsRcGBG6XyjkrL2yDJWYeasrBcADgHSwARVoAjAJlfqvosh
+			VS/xTiOAABoEFlIjMCQdVhCQEAIJmwAhIBIxKLAAAkBzok4kFSgx
+			BywBCXrIWUS1mw9h6LqcKSUdo6R4OfSWwoeo+0QQ2K8QUgrpjVlS
+			iVH9jpT4ZJVLAlxwoCVCuIJKAosbcElj8ACPofw+UipLQyPwBY+Q
+			DD8MgAUfoBC5j9LkAUfI/B8ADXYoWFykpSlcLSrldgxSFOeHYAAP
+			wABUAAHU/QrMMyGPxmlNOak1XtAaC8BoDgAwEgFCYPsAI+wVj6AC
+			PkMDDozNwAEAgeZOwDjzR6QsfgDDFD+AIQ4/BDpcrBHoAkeLpx7o
+			9AmOlIIA3XlcAIysgaXgCEZHiAyY48gFDvc+5E3csksAXHekEsUX
+			x9EVAEO+kA+FIAFIcAgB5MwDgJIQCACZOynqBKwPsfhM2EGHIJMw
+			cySSLloLaAVQCTyEIGIQBACiWADgIIqPyUkGx1D2gqWhwrnx8lbM
+			DDiIjp0ROnqU20mYHQTH0A2Cc+iBiZoTnxVNyg/C/MRISO8dZihq
+			jKn+UMpxKH8p7T688JxOwZhDe8BekE90pUJftCAeycqpjyHcQ4Xw
+			rV1DnG+RkfChAADzHaQRcwAKwE3CYGInYEAKkVAK72LgEiSp/hyQ
+			seg8SHDdGkRkbAyiCDzgMAAbg1Fg2MLGA1aQAAkhbAdZwEqyiBEI
+			AsB0v4B7VlXLUPuFDnx9EzhCQ4cg21gjjuwsIexDh5jsJ+nhiJCA
+			OAkSiAsB5FR8EdAACEF6UQJgZpAAMkoBgFEOYebtlQAB3DkIQrAh
+			A8R3EZHANVYI2hnVQHsPMjN9k/WGbAlgBQDksJQSwzEioJQYGnWQ
+			YecFlx3sewYAAbA1SQjtaMl6nJUSplfX7FSZ5ay/QvLcyslKkS1u
+			xhjC+Ga7URkquablyYGy8E7JEAZJI9wGkhckPseoDB8ANGSA8dQE
+			gEIbAgNsfY9h9gNNEPIIpDR/PoKkXDHqkSrVTK4MAtQwRwDfGyIC
+			a2c86Z1ztnfPGec9Z7z5n3P2f9AaB0FoPQmhTgAjBGCw+hXD7L+K
+			ifs/g0AHAOAWNZAwCB2RNAKNICAEAGjZtKSIdY6x5gwsqPsFRQB+
+			ATgYPcCY82RGkS5mQ/BFS1FRcvLRlJVj8D8k8q61aVj8moSkPtLA
+			Bh7LKX1CkvhVitSIVZHDYSgQApYVdQhlZZ40uUL5UGFg9FGRQAAA
+			ZeiWFGO0pzDIoQ9Ewj7IcgchIGQPKgVFtciw6jFFqJTmohd+dybH
+			J8kohI9B5FjHkO8gl+QHAPSwBECx9AHgUVGDVLALQekVpWlY3LSy
+			SjiGsQkcQ1SHwPAAN4ahIRzDgV6wsuNSW2n0SgRUDgIllM4JuA0C
+			JFQOgpIyBkEm77TDqHESUaoxiS2MKKncjQxpmqWa+k4BgDsOVbAX
+			hR8oLbh8ZAAAtbZOAakEARkaIMOd9F6KuQgcA2EkjDFeR0cI2E8K
+			KTIQgD4KCbg9CczYD3doWVsrTNA3SdiHDAFOsEeEHX+LCSS/YkoD
+			7RgACeGw04FwQWkXoPYeBM2GqD6IMYjKLFxwYaESW1pJazWnJnUb
+			CQDiSgafIAADgKVi3MILYZ7b/iHDTGAQQaYwjFegWEngfLCR3j5M
+			UPYCreh6gRV6P0BClQBrqnIkkr3gCFOIJmBEeAFWYDyAmTByWxIX
+			j+AGuMAqwRzgYc8WHuMRW4OnHyS8DA67lORbDBhcBeGEj+AcScAI
+			EYfgUbCwRwa4UQaoaTQ0BMBUBY3oKpKT2AAADAtoHIhQTZG64ZLL
+			PiMAnADC4YCoBw+gKYGoD4AAD6l8BkFEFMFUFcFg8D6zGh+ZQ6Ab
+			dAhkGRhRthcgkynIfhp62yA6DDgghLjgoTEZpYhyCafQepcqDC6A
+			hIi5g5hIfSqCEZvrxYp6AIfKmQshLrfRdhOjHaaI3aGpl76yHY1C
+			IarCIIt61cMxgSIDGhLIuBnbYBLLRyNoA5KK1Q1JKiICKyFgAYsZ
+			RK0oisPQBYBpe6MUOZRKlZLLYTay/I/qkB7ZZhypKIf4Aw06lY+g
+			CQCgCRhQz7Ygd4dpvStjz4eppg2A2BlwAIfowL6qmJSMVRkyTAk4
+			f78sViTAAL/sVhv4hqekQAfzdyVAfp2aUiUMYgBIeqhqWSWEZaew
+			fpxaphLzHBQSFyUjfIrgvY2AdBG79YAALYADkQcoAA3AoI38F8Fs
+			dMdR9QFbcYBIHoBICofwBIfwGSjARB3oAriQfgAYCkZJOABIeRm0
+			VhQIAzbjYifKGwtbxYAYdDRamorkegrgDSeoAyhwBQdoABHkjJy5
+			kglIAofAm4DIbq5QA4fJeL97G4hIfIBafgDsjJbQmYKoG0EkEBKI
+			B6bpJRLBpa9Rb4aIYpYIaAYRYKAguKoK0ohABLeoFoG4+gCKwRz8
+			HkqKep/YeIjAAAbQZYxQfJXshEcz66HAqxsAmYCwDxZQCwD5KKoC
+			M7H6q8VRYRYkaclYe4hwbAaBvT3DYhEZxSlgAAGgIRHoGQIY+hPh
+			Ry0xiJMaRgepvUHUIS6IXIUxXocgbpQpLq6AhyFYD4E5LAJwMo07
+			h0Qi0wgxbjxIlJYYkoaYYYjIZIXQsbBYjIdwdaqCEIjM0AAALoO0
+			TwEgFzZRKxP5bjIKExhQegmYiE4oegjIZQXiQYj6iksYAAHIJACw
+			AACQCxZUmIAADYEwkrri/CMRRIg0sKMY38vIaYYIjIaQYAsaBEPb
+			jSNMgwAAFgHomYCYDRM4hEPTa5KAhABUQ4vJoIkIADkIioeSBR5o
+			a5XppD6SDRgBdqwh0tCA3bdTGJl7HhwkujG7fTfT67cROKG7xgrL
+			awADx4f5ZQkzbQewCTJgxMaAfAzQBweIB4fQBodwB4ZgfIeIfQD5
+			YYfIEZlhOBLSUQqMr5lYqTHArQ2ByYIIb4bwbI3EddKFKNKVKdKl
+			KtK1K9LFLNLVLdLlLo3YEwEwFwDjMQbjMS5jR6JoAwawBdNgbZAw
+			AakRP7SyNQbpdxDLdwFQ0oEYoAfr5jBYE5CYfAELMR9ENKHEVKXS
+			RFD5G7sbexgC5qq89zYgAKKY3VI6GLfjWzNQBYrACinNTjF6ewqo
+			rCnMhoui6aRohAfIeaerdxsQ3LnAmYIYLETwCgDYm4BIBk/gCJJi
+			00NSDZgx+wqkfhdZoIeQkppAxQb4aYsZSaygfAsYe4exJLiIioGY
+			IonYHwKJmzsNSQhcorw8JwdIhEIYeAdpJIeQdoxS6AkodAb4ma65
+			Mk+gC7C4CgirqohAEwGohAEIFohMRhcAcAhJX5oK1xOoeYsYZIXg
+			dIACBwjIqMQjrZZYmbsJLEzQnbqoiq0QkoGQIs7hNY35/bFSmQko
+			b4apJIXwVIjtkyPz9740zBy58q94AAJQLw05U9Ew5MqwjIXITNBI
+			a4sdkS9YkqtghICEqAKAOQ04DAERd5OExqYCZ1kTdT0oAAZIWZgg
+			c4ktaQkooYggerdgAE7AFIGhKIGIH8whqJVQjNtbe0KVgYcghwdz
+			pU5RXob4ZhcaDQfwC1oICoggfykwAAeUgKy4BIkKWKnI3L7AAACI
+			d77gB4eL76WUSzjQ1aRRz5wJOoAgkJhhG5dp6LJSqAuRKICAer7j
+			8ra0LJgghTdKTVwADAAgNIbAVgaYTVL1293A6wMx5gm4EJ5gG5G5
+			4YhNQrPqKAhAFgDp6oC8nAAAJoGADj2ACSeN3N6l6t61645zM9qN
+			7ZLgvJ2JQVI5/0Jdoh2h2IeaxokTxdqtdgoQeyA7xYdhGSCokofa
+			DCEIkqDgsDaDJxlYoIkbHKAJhLHjaDbhp9DY3NI5ygrd7SGCHzYZ
+			HCHMNBf501RyrEOjfpf4shh4ldSaNYhSlYm8PUDbYbXDF5KsQIvA
+			AqrZJs/gBy+c/E75KzckRpLJsK/KJphyMR07WyKQkwAg05PhHoCo
+			DACgkxLpKomYdwdxvRhgf6VIf6ypJMVQtIvZQ5SJvw+5EEHkK5Lo
+			A8VovYvwCIxEHjd0rZvsYOJ0YJL6phQyVABAfOLxv6k0gj6oAatl
+			v8akGIkUaQtotI1dAIABzyqAKdAWQoW4kQ4MdF7GRd6rORngAAGY
+			BIAwBIRoA9Es+y6YEABAewBabgeQ041aM890NFS5Mge4vAdZ2Ate
+			S0idoOL0jUjFwQBcjjFyFzYckAm4DAbN6ABQeLsQtYBAlAlYewBp
+			Xoc4D4cjrYCYhAM4IIEx7isR76EEnaj9hoeYhwYoWxYIY4W82cuJ
+			ZKOAhLDAAAIoLJHoDoEgm6KS+siRiLjobAsYXQTrwwdghxEZPxiS
+			FgeYeBYOfcKYhQmImeSa0mfICgDMTIBJLBQzEBpSpsPQmODiIolY
+			1hKBr6hpVghDrjm5Tpp0I4c5dUy8uAorcCDYdgjJeRG4u4vCowio
+			FQG9XFp5LQrC+h0pld7o0oABqpZQbwaYkobNvCCojLg5JJCwAADy
+			4oAAHYJo04DwEyL+miOZVwksoquxmBixYU4i7k4oogAAaYYhvQaQ
+			Yqf7mJ54Js6YDID4l4mIkprohyNwrsGxZE0sasMFkUvM9IggaRtS
+			DOcQCqJ72glohAG4JYioDIEeiI4apgkocgbRLAdNd6y4dwkocIbR
+			YLOBYIfKUw1M+FSiJdUiZxHLubHcaorqnIf2a6Fl8FS5LJehTJKw
+			rAfsuMK4rJJze2mh06AYBQvdzIkoesXiXLEIk4BJEF6YAJAYAweB
+			AYA4eIuBljHBQIriWOzIfIDIk4fwRQb4brOORm7m7u727+8G8O8W
+			8e8m8u8zPwFoFoGoDe6YaCBgfK1Bdo/KcgqKFAg1OIAgeFN+QDMQ
+			f4CBEFQoAw2CeYtIfoBQ+6I4AcLMPIvgr4hqXQklRZhzMxfKJCMz
+			8UN7sjFeHWBD6x0wp+iZQK+41IDAp3EZweHyTdh4e5RzzIABmQl5
+			iVclsJhCu5XBhlT6N4AAIwLp6oDupBsFowDJYprDIEMR2MrmhUVs
+			jQdq14Z4xQawZBJIeweQgkURYKQKqACACwioHIJZmwIQK4B4AE/u
+			xA3Uot7rfZp/NJsgAAZoXYjIZ4XoggoZcsUB/wsdgAIIKyvwIkpw
+			CymxPCthQJp8IyQj0N/EbgAAY4WIggeIduqcqRFggilYhDygioKA
+			NhHoCLx44VkQhYdwdAggagYxYKB1uQdIhwbYaIghgohwEQFYm4Iw
+			Li4fWGdUROi8/I3pkQhwZYWZYIdYcN95XQbVr9gxa9WQLxmwCibf
+			F4DalTI08OC43IepoYjwWwhIeIdW3oeQhwdodQsYdIc4xRBd44HA
+			l4GIHo+gBIBohClYjIgRMfM2lAbocojoVgUEjId4ZUSyUQhOIo1I
+			CplawgeFGiDYBwdxL2WtxT99xuIoB4eET0ZihBQNSvD9xMxh6Igo
+			qy+kQNyye2qYCKfCwwkymR7D94ARGofACAMQZgWoY6Ze8/mVK4OK
+			NqFoHyRgGIhQPghTIzPxZgmYIAFJ1oDgCZHoHIEk6YCwBrRfmfp3
+			p/qCauBkL+2aFct7fUJpvokhvp/SnPaqBaDRagh0IfU+vgAEJC7g
+			krll+6/nVKQl8bFUla7sKgfsrtI7HTsqDWA+BCGFDR+iq43KIeCO
+			CArOB6HyHpf8Ps/BVpKYmCNT2qHlzzGHIM8e2uCCWBMokqoDFqNK
+			Ke2oBgB/W8Rvzkd2k6JCwmG4BQvBh7apjh5kJS4YAuSU6gCx6q0i
+			woiSyxS4kkYof4egoZz4oC6R/emZxPq5EGLhSKWRwJQwfgB0kKRH
+			6ONGMgkSAgfhMTdwvYfAAixKUTYzMU9wk5QsakOCFsj2PohXRQAA
+			NR6JzwhLj4SZYXqP+dKn9hZ60oIwrgAQF7MogBpBL8BYJBj5BgAA
+			T+AYAAj8AoAAL/AUSfgBhT5hoBi4AAD6jD/eENAD+jz/kj/Bb9ko
+			Flj2CTxAEweQAf7/kwCfkNAc7hz4AgABreCAAAzyA02kgBB7/mwE
+			pz3Bj2ADmDzkhwMkw1EQTAAWBwIABNF4eiT4A4Aejuhr3etOZrAe
+			oAZq/qj9f1OCAPoIEA0YB4TjBCKoLAAbEURAYFpwGlcOiIAcLWfY
+			AWyZe4AeLsk0YjESjEVjz1emZ0j4ks3hUkAYEjAEAtBC4ahIIBcR
+			fz9pzudL6j74k2wjALCERAWuiUe1chkwAeDtfIAeTr33KAAPCtJC
+			ITtN4kzocLzAD3e0sf15tT6fgAvEeAnvAAK+UKAUVAWfAoKz3Wif
+			Jpz/gAfh+MqfcCuU14ALE86Qn+jB+n69abqcBi+AADoRsMBoHoiA
+			q/qEByMLyky3JYyZ6N+lgHAmoMIOCAqKwoiLAoiA4EIaCwPLSBQG
+			qCnCTHy4CSvbB6PH2fSTNyjwJgypx9Hwp0Hqcex6Mqtz1wGjx4HQ
+			jEtIxDqPBKGqkuIjAFAcioPhUjAGgi0TrTej0IKcfaNAAfcngAb5
+			qKccptqceZ3o8dRyuidRxui9bOgUkx9AEliJP+86bKdOE3M/SdMJ
+			PSiOgCeKQn2kJ+JMnFHuUAUbAAAYDo2mz2Hu/7dQOk83IqAKlgIp
+			aTrwf5+Hw30JUvN4AxCA8anWBFkHW+oA1inCT0mf4Cnu8gQQefxG
+			m8bpsEBOFu29b9wXDcVx3JctzXPdF03Vdd2Xbd133heN5Xnel63t
+			e98XzfV935ft/X/gGA4FgeCYLg2D4RhOFYXhmG4dh+IYjiV3haFo
+			bBgfJ8nuXJ9H0fIKNVN1M2GjwBsWjVVHzklJn6A8Hn6pKPM/R7+0
+			01oCHwAQDpQ0CFvOnp6n8z9KZI+9Ls8kgBTPmUDs9lbrUpVtn6Zk
+			tun7Bx7NFoSbK0iQKpYlUfgMzJ3gYdoAHzaSHPuAAGH4sQmBcDoA
+			A8CbDAZXCFZIeyagAaZhpYdxzKc1qPASwzIOGB6MCALS0zYjwCgP
+			kU3vPKB9Ia1W0VeABxGvKp6KcfGggAahjqodhzuigyMBCFakhKGa
+			kx2hoGAghoHgkoOTNC1jI3FjSTGgYHhF+9a3JMeB2NQeJ2t8xanB
+			yJYFAAGQhASAAIgshoDgSioEeo0Fgzf4IAHacqnGAVT1+Ukx8PKA
+			Bym4qi/I8DIQqCLo+geAAJgwSRfI3Bom+FIIo8Q8B1EmBACkiIQg
+			qP8BACopL0AAAHAUes2C5EJEzHiU5AZTjpkmFmJZE443PlGASRgE
+			4NAGnXAoREBIDSMAvCGR4BwFUvAHfGdZIxHh0DdIaxpLg6zKi7FU
+			oEdY5TfILAABACxSQJgXLEbYioEwLERBUDZDjMQBEkNgSYb44yqD
+			AF+O4AA+BukRH4dVBKlHsFKdE2MAA7wKNnH8Qtb4AiKNtHo/wBY9
+			IWgDH6j05A/zkE2M+1kiTKk4nWJyAU1BCj/mMQCBA5pUGqHNQbIu
+			PQAgcDdFONkaLE5SSllNKeVDCgzHxlYEg5IL1Wh0OS+GVK8QDAEI
+			qEUFgGW6N2AADQEIFH+gMLTLWY0x5kTJmVMuZkzWHNRUypRqI/1H
+			uWVaf9Sid0ij5TmPspySS1DzTnNwmY8yTIGPGPRRg+inDtHOj8t5
+			454p0naOslkaynMam+o8fM6khEeH4PZWBHlJE2PQP1UCmU4KRJC0
+			OaC4mnPjaecmijR6KmfowaJYb4z7kVZMRU95DYu0eKC+I0DMj+mw
+			KcfVmUeiJGiOOZ2lwBADmdM+AZF5CqSgMbwqmAElKWFGAQesANMz
+			I1FI8sVSgA1a04TstEtQ/n+AFAQWl7QDqfFBOOiE1M7B+D/HsPoz
+			I6jNnjSAewfhunNAGAEAaO5CjUl5nugEAzmKvksH2P6rw/kCK8PY
+			P6r56zdVpsErwfzKh9AEaEP0AaIiQpxSSgBbySFwFOHUckOyrRwv
+			xAAMkAAqzxzOtFaO0lpWABpeyAB7AMiSgABiAMlAewID7AmA0lwB
+			qmEMAAAUfRSSFkbH5R4epQSOGiJATYehJD1knVGaolCPwMlUH0Bc
+			uawynSQLS2MpIAR80eHCRsepoqSgAAuU4AICEpALKoOcDJWAAgKJ
+			YCgDL/AKgNLEFgGwITpDiLEOQbBDXRxgGuZkb41iqOsAAEYLkLVk
+			OKIqBi/R8YZUvcJJijYABzjeJYMcV5LDNkmM2b4eY7j1nHI8BfCK
+			OD3AFoxS0j1IyhAQKTSEACgLLDgJYPQd8HqvxnoEasjz4CGw3o9b
+			CeR63R1EbYAoBZDQFoVg+AAcGBsajwsErEeQ9j1j2HsZVkxQaqli
+			WHSQjACAE0iZFeZtheZ8j3N8x0yrUXuHKgBcxsBqnDlBf8jo25Rm
+			YgQAmSkpw5hwFUUMah8tC8JEVgWQkE4MSEgGAQRVHdHjI1iI8Zs9
+			bGqAV5jO5ywClKXD3HketjxTh3jqNQO4dckTlIUceA8tJ2CKg+Cq
+			RHCCtWSGLZKAOHa3XRkYHeOYoI9R5FOGm6cAA2hmmoHoPElh9SK5
+			yjeAMFMJR8niWceMARVCL3LP4uKldbwCj5KSBIdcwgBJ1HuOsqg+
+			x4EswvpIiL4C0n7sAc05SDTPsmpeSFWNepsb7VgrGRDVDkskH8sU
+			Aw7wDcPHhRtZs0kJLRY8PgDB3gFE4H+IEbw3hsiBtNyPknJeTcn5
+			RynlXK+Wct5dy/mHMeZcz5pzVOAKAUAwDugIfofjz8L5/HonBE9t
+			tNkEfUh7JCUMmUafUytzFeAGm+REnCLz7nrKT1JmSd1QK93BSulg
+			BQFxcJDW5AIETKkPpKyRp8m3KpwZXUVyhH9pjzJI1sf6iyJAUVH3
+			otBVB3ANHW2gBBVARAVISBK2wAArA4BEAAEPiG9UoIxiMkwwxWks
+			HRhqtBTh65WTtOyJoFSKhHDGWIDwKbxrkms1BSlgKCKxScRgco2S
+			MD5Hqlwdh6xvDVPENYZo8AAAUAwUEFQOKsAzCE/x2kFQEksAOAzs
+			C4JrD4HoRge/1wADqHEesZgvkTlxLuo8DIHyxAWA0RFNhDQUA2KC
+			CMFztQH9zOVPgqo3STDrHGR4eg8Hkh1iTBkBekTptAAEVCKgaHrm
+			2gIEYP5gAASAXCIgFCmm9GkKbEGJ9k4BuhpDfBUBHDxB3h0iTALg
+			PCIgZAfnqQSCIkcCgkdiTKqF0D6qHh4oEgABYBIDxBwBqDfHJCKg
+			PAUHqAFgHQJHFnqgjiMAKAPHxnNJHFHtSEWKEh5h5CTBWBLB0sMB
+			ws3pIuGEEgFIpsmgAAMAOC0gNgQnsEaiMADAEiTABgDD1h1h4jMh
+			mBpFAh/h2jIt9JNKHu4FuqXI9j2JBJJCNmeGqFLGhlQjRGribI8B
+			8AJiZB8gIETh/ACj1gCh9iIigrtuFFWpBh9hLrFAChqACxJhTBvh
+			PhuvhObRVRVxWF0JVn+HsLUIVDkgsDlCxOXgDqcgrAbr9ARgLIWx
+			fCEr7HfxWxixjRjxkRkmEpoHNJpN9jmvWw9tTiPjoj2D2pwPPpxv
+			PJ4o1iPHRk5vRB1hziWB8HOHyknJ2h0CTMop+kkFHvrEkLlk7qBq
+			0FNHLkGFww9t9GojQw+OElhO3KLKTFhGmj6KIqTKmDXt/D3j7N+s
+			WN/jQGiGSiXMKCJClqXDYicrxL0D6MXjkN/QFqRIvD+qkLdjHwZK
+			dOwDGnJyLDQmYp2C0h4B9iiqaCIobqsKPlUm8w2snAGi0qwjMhxB
+			1isB0qyh2FAD2JqDrgDAHiGMTEAK5q7j2SprBkAkIEAq/FRDdSty
+			kjzOOB8h/B8MjJNmhxOJwKIFxiZCGhPjlLNj1hQAABIDnRlS6S6u
+			ZFuCKkTnsD1gaxQBIgJB8AKH8FogGlHCGgCLeiFK3iOCMABh8Q8P
+			6iQrwqCDPpvKDD/o8B9gLDMzNDMjrADG0rdh7LfLjgAhzLwCQmdi
+			JAIiTzVB7r1AAB0ALhzEAxLIKyHvFC0g0gfgUm0BzDDB2Bui0h8h
+			7CTBwhsiqBxBtjMnbCMAog0n+APgUDjDkCDO0mYlxPuCTBmhboQB
+			2iTB0hxtVh0DoouiPAdgoHsAYgiCkoqSBw+u5h3ktgABvBnCTQQi
+			MB6h4j1hyhujUKggVgdvUIJChAIjXqalUxRmqSQFlgAT9CPBnBdw
+			3hxiTEovth0DKh8E8B7B6jKh6B5DonC0CikgZAdAJEEwwRmKCD0B
+			4sSMah3q8SwAAB3B1NTUZB+UbqClKKqCKgIgJLfKmAAAFgGCKgOg
+			QrfDRBzBvjUNDnNjmqXSSlcCnAUAaKsQhCGnJTDutTzEAjqvsoPP
+			RJoRFN9B+kji1B5J7tPUaDoh2h0DMsYAIAKi0gKAMnsHciMAcAnN
+			cAQs6xrRnE3tJE4B7h5iMB2BxCgh7JxAABpBji5hphii5p6LVAGC
+			GgEszrVQGD4gYjMho0aE7CejNABDxB9gBOnl0lHUeh3CvAHh4iig
+			BB7iGh6Byi51ZETqmCGj5HsEdjDUGvJqKFUyXDWEQ0zB9B3s4uDD
+			lDzt5DPj6rYMvt+MXj6umgBo2FWj0GpJECbh/TsNdBBBthshqhCy
+			7Vx1yVy1zVz10V011V112V213V314E4ATATAXg91tA/EJCoFKEHi
+			L1+OiKUNdGnCSuHgEB3FkWCmVi8B9iVqEAEj/mduqkGlonLAAkpi
+			qDyDMpv0hALjDAEgKnsAAoUiPgDlCgLwriIVTFwNymYw9ioCgw1n
+			qD7FUh6IYBxIWgA1SVsCUFSkigLtnALiah/AGjUARjaPhjBCxgag
+			NgAAOAJHEFulADvhuk/h4J8iqVFhfjom+CWQJiKgXAhCKgKgOWAv
+			nSRD9yPWBQKj4n+KUEApGB1hxCKziCMB5B2jKhuBpDxBqhlCZEai
+			PIVoWgXAePmTCwDAJinAEAGyNMXmkm2HNEIEQiOi3CnBhBZDxBh3
+			LG0MfkKCkkKCxHDiKgbgjCIgWgeiGgIgK0+vXUwEHLgp0iPBxBtD
+			KhYBMjxHminC/E1kKiDCKv0CGgigsnqDAnejGoLjlkhEoB9nMlKB
+			vQdrPhHvhB4QASdKkuNqXiPXUCIgQgUiE3sqTQhW2yDKfMXAAP9D
+			KhrhkCqP9DqmVqXKTmTCnAVgeHZgIHx1rj+KkD3oJzzEpiTBnhii
+			ajNp7seoujjUgkaiGgKANC0gMAOixADJij3lRgBjKh3h5jfBrhui
+			a2KtpmaRFSlFKjPFLE4rGiSlHFKiTmVpNqPCFLGFZJqGtEQ4Th7g
+			LPhRGjxVtsSrdWSCxWZWNRLh9gUh1hLh1BsV44j4kGDLUTWCxJZC
+			PASFWgnjkpiuXAEACiGguAePHgSALoWgOgIjDAFgDvV4k4y4zYz4
+			0F6rnN9xnvY0/jrGOkmxqt8iSjmtjRtJyoPOn0OY8B2h1RyRzJ/E
+			gDdwRPQp8nSJwVBx4kinOYQEiFoD2JGUVVsZKGpluqLML38Nw5NR
+			/qTq4ZPKOj6NdNeieUg0uKglcDQm2FbSJUEt5MjKgrrFUuzUuNJM
+			1HIjkUuHbHdqNYSqgw1ZX3cJKKijGtJyINeG0B/i027Ciw2ybAJi
+			EsYIuigjYnvgHCks3DUBynUiqoEAASivByuEbL0NpFnK5iWSuVtS
+			p0KkkyuERZIGrlRrWufgAkkWzjrC8WeFwNfk4DxCKhXS2rWhIgAB
+			H0Z406D6EF3LzAAJZAZNygChHALh4gNAWw3ADzWYViICJB+qNYUo
+			dyyTLOEP6moCSgCGwRAlMaTRBmZJNB6FaiOoNlmJsJv56jnAJlAi
+			GN5KSgFtAgAAigW2lh/B5HsN2igvsiTFBjMhztCwDAJCKgsA5iig
+			RAWCkkHiKnuiWIKHyjpiMEBDdhzinBpBfjK1EkDkIq/NJCMX5C0g
+			WAeC0nu5+Y6kmh7kQlYz5CPBrhhkRkT3NCWB2DejVinAVAci0gSA
+			YixE2KQAEQXgENom2FvMdCnBjBYCWB0hwH3E8B4UXUNJzh8j1h1B
+			0DxDFiMIrC0ggAnJeAGAHKSvXjlSrjnB1n2bY0nAAByBvDM1EtwE
+			itPM5NfKhGnCKgIAJP2AXjDACyHhzBvDUUlDUavXxqdE4Ev3r5IB
+			6h5jKqEQ2KclkRMKcqaDAMZSIE6JztPJrB3h1jo01rdrcLyAPCxA
+			NAQDDHwCMAMAPCG3EiKpwB5z9j2UwvXlJAJgOCMB9nOBzhviWTiN
+			BhvjfBzhwxqlKb6YGb2j436i1ANvhBjByzaB7q+Mah+jUaObdI86
+			OCjC0FU4XAGB30rB5iEgAmci1B6ETjSa+DPkNqsD3qtUg1fFLm2G
+			dKS3HJIh+4/ibbdJvlJZZVn1nqNiKD7mrlh7dLKGp6F4TGmlhhxl
+			bACBvhshrBogi6E8vcv8wcw8xcx8ycy8zcz80JjgSgSgWgxjlArj
+			lAfjVLYDVV+CdEB1/j6LYVmt+WcOHgDhsligEB4KWN8h9CBrDgHh
+			+xKAJD/7FlHCtC8VXh6jMjyDokAAGZoUhAJWQHvPCDUB0gMBzq6O
+			njPmhDm64lITGh/CggGh+pAmeACB4ExhuVXSxJopyJHAHtNgUC5g
+			BvpAAAegW0TgRgRCggTQzChYrFv0LJwDcinbIgABhBVjKh0Bvpzh
+			9HAh1jMqiwXq2QwgOHqCDKtDRZdqdDXpcCjIdMgSdCMHbCeDIv7T
+			wjfTiCWEnCWb9D1h5B3M4lJMYDWw0yWDsCggUgbI3mSVJGPCPGMi
+			nBrhmC5hsBmN3vRNJCgnukOSHn7inAKAOiTAXAdHsVe5PjkrADmP
+			bzim/BkDfBtBn0PB4jOs6SH7VCgviCKggApnsAHAJTG6dqsVrEhc
+			BZJDmhxhtjfBcBREToEFH19yz3sIngAAVAZqsMhZPD320qgneKhC
+			KoEDKhvBpi5oEFElKC3br1kFnrJZIC8synEDYXTgLnsOHkelW7zd
+			7byOnh8B9mwUn90gLAMe4AEEvEPKi97KECPkBDnMuk3ttiOCTiOi
+			HJvu9B/AHe9PPAEcY/LZ5xFlKo9ipiigFB8pA9FiLDPcRlrMagJI
+			zB6gJFApBj17G+4G3iHLdFmAABAgBh8gCBJhxRSmz80/fYkg3ryK
+			4BNjlWliPAXDlYyOVgE71g3AigUAAAUgNI/dl4rv6ff/sfs/tJkw
+			95LLnOKOBk3oexqFdFIv+J/Mon349CPajiPvRB3BztNsfjyFGE8U
+			2q8PRUvx6m0HQiAAB+vt/gB8PQAAB/v6EwOCv+Cwp9AGFRF/QyEx
+			mCxSIxmKQmPyGMyCExGKSKSAAAyuRwkBRSXx6YAIBACaTOEgQCzU
+			BzEBAOTzUAAUES4CS4By6PzqGT+cgWQUICgmEgOjgADgqCzSEgUD
+			RSrQkGg6eVcAgOt0IEAym0KrRuhAcETCrgMDTV7PwDAByPYJVWjg
+			kF1CzxykgCexQDAeoPl+PoAO16O8ANxzuAAN90OKFAGCwyGQ+W6C
+			FaWVS3Sw/PajWa3XSOP6/ZajIQVsRlwxkzgBIABz7PgcHhcPicXj
+			cfkcnlcvmc3nc/odHpcI4gANgl8AkrhV5howgN+gMWAB/TB90cAv
+			6hbEA0KRv+Tv6OyUBQ+hALyw2Nv2LST+pUjp9pqAJ+pKfiInuh8D
+			pKhJ+H7AqbIyCCqggigNAmqgBH0o4DgAvZ+HxAp2HSe4AHYc57AA
+			B4KqSLo8wmEoYw62CQpYdZxIKZpdIYeR2oYe56QKbpqHmlS0AAGg
+			jKKGYiKowSagQBaKSik6WNafB6oSbpnIoeR2ISeZ3n4zJpnwAB9H
+			whgIAoo4TBmooFgemoJA1NQMrAAiyoYAYCo3KzWHidiGFwTsSnEa
+			8xwehJ7RCgUFgaCaKBGGCKHKbp9gABwIr2GAdL+wSjywhJ7xSAB8
+			wSAB4HTMZ2nRTE0QKd52zHU8xqsik1zAeM9qAmwCsUu4AAWBqkhI
+			FIFMQq5yG3Mxym4yB9n2tqPT8jiFpUlh+ovUx62gfiGAMAykgUB6
+			oJ6mqvIoBYHQ6AbDn0fKGH2fSGH7BZ4nayB3nYfKhgOpIMhAqgOB
+			IBisAOmrBLBYJ9zSAEwwLNDQvk8lrocgVt0tFJ93iAF5oLjiGALh
+			AABMGIFgAE4Y4MBcKgAeQIncABpncdQAG8dUim6dciuGBB7KoCx1
+			AwAACHwq55QGeCavKhh6gyeQAHsDMin6AkCn48Gi6OlLTpamGiqd
+			sACnlDoGG0v4BHwpLHsgfloo0oavH+AqvPUmqINE1zQtM2GvbijE
+			zm4bZrAa6fD8RxPFcXxnG8dx/IcjyXJ8pyvLcvzHM81zfOc7z3P9
+			B0PRdH0nS9N0/UdTygRhGFZmoyGSVwIm7+IhUx8n0Ado9ykdwgQf
+			e6gQfiWHnuoBlQCAIAYVADrkeR7HseB9GwCJuA8fwIH2Nr1H+DJ/
+			PAGSMgJAiMn6mB+JqBZ3cMBR45QAR+KOfoIzGfwHfqA0CnmBuonm
+			BzUXvuBNYRE+pNQDj/KKeApIBB8l7AgOcCJiDzkJHeVdnp5CSgMT
+			GPwD6/QCFUSQCkB4AARAiL2BkCxezGFJPabEhLLSXExSsOgb6BRq
+			DDQLDRAq0SGDjG4Qgew9ExrhJqBoEDKFhlHJuAABgESjleQGXEuZ
+			NiYk6IoBEDBSWRmoHsPMz6Y1TD3IYMoXY7QAL7UwY8jsLkPAIJqB
+			cDpRYjLIWwAAe6JWpD2IY28go8h3JmHWOZEq2yVFcPaUJ2xNlMSK
+			Ja3VcxYSaJQAUUI9RJSCx3IKPkexnyMD6XgmdjhFSCrhIoBUCZe5
+			SAAAqBxDoFAMlFkix5egAB3DoX6vZerwwAD8fiQqARCR/IQJHLhF
+			SbDEK9T4lABBSVbqOYiPeNK32pDzViq5qUQkPAFKOfBvEiSMoOl+
+			TogqdCoFZTwRQBgDyqFeKSvAgo4Rtr9TQZ8ghBpZyEAIyQDYHyig
+			IAVAsq55X9D4RKPhBzLx5xgPcRgAMukzlCAIQUfoCjQAPfqAMhg8
+			QGGUHiAoeB5D8GuPwTUCA9AKAApKBUmx4SVPopaRRpsZwIM2HiA6
+			MzVlMALH24YBNE2itWN8JwckbHVVFqNUepFSTjEUDYAADJQwACmI
+			y0QgoJDTmHqUcMmIAAFLiAAG8I4KgAAqA2hMBABZmVbqzWutlba3
+			VvrhXGuR83bSJIWQ8+ZCV516X6eRii12pD1XkPogqWCCy8VHYJjw
+			+SCjtHOrRVFBCGD5HwQUdw5od2EsDPRUY9KJSLHzZ6vxDR9kfIiP
+			2xhFZgEdPgS2vLfiSOya/C6NiViTlKkKUo9khSZkwV6AR8cVCkJV
+			ISAaOgAi6nrKWAgrZhwCGHJ6V1lBNirgJuPc4vaySxJyJtc6iNuQ
+			AT+uaVVPtwkPAJJwYgr7Uh+IdHGPSCN2gDALL2e0jJh4WlDq8Psg
+			aqR6pFG0OYbwABtjlwGaI+GCLXGpb6R4kpq2/nTqIcqMAADOEJNy
+			ZAMIABqgAHKAAYEu65YjxJiXExww2yqmYD0B5fg0EPCETAAICh8g
+			MJ+P6JUEwCD0KLQ0lEwCFUhHuAtFI+AGJZH/SEBQ9bpu2fgYofBe
+			34QsI8P09yBiIsOrsaUiamABj5QHjYxDhgAASAahmliyCoGPIYPB
+			fJkR1IlAcpEAAUA0OGBECtGZrAEgMIoOkcJBRli1R4O2wo9UxjhG
+			41EnRCQeBQZRo9ZGfZuyWteacA96GpDyIKNEXpNR2jlIKPUeKYxx
+			jbIQw0hgFwQF7B8FGEakH0gRIYAoCCYyfrWWqcCxyBRUCKo+NwaC
+			mCVwEJQCIFhUAohsAcAACIFikr2K7esf0uhzjeKTDQpOpCGDmHAm
+			aH0g0FgLAYuYq4GAQk1BeEEpIGAQE1Hcqu7txGi3BAUAvaMuhsjL
+			TGNoZZDJ5y7oPmxot2Y4FFHyY4xF5QFgSQKXIhkhwAAJATfghI+U
+			sgAHUOEikoQAX/QLJpiK0gAD0HkmMeo8lMT5JqCAE9PAGRPJ2Vgo
+			t3SGoLVPF8ktf4MbSl3LMco30U8EmDJwgulAAAfBMsgEYLlkAKAc
+			RQe4D0ijhHsZQbI52ojaHQPG1R5AC8RI+ALKxWB8FFAuOip8DCoD
+			+i8QpnsAePgfaiPYEDVWrqmACv2mOETUHpJqV8qBnbwjvKoBIaYG
+			jED3KOxyeQ+K+mlMWAYf64QDvm52U0iD3z3kC7+SA+HESNUSW0AE
+			cA4BtZXxP6v1nrfXev9h7H2Xs/ae19t7f3Hufde7xMCUEoLRtEgA
+			rsVMxKkEu2WiPt4Rj+antbqwi4C/3iPGFEBMCYEBRgPAeBEeI4QH
+			DZH8NYCg1gU5WH6JNCIFB/n8L+SBPpUKIlHAG1mrg332DlYMANrg
+			Auokq2aPIAMIYHeAmjMHiAeo+vakWOEM8JgySQ8L0AAAmHkpUaua
+			QJ4G+MOHyJQAESku6IKAmAiQ6A8BKWQAMjcJsJCbEI+KIfSAaXQA
+			OIoH0VQHiHeQKHw7eHkHeMgHEG0IRBy5W5mAwA6Ko3uPQMOus/ku
+			C2qIKegTGn8QGI+Ks4iPqwiACLMr4IKHMG+RKVOlyP+ncvCkmAAA
+			sA4jkBEWQYo5KHkoyTETOY6HmHgUwj8UwbyWwPujYIhDoY8JaXCn
+			KASykT+I454ISXgsGIeYodwX6Y4NqNKTynQASKOuASmAUKOA2BA/
+			yTyTOUaHGG0RSQelHBOAsA8WQmaNMW0ryZCZeHYMgXsIKeaJqAcA
+			olQZIVITGHeHWRSVIUw6KY8jEr8IKAQASKgAiAq0nD+l2W0l2nqQ
+			eIYUgIoCGC4KKA2BKKgsBBk7al1DgQKF6FURS16W4IYHwnuIwAYA
+			gKSCGCoYMAmA0KOn8IoHYHwaiFuGoHGAAHiHsMgHYHo+KIiAGQ2i
+			YHkcMAaHYQmtuH+u+KGj2AMUwHiAgo/AGZk7kNapGRUHqpOAgHmp
+			O7IKSAEzAJUHwaYPSYeAgMoHqAc68xwQKeEKogOgSPCH8HIFAHAq
+			w95JrJtJuNeIoE+KwAA+CA8VMAAF8NKL+6O78xINiAWrOAAAaAUK
+			gDcCIBOAABQAyhGjqwnJxKxKzK1K3K4cOrorw53LAJabeQaMhF+t
+			GjsHmXkkWegsOnqHusUk8IKVUmekuj0VMsqRMHIsysLF858Hs68I
+			EtAtE/WQal1DqH+s0mCI0I4JYkTIMa8x+8Ib8JQvswdMiJYvytkt
+			sPWJiXcMAKqV6LOKiIS0yt8KqPuKEAMhAKcV8vG5oTwISAUz85sQ
+			8uzM+iYAiLAqwMPNa3vNeAEvKK4X9NijaIoHqH2L2HEHmgiysmZK
+			U4kjrOGKsbwNKQKQKGmG+NuGmHCGuIFMKP4l+86JMNlKvMub7PNJ
+			yOcjXD2IKw+ISC4Q8AANyGUAAHQxAxFK7P1P2xIEAaKINKXKADWp
+			GDXACAOAaAaH0AevoH6Q6AIHqQ6AOHM2aQ0m2pCMQXqAITGHgAqH
+			WVSAmZtJSJaPwgWH0KgAuHKqeAQHqWQSsboLgQYI2wYr1IXJGSK9
+			Cq4HeZQAMH0n6bokUfSAEuyQgh5LQJoIK1sQKK8JAuckMV6AuA4K
+			gHMG1HC4yTCX6HmHkMgLCAABaB4WQBcB4ZQAIvWH6s0XmNCtaJIA
+			yBGJqVEAAGyGQzaZsjsHoUw0ARS2LAiAyKgB4CegizmKSAaAoQKA
+			YAo1wV6NbE+4+HglygoHSQKFgEuaiHAGq5WRmAcAlI4KuBABSKgC
+			aDOcNGIKOIuryMeISHGGuJqHGGwKSTCIYM2TMHIG4TNDqAoAwhVD
+			EA0BGIoSYKOA0BI9UOHC6AAGsGKITWMkuHqsOH05CoM5oJqA8BSK
+			KAaicWSIYBGBkIZFiryT+IyRujGFuIYHoHdLmHcMgS9FYYoHxLys
+			kkK6OMGWSJOIsYpVLNtBaKgigksWwM+QgiCUxLgUSQXPQhiILCkK
+			GuY3mq4AfNuIoMkRKHSHeRK82NO46AwMgQGaKl6Aaf2pXN6NUmAS
+			OaeaiHoAw68PCYiQ0PJJFAYJtActuymvC7OJU7KAMHmQ6AaG5I0H
+			ybZKAIINqNWAEvQasuQHc/0nYH2owydZCW0H4hAH+hZXmWvMcds6
+			KAE9OG1PTP5a3a5a7a9a/bBbDbFbHbJbLbNbOdGBuBuB+FOWil4J
+			YG2JWH4GqIvCsdkA6JcBGIufnXYH2BIWiH6BSJYfiueHEbqAIG6J
+			oAIGIfmH2HMHYBOHGAWHiAOHiEEQEH2AeWkH2KoKXIOKHR+7IJqA
+			YHQhGAUHW/yHgMPBgJURmxxXGf+5KAUIQH6AKTGm8gxMeRq2ieEK
+			GH4KgAkHsgiAIgmACHuJqAEHCPQtKNRNEIyAUAaKOA4BEZQLlDui
+			oPWuKvWTii1dYIGsmHwIobeoyzeHCGyIQHjXObkjeA4Sc3xBQIo0
+			yLK46s0XwX7WJXtBybc5JBNdHYY3rCgphPEkSH8nqPkSm4rDGA4L
+			2A0BEKLLkAAHSHKX6HKHEWglmY+Y9LyQYujXkioVwAqKgAelO4EQ
+			LWqKSAeAkiUrUJAI+j4MyGwSKHEG4yKLzDCKgAQmWlkTGAXfeAWn
+			+jaJqAau4BOBrQiAU46nqHs5Ol8LTBe7aPyWXDkHVL46+4IJGSoA
+			A1Y/gV/E0VYziUcIYHYHMNqP5LOueKgMWKKuem2NMIiNEAeAoJqC
+			UDOKoA+BUKhFaIMHmfkImZeHcIYF0FOIQh9DoPzSzOuQXFiKSCiD
+			I2aAuA8XGAiJqHIMmAAE6GGNuHkHyUwHcHoX6kSAKHxhEHcgiAkH
+			TI0QEJVeYl246AUUwHgAsZkHcA3Q9depEkqxaAmRUHtl2AFaSJUH
+			ehYHcKuIyexF3c0JyKaQiPwtMACDkG4FaGsEfbRmrmscbP8JqRKc
+			MTMA+QjKEIohGIYPQ9YSsAiq6RVnQDQCHKiBOAw//mvnjnlnnnoc
+			QrrXpX2bjLI5+tWk4VHLUY8kWVJLdCYsUjUjPUgjCsLLu4CHWHLi
+			qk1Uc4+aiUdEI04PIQhbePIs1UWgwIqRq6+a63otitga6t0twtsR
+			qSrMqJ8PWKuufNCJOLMikKRNAvNBNN2Kq8pNrGDOKLXpzNtpsnSK
+			MuGvMASzJOmvLMsZGnOQ8Rm0ROUHoQmPKm2XCjqt4vAXdey9AZmH
+			BO8GmHANuv4TGWkwqNQwTpNPKcTa0OXCyIyDI88NyX6G2AAE1D3n
+			rrxryNmIpP8KgaiDQNKDQALQaAqAaH5FjsGL3QeQ6AUHKbSd5ZcI
+			U/mPI7yHiAlALsvsomEoka0ALRMAAAwHGA2q4HmumPcgOKqweNUQ
+			LTUH2APXQAkajRwAUHcYMAUHeYMAI84d0YSqgbA1zqu2qIYHcHaT
+			MYaQKtkLlJpqwAOWCNMTQVpk5g9BGZQA6BNc6K4oJBssUruJBmLE
+			EoyHUMgSwaxWa5KHaX6LfAiA0Q6B4CkL+TXGGA0QKAhvmaLi6NaH
+			nkAAAGCFURKHOG/rJLyHGG85QV2ABWAKOCKC0ZQzmJrNmIpFEJrT
+			JfFI8MeJql4IYGqGMUwGoGMTGHu7eHgHWg2s0KyISBgB+KLHWIpU
+			yJqA2BPxaAlWEfLjNktUZoWwwGqIKHFx3owKQILTIlGhAA4BKL2Z
+			a8CRmA0BLW2pOlFoxBjLyHcHOIYGKFbIYR84+1Ly0UxjMYqyALaI
+			oQeJPecQav4IVjNf62cAmgTCUQhTMNAYpYCjs0RowT8twr9XGHmR
+			LGYwcXDFILCQeawsR0Few3qKvp2JIPdM0AeJPKrQaTGHoAcIRqlZ
+			Oa0QEMgpigKq4p8owieHoL2AYHGL+d0hZj9Hs9UH8ApF2Amfrt0V
+			MATHwHyAOHyGkgYAIHWA4G0BCHWfgKmIvcyHmHoHoBkQeH5ycKDP
+			Yb1y8IUBm9OG2Gdr12l2n2p2r2t2v2x2z212324OiBwB0CEE8AMu
+			eHUeaASFnh6ASHR2Ns8XoBAl4H2Bc4SHyAsHl3sBijuHyBwJKuAu
+			AHouAAGHkdkW6AoHuG6HoBAHgHiHqAQHoCoHuAGHsARZ5A0NE/ia
+			LdC7KAYHghGAYHk/yHym2HiIeZ6H+kW7kPUb4XrGSIul+iWuAvqt
+			NXq4TRGvsMYQ6bBpKjreszKAqgTvxRcJRwy4mWJyetVzHyeSAQKZ
+			qX7LgQLpwUyAchVBPElKWAlXzucNKT42IkpGSehvKIwtaIWKv7EP
+			ySBTSmBDT7EIiMEKSBMBkKpWqfkjAHUlsN9gsTOlniWokQXDrMWw
+			fg+zKAtGGAsQ6XS2cAqKO2eKhOCJySOIXBiY6GoGWMoG0Gi685MT
+			GAcAgKKAYAcKoMWJq+0KSAcAeKS6QBOBsiKBMITqGNH7Dje8w4wK
+			SsMMiHMTGGGFcRTXIQKTiKgAwA+L3X0AgaJKkByIoz7nz6GPedtI
+			MdsHIG0TGGKFcTMHSHAIYSiKSAkAyL2n83a3SAABcCCJqAyBEKTD
+			qXtEE46tSGgGCQKHhioINWWw4GSTNFvUKu4B8CgQm2eIAAwA+wK+
+			wA8gU7QAomW2AA936/QA/X8/wBF4uBHyBQAEHeEQAEXUEwAA32Ag
+			A/3wAQAAXzKH4B34AHqFnlBw08ImA4k/wHFpPBgE/5QDnqEgBRqQ
+			An3AgC76c8YFKYwD39FwfEpLFqpLZZLX+ASA2le02DGLRabVa7Zb
+			bdb7hcblc7pdbtd7xeb1e75fb9f8BgbabQAB8KABhGA/AwAnZaAA
+			Zj8Fk8oAwFLBIGAcAAqDcMVRriw+FMjlNNp9RqdVq9Zrddr9hsdl
+			s9ptdbXLS/4rKX/uIxXH7M4nWuDFt1F3w9Ku+4MAHs9Ys/H3Fn09
+			qu/H1FnY64k+XvFu9V3y+Ys7nJQOzzntEn9wnu8pZwYv1Yu/ea+3
+			zLH2+Kv7Yu3beN+r7JLYsK0wGryLq+AMFwZBSWQdB4AAEqYBKGls
+			KwqlEJw2AMMpYAgCKvCyLAOBaWAGAqLAJD4AASBqLgGAiWAMA8UK
+			mA4ExAjkXAalkKIuAoDR+qYFgilABqnJKLwolgFAai0mgAAseQsj
+			IDSRDYCAMi56JiABwnmkB+H+AiBn/LjJQ8jEFgHBC0m2cxvgAbRy
+			m8g57Hmg57z0vsBze2y7ncx5JIwcIATMVoAEUAE+0DR9IUjSVJ0p
+			Sq5jgAAgKoIKqB+jgDB+AMDAQfIFgACh2AzRB+S43yqOMiamImAK
+			Zp8q5+gMmZ/AQmZ9pcAAHnWCAAAMe7DKIi5/gSnoCKBWR7AMeqd1
+			0AbxAUfDHpYBh4AeyB3M2kyBRElAIAMBFERmkIIoEAsbAAfx+ose
+			Z4n0gZ9Ik+yWHueiWOPd94oGfCLQifZ9JmfR8pnGSWA6EdTA4EoF
+			QUi55nciTmKuf6tH2fqvn8mF7oeeaDPxW59pmep3nzREhpCC6OB0
+			JikAeCczAgDSLZuiUZQlBIAHedSrlmS9pG+aSDNwe7v3ergRhbMw
+			tDzboJAslAAsuloBYyrj9oFroAHw6AAGQWx6AAY5a7MfVsWIAyOS
+			kCOqgAJg0XOD4UpRKUtwfQCMPCABqmIq5tmcq56UGicyX+lgEROA
+			AMhEjgPBPMwDgUiwJA4iXGyjLU0yk6SLvfMzkqudJxIMXJRHeg52
+			olcyBAOBCOXalgMhGjgNBMwwER0AB2HNbACRUtLgqursUpYBIFzN
+			BiWYqixwmomZ8HteR3XqeZ4XrCPGzN3u8p+loC3qlsR6xGsuaugR
+			3Hfep3HSgx+5XZMUTX51k4HUUmQUzasHxAKTMewDFpD0AanofoAl
+			8KyH8AFEayFeMSRCuwehhgHjiJIAIfJUziNiMkP4C7SALq6REc4B
+			I9B/j3AWc8pgAx0glG8CoWwBx9gJJ+PgfgDR2DtHYEM5g+wNFofw
+			Wg3w/njkYHAOAbbfVLRNidE+KEUYpRTipFWK0V4sRZLUQECAACBQ
+			OCQWDQeEQmFQuGQ2HQ+IRGJROKRWLReMRmNRuOR2PR+QSGRSOSSW
+			TSeUSmVQUbDYerUBAIBu8CAQDMIEAgCO1/v8BAR9Pp8h9+0USPx+
+			PsIvZ7PgSPl8vsTwJ/gSYgJ7gMBgJ6gEAgB4vgGvZ6vYJPJ8PgFv
+			gbPsBvsCvsBPoAP+6gABP8BgAAgqvgJ/AIAAx5g0AAt5YYBP3BP9
+			5QN53YAPyqP6qP+vz2BP5/v0AZzLXXLAMCgS8AW9wSe56gveB3at
+			3sEzm8TG65Kv1+7gACgfBA4IAYAAMCbqvbfjQJ8vfPO52PnPvy7V
+			6vgMDV8CgbBUW7Pp75Z+5wATWvgoE4ICgWvgjzgAIBcEAD2YIFhC
+			vjYk4IGBPda/xII7yBHAajTHseKvnsebLHObp8AAfB7LsfzxAOBI
+			CtEuwGAgwQbCWvYIguwTiO6fK7LSzzNNEy6BHqeS7HGa67G6Z7PH
+			qei7AJC7xgKwUcq+C4PPiDAPOEAz4gABoJrsB4JstCa7HWc7XHWc
+			0HGoZEHH0fDTH4rKBq+BYFsEBQGNlMQABcHzTBKGjfgmwSESeup+
+			q+fJ6tMfMIgAdpzsoYhXnqAB7RcAADN8AAJgu4UcsECIMIEFIer2
+			B0lL43TSIE6iGwGfYAGCVZ7AAcJq06BIGr2CoMASw4INMCwPMEFI
+			doFV84IWfrpQeekLn4uiwHYuxYEweFRGwygETOFocAcwYIL2fgD0
+			6fwPnWABVmmbYAO+yiEKBC4NHODgAAOfD4gGfM4Hm3UDrqAkJAky
+			h+Asyh/AKyx9gTTp9gOugArdQp1gVcZ1AXTLcsCvk6Uy6YFskBTQ
+			gHCQDM8fwDwnTIdm8UxrGQlePY/kGQ5FkeSZKiQ4gBVa91mgQPgA
+			zxIoHguTJWravhYDoIgAC4HviJoYXEDoJZnmmi6No+kaTpWl6Zpu
+			naejJ/vE/6Cs1XCBKLrB+rtqSBHwel707bR6rspK7Tyy1eoEdp1s
+			85bLbeAChLsdhyLsfZ9RMezPavbR5K+f1uHuejlbJl+xH7vOX4U1
+			TJUzL6Dtygj+r4grj0s3IBNy43KcygSfum4/QNrz84J/TIBq+AgB
+			ssmS7AOBiBNIuzS9Kr4EgZ1T1UKBDqtTCvdIEBQGr+1LrOq0zDge
+			wSZIE9PP9TlPYuH6KbYMgQDO10jxuEAB6WgABxHkCAAH2qsHn/7r
+			dc16/ZcogpunQcQAG9+QAHeeliHceh3o197UCDjxOGAAUJAxwmTA
+			AJ4AAkAALEgBA+CEEYJQTJCG4AAMyBwYMEEtyoTC7gBASPkBYAQM
+			DxA8eMfiOnHD+N0ZggTYgAq+J8hJfLLwFNiMkAUehpgBD8Mau4yY
+			CFOj/AKiYAhrh2gMWrD5bkLQAl2MAYICA8QJHuioXhhBqDBAfAqs
+			wBgDTBAxBucICQFjGmSH6+ZDD9x0l2GwMgzzgzLD1HmZQcI3DXD+
+			H2aEu6KSbGCA6CVVYHgTMCcqAAdw5lOlCMsloyw6x0KdQgZY+Z7g
+			JGmP6d4zw8B1KhU0kM4QEwMAHPkX56RlgCgKM8TIr4BwFF7AMApC
+			6CTLDMF2qEdg5UUEDHwPdCRkgOgmNMEoMRhkmGCK9FA4rmHyj5K+
+			Pse5gjll2GqMdUIyhdKBH2iUwYDjhHpL2A8CpXwkBklIB8FJpiet
+			chcikfzWzJx7bkqEAA2BlGeG0Msuw8h3GweSTVMYDivgyCGfEB4F
+			DBO4IEA8DBlJXJOj5Cwz87ivj0HcgVBQAB0jiU6LMTa1R5DtMopS
+			UgDwIykAW8sAAIQWnxBMDNVbuCvgOAoXRCcfCHG2ABNOREbQADFF
+			Yp0eI7TLDxOfA0daDgAvsA6CRgoGAPqrAVQIAAIwY0BRw9060/iv
+			jGGXAIaIuC7D3gE3IfJoR9G6NC4lJw+0UGSJ8xBigAV7r+p3DFhZ
+			fHouTcrXRyRfwHGmAUPJ2JgC9xPIHD5x5AgJmeAABIyxVTugKQcP
+			kBI+B+usAIO4C43wNjHAEPkAhfk6DzHiPAd4Oh9lJAubknzqWFGZ
+			alXQ0bXFRDfG0/+Clu7eW9t9b+4FwbhXDuJcW41x7kXJuVcu5lzb
+			nXPIGC8GANxoGlAGPB7ICxok1AGPJi4BB9zQBRTcBhRR+gMLSPkD
+			JQR+LiLq6xJ9N2pXxLfHqnZdx/SYL5C5qp4iemhhcepC5xZMOidP
+			X6ZhP3mFWsWbxrheTPgEMsPQCJjx7AQUCP0AplAEjskMeEvlEoio
+			XAaPsw2Ay+LcH8PFrhoQCgIMEBMCzKjrm8d2A4CzqpllBwmPFTqu
+			DppwNInA3UaTumuZerkeY7jPV0dsbxQ4DwJIXxepMCJXwdhTQuBg
+			EJqSBuumYPhQIABujOMFUYr53jLDjGydCWhn8XGoL4+wBuVwAA4C
+			dFIC5ApXZ8ATbohU/DLDXGOZ4aAwDLD3u8oJvagh5meldIAEaqwO
+			SCZTCMAAGQSGeA2CUzyOSBFILtkBB49TLDGFoqEZ4wEHDuHQ619k
+			Ty7O4MED0KLAgaBGVWBIDGXiFTrM/Y6d5AkDGCHKNisZkXvDxnwM
+			1BzeHhKnAACAFh8UKm/AoQIEYMi7LIIdq4z2hC6ZijniwAA5xv7l
+			LsBACpewRguOEA8Cxe86lfA4CjPxgmLzzL2rgr47x1GeFaJSAQ4B
+			rF0AMe0FAMovARNMOoe6gR8gdWqMwc4525Gdawa8gV4ELgXHYo8A
+			w+ZSADH0Y0dhuR9mZNSP8CFkQKJOAMvdfjcgEL95OeMdyqwDDpVW
+			AExkzDhumMkAc6bD3ZajYmT0BA/x8VLH+CgbopBrPzuh1frHWWkh
+			mAAA9lIAAvuVZcV8NRA0j3Qi0AAIIKVHgdAmwIHAJAKgAAqA3s/W
+			u8d5713vvnfSJtSl+Qdqy3GsuLxa15sD5WxIQbLGqSc8S7Du4DTv
+			JA+R8HdHxI8cy93FD61NklFjf3y+VzGd7UbiMVOMcdIeuDlvXV8k
+			O5dS3s85n9L+rbCGYHm5zfb7p4z0StufiKXhiLKZTOzOG90mKYKq
+			HZK+9kv8y8+njeTVN4r2PlPJAWA5ERqQAgGig+wBgDHmfAd3TpH3
+			xOO41HsXAAA5R6LMrOhceo/VV+rc4QqpZAh0jwWq/6HYAAHGHUHM
+			fCHWHKIc0Acgt4bOLwAAGigMQeAAgsEsAAHQ79AxAzA0ImEAMGbk
+			SQW0AADYLvBGz4iEAUAOAuHiA2PGw0v2rUTgNwW4MmOM1GiELqMA
+			M2OwHqsOokskMmAMMpB+HyAK1aAbACiYKoIMMWN+fG66HmfILyeY
+			d2AoAgVWAWeIAACOCUdiA0A4QuTkcCcAscHaHMLsGiF+LofyLsLI
+			M8HCG2VCbwPAayfYe4MEkIYEBABOkMN0HWHIU68sbgO+/eG8NcHs
+			HoM8i+L2A+BOYKAOxqRaU6bqNcKSkoUOAQe0cuvCXircOGwYPqOE
+			P2Pi1Eo0HGQcLIogOUsURSQ0MEBGBQOEeA+IPKAah4fYb6KSmlEG
+			1cU6HUHGOgtmseAulI4SNlCyBUBuQuAi3m2CrG0aneLsfyM8HKG6
+			4kl8bkS2MmtE8grMkam4AaPsAACACsYEAmAyL2eGoSAeM8N6bOT0
+			k4TqT0VMMsly2I0enqGUVCG6GoNcjk7oA0lIlFCuQ2AAnQQuBEBa
+			lIAQlMASAgU6UMM2v9B8amscl6RM8+Hep8GQFiU6yW0SHqU6QSU6
+			yGAAkCPiA4BIYEQqL2BMBqoWAqyIdoAQdaNSGmGeNcGMFWMsHUki
+			e8HtCEQcM2awH0YorONuQk2GQmYoPEtWiGPEmSNqsOOO2AcaNgOI
+			xsVWc0mQOOK0+8UyAaig68ecbKAOb4ASMoroAELUHWAWHIACHwJk
+			XOAEHnLoHmBAKKH4+4JihSAMAGnoLya4AGKKH9JmM4LycCGeHAG+
+			G4BpA3MdMfMhMjMlMnMpMrMtMvMxMzM1M2uEBUBUBkG2K0ACHuJq
+			AOG+KubINgvCHyA9K6MAnesuHwH2BCSeASnWYia6puomPAKSMmH6
+			Ogtk6GOofea2b440IIOINMdXKkL+gGdTOY+SL2wUc+N0R0++M2Xs
+			fu5AgaAkHcMmWiPGfPOUOGH8L2AKH0OEAoHW2yYaOE5MTqHEbTKI
+			UKASNMAuA5CuAeNMUcK+B4CoxJHCIIRa9WIMf+KEQQHgNNQOT2kU
+			AAG4GeQdDKkXKMHqHiX6sQA6BOlIByCWWYA9Q0r0IEASAcMo1BGa
+			UE9FN6MmV8HaHIMEHEGvE4IFD8bcHu+elIAAA0BKIEAQem+220Bi
+			L2pS46d2IRQqMtRgRkGgM8Ho3MHYT6ABF8M8OIK+USQuAqA2OEAS
+			0wBGBgK+BKBmqzAW+WbGMsGUFyNcGUFvH68Sze3Id4MEBwCUVWBu
+			CUYEAkAuL3RMJsc3AVGhG0MEHgHONMHu2VF4AAGGFgMfUKkoTLJK
+			BKdiSMxiA2K+BeCGMs+sIrH8G+GoU6F+FScJU4U7HANMA0BAdjVI
+			AAAsA+MEBWB6IEAvVYIKTka6kQHQMoFGEOgEG4GiLoxeMEBABKWY
+			eGQuHeKaZeAYLoHaHuNcH/BmHUheLexCPXMIv2eYha+CU0J8Uy6M
+			LrJmc+axByMC6VSmHqQuAEHsOEieOS96MkeSwcc+weM4ACL2EkPG
+			AADqG2FQGmbFM5X9X+aeDSAAZ0PiDW7EM+AAC6crRwugAMwYCQBd
+			BYA8AmYKBiA+iqAmAZYZYBY5Y7Y9Y+uG8Aom8E1G8IscO4RUV0bS
+			8WT0bMW0HtZWIEk4M9IsQe8vGwke1emaO6ozRVSamk2UH3KCS0aw
+			hwwAhXCUfeOmkOcicsc4/ycup0ce/2rydGdO9paoK0ig9+d8dk+G
+			p1R7a8dkq0NTEUN4e6SMd8+eVWOGR0AYqo92OsdkejSG/VE8+uek
+			eK+ed2cueOe3T4W0hS/eHm/lBcjq/vAU6E9gHaHmf6HYyWAAG+ft
+			ck6sIxcSagbugGG7AiHmAA64G0ABAKGAgRZBdLdMJSEyN4AAMeOE
+			HJBEIHBGpnLKAOUoHs7mwkkwH5dzOg9WooPGXQxCTgW4K4NTX6+K
+			M5QIH8YmfKAeQchmYSN0iascAGHwQuAGHuQvXoIGMM66AtS1e4Ce
+			CediA5NbUA0cL3aEK+HYHMM8GoGGU6job4nhSaU7e07pBYe8HgLo
+			/SSAVWSAPiyMAAHIGxI6HgbKH0zWG8VCUGM8WQL2A0A+PiPJROpD
+			GAngATbYAOAOck8aNZgQmYlS5LKuH4ngHeHWLo8tKWzTFWYc/IAA
+			A4BAyoUPUkUKUO9nDFRWIEKDGiHcU6HeHZJGNsAlIA+Mlgz+AAA8
+			BKQuPqMFZcQSMobiRaMoGyGdc6m226AWQueHY2LAHaqEHcpGAkME
+			CgDUdiAyBANNgcPGYsLweSHkHWLsG4Gdh1Gu4AOgG0GjUW/qM+bE
+			cCmUMEBCBWYKBCBUYEAYAiMEBEBg1mAcdoxrXo/CzS6ep3B4rMK+
+			HgHSM8GkGOUCHqHhZoT0HKGzKCMk0qPjJMAAqmMEAkAyK+AqA6R7
+			RxKuekYM+i/CIEGqGcNcFyE2OgHaHTigVzTIIIMCsjXFZgMnWkLk
+			ptYRKaNuMsieMEAOfAs0TmQlg+M6ihe0OzKy/2KuUsmQyIYaL5nH
+			PCM+6aZeAQyaMYH0AOHcAMHahic0H+bIHwKgHyArLwAWK0h6RyAK
+			K7nm8BMEPCASSeMBWcACHCG+G2VtdPodofohojolonoporotovox
+			Y+BABABQOhCULqV9YQUyKQw0nWc0OOPTEeJidScvN1KVN22CU7hJ
+			fqNSAIAeyokuZfeWHqAVc6HmMQPGHXesACh4gGeYPkssPkH0PjLS
+			LxW26BobKPqkMOLsHeAzACHiAsf6WhJGgHPGwQAWHuYKsoYEBIAi
+			69LLUIG+1Ho8p4AcAiOFjURAK+BwChFCfIeoPWlMcuqWeKdCTrRs
+			AAHmHaQub6bqMoGoGKlwHKMocGMoHcHWNczEM80qOEB2CaZ00qlI
+			zqoTRIN47uIU2gLAHQQuTsQQ2UGeF8OgqHPlKWIMUoK+CEC2L2Ap
+			UoXGAVqjKqcOawVyHUbsAAGqGIU6GcF5sa8/pfN0oOMEBeB8YEBq
+			COYETIRFCDs+pwfuHUqKHVDY8SGi1YAA1WQcKSK+AoA1lWAoL3Fa
+			AABYB4lJTAxJjEIS1IH0HsMEHYHEQK3NDKLpUTO8zeSML3iHJUxg
+			0yBENMBOBwME2844NucsTgUZaYHCGwLoFmE0WIpDUxFrVUA2YFCx
+			SuA6IEBOBuMFlfcuIEG8GqOgGCFcNdU4OhJJhgMMWQNMHQHmjzmm
+			MnOOW4H+WBh0IGYgwZAc95REmQmXW2edmNAXaXyDaYeiL09s42wa
+			j7Dq9sOmPAAMH2AMDmGqFoGWZjozy/zA7KUeVXy9IKZeABMaOq6w
+			AQzkC8B4BGAABKAwMMA2AjujYdzBzzz1z3YBZEaocacWa0a08O1K
+			bSW4Ts9PDZmRtEqNRqyORI81Pkn2n6V08QTqRufKrSZeV88LOOJ7
+			aU/xadaa6E/ychapDqgGNqyC/WR6mX1PwcR0RyRwR1bkR3bmduAe
+			Ng/A+odUejrfhkPWd6+oeckNSoZTLBbtlm92VMdKed1cTgAP2Ep1
+			avb6ejfsdWIEHvcEHOHqdj20QuHaLVZGITaoIQKjhQ2gGkG8GvAe
+			G+Gs72ccK+sdgEUKAAC1BAgPAhAuFXzPz539oeDfC1AcCOr8ByxG
+			BwAkHuAnPCh4H0h4/dg4sRqcawdUHteysV37NGN1X6cdkmIKe6Pc
+			scVsV8X8rUKpo8fKIGeSH8AyUykMAMAYLsCqCmYKBFwKLwHyOEHi
+			HUOEUGME8kMoGiGIOgQhSmfYTIL3wUBKBkIEBKBiQlemmWj+b8Ls
+			GeF0IEbqbu8yfCG+VDQqMolYXGxq9nreNNkDqYwgSALsAqA8NghU
+			2Ea7DWAAGOFqU63A8pDYHnpkVyNV1SIH7KAABMBc54AQWecQYVj8
+			QfmQl6bTQpERfzfqOPHMYEUMPo+4Z2A6NM+2L22AkZG5sm/eG6Nc
+			bme5OVL7o/hMLoqMU7kOnIC8WY0reywgQqOmeSHoHaIEG6GgbOyR
+			hMOgGsGSMeQgU7gmoBjWL2BCBYYEBFkKeUkABWM8eHbE9oQBLhfy
+			mRXuo2MoGKFkMefyjmHkLpULJG+CBYByMMBcB0MMpSpmAsMsAiA0
+			MtRNZRakS+9kIEG2GeOgFQESIA8QA7nS/QAAQIAQABQaBAA/4VDw
+			S/wAAAS/gA/gJGHoC3kAHqDXoAH6AoM+wBKIxBgI/AKAAs7QtFnw
+			CgA/HrBnw4n1GX5GAGAgGAAIBQOAAEAQFSKFTKW/4pJJTUpRUaQB
+			ojWQCAYo+gC/gE/7C/5++36/38Boq/qCApMBrg9q3XKg/wG+30/I
+			nUIjBoe/TS4XC4EzFcNh8RicVi8Zjcdj8hkclk8plctl8xmc1m85
+			nc9n9BodFo9JpdNp9RqdVq9Zrddr9hsdls9ptdtt9xud1u95vd9s
+			hCIBQ+qs/n8/aHin6/eNFb5WwBcATSqb0Ju/H3Y4hUIw/H6/ADy5
+			QAQLCgMFIcBgtan6CH4AHiDXgAHeEXbD7CAAG/4cBP4pCwAABp2A
+			eAAGHkBykH4pYAnuiJ7qWjKKn6fCVnwgy2IweQSHcAB6A8gR+AUl
+			DDq4iLDLCpYEKaJAVg6AAMgUBoAAW+KHwg+h2PeZpfIEe56IwA7p
+			gAEQXJsBIHKWBoIqGFocpsBAGKWAwDooBIHveAiHIys6SOyjJ/Io
+			eR1oqZxdPee56zEdqUHEbh6gAec2AABwJpeDoTpeBwKJeBgHqWC4
+			PKOBc/qIl4AAwESKgHQ5+xIeh2ocfR8IUep4ooZBansAB0nCvzDL
+			miroUIioeiooYJgy8ybUMpahIU6ytqsip5PuABqGI95mFynp7Hmj
+			B8nvNB7PfOqlhgH4EgAHAkgWAEZKWAYDowAwEIwg6KLQhS0Iqe01
+			AAYpYnvcFxAAfFvgLLYCqwiwFqWHQoAQAAZCIo4JAw5LlRIdpyKW
+			eJ1KXSyMHcc6emIVr7noeT30YoYFgjeSiqWoylggC+I3Y5wAAPaz
+			DIpdaFAWByhgEhKBnSnppGKgVzoxiUaAYo6lIUpr9AQigJAyp8up
+			+jB/r8vCKnweal6Cpz9ZNmb4HunsaIM5GfK+ACvHwqSDK/FR8qOA
+			S2KQg6K3ZUOvofMKKwisCugSnq2IMsTnKTUVYbcAh9ocu6Xq+rVF
+			qsqKFH4A72hyahZmSZjf8PxHE8VxfGEBrz7g0hYAE4wwPwkE2vwj
+			xjNusBICqGMogcwEwMwSCeYgABHP831nW9d1/Ydj2XZ9oxNZ49sq
+			69tCa/OX3iKObcx6u7Eh82+fx9ooe57IwfcSHgdiDWCrp7q6fKMH
+			KbqMHmdyKHseXqIUfVxpSfKFeR3jnWvbiH9vUFRMUrLEVhE9QRPW
+			OzQipVRPz/aFgHIUlpmhyX/KMIqUUiq64DrsAKocAZ+yLAQUWWoh
+			Z5T9ADIUA4CJ6YAMbAQQoAaWwDLKKIltGSojkwhbMckBIDIBqLf0
+			hGEbNEIwPbiouDBByIslaES4AA6h7LOWIS+IADCMvufgUoqz9Sbn
+			fiae8aI3hrAAGiN+KZxiVvBdqZwc7Xw0GGHCnQAA1wAOOabFuNEa
+			Y1RrNcG8AANzDRwIqEhVwSQCj+JeApETqR6RGAQR1r0NSowQY0cZ
+			E5UZEE/Y0hIlZUgCjxZk3AAqKznERUoQd80ix/okJuYZLY/gKkRX
+			kQtjoQwlFHA4BsoYDwBxGHmOwhyPyhjvHWe8aoyWqj4HsRQBS7nU
+			pDSiQoE4MyKgnBoQpdZFIlJgW6QIAAzRbEVHYOIrpxAADlHApseo
+			8z3qvOjJRiiAgIFDBMDKIwCQFFLA2CggwHATsuYyYod5BQACuEiS
+			Mbw02mlQAAPlC6YJlHQOs/ACIFiXgwB4BFjYCSljyHeQZgT5UxDv
+			JQpY9530xDwJ6dha5hoGt2KCRYhoAAKgZLUjI/q7IWskbg7o45ax
+			/EKTSe8eyQHykYHiO8fKOSeslIoBQDRQwEKsKKQoCYGF5JCaLTtO
+			I7mnnvABTU945hwqbH5NZBkF1YMmAkBUl4EQKnpSGBIDbEyJ1aIW
+			0kiNVyFK+LWP0hSUSljUGMnB77PpFKOWpJQFgOVnArr8s8BxCgGA
+			RIoA0ChfjoNDhAAUihyyKVXsel0cQ1iUCyEwR8eI7CMHkgPOMm5X
+			CMgKQwAlDAAyMD1AcPOqIDU4ElJOAJtbUgCD6JeBgdbkQEj2JsP0
+			ehBh7jeJ7JsjBbihrpLUVtV0NmaGIH5VclI+6dz8guUNsT9omSFf
+			YQ8pBQS0lGUorI8QBTlj9scXyRZDxnDiHCN+YkbL4XxvlfO+l9b7
+			X3vxfm/V+7+X9v9f/AGAXNgqBUDEb5jy5nIKCOwfA+B8oFa+umBt
+			yj8l2OwPwBdsCJnGtrg689MToqiAuzRyLZlaALPmPEBw7yMtSKG3
+			YuxBySrPt4s+QDXFoj2IcALHR+h8FDH9LsjLwyM2oQ8B8+Y9QNEj
+			L0iRfJ+Wx0+ItB8AAaAggoAABoAQEyUjxJePm1gAB1jnJQMEVw7E
+			PDxIwuspbDyj1yABWAhyzFnKppSRQB4FCegEniY1WpFRwjSKG+Oa
+			Q5iejWGUR8dmhjEEYs6YagpagSguRnQUo6eyFTuIqA6ULZCKj8ky
+			P48B9B1kGFkJm1g4hsE9hCUsCgGC1JCXyd3UD7UgpDBCCuIwCwGl
+			DAaBMpc6LrIRXORUawySejzHesB6pIB4koHoPAlDHCKgWA+vIDQI
+			i1AZBGUvPjLrHQ6IqXiyI+iMD6HyRQbAzKdjYGWT3claYDqHY4Qo
+			F4QCjgoBuUcB+wCbj70dwBLhFZXlDHsPApaPyKDfGonAcY21xvfJ
+			Y6sBYEyjpaZIyYBIDSXslh2x+Qlokqa+AkUOB5CnoE9GuMwgSkyg
+			Q5qGzIiN1GfPtY0tk5iElstuAcA8tS1SHXUH3Xlso9h8okAWtfIx
+			aSDDyAwfMfYCtWD4IditBIBR83JY8RBr5EaOj769uMAxKB0gbHKu
+			YBL5G4PzgOPotQDT6gAAeO0CiCrrNuJIU8Ax3QGtMG8LIahR8BeD
+			8J4Uz5CnHLKtYB4qQsmv+MIozK/Tn82gHKGHEJIKwAAqA3BKHJSK
+			B+G9F6P0npfTOwn5zR9as7H1Quec6fjwU0vEIqPnITyHlZEecRWz
+			b0tmjxHasDIQ6hyWpHg8oehFB9o4uk35psTifPqvTdR+BjaAvvbH
+			9WZWJmvIofyRRmqsSIwIP1BaG13YFwHg6XA8y7FpNmP8s9GcFVF+
+			CAFBYB4ESXgH/XB1moBBZyEoipKKFaA5CL/4BaGhRatSA7Kh/xz5
+			+iFD7D84fIfohwdoe5ZQeofYl4cweZGZMK7LrrKD7J+IioaocAbJ
+			W8FKqJYMFp8jARDojAShCSMJZQVYAARROL08HkHrwwPIADLggzuo
+			lANhCQNYuYpTGYCId7uoCAeDupFKA5bKCAsSyIBSnYsBa4/I8Btq
+			0SmIgwfQAinYAIfTbyHwBweJAq2Q5IeYiIejsIxrtaXw/UAoAACA
+			BghwBjupRACAmx5AhxUIeQeA98FLJhEgCICbt7/R1IBQhQEQFYl4
+			EAFQoYtAiieZhi8hcz5IAAbQZY94eAdZ5qaxXwlB5wihYxIgFoo5
+			aBjadLLIEYoZIQhQA5VgCYDi4pCJYIhT2wioeAdQ94XQUZOAcgbQ
+			lCFTuTTooz7BWAxAtApYFgG5ApapfyzgAEX54gikUIlCWgno74jA
+			e4e4lRsow4BgBxuxkwh4oYCQC4tQBIBalLNpkY/RuBpQh584qIeb
+			aROLZ5qZCokCbgAAdodS6b6ijoihRghQDIDpZUADIBLq6TRxa7dA
+			jEgcLIfgqxzRbcZz0D65jcPIpBkxzQBCSjk4khLp8ZDAwyq7c4ex
+			T4igCICjfkRRGkc7zYHIoYFQHQh0WqxqHAirQgAAcwbAhwerhBcx
+			pgAAcgbhcZWolDdAijZRopLoAQBQroCpqocqmoAAe4AxcYe4ApcZ
+			tgkgAZp4lr0ApZp8e4iglohwCgeIC51IfReQf4+YkgbYqJpq5QhY
+			BS5JuDjwg5kwfyS47wlA5hEgqJaKRZUIuhvp4AlJbMxqHQriB7KA
+			sI4wfgAi8r+IiEjYiIZwwQby98H00k0s00081E1M1U1c1k1s1018
+			2EHgGAF4GwaoyArYfZ1QAwc4AKEIuQqAAUjAfwmwqEso4wAzdAfI
+			DQfYAYfgCqLAAofboxm4n4rhKojIDZDAD5p4Aw94eoAgkYegAq1k
+			Kzrr6ZURAMKRvJGgfZZxEZZ04JiYd4tQAoeC5LEEUwkk5A/B4AB5
+			4ABhbLvYg4CBcYAoCAlAMYIJRQEACMNZrofRTaa4bQgzMxTZ7hp5
+			srBogybwBaXwEAFZeUAEnxZ6Iy7oigD4FQhyyAxBSwhQdIbipb3h
+			OYbYaAkZlqI6x7cy7gigCEmhIqIysAo7X4ioDoEywjLgh6qAfIfI
+			p6qAeSpwAAXIUQj4cgbcTJQADapIBUSrnIegeJqo5bNZdgEgFyIy
+			lCb4hUd8dDcapgcobw95c4igfAe4jDg494eIdwlAAg5IBgCSr6gx
+			pEBchEzh3K7klI64igdQcw97MY954Jz5j7+ItwhSsAl6rpQ4wxSY
+			noe4eSnajgoiGy4x95bwgwe1OgxCSYoYCoDhViHJYIjDMa4YqIow
+			hQCoDAl8ag6IA4pYCQDQl6ATUjQ4ZS1hc5T6xqJj/gpbfol8kyYM
+			O7EakUtlPY6KhitIpYegebdQaKncqEa7ByBKQax4AsUAC5DofULA
+			pA5BGgeQmy2pvDrgA4fRZREwtYwyTIkhv06JTgDgcyfoBJqsLRt5
+			bCA4fbt4eCCQB4djLk5qT5BldQfxwA5YB1OYboWQab+c2NjNjQ2g
+			KsOpyLuojBywhwVJr4DhCUQK/QBgBAhwBpzwAANgIjLAFIDRAsxl
+			jdm9nFnNnQ2CJC7j2Dmx9rnYxL6A7B9R4AqL2bf4ih6bf5oTIiyT
+			UkMIfAigdYclUtbI+gdR5QeUXlCIfZqp8stJEj6B4J9h3T6oxTrh
+			r8jwx8zr6rtbKJrkkJsy0Q6wAZdjPiECFI5IAiDtWhjb/qED+w5I
+			BRBIoiCjPkn7uVP1NCD1vSBKUaAxZ8BIg5CL8gt0AcAJmooJWFyx
+			sIiMkxWKAg6At1pddQd0DIkFgqa8D4khAJEpUBzTBAhQbIcgboAA
+			bIcd24eKbY+B77ARMRrwU6MErgAATAAAS4+lnd5d5g0RxyIwnpGZ
+			cYNRCQNQuY6YsDjYeZBICIdwCpABV1zBUI7Ym9eLIpnw/MCxtt9M
+			5qfoA58lWbrLuQdahQAcMTgkN8OL7JE6lsRyA8BRGlu4ohuFlrWI
+			BMQIiKbY94cgbwkbURnAC7fgCUdyFwAAD5PIAADwEol9qAbYZyna
+			iI4wihTpqpXw96gceoiIDIEQhwH4KgmxOooaFryIBb8CCD8MXVCI
+			dQcApYc4bgiraIjAbIZ5OEUI94BoCQhQIIK4o4DQEhLbtgw5mpR0
+			jQgc3ka4dFrrhYbBqob4a66cjBA0m1vJAxQoFgHopYCbEqbwdgca
+			AZbbGYft+6Qwm6TNbtqAdAcanaqkLJsr/gisnoAChwnoBYCBj7wQ
+			owoYBgBgl+RKfp5hk497eIvCnCignyyat8jcBaA6CE3o82A78pba
+			fluVeqgBqZ69HBLgrpYkjsIKpEIJGNEgpYE4GohQFAHAoZauUQxM
+			oIcoawhwegd4paeYnobwapOAdpgtXTNoCDjqCgCAEAhQdoAxOAbA
+			eDFgeU8BDwAc8kEgys7rfgfcaZv4g+YQ/QaZvCTIhDb2Rgg6HIAK
+			UYALwRvi0QpAqKjtsC0IxhEwfl+wAZ7olApKya54AtUwfAB6gUyK
+			7hsSb0yoAAbobobUEV5uimiui2i+jGjOjWjejmjujxxIEwEwFwdR
+			Eo6DjAetSa3idAZoAyBqzha4s5T7WgjRC4e4DS1QeYHw7iVwAZeQ
+			uQrjcIfoES6cq18pNAA5OAeqP8tepl8gx61Aoc95AwfhGc+I6Id4
+			o4A2abGRbaM9qZRYtYCRp4CZbK0wAACgEAgwCADY94JwGoDIAADo
+			CRZ1tx8YjAawYojGDwgx6FOQeo94cIba1h5C4oArYKkeh1SdairK
+			mBoUf6juB6foehLJdg45vxLse5jw5xT+QFaoCZi6X7bxdjWUO4Cw
+			pdV8a4dgnpYJp55LMQcz4RRewxRADZI4BTHZCJGSmQecY5kwCOCN
+			x1ypbZ9a7kiKa4bqnaXUUYigeoeSnsOpmpJYl+6VQIhaCmXUZz2L
+			nMigAAdgdAlAdYc0wyuFUDNb+JpQBoB+6YB9lEoAfBtb3Z3QuBVx
+			1c6T2qawfW1xUKwqPLnyG8cIg0YpTdFcWooYDYEZZVXJjgpdVZQ4
+			qKhwlAagZIj9Yp96LQwxPwhwEYFJZyEIhRnIhQEgGFSxVW4VyqG5
+			Tgc9CgYYj5OQhQdQeJccSwtayNfQdQCwdEri3cxbGdegjYhwCYer
+			uoA4fheQ8KEDqhBR860QewCHAdcdoAAgey5JBZbC44tJbCrJ+7cR
+			5uQQfIBgewX4cIVQbIKWj/M9nQMB1JGAAAGJCRyxqoSBr8uOia+T
+			tYDh04AACR1ALwHIEBIgCxGdt3OvNHQvQ3Q6+r1OzXRfGb6kleMN
+			ouVSZkrjIQ7FOSmz15qeSFqFNxNBb4du2ErgkZOLZafoep8RB2Oo
+			hRR3VaqB33SZCVui9Oeoxx/zm92GfeepqSZb89zHE5/9yCEBLcZD
+			eqb4papUVxKb91wgCCZDwVyT86DQ81vyShmuP6C4irja5Z/MO0d5
+			BkA+FKFcjyb2KV2R/jcZroeYfAtQebtwAAb4eKCQ5iJkZsEvQgww
+			codvHPfKLocu7ya/f7waM82wiiMIit6nOSLvRHhc2PLYOIAALpr/
+			iIipRQjAEPH8uQm1+whwCQd4CQoi21dMtLZoqQh4AwqIB5n3k5c0
+			r0gQB+kimJIIfJeQCwdOuBuhQ9e6plnz7o/R4BCIfQBglUTQpIhQ
+			BoARZQBKFQEdBo+EUR9pSuyYAGPJTeyJe4o7SO6woYCwDQhQChnV
+			pQADVQlAe9rBE8UJqu7gx4C4D4oYHQJom2JBKas6SazqGJ/O4Yio
+			dIb4hQcgbKtoeQjDh5TbaIgwDoFIhwHIJoo4D3xFoHx9n7T3Ewd4
+			c4oYeAdAoZH4jAa4ZxcYbIZvGQqICsdp1IBeRXZoABUwpeFfc21A
+			w54woYdwcwl9r5Sp8ErlrCXQigboaROAbYaZTcwAFIGaIxPzXwCM
+			R4F494CIDAhQvB8U79sO7ocolAZwX6bQeQgy6Ek54BLtOb4QjEh2
+			s9XwAADYEJZSSYiqgq46Uf3QADdZTcUJDFDOVh9lFcb5LwilDuGV
+			LYgAAAgFAAACoeAQACweAYAAQEAIAf79fkFiQAfj7iLzdkEfT4hL
+			3ecVdLjfESf8FAwJhIPCIGAAHBcJDgmA4AdYFeoAaLpdgAd4DeFA
+			ALyiQClMWpUFpIEf4EAD+qIAAz7m4Me4NqlWhzyhIDb03AMagoDi
+			IDB1NiNUi03gtrAb/hsOt9Sgr1iIBfURpIAANJlIBfoDfYCecYqI
+			Cwb2jNWer2ewRf7/f1zAOXy9+uAEhIEzgAbbbbFrpel02n1Gp1Wr
+			1mt12v2Gx2Wz2m12233G53W73m932/4HB4XD4nF43H5HJ5XL5nN5
+			3P6HR6XT6nV63X7HZ7XVEAgE79t8OAWkiIC8znB8uQocDgbZz3e7
+			8Ab4eDyc73erve7tDDtBz/HiDh7AqeZJAIfwCA2CZ4AqB4Cn2AzL
+			nyhJ+nQux9IKfgGPAfATsOfoFoqfwCvAfK9ABCZ8revrSgGwYAAY
+			fYGAABp9Acvx/IiAp3phHaYACfi+HwlJ/HvFiJAUgp/ASlJ/qQAA
+			HgmqQGLSAAPguBIABiHMZvCfkMAAcBqqkcptqkeh4qkeJ2RUeR4I
+			qjKpAGz4CgQhrzISvyVAOhLxotPJ/Tyvp/oqAB9PiqJ+ybHIAH2f
+			bwqUvq7LaBCEgcCSYAOlgATmiNNK+z58MYAB4HXDB71GfCdos8lO
+			AKhIMg3JIEAWqDPIiCIKoIA4DtJJR/SaydErueTwIolJ9HyqRznA
+			e4AVE8B/UVRp90Ki7MgABAFKgBVaoEAyEgYB6oXEqAC16AAFAaho
+			GAghJ8nuqRyG6ewAHCbCdozYNgtLbSoAROyqASiIUhsggUBqqADA
+			QgrxoSAK5n7R4AHUcaIncc6IpEgp0nFDFkpTY4ATQ8B7Hq8C+gSB
+			SIg2EIF3SByG3UgoTBqhs6oKchtPAcBrnpFEh0NZ1SHWgqKILbSE
+			gwDmGAGAqIgoDSEhaHyYXVUCU5xTi4gAcpx0eW5eHiAB6nahJ3Hl
+			FR/n2uy7HwBFnHeB53WfuFIQQ8ClQOqAJnkCtsn5LIAH7HR8IIsa
+			4WQBdHrkwDOnlhkgYeix/4ZhtWKTJ7NcIiJVnkA54FKdBRHCWjt9
+			P1HU9V1fWDNdIARuIKLg/wYAEBPW/9Y3gBz8EoMRuCoG4YKga9oD
+			4KZf3XleX5nm+d5/oej6SlxZYSL+upimWF63rH4fiUozo1gIltx5
+			pTRyUnxeKMUKfB6KliSUnIblHpElJ3HQlON5HNNDHsQkj5ER+Iqc
+			GWRo5UVGD+fGRItavjTF/NSr5fikFIkXPGUmCDECUgDa4AIyyeVz
+			kRYWWUqCnISgHUqTFTYBwFEJhYQkAyEWtkFXaREAhbgCQyg8QUBo
+			D09o6hSQ8gqvCCgELmAgBifU8xCPE0iFpfk8lmLyaRri2IOKtMuX
+			0vKeR+KBbIPomA8owAAG6O8CDg4vFKV8tg1w6h4jtYoPAn44B0Dj
+			TCSV6ZulrDiIvHwiIZSLDlAAI8ADQ48yHkRImRRzg4gACeXSR5Ug
+			YkWBgn0vw/4bD6IIBccwGSYj4SyAIwpEh5FrTAABJhEjJEFlSPcB
+			C9R0ASkEoE8AER3gUSgPICJApNPZl8nosqTUnt4bIBAnaEFHlxIS
+			BAAKMwHgDJuDICoFgADcGchgyB4B9j5JSOsdDQ3xgTA0lkCYGSbp
+			4UaogfY+FjPfZGPBR4+VlAAALDIC4G2GKfRQPc8D+CTveayW4BoE
+			SzkQIEQRVxKTzERASAshpMiGkTYaeZoRBR9j6JSPkexUk4gAA0CM
+			qALwgkwAwCEqBlKLImWG0AqQ7h0lSo1BsuY7BzFSPw/dCxOByngd
+			4QUDYIyCNXXSVoADVCIziIS+EjFKiHkpHsPMhI5htkJnWQVUREaN
+			QAH0ssbxO15r1aczQGBWl1ENAau4AAKAcFSAiBcgtGiCjxHUQRiT
+			HGvgAGQLVn49R5F2isYCt49X9MnlREkAAHASJZA+CVl6tCIgSAzC
+			4BU3RyEVGkMderFVHsiXgtF8ZE3wRdSUhm0ShG8kWIGzdV5KLQqP
+			gUVIzEl3D0UMmyEfrKCkgMXWAADAH7GgJIaBoEhMB4gJWcNYdTdB
+			1gBHeACmrdEnJHKUUhcI/StF/hsPEggBhwpJAJdovxMFOMxIkgds
+			gDGfj3AUTsfoBDwABTzMA8s9L6ALKyX4fUMBxk3AGPUublHrlSkx
+			B5wxnh7GEKFAq9o+B8D5SlAouMCgCD8tu08tZngBIjAMgeLIHhsj
+			ZGwOeReI8SYlxNifFGKcVYrxZi3F2L8YYxxljPGjqgQghBUz8o5m
+			C3EOMwOoBoDQHCMAgBACI02GkgISNsdYCRwj2HACYcALB5gBHmBg
+			qYkcJgFAwBcd4GQAgHH25Ee5ER+jeKYPZIgBaYAtXqP4Bq0QDIlA
+			EScewCCdyYukRZFy5B9IzAcjYhw+yGgEHmQQAd4DBJKHmVIfw9LA
+			FvVa9Yy5FTL2wwunMh0HDNERUcpNIkGE/XwgdB4r9PWIMNLMtm4B
+			VIUgPAkQ0EYL58gIgEmAd46louEVIOxR43BpL1o0eCHLSFNsQPKX
+			MBKm4PERXaVADIIKzARpPApRo/rXbWqeQUd45iE1PfAxNURKYY6F
+			hkBsECWQFAMIbfDVWmCmPjwpbijlGAADuHUipjqj0vkpHoSNwc7k
+			/as0RT2HJEQHbUAABECxN2F8IAmQkBYDiErQa6N4k695j1btZx2N
+			RdDLkJVoQkHIS2GA6CglkBNhjT79AAOQbJDR0jeI2O9+Q21nLMRU
+			fhlDbVhbNlQAohoHgRJJSoQ0BwFiUgzCUREBUZ5fL6UM0FUpBRli
+			5IiPIdj8G8j5aDAsCYFyGguB7uoBdDAGEpAoBxFUNyUjfG8o8Ugs
+			Lmj6HcVAfL7yHFDqskpEhGAFIivcWUphTvCF+14AUeLlqEPXRcw+
+			THhx+AKbzeaYBEi5xaT+eFPMVFJqNRIAYM41xVDPE/jX1HqfVG+D
+			gACM5KQwp6doREMBFofYuALqsHQJpqAaAikkH4J63AYAe4L1fx/k
+			fJ+V8t5T1dIqDLtbV6hSX0EYTAtLARdmTPn3tRqjihR4jrPAPId5
+			Uh0jhPAPfHSa6YF4kLpBRo+IBUqqURQhO1iJWnjY5g1ppHtoJMAE
+			jlJIoNJKFC5oOQDC3i5iVlPNbCHGnoTGkQHJ9IXtWDOwHKwnYOKF
+			vk9oSCIuJiEgCqEFzoSCCk6qCpWInt3CBIPiVNmIqNJCyr4i1qKD
+			So1jNGQknFnh+CoG0ibhtB2gJCMI0lWI1IHDVh7OvJCl4AABqBwB
+			sAABpwnsavNLThzFGgAPaiIhwgAAJgABvnbCpvmQxwyPVJGgVlOA
+			AQ0DwAqiLAqC8k9CzkXgKB0pqADB9Jzj5CHB6N2iyC2CCkbvDh8g
+			CiTh3gGo4EiEaB4IfAFh4itDCISvGjSEnh/gCs1lovDB7AGL2O/k
+			XKHh9GGAGtigasuuXhrFHlDn0p+AAPyCTilAJAMCbq2ksoIP3jwB
+			6h4DwKAAAB5h2kVPqk6iEjvOjJngAB7FigABzhwpjh8MBCkiPrTq
+			JwPIoOnLdqyjNEMh9wDNkxAAIFzE+AAAKANiEgTgbCYAKgNCGiKC
+			Iq+GQi9rnBwDwKaCKh6K+icBzidhyhvmfojCEgLAOGXt0CtF2iCg
+			VAdCUq2tVFPHBCBmNMqicBxCYH7GyB6FHhmhelnFRCpOEibgHgIC
+			CIQuFgNiKgJyRwOEYLyFbiHKDF2qAx2GxgAB0BvCoKqqdEMBlhdi
+			jOvCpANgSJNgPl/uzoCnwN7FzlYAQCbh8h6tEISorwCAAB2BziKh
+			sBml6h2ypHBh+qYJ2HyPNFpC3k8oiEUFRuBugSGqViRN+Fpjwh/B
+			+CEqUIKAAvPugrggQGXgDOhAANoq6AHlHx8Cdmvo4BrB5B0Cjy5r
+			povENkbxLCCABB5KHhoGXgAh7k+gGizgRCmJUh4AGG6B5RGiMACG
+			JjTLqCqB/CbgDh/GGACB6CCAFhqkbgCB2rxCLoFFBpMFwHKgIADB
+			6Q7gDhxjKC5B9B9B+MHxKlHB8gDzhB8nLE9gCh8oYgDICB/AfsQB
+			qhowyzsTsztTtzuTuzvTvzwTwzxTxzyPlgaAbgfBYB9FqgJlRB6A
+			UnvB+wvKsJ6gDBsDzNEjxihAIAHgHBZgFgIAGI6gJhuAVhxAGhwB
+			/L/B5g6r3ACgKgLh2gNCYsxi/P5CowwCJM1CjnzgLG1ADmQjFRjU
+			FHBlCCLjAtRjMh/AKjwAEh+ujEQCHQ9ABsDlOSli/FCh/puCJEjJ
+			fi6S2FpmIE5PDFsFeGbmAodiMRtFEtQlWCIyvoENkqCotjyywgEm
+			FGBuFgKiGgaAiEZrdCGlkiCxei7n+h4B2yLBgGxxjiKyjAAQQNN0
+			qwTIZFsALgOiCAcAlkZ04EcGYU2gECUh3zCoyBoiEh3sRFSB2iKm
+			el6o5FHgFAHCoAaAgEbgKJzIoCUgGgJIRHLKmgARYFHy8S5mRHrB
+			6h4iUhmBcVAh0iUh5B3CKh5h5E4UluRgAAYAdEZqBuJQNgGAKCpL
+			IFBmhP0h6ipBuBnoCHKFhFRCCh2ByipB0BwINi1gUgbmGGETTiZk
+			oHcgHgKkjh1Bw1DBztvnzAAPzkMKaFTu9B5h3xbn+jJiIsjTWlxp
+			UVsgKgOiEgYAjQPgHotmsoZKLiIh4B1CCq8ipB5u+Rd2DuuCUpyi
+			oAXAbuVAGuRAFjwAKAPICURBwP0AABVBaLmh+HPiMO9AAh2DAl6v
+			DgAzmL/vMgDCmiLLTh4C5pTlWRJLUElAFi7PGmuHAiKi5K/EVi1j
+			AIIERqMNUh9UXAEguBsBQhrhWTy2n2oDrJGwhCCpGiCnaCCgoCLK
+			iMWsNiEgiAVpPAOgJmXgagRJcAKAGMe2o22W223W3jjs9nsHrUTn
+			KG2tQDSvqzhCmLRTaxjP4KlD8H4Ulo3jwB5h3CpGKqbP4I3ipB9B
+			6iQrBJ0tboBIDEgoEN4wjuPsAIKwintEVnsHstKRay5SnwaoPINv
+			DUkwVlNIh0swMmnCIgEIV0swK3ZwQwMNVqzoYF0J6tVCCgFxiwSC
+			qKEQamtFOtWU5C/KDUil0QV0frYwEQiv93PL5CLFgCIqtiGh5B8C
+			bhsB2QvIur4oH3NDUzhxUKLgABpBvhr31X2CoqULXwqVyk9PWiUw
+			uBoAABlgABgDEW4X/4ADeg3gAAPCBYCHagvk9AvM+M+C/uJPJiBB
+			+EfovAEh8ksgBweJLivr2pLv/P8iklpgBO7i/B4k8iyABGVi/Hkk
+			RkzgLijB+gDtLC1gD0XlODK0cCvh7rt4DAUANEbopEaFtlDB+CTi
+			V02gDCpAEAGqggHCCNsUyiIh6I4SKDwBrBmCjI5CKmFiGgSAU1cy
+			PnyRdIBlErPGjLSnxlVOKlViloIDzM93xlXCIiXGFRwAIgMCEgVA
+			cibuVszXLq4FGoCB0BxCKqaRbx7B0ByidhzBwDDlziGgOgSCtARg
+			UofVdAAAUgcDwAIOlDWCRCE1vioRjipB2h0jwBkhcDDh7O9U7GGG
+			lmGFLiIgPgWCUgSAZNyTmDZE1iChwVCp9iIh2h0EMBmhfrm2/Aag
+			jEsgbgkEs1akmwcNOlvw4UyiEhtX9miUxk3muhviT112elhYiMBC
+			LADPcqDwQoZAPgViYAQAUiYFk0W2cF0gHipX0gABxhrYom6Op37h
+			slnB6RcuOlFLcE/oNqKKzioKBk7gEipB7FHSoB9mfhyE0CotFlpV
+			gpLIWmXiIHDn/iBB1kfx3gBTLFOTMCJTNTORWTPj5JkinlOC5CHE
+			XgEh6Eks+lOB8qHhuLvLwClEc2fzbi/gETdB5gERQBurQABThB+A
+			LTagDMG4LFkh8YUi/gDADgCRBgDzoiUAgBtBsBqTr4A6v6waw6xa
+			x6yay6zaz60a0nVgcAdghBVamgK5VB6gVsKB+HcjBIOD5i3h+k8B
+			3AKAIgJBRAEALgEBzBwgGhugiBygGBwJCgDB7AjstgG0I0JgE6oC
+			JN7B/bG0NEmm8kcm8lAKUMGFnLbxoyVt2jMjxkdNNPcioLYlOFBQ
+			4DywaOBrpk+t3CHiIgNSkAAAQAS5mIngEgIlHiFwCxjYSpC3ISxi
+			UhyhuCKrNFn1iCMFpn4oGIiwIXYp6RwF2iGgVgaGXqhNinYa7oIF
+			VDwOdZACpOgBzBvL3k8l4CUh4qX0lCU07CYAagkCtU4IkCUgIAKi
+			KokCCutCChuho2Ah0iIh4h3FHl7l68FFHgIAKCYAPgTEZlckfk83
+			goNwR0QAAAOgUUWgGkjk5jAjMh6ObAABjhZqW1BiRXEhykMOvDwF
+			tCGgbAiGXuGCoXguEAKq2AMtiPGjZFSjwBphhlHhlhcEVK6y9APi
+			bgMgQzTongOAUCUgOATiUuD0mKV13pCjDxWCf7oiUhrhkEMBuhpk
+			McTvooKXkRYCCAHAKCoOVmZAHCIgSgZcMcEh2ipBphiFHx6qMyuB
+			0BybSUlqziGgQgTitOHsAAMgSx6W9h4PygABoBpkVKlEUGGv4Fnn
+			MwFPNwTEmnkiBFFyiPsvNSnbXjSWVaBio4kComubrXSwipMZ57LE
+			gikB6gIB8AIgYBqBSBpbN61dg3/g1LeJUAABIiLHaDwAYE9W1sVg
+			EZyAtAdAQgAARgLitAPgJ0v6qdhdu9vdvsXnt3OHyXOW/TgCUXPl
+			Gt7KLtwlfn9B5ptEwKbyhxWXEReH+h1hyESlV1XP2iIn3KUv5qkl
+			Cy20nvorpItWgtKHtcS3NoIXR0UUURpRsDxLYdWgBRLIZomoVXZE
+			kqDkdKEQKwKqGiE+SCqLxSnAGNY7teQE+i58d+WJ6LV3jIZNOJ6H
+			LFsQaorKEFsXqSnwjXNnsZpClrYFSG3wmh1JqXxXQjbQBQmwpwpQ
+			oB7wlepxXMamxiIvTiCwuG6BMAABQFn9wexTyHboS4DCjYBiCg3W
+			tiLzLQdWKaZ4DS5eS4LCBB+nDlGABznpLi6jyx3iMC1h4C+B32gm
+			G0sgAnBTUjwB4AOWPgEkMOQkodcJ6CuEgC8h7FbQdAMgKGGNYCoA
+			OgMksgPAUjwAHgMEMFaKJopkMkJmRh3iEutCoB3B1iKhcBUGihyu
+			MEoAIibgPgSGXiXCb17CCgWgeiUl1QBPqUdhxBqwthqiC95iSmfo
+			6s8i7IeibocmHk/ACqDUfp9OGCCDPCytV6piGv8B2vxFSB3JtUlj
+			yIIKLiK5IEZokGFLxAFgI02zUDWFDiCiAPB0gEAPl8v8AOlxvkAO
+			xzwwAv8CAAMB4EgAMhwEAAGBCCB0UQQQi6EAUDAAAPuDgB/P6UP+
+			XQV8y5/P2EPN3Qh1uQBgB7vKEPZ5vwAN5qPWUAKEDQiRcaEWNggF
+			AKkwgBVQAP2bQV7yh/USfUgANpkyh3uqCPV5P0AORvV2VTF/wi5w
+			iCSgCgeqAYDT0DAmqCIWScRi0DgAEgyCAkHWwGhS2SqCNlkVR4um
+			qO91voAN9qPYAZp9gCYQh9v3R6SvP6EPqZgAAxEAVeUAGsS2XPl+
+			UR8PrRwiaPy2ayrbYAAgERcCAOJyyqz2UUkGwQBCCXgiEPAGu4AP
+			AHO3VQgFvwGgDx+UBPiegdxArYPeqAF+Xd6dGwADD7AIQjj9Gen+
+			Aa9HcBR8AaZp/qABx/nw8ytH6BZ6nseoIHwfB7Ag2oBL4Ap9uWAq
+			wH6ax8HyfQuHMtxsOjFUVxZFsXRfGEYxlGcaRrG0bxxHMdR3Hkex
+			9H8gSDIUhyJIsjSPJEkyVJcmSbJ0nyhKMpSnKkqytK8sSzLUty5L
+			svS/MEwyeFgYhuZ6tH8Baan4Cc0AWuqWJa0iYAAAc7HaAgCAKbYB
+			AKAR6HuBp6hQe4EHqAZ4gwdoMgGfoCAOCJ4giAADH0jYALAfxzuj
+			Bk5uBOS5po1iUn4zkHNquwEPi5rYoJOyqT0rDYNg2LaoJVs61yAZ
+			/J6u8Mzq40+oIDwSouEgUgW44FqoDgUpcDgUJcAToJwnp5nanp8H
+			ohBtmhBhwms0Z6LWADXLYfh9pc0s6z82YCVdd7EWWAAPBI9wGgkn
+			oFgihAWB0lAETe1SUVKui51ogiYYS/hxGw0ZZEyeQAHkdyXAqDST
+			hkIMMAUBie3whAQBalwDvcrJ+NMfKCJrT6UH2fSXHac62HqeCenY
+			cSJ5qqh7nsoh4nazmeqIBQGp6GYhovi4CgAAgDIQCIMqJgKEHye6
+			XHEayCHvbafHmhBumqtifq8fqXacojYpcv6RBWi+AqoDYSoIAz8g
+			OBNbgFW7ZOMAB5nehBrmQ0ZomDUzUgaCCegcCWmAYB6eg0EqUA0E
+			yET01a6Lk/h9PglJ7oJqyEGwZLOG6abOHod91LlUbbIIBoI8cB+m
+			L/fQIKoEYXaZpyCHoeCXGwZzRnqei2HyeyXHMcLQK+hADgWiYOhE
+			BgAJNlat+QojfJcmzsnuhit4ImJ8Jj8UVP5FYDv5DCUfWlID9SB+
+			JH3+LZn4nsPpOpToH+ghE1ev+NhAIAg+WmACH8Vg/gAR9F3gEPwA
+			g+x/juAmOoeI/ADD7HYAof4CgdDqEwOodaYoSQlhNCeFEKRANNNC
+			AADRswACbOiB81QIlZtMhSj9XwCC+gADGD8EgAATAZAcAACoDSLg
+			JAKdCHMTYnRPihFGKUU4qJefSr59KK30sHJewNOZL3Wsti/GM1xr
+			TXj9UyWB4q5x9EIHwPUhBuyUDyHazQeJLh2DmeOPUgjFI9lUHyWI
+			1xVFSkEjQSiNDKyYxeOiXQ2pL4FwOOiwk1Te0MwLKswMrBzD4t8V
+			200ApVgCrSOanZgBFz8AKf/DhPRBG7lUZKYteYCQFl+PzKYjgEZb
+			SrKotMlACgHP/JOpRdq05hHUKw3UpKtTZl2Lunku5skWN5kirOSa
+			MFfIqJcQQeA+CNjWHUBVTA/SqD9mZFlIA2ByDcAANgcc7B5FCYm8
+			WKqQCEH1IILY6I4Toh/AAI8n09aBUDoJQVLBdgACrhgMgAAZDVUO
+			IJC8hAGoEE9AgPsB71h+v7H8/8fBh4InNP5RWLpsIEmzc8c4ljKD
+			SUsk1DAqhPR/AELYPQCg81MAJNGrsqgCx8xFQ/Dg+Zsx7E9gQQQB
+			4DSTmJoiBUjYIAVkoAxDYAAEQMKfc0QRl5BB1s5AAhYlA8R2FsF6
+			K0dgABzjhIYBICrTASArozWxpgFANkEBmEYl0wJspxZcPhbgzSCD
+			cQO34eBRB1jnNAOgcNOJHgPAiYcv5zVOPGjGcwghySJt9acVRjqr
+			Kw2FNCO8thpCCMdX0A2AAAyqFSpivE3AAB2jqIY1aRaKq9roIQ1w
+			0ZXyUD5H2URl5RJjAAA4CE8oGgPHlAWA8qgGAONxBGfE1Q7B0Fsc
+			6Sge49S2DwHWaO7LNB5GjHMOCnDRSJr4aYCoGp5XYk9AudYAF73L
+			gFkswgABQiEDUGGSgdw6GykIrFNsrEZQANANGVohEtCCAWA9LABE
+			rsHqUbw9Zp4AAJgaImBMDJE3egAaKWwARzXkEoGuMWbhAzQjqNGO
+			AaxoCzmclapRk0vlKHYaapcq5CB3Dnt2qM4jfh7OpHsb9UY/2rmk
+			tGrgAwBSNp2V6rUq58QBl3lQAMDxXsbDyAaO/AoDDuPpAYP25Q+z
+			0D3fyOA9wAaimwLAP9dNJQAyoAEBw6NIpPgBymO0BQ+QFjNO6AKV
+			R9QEnCH+hAew9AJj2QkBM6OIWnLAIinA3Q+waDqHMN8Z1BtNab05
+			p3T2n9Qah1FqPUmpdTan1RqnVWq6BglBUC8hhXjYgCLAAEr5NQBj
+			8HzN5syvFbq8OXA2Zpsx/PrtUbA+JdSIj4N++LKexIFSQNaPozhL
+			ZnF4h6VdhICSggoPrmIog/gCrnN0SyaRsorn+ggRwfD1QGD2iKAI
+			fRVB/x8rDMIqgHgREXBCCl6rcF6AsJcB7gSdTmj6Hs6HMzJyEMyK
+			IWe6w9yEDeGk9slbziZGtU6rQAAEAKNMAaA8ibJaexFAACQGeCTF
+			AAXw+7Kuz04D/nJV95IAB1jjLYLUTx9R4jrMc40ABgj3AHAQT3C5
+			IgXEuKlNc2ez7bdP45zYchBBsDHq51Nvw77xDiQY780bjyeg9CdR
+			kDAHyTt1IQBcERnAFAPnQi7Q5KBnC6JQPQeJVGKGjGoMus48h34w
+			AIVQE4LwJEcdoRwBxgQWOO8SnXCpUiENsvuPJrA2CiDceGQWvxXH
+			jvlkfjVugB69l/jddqMapWCGp2s163o9t0kdaYAsBzTHXgAHqPG3
+			dIy7gQAqRMBgEiJgFvouWCTEx4VaH1Hslw5RvlINR5EwAAANghWS
+			3WmLesb1hyCSnmQAB1aKKy66oYBDQFekadHYSK8KgA5Mfg1oCSGD
+			zAgPFcv8E6qOUo/X+9In/j/Pio6pMf+HuMOAE5mYGH+PuP4H4Q4H
+			8HYAqHQGgHoE2HkBm1ZAtAvAwSShWVkiKYkhoJQFaOiA6OcJOr21
+			A8CdgASImDgCQqiBUA2Qw6cb1BNAzBrBtBvBxBySyi4RaVGkYi22
+			kNIfMK2ZYU8jG12aq9cnGjEHs8oJSjavuHoJc9QvueA9sHmJcx2J
+			crAAAdUNyHskA4SJS1iVKnKRAtGTojGmsTgnO7emsko4420NmKwb
+			6+EbyNqAImcIQ2OTqAOJcQCWkOgxo6WOOlUlAJQxibuldEMYCJ6A
+			SKmaa9ETqOgAcuYlAmPEml+AWVclYAMVc2eWE2QJQL4byOoYGLus
+			s/Omm2Q3TBoRWiwRaLuHio+AAGsHWAsUwpOgkYXFcR2HIIcLasOA
+			AHMv7GGHaHTAwKIIQHIn246AACcAAn8pxDhB1GrGtB0DoAACINUC
+			GNUB5G8V2J6AiH08KAMgwTqQ6esHof2H2Ogmk+wpKH4pizWtIJYA
+			SLYH6AQzaVcHwImAEHqpEK9AKKSkeIIlCf2/8YIJeHmkki0t4ASA
+			SJ6A+BSI2A7IoaaXiACpoq+K6XK82+Yu9CUasLYq6K6HwyOA8BMa
+			YB4CgI2A+BO7OxsAeAoV+pWnKNSasJQGqGKNHJ2uA4uToNsLYAMw
+			iA4BMJ6aKr2x+ayuE2eL4ye9SJRCa+QwAHiLYHjKsmuAgAmaYscd
+			qwi94+Q9SJ0HOM4eQe6LAa4U+IIN2JcuyyIIQbMLYOBEmwWA0WSA
+			0A+uUAadyBYtO3oOiHYHKN4jgJ9CkAAHcHSQY0PLc+2HUHIPqWmI
+			Qw0MOCUC+Auqq96I4AmJcXxKbF6b+JcGKFeIIHQG+LkYIkOXW44X
+			Wi4AkAwKoBaB4Iu9kIIuWJcMYuEKwxCmQRYxoVxCaIQGkF+KoHcH
+			MLMHUM4GqGU/oQsLYAfK4iEBiequWJ6A6BOJQAuBCIQAQeqRWIc3
+			CK2GaG6HgAAGoG8Ykb/HwGoMOAGHkIm9WXW9Wyies+EvshgJQAkP
+			4lCIK/sH0AUM4gEUpAW/ymGfwNmHeKwHwVu0alMVwADP4AC0ZEQ/
+			NCmUwzNHaHQAEHmAGIQHk3oLmAIN8p+2oH0iKKsOY9omYLuZeH2E
+			yHUHOG+DRGvRpRrRtRvRxRzR1R3R5R7R9R/SBR0BI1eM4i6NsqGy
+			QbM3kH0o+Nw20mQqNRWmQmiYSVGjQ2am2VqIib2kVCmjkN3N1IMy
+			XDmYSg4J8BcYkH6AcKIH63G9sAI+cADLmmkRagjK6HoQwAgHk8KP
+			S3oy4NIHYlWIIAyA+PcBABQWSloKoBCBeIRUYJLEkTlCEnRUk4xU
+			k9ukAHoImjeIQHCGuNGHGG2NHU46bE+KS+xKIKoLywcIIAhFwAAB
+			mCOJQuXKUVGtw8mIIG+Gkt64kNCHSM4GsGUPqQkLYAY9m+kBGI2+
+			slS6MAsMOAoA4cumHO6J6T0IQHexQG4Gex0HRQ8HcIYHIHAKQYoI
+			YXwInLyIuBQBmWSJMIRWgLYehDcRZSYIIHGGwZ0HiIIQsKIGyGgy
+			4HcHUK6WmdyBSiKAUAWJO9lUW8WPMAZVUPy0eetD8q+LEHOG8NGH
+			KG5C2HqJc0OLYKFLmYO9rHgfStpYodYkcVs9LD2XiVi4MIIAkAuM
+			OAcAnAI2eHUHKIZYAM4H282bulsJ6YClcAY5G6KtIaq9Mne2++LV
+			WAAAoAubeVU5Y+AAABKBmaYG6Hapwu0M4GyHkhGHwK0aaHyImAWH
+			iWS1oNuVunMpKmsVyVQJ8ASxcAmrOHvbkOOH0IuAeHoUmARbyNg/
+			S7vcAmiJQAGwmH+mGgSJcHqAUpxAW3CUaH2HoASHmF6HyEuHwCTS
+			Dc3c4TAhWImPAhpIkVmE+OiA2P81OASh6AkAaMODWCHOwBQAyozQ
+			fc7dtdvdxGs3TbaRlFg8+i06YkYfReHeEPDDUP4i5DSYGjRLjCIY
+			OThSYjdI6NQVE7qKAUxCgHvCxCenuHitze2v6ePDFC8K4dDDEkLC
+			eewbKjAK8iyYMkneQb2mqV8uHPpFSNo4MVsKSVYk3IGAGARD+fel
+			wxoljELERE9EOPwwmOSKpEetWXmQDVM5YmCabgQ+EpiOhEJFSw6x
+			oTtDvEivrHgkeOZd26hHgnPeCR0HiHyMOGyHdJoH1HkIKH6P/QES
+			CHSHgrOHUHerOHAHUHGAAHCHTGY1ZLoKoPAIRiAIICg/YhahWLFe
+			LdzilimSKDmAABqNUBoNUCWOiCWgQKoAaH2qAH+d4gMOOHqOUH09
+			oPDZILsPUNmHygUZWAXHwPGJeVuZUuwNvcK3XTlQY/7H9PwUzihN
+			RLiNPEuABOuIuA8BQIuk49sspJOaqyOneK6uyOCZTZCIQd0ImCyD
+			qPdNeVkRZUk4RLYHyJ7e0JcGaF6QYGcF6K6mYAsA4JOA0BGMOI6K
+			oBKBqJdVcRoQsmcIIc64aZmAAGKFaM4YoJcHma6Ho9NVSviA0I2+
+			mPc9kJQBUB1l4AtQ9T+HysZVvMEJcGUF5Y+a/I84eHaK6JqYBaIw
+			9nYVwJgp6Y8MQ+iBABOaYY7MAv4x45pC2HvKuHeIZOdFEabQ7kQA
+			oYwAAd0IvWNVUAULYyYNGxjPpZc9uIQGiGAjwHKgWkaJiNlDkUef
+			zgQAcAjNiB6MOaLgaMaMQzDoHbE4YRW+ejGLmIIGqGEIIx2rCHaN
+			GG4GkpxJGqqAuvSBsoydiKoA+BUcoctpXF6kOAAGIGjPKGcG8y4H
+			RZzC6GEI2AKHcaYTRCewObNEmL8L4VoVkU+m3oLQgOgAKs8pMP4y
+			KYOH6ZheMVwAKAVPa8Dba3QYPTBC6HpCxeZHwOitGkexCWmVe+xQ
+			ZlEpKNYJcsOG/F7ipsjslsnspsrstsvsxszs1s2nqBGBQBdsG6gb
+			LCmkSJqWkNoxCqNfw0bbdtYKSJjsUmvToOiteTgRUKU6YpmMi7WN
+			IATCnHMNCAarOQ7QDtwRdAKtXb+AQHzNoHmPKAMHivPcmesNppGJ
+			PZpnvgpWgIQAyBGvnEQiXgqIJZoXhglDTCaWyHoJ7ejiDU+AAHKG
+			2KIQlZQJYfPcLvCtUlg+jVcIQBxGg8Mr3pdCK10KoHgHUImvwO6M
+			2AAFsFDGQHiHcKIloaYA2BAiLZcAXnkAuA/WUh6ZKJQAqA7WqhxN
+			CAAneOyHYJcHjoAAAHEG2/pxWIYVeUoAOw4lMAG+GKkw5xzEMRYL
+			sOgAisfgqpkK2HkHgwO+LCKZ7HwK3YOJ6A2A8aYOTN6XKHyOGJiH
+			2+LCaKIXHkxvreaNWXUP5rixA2OKlEdYRvFqAIQAhMxfy2RSnCEI
+			IHIG0Opxxy+ISHIIYHZV+Ky+SqqAsJO94shalVoPNL5FYIbmIHPX
+			FpfxmAWAWsgAOJ67AAAA/YYGeHQrOHm2orQH6y5GUabQOAUHhbQV
+			4YIOoH22iRnbsKQgpbqAUKQAOH2I2AmHjFwASHwZMdANgHeLv15b
+			eACQVFGYIQ4ISA0U2HuQgRUD4H6EgH6ELs52ls0DUI4UoAACQVmh
+			oIQDyVnQm1SA0Ag34AseqCqBsOsBAApO92n3Z3b3cSOiveeRqixS
+			0Rb3jZTx9jvFUfReSkhfZCFfbLipZeZ4ATjeln7LjCh4ILUJcZfK
+			lMLriKDCc0PWuHSJc4QJRorfKXL154cUw9UqGbMc0NXeHB4Oc1mN
+			mb5fwNkTyqM2OTyl6mSmGzxgOl7o8lGxucvYmlwOYfcWSlS2wlXF
+			Gwi6ItXEg4BDs6aJQcfVUhwT6KTKcUv54hwb6tUvqJMk7hSXhhLf
+			1tlsgR104JPqmUm2YJ6HoH2aZpmSGHvSYJ97aGmG+GuAB7gRTB0v
+			8IQocJQHLvf7moSKz3f8BdshWQwQYQwIYDgOiDeYGJ6f6YBb/b2Q
+			wAQH2IuV8XUpKAGHsgBbIkQkMAU3DjoKyUaJ8/JTenw5mAiHnJp1
+			mya4WAI3XuQyQJfSLAOi4VGAVaNWgJOAyIsVox0u6thOTEKInMea
+			E9Mi+XQc3kSBMImCWDGPdJmP+Jj+RvqJQW1O4AUWzMKGoGMIYGqG
+			Pxk2eBiCAvZpII4dwAABCBgJcAenF4NzlUn+p/cQsJdouNGG0GWL
+			YHlxSq++KIA+H0/gABwQAwAFw4CAAHBECQADAgAQAKx2/AAEgwAA
+			A/oIAH6+gFHX7HHI3ZKulLGHi7ZK+XxJXa6HrJI4DgkBgADgjDIp
+			FHs9JK9nnJQQCpGHRCBwACgXI3/HgA73W+gA+XtJX1AwBLXvJH+A
+			AWDwIAA6JAYAAKBoo96zV7eApGAHw9qs93u+wBcooCgaBYiDoY/n
+			5YXO4r1QYxa5GCQVFAJbAABgRIwcEJ0BQPCAUDIoIRZOspP4pHAF
+			FH3XHo74w8HZGH0+bC73Y+au+II/n7YQUCqY+HnHH/pdPpdKEgtC
+			BYPcACwbIwgF450bCAwJpY52Y4+nvYWm1ts4nRX2w3HoAHOweq78
+			A/qiAH4+5LHoJcpGBfx2eNYf4AKi+rrAAAICLK7B/veqL+rCfsGI
+			7A4AAGAaRgIBCdQiuawuEsKPLC+KMHoeLgwYgkDxJB6fwgAqEAGA
+			sCwFF6EO07T/gAdZzm+7EZR1HceR7H0fyBIMhSHIkiyNI8kSTJUl
+			yZJsnSfKEoylKcqSrK0ryxLMtS3Lkuy9L8wTDMUxzJMszTPNE0zV
+			Nc2TbN03zCEQTBakr9ACAK5w0gh9z5A8TzwAACRVAVARfAThxRAU
+			8p1AUYo67MM0fIsaP87LAQECbsgPDoDL0c4LnIAB9AOfCOgGj8eQ
+			yAR/wwjiyIgDJ9goAAWgKDsIH0hB1HJUp0HFUp+H4gjIo4taw0Eh
+			DnIQBoHsyAyRgoDTAAmDCyutHK1ANBZ9rCdJxpkcySnwe6CKwjB8
+			JikFuKu7tRXXFAKg25QctEx74WEuh6qsqSOH8iioqYwiOHueqSnI
+			blSn03D/I/Fiyr4AAEgWst4oZAiKAQp4AApeVAgKih5HesJumojB
+			8tkAB6noqx1HM856Hg208JHmlFQmAaKAMBLAQJmlV4iz0ILLjyRg
+			qDKdTwiiPLaor4XXEapnYvTUuroYLgssoDAO7DUH3c55tyj9xow3
+			T+QzO6frnBiw4IxOVsmg4AAyD4FgADQPgboCRhCFywhCF6ws1bDt
+			H22wAG2ZyKG4ZyOKCghynEmuW1LBIABeHe8hQGW8ggCaEAeCiSgW
+			CVhgKgh+qlgV1YGeSRmsYqy4U4Ts9QsJrnOeK6H8xIDVKf1To6AN
+			ygGe3g2Oe7AAYdIHL3ViOTqfx8QzDJ9gUqx8Aqmp9ASq3TMABHtr
+			UfzAH+wr/L0vZ4KgAr+AUkp/gJDoCIwdwLHYugEXI7I9n6R5+iIT
+			hAGAUA4CQFgMjwNIAAImTAAGZF4HzshbRe8yA6VATAYeYCwDgEAA
+			BEBYBluwEAFQVhJCWE0J4UI6UigZIcLCOODhTDFIkK1IJAQej2Gi
+			OzjI7UipWHyPD3QqenDd6ZHz3oOQ3EE+JBB+D6iScJsQ9iCD4Hqn
+			sfbp06j1Hih2JwAGCRWLCcAjkVCwjwHWQQfQ9iwj1HkdsfBFDuEU
+			iaRw+MTyQEYP8hk3Ts3pwveEooihpywszOyQRrRgGIIskCzgyajA
+			BIxAIAdnxHFBEcANCMtQCSwyPI4gEABRyOAHkwoIyCjDRtwJGUck
+			YBwEkULXIsjhzjIMfaEaYubWjTNDk4oSToBCRp3koddQhxIaFyR9
+			MA/UvEosrMAOEeMHB8D7LKPEfJOj3QwSUfIjA/B+kYGmOAbAABqT
+			gAA15qawYZJQHedkRSlRuEgAALMAAkyrzpntPefE+UzCAk+dkhhw
+			Q1KPoCTc7LeZ/D6IYBQeYFlAj9LLDdtC/ZOj1Z4Phoa/iQAJbIAs
+			ko/H5gAHUA4c6ogCm2AE78hI7gNsRHzCMARIlAj2YfTBSMN0ZoZU
+			cA4BRgAGgQLKBIChDCQklHSOZUo5xwrAfMjSmx2VVxDAABACpgAV
+			A2byY4kZsSwjzHeVarQAGQm2JabYBgESEEhrOPshBOCRhBCyRACo
+			HCEMZIoWNY5knCkcHoO4spuiKDsHKVYZgvTgrRJGOscZYR3DnQXH
+			gCgHiRgTA7KsBJlqfE7AiYBnRFALgfJKX4ihdSOD7HwSMkJFCTkl
+			F6Kkr48R3kEOwR4jAAmhgSAqWV0EiJGHcimPckoBEJMRASWUBbGm
+			FEEHMN820bJtxXZSPM2zlaemAA8CYtLgovFvcKnsrlYwAFBcNMAC
+			AEG6nWoeg9G1Xl0ykIiA9CctGdHQAkUyUVkQMGAAfbdbLSo8OoO2
+			PkgliyMDrHMVYrBBB0DmK+VhOsySKSKqiBMwAJwZPMAaBEstZSwg
+			tB8QQvxpkYrXSCPYeRYRii2JkOwko4RyPFHUNsvQAXin+mQdqHcL
+			5jIyACfyFw/30EgWwgpSqfl1HzKkhdoS1rgqpQysEjA9h7E1N0ia
+			JKqJbFQmNL8tRay9qFR8IEcw4hsz8n1mXM2Z80ZpzVmvNmbc3Zvz
+			hnHOWc86Z1ztClu4JVWTGAMfmiLaI8ABJq0pPI/jrgIeFoZEhZSS
+			47hzl7HceUNr4cqoUAYCJEGndmf6/zlUIL9AYnVRg/ACksAiO2co
+			BirKsI+1uZQ+1OwvR0BozoAANj1pWCIBgEkBRvABckr44htvFm7T
+			WZTEAGAOJ0A8CRgDGAAAmBosoFAMs8mFK9jzz3zDtHS/Qc5GG1sp
+			Hjk8epeomlhKCuIesPQAYXeSA5AswB5DwK+POakn26sec+BAiCgi
+			R4QIkpc7I9x6EYHGNsmt25GufAmRAzVlL7IWmEPQeRBBwDcq9F2T
+			0p0I3/JLWFUQ+SSkGLKA4B5TDKbTA2SMFgNlocrL2XMA9BmLl0K+
+			AAbgzSRktI4PMdxGByDfJqPUeZGMRAUwlI1jACyKAdBQY0tKKSKD
+			9uce4sI4RrEYhpHK5zMOPju0bpoBgDSdGXIYA4CZFARAvIQCbl2+
+			McS2tGygbgzyODdGgSNxwABwjaJqOAbZ52IAuB05kGJaSFX4AsSW
+			spJTNSDa5Fwkw2CyjoG6QgohFCYEltcXobg6Dgj5j+P8BTZACRMA
+			GVYeICx4EdAF44ehTAIDkgXS9GJViQDwQynUf4DUMga1Efo/kjHm
+			n+Z/Q4vSrH5GwAKsAAe4D30WeKPwAU3EXh5AAI8AAi87/d+999LY
+			aAAUMIgIQ7MECwg9ReRDOoMQP68BsCNWYNQRKzAoAwpn4P9f7/5p
+			tQ4/pIRAyYCbD/pNSFZB7dhI56ZwbSLWSFQ4SZEBI7RsqPKIQ/iI
+			yIxB5DgsCcqLrhUDZfiL6LyKo+D3DYqLxprc5lI85e5thsAq4mqs
+			AdqNAe5piNzubqaPBrw/g3acpdbGkDhASIw0jBpfp1SYC4CVIBQn
+			SR6UohCXa7BCJnL/K2iVzVyugyZeyXbjqT6TCUSWY6pS6+KVAgrR
+			AgqVpQIyULjWpoTB6Wj4gyKQZGJiCZDERQrmsB0BpF7GqHRHI0hK
+			TcowAcoeZvIe4fQsodoe4iCa5LIaocAbKcQcMSAeorC75cb7qNZF
+			4WI7IaZlIAASQAATS78AsUkUsUxHYOQAAMpSoMg7KlYjkV6Sijws
+			QfItJVbf7QyT4fwhgAaaRCCmUX4wBAx0wjp9g+AAgvQdgCIdTVKk
+			ylACgdiEABAfCEYAIfgyCtQvYfZbDKzSI3ZYZGICLsjdoshuwCyE
+			YfjADX4cY2wcob4r6OpdSIxHQ67YzC4nQEYFa66STkLAIdCr0dQl
+			pUpkIr6G4vwhhZgpgCICwkYJQMwhgD4FRoZH8SorodIwDqgjgcrj
+			AAAXYUzVBkIkpZhnhZ5iIBYhAFwH4soFwIB74pENqZRQyTxiAeoe
+			AigdYcQsofAegkYc4cA2wX4WB3KKgggnAsoFYG4tKnohADAEIsID
+			IEQkpFiKBDSPyTpGLEgigeLFUjoUY84cgbS2ZGK+qQAsQBwhADYD
+			4iBjIyztInYCjB5oaSIggcTvxUR6QAAdIb4hCKjuYsJGw2xhTsIs
+			Io40gsIA4zYna+cMohEqEhS/S7BggsIfJ/RhQ2ZqQACxYqxqgAAe
+			bosDpExf7To4YAB0Eo4GwB4iKy7C4sIFIHEwjqJyqprbSJh8we44
+			IAAaAYJcBbre4dS5SMbG6QjJhHZGLGo0rHw4TH8BaPrIcEpsg94+
+			xQJAjmJPKIS0Y1KcqOY+gjoj8DcCrIhGiQgBSUBCMibHBrgQIcIb
+			oabMkU898+E+M+U+c+k+s+0+8/E/M/U/cUgDADYEIZptAGRPCucx
+			CYbmIAKtS2h3IkZVB4R0wtLHZU43Z9jADHcIpsyFk7hYIvU7gAYA
+			whAAwBZC1ECiQjq3zThDY94fSOZ1DRsAYBEOSF6WgArpIAIyRAZf
+			oBAj4443wnb0k0ozQ7YigqgqxGx3yIJnoyaWg/pPgjA1MsQkYDID
+			oiACICgnS9kowiLDBhgjgdYcg2ywBqYrhlQvToj5KIIf4fsvhdo7
+			Td0cjJSF6j5CDo0OaRgpwiBpJCDTRO7LQjhlQkrMQ4Kr9JQ5wphQ
+			oBbeBuwpcMgesEgbg8EHxwMkonkJ7TQuovQd4dp67cpuDDMcbkjW
+			wEYhAHIJYsoDlUYvcOb06Wq74eYsIaQYMRAcwjkyggga4Z6NtIpC
+			CRgCICAhA/AigCACitoLQpgCgDiyhf8CRH8voAAcYa4wwbooDioA
+			Adrb4ABXwq1RIik1wnQGYIiEcLAAtHYtQBFF6/4jgeAdQtsEgZYX
+			RUoZYXZUq0gsIBwCi/ACgpjh7aAC4hFK1EMMwBD9gC4EDqa5wcYb
+			LBAbggjogsIfS5y08zIeg2wfqk4/wBREgAZBYALj4CIdxR46ofLD
+			IdhvIAQfYqEHofphaHwAL/IAIiY0w4VjYjtcr4r5QkCj9nCjw2AA
+			0eCj6jqLwAZUqjrVAigPT7MUM/lpdphNyBzZxuyBkUQjj9AAAERF
+			7gTOYHoE46QIIFQjYEgCxvIBxndpts1s5KsA8ABIMARRNtBK9tSH
+			5GSHNuUB5HUAhHURjJhDdDECtLomxhhs1vlwcfrkKJNw6Lwegggo
+			i7hBcHtxkEqMIehbZgcEkirn1h5UsGA1BlCJq0xOseKPZpxEiQpO
+			ouTY1C4kFNSPK2A0o60JS3Q+5QbEVETf6RggyQKYRrQxo57fF2yX
+			oiiUSSyUcYySoycflcl4MNF3DqVBDuE6cq4n8OcYzTVPcP9VqXkL
+			kBzGyHVu7G1txKAvLyoeotJfQwAdQeqEdvRK4b4w4AAbxXxGoeTV
+			AdgeNkD7z3CcRSoZicoAFpACszoACfl/Nt+AuAxLQOIAAJ47OBYj
+			gGI7IGFuY0x5zHaVwf4nQCAfKBb05a0YAAdkcISQKmD21nLzgDCd
+			Yfh8BAVi00odJWdn1Q5DBn7Gs5jIAggeYBaNoAIB4r4EYDotIDQB
+			6EYHIEeAAfge4kZg4kob5ko+BlCHxkIq1JRnSSi4IBIBghACoDRp
+			A0pEAks9h4ouokpqBYJ95s5QExBZYCYkYG4JYnSzs617Y7KJohGI
+			49pOodawIAAZgXaNtyAA1Etciucl8lIwAF4IAnSViOEdV0UB5SIe
+			4eQigdwcowDEgkaMwvQYoXJ3K3gAAEoFxuoD4FAiAnExoEYggDQE
+			YjAyJpUHppbSRdSOyMgAAVARI4IboaJ7oyQBoCQsrZ4o8pgDwhhi
+			QkdgspgEIspYhiIBy2D17cQggYQVY2wc4b2MZ81I8u7BqQZSRStf
+			gB4CLlExKzopgCoDpiyWixA2wdJXgq7kRqMzY+SZLkzfpQcChcZs
+			IsOK4soDwEiEcsl4QhID5CYySNIl8ysdQeAdo2wqg2y0gmQdIvUy
+			wydEdxOOY0gn8kpQ0DdlZ9FHiXxRtPx540pVF6sBs5D3abtwMPdX
+			kYWCTKdv1Dhe75JSpfim0BFkJE6YwA+KhCIhDP8AZO4YDi4aYIOA
+			+o2o+pGpOpWpepmpup2p+qCewDoD4ExRF7g06X8PhVAfBhy6JQ4A
+			wfwBb4ZR6OBQyGp4Os49yJhr07sqRQdEQwFD5GKPQt5yutScofIv
+			RBlF93Lf9Pja5rBAQypRQ4STUBwCYBoph5giCSSvpdYdIcor828I
+			qRokYyi0xfFRwqyLRUqiI3osozonWK5ooDYhgDQEIhg7QdEd8vIc
+			Ohq5wohtz5KHoqEPaYEe8cgwGYgAAFAG4wBvgkYsYkYfeJBUW4qv
+			JfIsIcgbJc6NUEaogcZUrdM7rzSKV44jmcohAIoLotJ0Cs5OpdBE
+			iIKiLLgAEuqNaLe1ogjilh5doeTn6csvADQEQwAGoIYiG+YsqVgs
+			J0YoyTFZwbwaQkd+aOArjMQmoeYeTrSPAfUFgkKWIBwigGIIowEi
+			O/Rew5yX8OcAdmhiFZwb7vK753Mzod4kocYbQqwbwapUuK4jgE4G
+			gpgGAIGYd3pnQgiUQ+pPI4yYGWYYgWI2wYgWRUqKkuLf4ApmiRho
+			wnUhYwCVgkYp0JWkYjgcIa54ocwbteiLqX0J64JYREguYAT3yF5D
+			bSLczGk5pRM5FVgfgBh9FmlBJCYe5GIfo0sYgfp92Cb/xSEbwAor
+			QBVonPqcr1MzoAg89lAfQbpSoPYAASIAAVOqPSGpIigRyfodAAAD
+			1/oWRF/THG+lbOoJIF6lYJYGIDhjYBYpjTBR3SPVc+tuNZl7sCF8
+			HVhIPVxVMCGs5KmRqHkDXOmWDIl0WmtNM71lUHsygl5haI8DYogk
+			qNgkpPhfp8yNmtcybdZe9WtxW4znr3WvCOi0o+BOrqlBpOo1O8S0
+			YriIkHt085wuSJgfLVaHwud15oGuK4JZF5qURFaWmYE6ZnMNAv20
+			GLEmC9iS4sOKjbPg67DbCU+RRASYTHNgaTpS5nDG9D7yA03Hc9FA
+			6R9uiZJQ/jt7nWOsxKAfEWd9But81bIepup1FvBJ4dAd8Znl4de8
+			wdQcvmnmzO4/otpSoYwvYAAMRuUzIAAOsT3Wfo2AwOAAAHI7PpYi
+			gI47IIxIB4WCwwGDLXmDhQOEAAYe5AqjGD5h/rgjoAjj4Cz1p6oq
+			2EgBwdrXgAoe6Rw7NVmsxn5fxDZ4AeHtRUQCR3IDAC4nQEoCqBYK
+			oGVq4fu4oZwXTzgdYsNevMcqoyIkYBgBiyhFZoe0d0YAAbQaImob
+			wax4uyYgoBXgB8iILKIvTggvSXasohBQSQdPhSLTWNM0oCcJiYyJ
+			ogjglxGm3iIjgDgEopgDgE6oR8wb4a4mrEibZ8ybufCp07pAp50K
+			XazLojgEYFopgDoE6nis00rxaqP7hA60IegoAeIkYuoggcIbAmrr
+			2ipGqxKkAcQku3YCoD1gMKayPvsM4kYCIC//P/YgAAAoHAAAA4Kg
+			oGBT/ADzdz+AC9Ur4ADlbb9AD8fkMdble4AfD3jADAcMA4JAIAAQ
+			ChgGBADAARCoFAEumAWDkECk5AD7fMMdDffIAc7iob5kQAdrsj8+
+			iACAcpCISBc1BIEAD9jc9fkQrUMBALmAXDYJmoHAQABQNlIKB0pA
+			QBlL3esYukQfL2fgAdbnj7ocT2jNdnr6vb+xEqANpBAJBAAkkwAN
+			RlQJmD/lIAfz7jD4eUUzUMklYkk0uUFAGZlOZtMqtGpmGogr/f0M
+			2W01D62UFxEYfL53T/3Earz9jHCgoEAlpldpuVwAVYuOZ1G9AHCh
+			krmHKmHaADfbjU6m78nl83n9Hp9Xr9nt93v+Hx+Xz+n1+33/H5/X
+			7/n9/z/wBAMBQHAkCwNA8EQTBUFwZBsHQfCEIwlCcKQrC0LwxDL/
+			hEEQVAggoAne8iGMQiDsNREh/H7E7rts2bdqg7YBgI57xs067dtr
+			EjjNChjnpUAbnNO1MSMI4SINTEDTx/E6NMOxLZACAzbNaAwGgMgS
+			roKlYAAeBqaAuCgGAAxysAC2x6Hmfasq2fh9oYfK6gAex6Iwfs3q
+			5Nc6IpGa0ggCaCAmCjHgSBq0gsDaaAyEUsMWlJ2nOoZ3nQoc3IYc
+			put0ep4r24yGH2fSU1BJSCgcCMsAbU4AAWBy0heIEsBQGysAaCS0
+			nseCUpCtJ9I+vhxowdpyr2fB6zge6IKKiinAAfR8ogeJ2IwgaUgw
+			ECYCwO4GgACQMNi+p4HWlJtmYrFipTZQAGyZp6qUdDdAyEEsBmIF
+			t3jLAFgehgKg8vYFghFMitnFzUHoeUTSQhyIGIVrdHMbq9yGxE1y
+			SAAGAgmAeCdD9upoBIGJSBwLTWAaaYGAFNpSfy9gAeFpXUZU1miY
+			LdWY6KIAGAyMAIAq0hWHCEYu7caAAAgDJSAzXp8hhpmOihqmQoaf
+			NQ1jY0cAAJgwx4HgommeZCB6sVY1rbHOoQAHUowAKRHzVSCjLEgD
+			okpNQljNTOjIAr2zCGb4rICZY1ui76BkkbsAJ9LSAh4qxvKEq8Ba
+			MJU2zMNTyUQKyAy9n0Bihn6AvNgG3R5gIeVm9EZLUD6ABIAAXcNd
+			h2PZdn2najMgQAW2EaMgAD7IAATLUA1G7Tdq/QDOWgXkiWF4OAAJ
+			gY+cBQDO3Lnjev7Hs+140XOpgjzOQ93vSX7fyvx7rke+80bPR9jz
+			szykXfU3DCuO5DEIYr7BoL/UVfyitNixzfFJfwddyQ9h5EYHqPMj
+			Czn/kMHuPQiCbiCj6Hs/lPDbCemgToQUfizysj7LSYglJWi0m0hK
+			Pt+BDFLIoM0kgAq327IvYmi1KhonkgIAUd0ygBQDFpRm0gsTRQCk
+			pASAs6TRCXEpAYA4mgCwGlYa+ZCIpAgEEtMeZBxrPDktHaLF4gZB
+			YfGrNiVAgoB4sxmSAas1CM0fGtes5hirVy4tUPI+59xu0hn9HyP0
+			mA7R7lVHoPkmg5R5lVH6P5wSAB4wIABI0ea6hxjdXUOSShu31PmP
+			a90nqOBoO4D47gcwABtgAGuAAVZWZNSrlZK2VyGg4gABIjd3ZaQu
+			GoluelM5KQBj+KwAwfi2wBR+JqPwmjmksACH0aQfJMABj4Jo31tY
+			AnPSqjYWggkQH+JbHya1JDgzNAJIgP6XpDQGjwAAPcB86AFgLJoC
+			IBwD3ngoBAddxIABuDNIgps1EAAGASJTGMs5BUyxELgZQg5BVmDV
+			GUu0bY0TBD2gYqsB6WImuNNyPkvY+6OQvoUPoiEe0k0iaQAhPwEi
+			CRBRa/wrb9KVmyKgSkCQGidAaSwswagyJIjuHUmuaSoH7M4S4x9R
+			pp18lYA8CMhBByYAhBYSkDgKC0xQaROImoCoJlDAAOYbSWB8D0JS
+			PEdpexjC2HcAAdI4iKAPAmlgDgIiEKsJoBEDBBQUg6IKAgBhojKU
+			xJVHCvrjUhlyjeQUeg7yGDDFWRgc43lP0gAAOEbUkaJF7AgBUrAK
+			wagOYsA8tKhSCgcBUSYlBBgElpJdCNyQ1Ri2MG9PseRexuDVdNAt
+			NaUIoFmh8VhpJaVamkMo0aJiX47GLpDOU6kEViD2gaPhaA7yKDvH
+			UR9HkAUX1/cUAW4Bko6gCh3S9lZnR41aRwjO4BpjVGqYq1QBBq4q
+			o4uubdJA/x7vfOsPpZyLSvGEH5Ik3ZJHFAEMkYsgQBb0QnRwqBz1
+			/sANFaMZBt54Bqx5lfhXC2F8MYZw1hvDmHcPYfxBiHEWI8SYlxNi
+			UEoJQWgfORJdgb/x+ElYIilEz6cbPfObgW9BKX5I4fk/dFUNjUnj
+			wHi80LezkFywCd3AhtS8D4c8yu66JKX45AVlfCB26TAABOC5D9cm
+			imUkyb8iA3hqLtgWXsflkL+prTubpj5MARAoW2CIFNnAGARJSBZ3
+			wAANAlOy41O8LCtp3IKOscBKR0jfLmPUiA3xqmCPCu02hDGsmPAq
+			BohBay0gqB2WkEYMSUqpZVIozTkkoD8HwUAb8LB9WPIYptNcDp0j
+			0IYOKU5GTdVXILnwjBYYjALLSC0HhCGSkpOUQkBZojWkOIKOMa5N
+			CkEFHYOZNYyxfSRHvROy5WAQAnLMBsERBC3EQAkBtNYCQHI+hdGx
+			LZsWeHMMoPIdpEBfinIoOQbVPmEjxN0/oBrGAABBCsh9rJNC3RMA
+			mzsA5T5F0EAYWlcJGBbCaKGOkcNsC9wLN0PS8aQKTkErYWZpMRgG
+			EwAiBYmizlkjhIoOYb11KWmn3YlGOrVzlEpAyB8x4GQOlmZ4TAeQ
+			709DxTXRyCA+5xt4HuYaOR427S+U+ArNwASID7AIbod4DR2HXnKA
+			Rz4AAID7AiZCYgAYRNFHloLHgBurgNN1gS6/Vn4UKAOboeQDp0R+
+			K8AE30zyszDFskkPwABHAAGbifxXi/GIFduQgswPSVO9RwIRJIFf
+			FAMAO2IBBWHoAdAAE0GDzvG+l9N6e+KZ5pH8fHu71DsX0erj0igy
+			d66XowPKjbdzlGKvqU8s0e9tzke/VBq6CfSjB37hYnhXpeICQAf8
+			yiibBiMNLussW/ZBYNaDJ7CDNaul23WZXCdyo/x+fkhKyw0NHqRw
+			uwNEBxvsm9o4MXXygICjmGtu0QVnJKQDuTqDAAK9CaKVAEMtgGKK
+			lVonIqJeGiCBiGIwoqP+HGkZv+IqsHoiN3ktjWgCCCK/v+I6mKiS
+			FSOnkloZjTpFn2PWvbEEh9JiLxjHh5pCLIh4rOJEuHj/B9oKQXE1
+			hoBuhqgAQfQgPVpMsTBtHfhLkbhvAABxgABcJUFmvXwpQpwqDynb
+			p5CsLOEsA4DUJYvXI9HKuGiCO3JstTHNCCADh+iCG9HFB9CaABJo
+			DUv1B2jWh8jMmTB/ALDjorjUw7DIB2DYkXACESAJG9iSiegEk1h+
+			AFO4jbALh+ltgPAAp5EbistdnMDGiUgWAdiCAJALC0gCosgGOFtd
+			EQQQkcINBmBdGnhiihh5h3iIOUksAJgLw0AFCUgNARi0qEorCChz
+			Bvl2ouE2H+JiDNoKifpHh0iUoKNdCIB5h5LboACwiYAEktLUmLAI
+			iYAJRalmoQBshnl2loqfDUIPk7DEkgjmHkL1odCYAKALksR2AAAR
+			gYCYAOATKAgDtkADiGGjPqqtB0huksC8iUmFAABkBcuutqjdK2Ca
+			AUgaJ5IoOUK6gAAVgfCGC1nznKEkB6B4CGBlhbCIB1wmgAOPE1hy
+			xgSSFOAAAKgNksAcAjAJkugJiYF/iGARgaNfgFsKM1iGBzBti0to
+			CCh5B3CMBkheB1m0BzCKGrgDCXEgCYFTJ3gWCqgDjXkop+oAB1CP
+			ClB1CKFejOjfm1jgIXpxk8DhDVjTympskuETkVMajsozEZlvmVEe
+			DjKQkcDvEYshnMI2MePhvzMhGcjLklsejUh/S/EUESDcETjaJxja
+			kYS2P6MCDlACh+slIXCNB9Jesgjmh/sDADFQqRA2huhthqBNwqzU
+			TUzVTVzWTWzXTXzYTYzZTZzaTajygVgVAZAOy7BpjZoRh/gBiuh/
+			QPHKjyy7IXESiWMkjTjIshseDqu6klL0oDHLn8sZshGVTsEuC4jn
+			I6kjyxDdEVH7K+OHjpoiEsMGgCrTgAAZgfgJOxAJGvIfiBQPCoCG
+			B2h0CIBwBrjBIIrmiME0lKr+kyLvgOAQiEAPgTkxmLi0gLgQCGR7
+			OTDVm7K/C8tqBxCUh0Bui5tbJ8Bpl2huBpB6DBiGAJAKjHxtizQE
+			C0gUgci0gRAYCClawcD8vrB2ByCGBqBhCUyhiGIEE1wf0RoCuUia
+			AdAlT3q2CsK9CGANATDdADCzRuiCh7B3iaCtCCh3BzCIBoBhE1tt
+			iGCQxnB4DdCQqgiMwdEWiMAKANQCG3mrlUisANAQDH04CQILgABt
+			BljBFwmWH4m+jbDJybAWizAHAJEzOrG4Rxm2mEDyC6CGBthnIFSO
+			rrh7B6s3EeTuEyIkC1AGEsCTi00kiYx3jNCtmXDdB1hzHPCth5B4
+			iMDawVL1QAgNgQizAOgRCzCSPwDOrmSxCIB0h2lKoAKNL5kQEXG7
+			B+KrQ1CvOwG1gCiKB1AJByjNABlph9ksALB5AMmih+EzO0gCHSDe
+			MeTKlmgHNdxBjZi4DbiCpoCPh1gHB1CMzgo5PZAABRDUA/nWAABw
+			TbV+V+kLwrlVgAAtkknfCIHbiUkPsTgNAICEAMgIizAfAUALgAAf
+			gT2J1/WMWMj8vYr4D9wVsKWND92OJMnvPJvdPc2USrn4DqTonwzj
+			i8rbzHr+urrIPrFQPjvlUSG11eCkVXPoHJIFoFSVWbisnJB8U7n9
+			E42coPqWNYk1IQm+nJSzjIAAmTTimiy9vJkhJeDKOn11HLEQHDN3
+			v/IsvawGMHCUgEFDWzmPmvIlCXrOiCIoQCItoqxQjkx9otQJwLEt
+			otmiRhI1EhmeDsmrDKEhwRo9L0jWVAC4JOPZ10QvkEulC0h6h9CC
+			DPksBuh4J5QbkBpEk7DcBqhwhsgABqBwXSB8L8jgLyPFhzvJwn0c
+			kcQkhHp02Q3bXbkDA2iDDUCCCsA1DUXfte3eJMCEh/ksACh/Jkzg
+			QBB9w0B9jHgBJyDIQ3DIQ4u/EQQ6PtMeQ+B/AIm9gEkfQ/ABB3nG
+			r5gCCvAJKfRDzPG+w0rrgIh8iqgJnOTDR+ObjTmPiUgYggNMAMjt
+			3wGLAJCRnGynDdoIiIBkBaChhkBZmaxkU1iCNM25LPAAASgZmxRK
+			CDtRgKFOkeGpiQB6CsB9jQB3h0iIBphhChh6mDmWh2u8B3zwitgI
+			AKCCYZ1PT1gHAJisYZ0rGWByBuCKIES3vkqXoWvsLrNKlmxLo2mT
+			NMjWjxppJx2jFfB+lQoXiGB5GXyeCDMt01z0DKALgPisKoxQQPEh
+			o4jqr5jEkoE6M3DCNpm0BuiYYVqArS2jt/r/RtiaAXgeEx06iwiI
+			AMgTiIQMFevtB7C5h5tWCIN9L9iUhpBkkRB3B0ihjJomAHDHsDCY
+			U6gQAUiEQDCYEdDrh+RlvkBxBtl2rJF2k3CIL8Chr8Dgr4HKrBsC
+			QDS1isTvwdU+m2peWqpMH7xKo2vascqRS+GTqOWYuHGBy0TpK/si
+			o7Mco5XiHwMZh/zKB8CVm9GqJE3msnEgi5B9SmgDFci5EVjhBIBr
+			BqhohGXcZ253Z354Z4kKiAiAACBQOCQWDQeEQmFQuGQ2HQ+IRGJR
+			OKRWLReMRmNRuOR2PR+QSGRSOSSWTSeUSmTisUjEdP5/v9aTEAAK
+			BP8BP6dAeBzaDP2BgOYv4APt/PwBzcAgB/0ubTYA1GmUsAP6qP+B
+			1GnAKk1KmTqiv2gP+wQSl1izVKvVoAWKgPx+vy22KagKbAgFAgAA
+			MC0l/v2sPl8Pmqv2iAoITYqmsMgAQCgEzWhAC8UABgSBTqsPp6wL
+			DUt7PKsMlbPgAPR4wJ8vagPh63LXXIEAubB4T5ERi0FAAFA2lhAM
+			1gJhuiXaBPR3Ut58kAPp8VhzN65Ohv3J9vmsPR4QJ7PGsAKqBEM0
+			TgUACAWBAYE0kSC6eAGfAC1VSCWWCP19wJzNuBOpxNA7wAHqea5G
+			2aR5LmrAIgq9AcCOCgAAaCSbAOBSsAuEZ9AAAy9MKpbOJsmClngd
+			KsG4ZyBHueqiHqeSgHKcB7KKfKiLEoh9HuuS3Lqmy+KSuybAlBjH
+			BU3YJAuAzTni/J2HHDTUPygi7KWryaoE8CqJ8fp9KweZ5Q0wSgKY
+			m6aPqogANWoh/TErilgeCKeAIAy/JgAB7nsuTnKABQGJsx4FgA9r
+			dgGAabOcoh8nuoh+H2rE7qIex6qBNa0PlNDngAAgDqWEIWMwEIVq
+			SAoDKoAK0AErB3njDRYl2djmncnjVoGpq9n1UrMsmf6kraASgHmB
+			7UnoBbU12ogCn1JIJHZCABn2zEpH6m0yn+AiiH2B0NV2rCmxqAK5
+			PkzYCQ0d4FHctoBzEhCiEeqoAEAABJgBBCVXre173xfN9X3fiNDM
+			AEIAYAA8oGD93CRS1AX7fQUAyB4ABODQHAAGAPgkAAYg9i+F45ju
+			PY/kGQpHStTW4j76KbKmRZXheSJpSqzVpKz6IEs60LZMcxqgrKCq
+			uvz6oEfh+KIe57sIsisUZa8aRnG59Wvp4AaVqR+MC1jm0UwrPMBA
+			UCAA7qgH2oy5oEfB7Kw/DNntGuuOurCj0dr1GbfSq0MxJOa5rKip
+			AIvj5PBTIB1Lve8rQyazvkyauIEAgEO/XjLqWAdSAABM+0yAqlz4
+			zHIw2BDMAYB6eN7JPOgJaACgOrHGoEy8r2gAQCKx11MgJyVoPhmq
+			fAKArvp9Ke87/vUqVRnkq1LkiDZQtV86GpZ8H49B5HwnhtHcCOpH
+			8+KVGychugB7vvnjFoAfGeeWXr86lv4gRlgA0w6AASzT/R+v7fv/
+			H8/wOIADHSwYkxgsIGxMg6pmVJUe0hEfYDQAAMgWTUpAAACj2L0t
+			8qBaC/pngw8UAJ6CmPFPumMpraF0poAUZ1kwCR4qAAKPxJIASrAA
+			NokkDAC1AK+IEPMdh+R8D0LkAc2gAAVAzYEBACrnIPAKAc48gwFm
+			DJoHuVgaoxTCDTGIho/BSwOgmPQBwEqSQEOXi2UmIBSwDOqcqA9Y
+			8aDXECHcOUpKjI3DoLkNYYyGjQtEHvDyPZ8iqAOAkklN6SUOE2AY
+			BEzCCykj2HmVgco20NDzHgUQmLSWoplamipGrVSvqOHqyYgw/JLl
+			oJ0mpNZTIMK1LS604yWCau2gaA4rpVG/AAAeBQpJlynu/cEmQqqZ
+			1KFFH0UAdg6R7zCTErUAqmjJFJAuB5JIJwamRAqBs9ACQGlYAwCI
+			8zeDLnfWgUcpY6RwFLHWOAmw8h3FyHANiY43BpPnASAszADQIpJd
+			SUk2ZS5pGYAgBYmyoyBALAgj9LQ/UPj3KSPcehRBmi+NSMwXw72p
+			K3j8zdMhgR8n5aQTV3IBozzNk6W0spNC1q7eCQSUBPTjFsPpAYgx
+			NGhFylLH5mxWKXFSSBTYgqhFeEIZoTdOpB1dunHwlhcBmR/j8ccW
+			RwR8B8unAKO8rRgCyDLLEPwLY2hsjVNM/qsFYaxVjrJWWs1Z60Vp
+			rVWutlba3VvrhXGuVc66MrBQCgFgO3TgEFQVEAVSSCo2ASVofZdg
+			Bp4AOPwCaNYW1/UAURwUMQAj3J9Boq7eB/JcZ4j0m9GSitiZyz2E
+			BWXkFQVNL9RZcbUUiAOAg9BXCkmafePc0xcU9mJAAFMMoGAAAmBi
+			oNXgDAJHmg8fUfh9CbHdKwM8XxRB4jrOyPAuQ2hn0UHoPI/IBwEp
+			+BUwIEoLmJyAJsBYEBRANAlKInKoJBI5ICHeZgeg7SkjxHaUAbIz
+			JjjXGSjI5zaB/H5LEhpSyEQHpJAcBAvTnU2l1PSAopcwUyzBoYYE
+			zswmkqNfLDtshkiBAFQshECJ6C+FYAQZHDjPS9s8lEdk1Jbakk0P
+			Bf4s9pyuJnKDS2XrgibANAmUkDoIzIyAKSi2Yg5kNItTy1kwzb5O
+			YLkKXuWEqC21LpGVGcDNyljuHQfmUSZCtlLASApJNhqRjvHWYQfc
+			wzeANKSCUF5uwVg2YU7lLZAjrtBXAPaHxpx5qTa4WUuJS05ECBEC
+			8pIIQWyGAeU8ApQHYlEHSO4wglRRjlLaOmx4+Cuq1pgVPOxVJkvF
+			HsBF849gGj0KYAO9I+EkgQHQ9gAQ+y/aqLaAsuSximOyKKAtDQ/t
+			aHWfKAY7dCCx2nWkmJlD9CBYVXiW0AAjNmmErrtPam1awrwuSAC3
+			iGhKqWifEIgZPNrEFBqCJCANQRgTAACMC0DARgVgZuPeW896EieT
+			Z0haZSHvLZVvWsW97QsxVozvfGUibrTZvKqDGKNc74LK2IoBqEZJ
+			rWuPsoA+mmJ6Oa0w66i2xtCMC1lHCamuFiUcPQoEjOPNvTqPpGWL
+			jNj4TUuAuMpm1czZhKgpzuY/Lhb25IAtptBSwLWASXZSwEAIR/LB
+			QrNddHqd0U6Dx58wALlzLAAwCke9GQ2AkzACwGno7BiLpksDzuzA
+			NEzE6hHXuvdmrzBZXm+u67oz1XlOcsc+pTevgVoe+EoMAUso18x7
+			k8GuOzdTQ3tkpHGOvS3jRzAAHOO4dXkvKb+IIhopY7SBvuKwHMga
+			5120U4L5j03p/UEgfiE1d3rCsBMIGY3fcCVssTAatiCCooKHyH6V
+			2EWtFurhs8fTXzaAEJqhg+8Apph9fL3wAwdbDwGDqgIVJCpSwMgX
+			MiukpY5Rq6oHgOxDToT0AaBAwL8he3MwSU2ZKoN2jMtcHkO/iN9V
+			Mt4BUDopIKwdoUiCoEwYIKdipwKkP8KIGiF+KwjytmKIHcHOLk54
+			BABYKSA4BMc0N8cwKWdSKgcAjOKcl6HkHYKAF6FMRknIPytk5MtW
+			zImWK6OMQqLuPXACUISol6HSHEQ0RUPyuuo4xswGlUKotalzA6u2
+			AAiMMw6oygIEkOJsoYLGg0Vqtk404wLebGHaHUNM46Z4AWAYMiPO
+			KSAsA6PQBqCOgYAmAwMwQqKIAkA2Lk7O4MvYwEHQG8IEHOG4nSnW
+			AAHCGyRkG8GoQQp2BIBgAglskCAAAmA0JsBSByJsAoA1A+daANB8
+			KquOTsHqMxAWGIFmooGEFkoov6MoAQSStaSSLIKIHmHmRkUY0cdy
+			d4xE7YkqK+s65ypwwGpEzIIKLIlQ5ytGbq5YkoxgLU7ZDgeG7tBq
+			VweEdapiOwKqwwIOKsLsXAkqqWg8ZSKioQKibOW4W4JyLiA8G+G+
+			G6O29THJHLHNHPHRHTHVHXHZHbHdHfHhHjHKBSBOBUCyTkAMEIPA
+			AGXAhgKuK0LkPAeoASAOHWHmAaHmBgKsH+AWWkH8YEJiKSwEAAHc
+			V4qSV4H+Q7B+SiH+2ZCg5YLGZIxmqAb+Pi3678VoLApWs8HwMGLm
+			PMV4A2A+7E60gaAgMwB2CYYuAuA+dKWgAaAo2QM2sofAGS2WHiKW
+			HkHaPyoeHWXmHcSiKoA6BIgYQqn1JqBSBwSSme6ASul48EosHqHj
+			DwKXLEKIkeMIG+Go+Y44H0TAHxImIEAaAgPQAadExOjOVETmyhGQ
+			LtG2OOkmaw5YKwNc5Ck2ZMv9EmpVF0LWKkUIMwSqIWL4KW7AoMcY
+			6Chklk/cLqeJGKAWAcJsmq7E0Wa+5QAAHaHMLkz0NbNMHZCwfeUk
+			/uKWAuA0N2jCKSzCKWBQBwPQAeAqR+MmAUjU/YbREqHsHgjiotMK
+			fAGUPyUSNUbWAAHKG+mOUSKAnsJsCSDGYEAsA8jIsHFsRELbDlDo
+			TsXpJaKw/CLkHeHU5yAiAuN/Pg/uIEiMx2AmyyHqQ0FAFoHEP6YE
+			V8KgoQPkhi4CcQKUMCAQmOH0AQNMZMAO92AO8KJq961yUWAWo4Ws
+			1SRuAU161osKPyHgAMXO2OIcKwHSIHROKWEuAAXaExHlRfRgrSXg
+			vgAAA62cFeYKgGJ638CGBWMbR6t43gL1SFRjSLSMfuZdJWIW35Ft
+			SOZEoxIw4KZhErF8ZlFlR2KYPRFiL+IE4xPWHa1Q5qOaH1OcHuKA
+			TC42Wu5kLa4+k4USKIHwaymCtkbMUQk+akwwLoakUwbhTTSvTmTq
+			syW4xstOZiJ8PnFq6kcIdrM6/uc464AdLuPOR7MwdoPUpwJ9MnL4
+			AAu0ly/WAKAQR66aPUKSN6PQc3M2c6m+led8Zq7gcgcVViSul6uR
+			JMZ4p4K47zUKK8ZTSafyqGOKAAHgHuL0GoHUQg8UXuHanUAAHY/m
+			AAG6HOHCAAG9WlHUGYTGDg2cHREOAAG+XeXdSdXFXGZWDkAABwIH
+			XQKIDYUsBGIhH8gU+k9wr+jIHmJ4V898MyAKko+TUK2cIKH4AJTO
+			AYtqJyKKAIMIH0AG80VqAcHYYeAaHZEIVMoCAYKWAowQgkUsHeG6
+			NMHiHc/GAcPQAuA4MiAWAeg8eOb0MyMyqGTHC0bdJsIEBKBmKWBY
+			B6QpPALjL/Fy5yAAnIKIGQFm5SNFTxMIaudSKWBgCEPQBkCHDTJq
+			Ioy0LkFUEWO2HAGoMJClTI4MtaMwSEYFCEYAA0J4AiAsPQu0JtUm
+			yhCaNeAAHAGsNMHCGumObnZYIKQ4KSx5bRBlZOKSA8i4Q2wdU4xM
+			AoA5UaHGG0PyHeHS4vGYHMHCfOHQHEM6bEadZad0JsATc2MlDTCL
+			N8SSb6KWBIBaPQmqdaMmbTaM5gAAHeHQKwy0KAk0AAHIG4fONWKB
+			VIAABkCAQgT4PQAm9kBGBkSCAypu4MKOIEHaHQKAHgHWKIuvAOGK
+			fOGkGMfOy6Q2AOSSAWAUJ5FiHoHomOtsp4mWteONS24WeTFiZUdi
+			lydc+IlPFMp6bqVobRXCTGPhbVGGK8XUgKp+l6wGACp+WgZyH8aY
+			H8UxMXZ8ZyACXVfolLGnF2aoH6A0HMHMHJW5XJg1g3g5g7g9g/hB
+			hDhFhHhJhKImBWBWBaB8UIAKDcr8wGAkdyYeKalmQ0MmHuAUHuBO
+			W2L0oDfwakLOHkV4XUPijQSsKYSiH65ffulIMNFyVKl7F0UsLOcA
+			36VxUPZbJAl+beLoHza4R2cBU4+TgAAeAmMwCWDEMbcA+2d6AAAk
+			A4KANmbUIEHIGuPQO0IEHiHYLkGCFjROHcHSQ1ZiAOAO7vbUlgnm
+			SSAZZFU3U6QiAkKSH2k4HmHiKIHhMCvazTTORzi3TwMIUYaPF0eA
+			AQAPkOKWAwA8UAA0A+gZA8ABPeKSAcAooC/WOQKwHrHHTijmLlBC
+			KAvoMJTjTPOjFiZ67UnmJsA2BIhYcoTLZ3NOy3gk9Kou/Y72cBC+
+			57CMiOAA0QSSzCPQRVeaHULlnATROiHcHWNMbMuIJtC4wS64N6KW
+			/zK2A/UeIEAeAsKAQqM8SiOQMwRwKXOeAAG4Gfdkkaa+z7beGsM6
+			yJkeJsCgDcMiAwBBNwcuIQPwNUHrCaHkJsNQKxD2PyG8GkLlbsTK
+			Pgdm/WA4BJN6A5o4HyLkF2GXROH0HhQCSoHoK7oyeDIeTUASTPUO
+			HoSoHqKoxsw+ACxMWqJu1+AXQa2NYM1YNMe0KAWkLkHoAIfOe1MU
+			IUGyIGG0TGFOAAEgABq/hNrJrKIJRmAAfOA2XcA8UsE+IHrWKIPf
+			V8rk6MR6cACSBeA0AACUBfrWAWAO7EAPgJrNsLhJSS4DSWVoeZsM
+			JObrSjFyVoXAqHikpUxsVqL/FKlSRuehdaHW1QLhccNbTMigTzTW
+			HyaYPwRqbGUTMJTWtko65cMCHoaSk4qGH5GZT6amtlT6WomS4TFq
+			4O4JGSwGmW7rgFK8jM6UygKSAgAljYVFUqdQN2xOd5A/A1Bkl1U5
+			VDM3A2N4AYMwjCMwwWwXVWdppMcTVnK87UcXSaSyp+tJGLvQ57V3
+			H/JOf1F8KWHeHwL0GrWOakWkKrV4JMHqbMQFl0GuHEP4GsHFq6MN
+			f69MKxq2PQEiIHW+HAAAF8AAFWObsbw9rMDeYgSsBMTGEMUsgE9m
+			KWAYH4Ym1sYm1jVKHkwSWeZqbRX2g+KJXhYWIGhjWImOHSApROei
+			o4+ShHQmJsAiHcArjcHfyWhhbVEklsAdkVsCAAAvsAl8Nnlix6Mo
+			iDlwKIHGG5OcbPEs4uHwUmJpC4oNnYAcKWA2BKT8VCeDeXzG1uLR
+			nUMKOyHfo8GwLeHyc1vBNlcIJsBaB+MwBbZx0G4NmawwHgHVThOi
+			nUKAF2FGfOHNzEZlgFwgzCMwAoAyYExKSCAwSSAiAoPRu9hfheHv
+			oQGkGGfPnOwAwxfZCDBkAgAvbQAUdAtwA6BOJ4jDuUIEAoA7foHK
+			G4LkHSHHegSXdoG8fOG+G0QRbtxys3BeNmL2dpimxSIIAeQmAAAz
+			DQdqNUayNcUmTqkYSeuwpIURzPx4hkAeMwB+CeAs20A+MiMQKwA+
+			BYLk6gaxKSHSyGHnAOGGQQGuGUfOHm/prSRWNP4XheTkPQAMd4L2
+			PilUIRjDsiL/whgZh/VdA5Xy1yVO5yACwFV2eKH/p61TAJK88WLa
+			Ko1QINUP5Y+F5mLQH7TXX+4G6CH2sI2cHeLgH2bwyolQRtGks/3K
+			H6B4HOHOHKHJw/6d6f6h6j6l6n6p6r6t6urGB360QkAkAkAobEgW
+			HgHcHkCS4sH6B9FMAwaMHyAqOuH4AjqkwcSwciVxikv+4XxrwFFm
+			cSLPI4tIKdL2pfUPlKeC31z/FymBsoqVF+KqwiaTeSo6cQMx2mKx
+			M+KSBwCS3UAuA6dKg9lkKxUuRmKWHYHCKSUTo4HgKAGkGKO3Y/kF
+			TWp2bzGGAcAiUG64c7aSc8KTT0HrzJfA5WlQTVF0pqaEMILjlCg0
+			pTCSA8BGgYA+BKYmLwKSA2BGPQAyBDMsfKHXKSHY5CIEHWHCSZeY
+			feoaNOHeSeHhBRicWoJ8vVEKPQBgCAYEnmMxFjZgaYRULlzC+ZtO
+			IA+H4AHg7nsAH6/H8AAEAgCAAMBgKAADDwAIBWBwATjWDgAEAqAw
+			A/3+AIQ/ZM/39JXk7YW+3xC39CwA7HNC24zoW7ZuAAIBYeEgyBAA
+			CASAgACgdSBiQ4eFA5SJnJn09aRCZM/H3JXc55K+nxJno8IW0GA+
+			QBLYWBQNDxaPY0DQjSAKB4eFg/Jr0AH9AwA+XvSHy9Ie9nnC3K3X
+			2AHA2LRCZLdZEBgPkwRQQvIgIE4W9n3A2U2XaAHw9pKAZLDHpRAF
+			q73IwZMgVKIZJgE8NY8pFCJSDZpvpHRIQB8W/QNi38A4W/QDKHwB
+			4O/gFKOZnQG9b4AZpr+5emRemTelwAEeAPH3fR6fV6/Z7fd7/h8f
+			l8/p9ft9/x+f1+/5/fsQCigA7Abr0vKBkUvQLv9BcGO6BICpEBID
+			JEJ4ZA6jcLJMiqKQbDsPQ/EEQxFEcSRLEz9JI+0NxPFkWxA1KKNT
+			GDXxmi0atefp9JKlSTH62kZxk6SEH24UUx4ACwIGd52HmAB9n2hZ
+			8oEv58JQwErSrKjlq3IconwkspR2laRqmfR7pMwCUy5FMnH0mR+p
+			KfiFTJMS9RlNi9ItDTbACpEOIoATTostkNIsAQCNOhyigQoifpEC
+			AJgWn0IAAAYBqQn6TASBqkACAaHgGAySgJS6IAOogAgIh4CAQkVL
+			JMyikAOBSRAQBSkAE3c+ofQ6TAGAtBQ1QNANtP1c2LPK9ofPtBWX
+			PVDTzG1k2jF0Ong54AGodQLScfqpTsf89Q6mblxSaBvGqABoG6ak
+			kH2fSRzxat5pSABzw48aH3akpLvIAEz3pgOBYHgmC4Ng74DmAAKA
+			AgYJw4UK9BtDlxPQATkgABJ+gUpJ+AZSp+JEBZ40kAh9InP5+gIl
+			B/2G7VfHyh5/NQv4CrCdAKXufgCsXP69umpAInhhgInfhjUU6BCS
+			gXU4AAcBaJhUD4GogAykAMBKHgiC1XUQgiXAAbBlrCwySnoeKBnu
+			eqBn9OAAAYByJ7golbIeB6QgACoNqIrSTG2aB6LSdyBn0fKFnwer
+			F8LN6TSelAB1Vt4HqIEgW6oBgIJEEgZKRzaTLqh6sTIh6xoWYpYZ
+			ub6Byekp0G9M+1JQBwIomEYX0koyRAUB6kAyESRLrX1XgJ4i+Joe
+			Z2JL5CHzMhZxG4sPEM6eqUAkCaiVmpAE4+AAJg4kwEAYh/sgAB4K
+			M1lACgRWAEKQfk3AAa5lrQa35p9T4AHWc6DnScjsI+JKAIiSxC9F
+			0awRRTxDE+qTJEsdSpFgHPiUqbssBKHmvGJM2otDajkJjXIvFpYD
+			iRA4CQBUAAFgOvrAWA8hYIAXkoAM+tJA9iHjuHMSIew8iSjNGAPB
+			+IyR5OCcIuFJzM1AEPAQAcjRDSRK7J88Uhy0i+RTJGvU1JU0dr1R
+			iadiiionQLIoAZDTHItABLCj0vRwgAASNpDJeLPoqkUH4Q8f52I0
+			EpRnFofw9yBj/SzHFcTNFUmoAMBYAw9SJAGHcAke4ChfD8R8MsvQ
+			8x8j5H4PgeQ8h3juH0m4vxA05AAGSOgdA5IzsIlRKmVUq5WStldK
+			+WEsZZSzlpLWW0t5cS5l1LuXkvZfS/Q8AEM0wwED4mMAoekyQGDk
+			HIOkIi5AcyQH6Bkew/B6giH2PkfQER+gDH6BRTyngBj8VQz4ko/Y
+			jRZkBFg7pC4uLUALPFihJnIgCAOn43bDSTD+XhPufaYx+D5ZYneL
+			KO15RvO7AEvqdqGK/WcoIpAEgKAJIYqVPY+R7TuSCSVtpSJ1QFV6
+			stZKmYEHckhFc2xwoVxiAWBMjRJCHpSOcPclBFYAsXAAPYehYYsp
+			JScPgxaKwHgRfW+YjRRikApBqRoFVSwAF1KQTArg56opfAAO8dRA
+			x4tgMAQseI6SUD0He4QtCbSSrvIWpYh7mCRAsByx9Tc+aDJxH2c4
+			exKByjeejRlJFAiajnSa6yPTIaSkXBXGIKIbwHgAa2ax/Cv3hMVP
+			QOQbRAxki1MWOMbBA3IPjAS+itYESHg9CmUQDII58nymySwdxJRg
+			ioIGV0rLPQGgSUaUCitki9NtrOPkkqliSmlIWOwdCZ3+pnLYUgC4
+			HWOAbBCpKByZiUDsHgvAfiPBxAGHYAAecyE91PH0RoAw+H10iZob
+			WKRzSLF+u+hukQ/zdj9OIQg45fJvL/AKQce7Ni+HTOyS8AK8Fwx5
+			PWLSKeBiSjMAAJIAAzZgYPwhhHCR7A7vlL+AAMKBUOBgL0BDCZ7A
+			NgRuaBJjgPQToKB4CZbiysP4txdi+XSME9YEPTjNaeMJc4yRkeiK
+			6Y44j/R+im1bxiFpyTqXxLhCSHmljomMf5fnCkoHeO9M4/UoU/JR
+			Nkhbi6zJOrKZAk9ZyY5eo1P9HpfqFo9o4Xpd7bLrpOlCSQhcgU+K
+			FV5F5QbVrCqpWFEhVtuSIZ/IaQ8iKoACFIAWA4jSv1MITie9qEVF
+			SkK/a6+PQT+C2Z3V5bikihICG1IobshpqSLU2gJGAhqhTuIrVeep
+			FeMtS3fjjHCXA8R8kaGyOxh4+h+GCYxTBF8VUYDcHKOAAA3BzDfA
+			AOYdo6DSOFxwepM5SByF6GURAAAcQAEaHiABAE/do7h3FuNgYZqn
+			l6ImpIVJegdF6I9PQ9JqQBj/KJvMzTO2FjtW4AgfUZNhazNSbQAW
+			vYQEIACQMeYBXAnSNpPmQURgEjzdwPSMhux8gXuRu8CoBGPg+Bew
+			8BL7VTFIAYBFXzkR31gAANYZBAzDJYy24aDBPlFQOdywsDhRFYpt
+			JQOEbCZyx5ZkhDMl+Vy9krce5EBQC3NAuaoXIohGCTAdBUqOMTo3
+			jEPHmO8kowhVJnHQN8lGRi0jtLClIhYEwLxiBkEFh4DHeMZAaQ8D
+			gJ1YNZy8VnL8cwADtHKVwcqaDTP5HO4oe5CwCFtAAB0ExcQJO6hY
+			AADYKTFwx1I8KLRfOCZWyWPUkoyRckHGSLhwL759o8KmQxyLd2OR
+			KJEj50LPfYVPnuAABoD2URVHy2sAA6BuuBijoDVKOC/QAL4kehZM
+			7fm7hWRPTwArcAKaoABzcYn32srISYc9etl/cdFTU3inUNqkVQis
+			ixPyJkOT9jPy8CjTxqRSX2dzbpAfmWgQwuxDI3IwZjP5XxDSNgkw
+			jShihAmi9QkYfBZbHadzH6faPgvkB6QBYZZQoAf4AztYfiGIAwdQ
+			CAe4BoVgB4DICIVoCIAgBwdYiK/IZoZoaoc8FYZpnrckGUGcGkGs
+			G0G8HEHMHUHcHkHsH0H8IDcQAIKsIgASZgcgAwfweofwCY6kDoBQ
+			e4B4dADAdAIIfTg4DgfgBQfYLBlp8pFYkZXkLxQJWQdSiikRlZVB
+			GCK5npQJZaIwAofoiY7SkRTAnxYSPSU63ZtwfzK6g7IjWQvaK5Gb
+			+a9ijSgyOhFL9RUyMRS61JOg9IA5RiI6BEOsQJXhXRGw1Ie4eg4o
+			2h9Qh4CYDSigCoDxSSOJ2KnIeg2iKqkgiJHoqYeweJeBs5eBHwmg
+			mgkgkpWwpAG4JBj4G4I5jh7ZXAAghZQ7OZcCfY2iHIkwd4cokQd4
+			dAkT3YkwdYcgxYdodQ4pnqxoj4CYyYo7bYBQh4C4EKPCf5OJvrMB
+			xAkoc4brLK3wtId4xYbhwBLT2wCDqIFqiiJSpIHSMQEQFokR8j8x
+			lxDbsIsoX4lAdIcBLwhasRxTMYDoFCMQEgGIpEURipRywpXIh4BQ
+			Bi0AABs7z4WggYdQcLOZRR9RXBYxUrQY20ZSLQ1ImDKQdgsIdgc8
+			PQAADEUzxYEq6BDYegeQxYdIdIsI4yvAA4dyq4CSHxloko4h9Y4j
+			RYfw1gfJXAfakQlJZ69K+AiidJDi+UWwAxthla7gArboeoAp/7gZ
+			Gi84+AkoVQ3gVYvQawAASblcIMvcvjD4NZ7rbAORDgvIhYJ5Dh7j
+			cYEgC5qgEcxYAAGgEJhgGoEJh8vsy0y8zEzJasP8P5erNMzxtxI7
+			KIkY2itDmYvqc5Lge5Jok7M6s4fQlAeAd4x5LiS7LJ+CwRvphqfs
+			Pqc5twmAl5+DIDMxMif4izJwvTKxtidBJDKz47ObGSyK9BSqLw3b
+			ncmAAJYAhhRQoyJZ/ABMck7ZVbRyzpjJqBSZTAArSZSgBAByMRXp
+			qqBrVKqCJ7Qj2rUEjwhk7RyBYLU8CaQVAEPC9pDb4cMFAhZ7VZOy
+			9zaIeQfKMQbYdph6SwkSmgkTYBE4cIdTatDLaobocwcJAQ0sGxx8
+			kaKY74lDczk0phACOzWczVF9GCWbbUuYkoHIvSEx8Y+gAgfYiYDI
+			dx74BIfCMkNaPLg4vUK4ijIIlKOxNiBJz63YvUBIk1KQfwA6sIEz
+			bofwCQxYDwCpjgMAIpC4B7SLQ7k7OwAAroh4aQYNKaOzVs+C3iv4
+			gYdgcoxYrQ7cdC74yhUBRRyDu7SY4QmYh6gMQ7zIvQBZzIpIB4lF
+			REY43YlU3y3okwdgcLzpxp+Awwxc0xrCiKQzyQER9ZrEcoEBUBlB
+			XglL15tweAdAkoeAdKc6foeQeLLKqwA7vAEAFKigB5rjuQhYC4EZ
+			eAAgA6gy3ajgmgmAh5d9KbwYZoXw7FZo7DIYAZppRRSpyICNLzba
+			z4k6mMeQvs8Yh4uUOZmgdgcZM4rpM6gIkqGLSyNQlMXDH0QYvzAi
+			mTgpn7VMXQiABK4IfAtFfL5TzTFhcNC1JxajVZUC9DmpRUST8qel
+			MrRL9Yh6DinIz008PxOY17Uq3BPRi5PzUifNjZIqD05hGLSRSpTl
+			J5AQB5Jo5IlAmQk46gfUGJaZcSfABo5RCAAobIDYeoCoRAAQCYBQ
+			ZYFwAQEIdYmbpgeNpQdgVdpsVlGNqFqNqVqdqlqtq1q9rFrNrVrc
+			GjbQCQvQNkwaKoKovT6cAjexSreksBXhjABDW4hhITAIiz/phpXj
+			ggBDhIhhb1JIuhbA1E46fa9kmTIDHbWTUtw5ZaLwvROQzoegx85l
+			mtwzVLQ5VDVJPRyCJq9wixTaMRUkRNZZlkAz8djZPz1MTkWxtxZh
+			pwDB9bxJTpRTkKMQsDOZmjxIh7T1ON08kcWYvkPkPhOc+gGwIpSQ
+			GQIRjkXip5pSp5UUjtat0o5gggdAogeQdcageoh8hpeDZtTUeR2Z
+			kTSNUQosU4DIEt295T4YAqik0gksTka1SpAQeKrwdwxYZwYA0ZtQ
+			tb/IB4CZ9atQAADgEoiYIgLiigBoCdxLk5ZomocYkobIZQkodjap
+			r5eAcQbQ7AeIdheE/JSyBo3d/wCgDSMS5NfQpAEQFhSR2YojtAAA
+			cQa5eDrYmQmgeId66xLghpoICsRpyJWYh4DoEgicYkSDZogarqLQ
+			n7Q1CxtweyvgcQcog4fVHYAAcoBAdbvoCI0cLwnxjBlb9MLwBLih
+			jIepjhTokbeYkZPxZRjEOiKp0IA66y+cqwlAeYAyIMtZwJb1wQ+w
+			hYSyfWPgpAdUvB/NrmQeQg+IOAAADI2oTjDQkoEovTq7cYG4EZhm
+			SRhgEICpqmS8xGQuTmTuTyWszjGiKsz+Uc0ImiCs0hxqvwlc3zvQ
+			kweweFlw2k3STuOS6ohDN6TrIseQsE1MdROJHRLphrN4rRHeU1d9
+			z93sY5DadFlxHhOSPr1Nw7k5XhDd/ycJRbTQik9U8QpNbZQ6JBCT
+			QDTKCZ8YBkRrTBlDSgooB1/qx7xVPxqt19272qL+D2MxT0/qMF1W
+			flg1A1AWf7VSjzVTFkrkrbGAeYfSMQcAd7DyoAkUoiMVC5Ewd5s6
+			q4erboZAa7BwdweSH0Gc6MVhdolAREO4cRpwADa5AGPOT+lulrbQ
+			Q5DgGKKYGpDlr4+YAicgAAC4eADQoofUM6IyN9v8SE4YhlJCMwiw
+			fV0qApZZ/CKiPwvRgAfwAysIEZJofgB5eADACIjQJ4H5hgC4DAog
+			CwBqikmDIYeYdpfQYopAfBwN5dUtwIkwdIcZeFDReGXq7htDMk/Q
+			kwCwDCMQBDpjQIkV/ZVy3DMGvU1EVQgZxDsZLhwptKap41Y1JRyA
+			pACgCyijpYohJ5w6u5huyLmQeuhOyooscR8k8rpaMUkAidOJM10C
+			ebxJVxUsUAi4E59atgiiNQ5sdGYpAQeiUDK4eYeAxe4o4rN4dodJ
+			eAdwdKPpDhUhXGbl/wBwCVULP5ttKaM9QRDjOc7VSBf+vge93glV
+			du1ER5H04heohtPG0+VFgBZUTSjhHhwpeGVk7ZQs6JPo4TPg9paD
+			8RYp8YBVhonzPQBwBtyqDOygegesWzN5H1lzoZGGMmNJXBnxZ1M7
+			V5FMW5DRUdlAAQpYkc7QeQCstQCZJqbrsbJ6fQvy3Q9BioaM9QAo
+			PwfKbOk+Phdr/yKml3HvH3H/IHIPIXIfInIvI2QZhRhgkoPeRgAA
+			I1Q5Gg20r5Vz/0OJRplUsFjwvUeWNbg4uktYiAfCMUA5m3MaIiOO
+			7TzJGA7bUiIkMhSvOFau7pPQz4hcTgsKSG9yJxn9AhXs7G6JSgiu
+			eYADRL52blOO0uyA7az22s4mjFdM0LYUR7ULkgBjRaet0eeijwqY
+			e9iut6DpO80l2gkz6QogBdm+coj4CiMSoYjRu5WTkRrE+ROxTsr5
+			0WvDvodEiSgZMQkokAia2vUgB5VZlFgCSuaIr6soeNo5JCqxHIrg
+			dItGFc8oB4CTRZ/ACIDKtoHwoh7Y20TNAWtQh8d7JYegpGjwxayg
+			7AeevnPkR6eJq5W6p5UlbQpAD4FCigCTtavokodIcIxYw2GIhejx
+			1Z+Hah2nA0j4BgpAFAGwuNRJtoh6rEeM1JNAe7I9OIeymmFgdI7A
+			fBk2FgAodJ/IB+QA6UZJGxXlvYCIeNr4CIeVr9jovk7Uq29zgaBt
+			vbAZJABWvIBA5Es8taIIewAmO6/w+Kj4vY8oh4Rzc6IJBE1nI/qM
+			H1sgkRbh759YVDDQlBblhDcgH4FBBXr5BQDICBjnsl9XqXtPtXqW
+			UI9Wxk0DJor5LNwmvpOE32XYkweodwmWYk0rmTrevJ+GItdTLu4D
+			MD6+0XvijmY5ePuOggqaJwhRthIwz5eLOZXRDihyipXzVMmAA3eU
+			mBSxXE75WiCYpGwY1klZSk/J8I1hyIn5THegBM9zUJXxSk8oiSAJ
+			/CAVzPb5YX3XUa9pYb4ZP782+U/1mjUrUnF9gzaIehk4xgeGhxIg
+			tOhT4/5hD4eofBM4epNIYAaIYp/IeGLFF0GgkobY2oTCKoboADao
+			W4AEurcHtf+cH7bQPAvQFovQIQvQDAgAAgUDgkFgoDfwDAARfATA
+			AGfgHAACf4CAADfYEAABjYAfoBfoAiL4AD+f7/AAFe4Fib9hQBf0
+			cAj4lgEfMsAD7gb2gT/eccf4BlD8BL8koFfwABIKiwlEoMAAOBsa
+			EgpiQEjUlkIAezygTha9JfUkjccAFBlD+rb0d8hedtj1bf9JAD4e
+			8hAgGjgXDQGpQLhQDvQABAJiwCAkcANCi4Ds0onL7kL7fUhfr9lD
+			wddGdDjfMiftJfb4kL/0IAvMWCwaBIABYLjUmlEntOQscheLvnT9
+			fdJi0c0O+AUWBQMlnFnEDsdie++xdKqeoAkKAwIjgfFGtBYOhWnA
+			D3eeTfcofr6pLyeE6fj6lDvdkkeDsz+hoeS0F0juIl/PAMWAAGgg
+			BDUAOix/H4jh9HypKToEfh+KSeh6M+0y6LoxiOo4A4EpYpbkoE5a
+			4pQ4aUASBiFKwi0HKSfJ7KNBzZwY3ijQYs65py3iexgnqBgE54DA
+			OjQCgOvzhoIlDFRq2a5QY4aZAM/aOAGxLXMAxqOJitx8s+yqQnyA
+			KdH2ATSwu5LHrMAh4oUyCyoGhSCtmrTILMAYFo4AQEqAAqUHsCB6
+			gAeoHz8iqko+kMXIEsyDUVIwAGojpDomABxP+ABkAAQCRUXTVN05
+			TtPU/UFQ1FUdSVLU1T1RVNVVXVlW1dV9YVjWVZ1pWtbVvXFc11Xd
+			eV7X1f2BYNhWHYli2NY9kWTZVl2ZZtWDgAAM0iTSBg+s4ABOga/U
+			7NaBqFJFEoHNdxoMmDH0Qjqz3ClKVx2grDoefyWSQmzjncBYAAoB
+			MBXwlh3HI9T2I8yEtMsk0kxrHM1zs56CMWxUi4e1ABotEqWSkiy5
+			pQep6KNA2FsIBCNACxySn8pJ6nmfStKS2SBKzNcmgABQFpqAaXv8
+			rCZZguh8nwox8nvGdrxsgTL29icogKwMegACAKIkCAJIlKSOAS6K
+			loUAWSgWBqFQ1K66HWcuVncdKdRZLrSABECTqS6qFAKBD/IGfe7O
+			/FqPN7hO2bXNYCgKi2uprwKLymBYGI1raOHxn4AHieCSRUiemqwr
+			OcyLDUiOfm6OOqi2qonkp+MxyjyKNtjmo91D6JFgWToN0OJAKwbt
+			osvOII4Arp9EgQETqAAVh0iwHAkgXQnuemjK3HAAHObyBQND58Pa
+			dqdGubnlM+nR3AQeAAHkBvvn8AS6MhGgCH6jSiwECB6AiiaKqO8g
+			CW6lrDn7jLGHyBiSHwAokj5Ckj3AIn6AiflCqleURx5RAhIE5ABA
+			8dCmRVkeWdBeDEGYNQbWCpgiyfgQwQWsRYTZAwNklAARJdcHFTsU
+			SikUJgMITwxA4UoAz60nwsh1DuHkPYfQ/iBEFviO0aEGLSPpRJtS
+			el0H2Z8rTRidMmigaJtY8B1HzeY6QADQUIDuNEfZoJ9XTlDYEPw8
+			bq1CRnLUUlya12+FAI2f42iVjGreMgmJd4BDDpuAOgQi7TXQuLMI
+			bB0SdnCsyZoRpm5FgDAJkUyV2jimSyJI2lNjDlHdICI2yVkidkeM
+			lUi5RCyiG6EUIEf5cBZj+pHUTKqVpBmmpsXLK9dLDlxNIiEqIeo+
+			yWDlfCd8fRGh2j4NaSaFauDQmWRsL8aAxQADqPiAAeg+CeGXK3Ll
+			U5KB2moAAMla40JngAEMAAUaf5sTnnROmdSuQ5gACoQMEkFgyEdB
+			GqUAY/yFAPHy/AAw/kiPkJSPovy3yPADS6Ace8KCkgEXkRegD5SL
+			AFHoTUetAx9lAHWWZlb0XooXLMAIA5HAKAYIkcUjQDUNgAAYBBjL
+			BzKEoHcOhQw/D6xsb2WpoxdDyqIZKAkBJgQCs7I4BkEVJWvIhi2P
+			MpIAUpgIAUQIDAIDqUhMIAxEgDoyEoHCNUow4BqluPS48dzKzKIL
+			MgcEjZkAIAVJYCsGoDS/kKrLWJQyCk/jxJCxwkI9B4IzKDRxhCCS
+			kl2J0Y4iwDAHoCKwQoBYDyFAXA4RKxpCkQD6jKeZ1ZKB51hRe+Ad
+			5nz0GfZPGNkx+E5mKP4WaxDVGlsmJQgl85Ah9xaHtLu11aVEIWOf
+			U4lhhaBkDaCSF2EcSUHbI0ASoJIozj4ttGY2bsJrMImSyY0qDEaI
+			0R6hmRxSgE0DabKZdC7nJsaji7pwp/ZSNWbneVmdWItgDZWewpI7
+			QAk8HmASjb9SBAHMgm4itrwBMrfygsmBIgAozQum9cqiGGlmISy0
+			hGCk5KqG+R0US1xtKZFaAAScW514fxBiHEWI8SYlxNifFGKcVYrx
+			Zi3F2L8YLNI4G0AEJyWCnWqtdaTL4hR3fkAgf8KiOgGHuX4Bo5wH
+			gAA6AwqADwAl+HKNlLY+GWqRNDK60pOTK23R2Zhci6EesgYkUJkZ
+			z45ukJ1eRiTN3FJFjmZdlt13ox4twQVg8emMyfwnLIucnpULiftG
+			67LE3QMUZnIQBgDkiMlkaQprLhiONdI0dshTJyODtHQys9BRh9F3
+			i246JtwnYNwIekCOKHx86cy3G5HdlkRSmLzPkCLF5D0fSKy6ahIR
+			1DmoTXNrdEQEJqdQYUhQEQLFXSmamlQEGL3fcuf4xBHImwDqUd8e
+			pIbmEhHeO0o22SJx6P+BCqZCjCkWBGC1AQDQImxdKz5BrAgFVwAA
+			C0H5SQGgSJQXldBQEGFqI4PIddcqLvgHYUkXgpx4gAHKOJCZdCI3
+			CASfggbqILLvAMYdKcoR/p6LPxyWqGFIkxPOA4d74AGPjfKR4kHK
+			nUTHU+O4jvJSBCSAAI4AHNMY8551ztUYVSLgABAAAF611rEhEsQM
+			DGLndyM0MFAGYHgAdOA7Jgi7DeedX6x1nrWMIitE0CQSna7lx8Oi
+			QWfskS3osCZ8UYd46qEj9ppGgrg8kIDvNEwLaZInUXOuVGmmyhqb
+			sHZOXLBiR5PpXQZoYh5g70MvSOf6S+vylHWjo6FzpDzjSFJTIdkq
+			GpHkcd+kRprtI9uCZr5oiadk3ADIleFrcuKPKJwiunqxjC0FltQx
+			CVmDJbEFyxLL3q6kkdZHsRl5w9CoD2H0SwdY9qnzGWML8aIxgADp
+			M048epXrZ8Uxe8oi2FSUDKmkACdvJXlQVmv1v9X68WhvAAEVSMIS
+			BBxIGChUq5jCD9NbPduI+y/AHH3qHDun0m2AFCeCYmXh+LjiXGiD
+			UB4iah5F5kDiBB5iBiPiCn1EFp7tSiOAKgMkBMmCNLEltwEC1GNh
+			6NsB6ChkHu+jIqzN+CgC6PJNHgBrktHgJAMkOAFkUu4h8Dwrwjii
+			OAOgTiNGwKqikkSmjQWBvhqCQhwhrLBh7CQh2h0mVrgonppGVQWg
+			LgOi/AegmAKDXLHCRInDcq6j2h1NNNuG8K8q+ppK8C4wojPkHCQj
+			hniAHF8EfjjgGCLAJgODtQ+Q2AAKYnJQWEQNQnViBEtG0HHFyE4M
+			9lGGFCRHYGdF3N/Jak1j8GFn5KCF0jpm4vFFrnWl3CBqnNFkrnSi
+			xmVvDI5mTnzEdQGl0ryGHDno+iLI+mLqegFCZHCkpL9gGGdtXndK
+			qD+iODNCQgEI/GGgEgHCLB7gBDPw5gABxnkgAB4AAqEufizr+Hjq
+			OixADsBOVvbkwqNuXFnBxiOhYIUBrxrAABPgABQC6v2R5x6R6x7R
+			7x8R8x9R9x+R+x/R/x8iOA8GnG2AAOoCUBWCBupiULfxzIeKCE9G
+			Rq/imCWH+jWgZgOgKgAALB7gHPqhxKyLMO4NUEdiOO+B8h9D1Izm
+			irOryB7QUJcOwCLDvOVQGj1s4qlnOGbnKGMkYnYLRs7MCs6miHSt
+			WI3LrFFHAM2pbJXl1xOk5DnnAKIgDGLkpgDtgjCAFGtEpgHAIv/t
+			mGkGzGyh0RCk9h7DPi7LRHYDCiJADIbnDDiAGiLHfm4uLgAAHgKK
+			TgICNDqmlCOEAECnSh2BzGVhqhmQKh7h6kFk2mIizPSS7gJNFiBN
+			jCFAUgcCJAEngBzhurqr/STIovsovrcjyCCGDnkikh2B0CdTTu9G
+			3o/PLkfiOANARrJRmpbomkcvQKngAATAbCBS8LigHF1xWwLh4h1C
+			FD1iBB5B3CQhghXCvBzSQOzDFN5RtJayVuKJUADDIAEr+iek3JuL
+			wxZMHOUh4AGpth3gHJtoBFYhtlIhuCBhSgABGgAT5SAT7z8FfsaT
+			MAAAwuiFMgziBn4MWgLLEgAALgHEBAgAUukgg0GPcOPz80JUJ0KP
+			1OuxYFFuwyjiOmih/B9KWnlkcmjGBEQOAGVmPu9CBB7h5CQh5Q1r
+			LEVsqG9IxLlDLD7SUvACdQTCSjTJQpNiDDpmIJTiskhHcjpJTvVt
+			wGZESnb0lNDNoilAFRTiLrk0lvTvJEfo9xeGtGmgEPMmZGZH4pNy
+			ckeSYm6FvShNbIkpbpavfurPgpVOQSYyYigvhusGfiNB1B6qnh6v
+			lgAB0B6ioMrljBqhwsMh3B6OEhuhzMKh6TEuuILCOKEiUBnILA6i
+			HvqlKR0FMOJUK1PVPlTyBp4iUOkmVoHiBAZlUyniBAEh8qngLh3A
+			NCLwFCSqGItgHCyJTRoDAh9iXwJgBB3JFB2CskLDWxuseCRAGkZz
+			tmQiLAOALjWgIJCALqnRrB0kVtPGfCUTEmWrTRJF1FrlzyeIUjDU
+			qCgDTyUikmus/q0vVLtCOALAPnCF0D8CxGBB4h1iku2kFnUKQCBB
+			4h2GVjFkjgBuWikgJgLiWAWAbyPDiiFB7ieAAB2hzkVh7CUB1ByG
+			V2MQ5ozh+G1yXlCV0B8UdKcRiiFgJF8I+iNS6GnALzMStCuGOgAB
+			zBwHlO8yRicq7DLiUDKEXEHSjRYrwxHLbw6Lbk4ROrUqeG6DFK/i
+			z12GKHQM3FrkHK/SciZQa1xxWsD0REdmDvfFItBmGmtjApOTHVdC
+			zS+gAAOASKnrGiLAIALCFAQAViNK1jAisgCOInKJcV8UyJTzUB6i
+			SB5WRgABZhpx0Bxh4k/EjWliDHyDSlrkeyZuKyHFlKYFIhllrhng
+			AB2AABCJyJzVQXRXR3SXS3TXT3UXU3VXV3WMRCOA7FooUFrCjBVC
+			OoasTNAgHAFCNAIl9v3gV1ZAjXgLMiCi7CUB0BwUbLXh8iUB4qxx
+			ErlLXh6yTGBEjGiiBrNikhxhtijCujyCtowwsFErF0IOwRNRHkbs
+			0uu05FFI5vfEMy32wizWqOPjINLWvqhHDGtPVvICcQaiLAKgNKng
+			KVoCC2ACdUXGVu+GOKEkIonDIC8ianeJFmZxAgFAHS+I/AIgLi/G
+			ny+KfqVSPC/jgDTh3h1idBjBcuEh7B5ijYKDppFLk0sgAAJALC/H
+			QgKANCFAZAiDjy5HUxjB1DgHUTQlJBsCjKX0jiH2YCsCBWQXOWMk
+			/wfjeCUSUDLKNjECBDqnjk3FEkhGmEnCOAJgMtyRdrb2cGiq5h1B
+			yjPyrtpXmXOBzijB6trtTiBHjCNuOB/L9B+iICRAEM0pTCEiQiMY
+			upTh/syiXiBsH2nGWuUh4nvHwAEOEp8VOlWBpiO5MCOMNz6BXXW5
+			P0Jv6P9gAA7z/ikgpiBzqsVgPAKF8APgJl8AcgSgLAAAdASSNZQZ
+			c5dZdlb0LohlFUNLYt+Hoh8o5DgHzHS2cDRmNh1jLHSu+TWC2DJ4
+			4EQO+IzIvtVEwSUm2Zti5zFv0o/r0uqPXpKknOMYtCcUwOOIXC/4
+			btkrkpLkNCWJBSpOqADXdvNRcY7ACI/GZDqmRmS0wkLo8PG03keM
+			vpaER05uPlEpUJaFFsGlOIkj+OtGfiFB2B7F8U+iWBzB6F8DQ0zl
+			hBvh0FJh44WFGhwBsRrB6CvOsCUJwCBA9Frhy2ZgABqgAP0ZeadR
+			8hC0DoISNOSoSiOAcUIlVAEJiSNh31ZCEE1L9B8gE1cmXh8kgibi
+			NwL1gCXh2CXk1ioY8zvjyAHrhJ+ilI/ANAKn2vTgNHEWJBxmgHqG
+			+rBh7kYPH043y2m00Rbk8NIa4HwKwkQKnHBDorkNI4ML2jDmm4WC
+			jVEmPV62jjpKRANtHEqgBACiQgPgWCknikRSra9RLiuiOBvBoCLK
+			+CBBvhrE/BwBru3oz2WF9qgTdGX0iS7AJgNCJENGtEzrzizB1hzi
+			SBmBgh0trCjEeiWHALfkGnS5vCC5+a6lunzZFmDrLK/XvijJPWvv
+			eJbDfpQjnpY3JJbnSEZ2vYIS7bvCLiUEpE5OvpWPcvUk7GcrWpIs
+			tCkqg1OkNCLAPATwQS94aALiLAVgdkBESko28W9EilPGXVEGVh4P
+			lAABMhfhsgABth0QKsXiUaWgAcICBBmSC3YOjoG6d8QcQ8RcR8Sc
+			S8TcT8UcUlQAgJuVUgdMciQhFiOgLsXAP5WgAcbCoAc5bgAcd5cF
+			FIuAAV9m9Hpjzh4CQixqsjvh5C0xNCeyhDITlikhyhuCjC3lCQJp
+			qE98mPeI9PftAIjWpyRm3OQWxpSGEChOvr9qUsxvDs+DIG7I2K7O
+			xIiUecsD1Tkt4iWARAUyPAUAXp+ADk1MFPsi3DdAALNijDeVsLZI
+			o4qIth8jJstpLgPATDWgNAQkBUvCLAJAMCUNjE7VbTWBwBtieB9W
+			LHXIGVhrlCgDnh/InPWCBNEiBASgZi/ENQlEEB6ECq/vsiUBzBvE
+			wK7PLgBr1mJUdh4B0ijWIXlC6tPO4b0nTJbmGyrpJHjmmgHgKwiq
+			qEaY0DISbpnhyiSLBTWiSoo4rWnFEAKjIFtuNrBgICSd3CSuUn8l
+			DWCn4nbh+bih+d2noqDCSsIh+ABXuoCppACQKr/lYpnCOJnCUBdg
+			ABHgABecVeKMTIPWJKVJuMcCBFrdaFtMXAYgQHjAZAPnjATAMskg
+			TgMYReK+W+XUK5fX1ojTwCeprnzh+E1Wm+cRLKdOyh9B5E1EKwL9
+			CppC4G0m8EXMt0cWcm0B8idLLRokErqCz2cJAJONoL9Ysy4DoHQK
+			mysQaxeNCmKkqpLwa39mKnEvNGKGcRh0jLkDfk5issGkpuraQlEC
+			t8vlFFwpaPas907FGaDaFlNIV6J+/ueDKiFB4h8kBB56qhwh4yPa
+			QFjB5yXiuGggABiBq3MpoXOrpudCUFJ5NiB6VOSsLx4iyeX/Up1l
+			MC/ByCF+MsLiLAdlr1jUfFTbKiWAHB9MkqIVweAKlwEAEh5l8AEh
+			5CoMDjFQJ9ETxB/sgUf/fZEDZwNpBAJNZioqUgPAIioUVjLQenVL
+			arnnTo2SiwEM+WlLuOMTPkIB5GPHSydjXAGxciBYLtyRA2TQfCQ1
+			uOzMviBiAAUCgIABAMgMAAgFQQKhsAAAPCt/wUKxOHw9/xZ+PqJv
+			R4wRtsyCPR4RNwNd7ABvNZ7gB+vyJg0HgQATICgCBAGKTQDgeCAQ
+			DToKBubgkFwR/v6Hvx+Rd/zpzuN6ABhLVygB6vKmgYDAcAVyvAGx
+			Q+xzqdReEgqEAIB2eLv5+xOMw9/XN9Pim3WJ26n2iMP6lYC9gC92
+			wAALDW6yYeCYSLy9+4S52KJgcFToBwgAAoHToNCKaV2z6OnWcDgi
+			dAcE2YBToFAyEAgFwgC0EAO90PsAASaAABgWdBAKTfTwQEg2CBgP
+			wigayJgMDXux37qZKJvu4gB6PmmpVeNcANlzvIAPd9ZF+3Xq+v2e
+			33e/4fH29eL+SHsbfAAxAATAB4gAM4AN0+UCQLA0DwRBMFQXBkGw
+			dB8IQjCUJwpCsLQvDEMw1DcOQ7D0PxBEMRRHEkSxNE8URTFUVxZF
+			sXRfGEYwkMycAABgACSACdA+AClD8i4KRlDQTAwBz+SKAAZBACck
+			hACT2H67J+HyuSLMEACmL+i0dJdAaMomdpzsiyjJIefB7KUd5zqU
+			e57LkpUBKawjIx7ODCJ0pK6TobxpN0l6LI1LDrMcnR/H2xsuTy8p
+			6sDOTDp0riEAGAiCOm6a0UUfJ7qbP6/S+p0ezyfVRwFUgFgchARh
+			SCAABOGAIq+A9JN6w0euyeZ3sieh3qUfh9onNqlHoeT0JgAB5ni3
+			R7HoprWp0EYWAWAAOhMBCagkmgNhKyILhApTZIeu6JrgiaNoerKC
+			G6ZyCHsedwnwpR2HKyKmL3LbNMQh6gIICYMJuzKdU1NJ0qbX1yn0
+			pR7HuyJ/WM2rYgSn4DIJhtgTQl1jR0waLAC6U8PUsSdXymoItoAi
+			dKAh7ZYknSXoeeR3N1cQAHy87/Happ3HifM6ouzWNMI6OaA2fDCA
+			OwIBKUfYCN0fwAqUgifn2m4Cn0A07uvqoAatnh+gEyJ9AFnh7AIe
+			usQoYLDgBtKEGAze1gAQDHIxIW67tu+8bzCkaJuh4HxsABaovHil
+			SCzG9QmHQSgqAHFcYDwJxvyFpcRyvLcvzHM81ze8rnUHPPXw6/Ts
+			p2loxPB+s0vp/n7Qp+J0fZ6t6fzGn+gh8Xc8p59heGaHw9B9qVUb
+			InyfOinx4oAHwe6W+YlMo4LKKyahn4BY4snrN9voGAcmgCOAAAEg
+			Um7eMxibDgG4zZt2gf0LXk4AAWBmrsRSre5C3fzgCxuAR00b2S0A
+			BAI9cxaXC0OkgKew0ZiiyFugce40iEi+Flc4hU7BBB5j6WsPIfLV
+			xvjwSMelRCJh9D7KaPgfbPBfjQGIAAdA7x1pYYaoOCqDB1EXGGj0
+			AA0gADuAAI0AAowAEpbpDWI0R4kRJQUFU/KRm/pGFElwHkOkbuiQ
+			UAMfxNAFj+AUxqEZF2RNOfiO9IwCoyGHjE3ONSW4BkPdqnQALrzC
+			JyAE9t7r8QEE0A0BEBMBoivMKUwIlx2R4DsH0AAeA7WmxgbU/tSp
+			ZwFANJoAVShfn9nUH2wg7UGScG9IET98CkydEKNiWovw9h7F5WMe
+			lcLyVyAAAiBYm4Ngho3AeBYhCV1OyZImu0pQ2xnm6HuPMyI7h1G6
+			HeOpZpmn5E3AgBIm7+AFgNZRJU35DwGslJwAdQpcx+vBQElRY48J
+			DjWGgO9mjCzdnQUe1c6aV38SXAAapf5vVMKAIsS8pQ+IUGETgyNf
+			aWFHKCZ6pYwxiCaFufSWYAZci3vSc8pNlRl1SlKAaBInQJQXtXMt
+			A8xZrTKgMlGQt9hDwEgMIIqchBXSCAKAfKM1ZfpRP+gbG5+8DH/U
+			4QOPY7gABKC8GwAAa45z/jzHubofh2YlHrocQSQ5D4WlKC6QU27c
+			XlVLqxVmrVW6uVdq9V+sFYaxVjrJWWs1Z60VpPeGAhMsAABrS4jw
+			iYXiLt/rIDQESTAa15AACMCyRgSAWAai1XzSmeFYHjHAv8DC4EPl
+			4nNYA9EwJreVZJTxY3irjToPOHyWJxQpImOUbpTR7DyMKQ8BgDZ6
+			lmLO9JOq4z1K4Z4PtX5fgCzcVjaw6RF4AFjLgtwDi1n+mILWW0vx
+			L08RySuYAuicCkkTHgzGcchzfmeA+tYCwHGrgLAeQgDQJCHgWA8Q
+			QhT2I3FjV8Q8co2yJjoHAUp/ZCGZjwTEgKcB1DWTVJ0AwCakjWtb
+			d6PIdtiksW1WG01OlLAAAPAm1d/qUTrzin0qBoCtXPOsSqvqSpr7
+			9FfAQckEDVzOMfImPofJOh7j1MiPBZIABzDfaKOYdTRSNkWbMnMi
+			7Qh+AcN0P8BBSh/gFXKAjHtDccE4Hy1QfBN2vFNHmAs8g8QGToH9
+			FhUOQIAIWGSlzLZExjmOGRW0/4h5EKJrVmfNFZImEIvACNrYAAMQ
+			6iiToDMOp3VfOms4AASgYEOCUC8hwDAEE3AaAdvuadEaJ0VoutTo
+			DHaOvwfk94/x9G9L6lh1SeB/kIdYxQe7s3akEH4PghA/B7E3tAqU
+			ieEGMMJYUeVNpWFllYHqSmpMhymSLvgx0h+Rn0r6NQb641JzmPgf
+			ETQ35BH+v9AMAsmhbCdSUMxr8hU0b/qTkeWR+B0wCXGgM7aAiZID
+			TyOoluBLQNyxuPfBGBW50HwTLNoofjtIhj8JuPIfDVxuDuVhvOL6
+			JFPnnN0MwbI0QADsHjD4dQ8R2M0kzWcidhwAQxImMs/IbwAJGnQ3
+			IqejOPcfiOKo/I1j8n/A8lwCxjg+JcBeY5IJD2roLoabHHxh3bI6
+			3o9Yte9AE5PfCPNG4Ah+KVa9ziIrGk8a8JcWcjhD3WmHjaAYBhNN
+			BEEA2BJaQBXVJceNPt384SlXRZzMdWxz34GLADcaUj7DWcwAMQg6
+			eJroDtaKxXYWvVaL5AecMguDVQDyHipy2ttMVjsJTiYpRwmrgiBW
+			qwCwGyvSv8Q1uTV7iUjsHOS0fI9lirjL698nQDgHtXAgBMr1z4h4
+			qiKlF4VPUr1JPQPoptDjMkEAYBC4V/4ZsYIwXOfhkYUxuMbNlaxO
+			S/X/pynEpQ9R6Y9ItScnQFwOGhtwPRZj+bdqPZEWcAUlQGARZRcY
+			thFjGsj7SQ8gV5uDjnKaB4E5NzRR+poYjaPMQCFefyaknxCaUE4f
+			AAcAoII/iRYPMMiFQGSG+AAG6HUXcG+HUKmHqp6rEocIeGYnmAAD
+			kS4HQAAEQAAG45BBBBDBFBHBJBLBNBPBRBTBVBXBYrODifCS4D6c
+			Gh0CcS4RurIB4BO5SB4BM5SA46wAAA4Aii6RY1YH2HwwyUGfwc8x
+			qS6UKPUHwHqImHcHQn2ssUwMUZaOyHos61SXaImHEGyN0Ky+yVOf
+			I28IuqSS0kGIm4Ytmk0YMM2AaUk/Ef4faOawKMiHkHeZ4HeHYJa3
+			iN+ZMJu/oRsAcaoAM2eMaAMw+LS04IskSZ5EiVCvO7MmqIIWoWkA
+			quCISYifY2UfgqStCG2bMxeJSU0Mi2wfiAcj69A/yM2AUnsLoWMH
+			mK0S61WPULuMCPUN4vIASmiuMokViaivQ3meU9USu0cTsInDwAWf
+			GN2twoWfDBvF6pKAAAkAwo4ooUyHuaUtqHik4HaHSN0HKHSJaXqR
+			0PsdYIujaH6A2Mix8yAyEeUAQaKH+jah0nmHuWsjiZaa+WOASP+H
+			iAch8dogQQ2h4J0h4ImGgIu4MJ0HaRrIiXcuoJcPyT8h0SYaKLoq
+			sTojVBbJBBQbkJoJaBtIs5OMiEiIu5SrI26ZQXyCeBkA6AACeBnJ
+			m60IJJxJDJ3J5J7BM3MLm3MUwga7gUAj86ZEeLMH462VCM0yqXCb
+			6jS02R6HyIQH6Hw/xKmR6JoKYUaWE+YO0+sKwHuKm+sKmhMkOhKk
+			OV6po6gOkImtuai2M2dE+fCATDow62gJwlNL09q2EUgAOoS2uNsU
+			uLKLON4kZI+f+TggW3S0iOq6ULQ3+ksPio8QsUu0SPSJ0d+JuHjK
+			wAAG0Ha363oRY3mKaGqG+Gyh6HmHgAAHAHUHIKwTO4gMcqcMcGUU
+			EDaMchiEoxdJ9N/BWzWzgN3AvK4RqJSe9OIj69PAuWeMccYIeP2J
+			0vAcKIu/wQWY45u3iASH6i7O4i6esakaodMa/JyHmWs6EM0H2LOn
+			Q6cY+IwTkdAb6AM/AfCjyAAAuAe9y006cTotoKUm+YsMiVwwQ/JM
+			mtgyAMdEYIQAaAYb6v/DilQx6ToMAag/KuMAcAi0IAgnsImHkHgY
+			KtquWH7LWPVDNCCBIb+wUU7FQoqABNg8u8ys9QTMapmAsAuWswUb
+			mHq9VQCoETYlS1aJcuYI2sO14NOJuAoAyRuk+Yw1WWMUUky+WmIf
+			QJ0wYK8K67g+4v+OmSmKUHm+uYaosAiII/cJoIUpaM7GgImVqY6M
+			G/QtwvEIINUZEN7EYaiZ+jBMiX0NsuqMYpqktMNKGf2tY+EgYmu+
+			SRYhQMiFmGhNiHAHYKmGoHGnQHiHsQGrKImh4IQD+h1NiEeABAtO
+			BVHVJVLVNVPVRVTVVVXVZVaq+DUcAWsiEIerkAABVOsrKCYBiA4A
+			ACbV2fi0MRtMCRiSuQIdBKCUAThCjP7KE/ksWR6WMsaiKWW1WqUn
+			wIIHMG5QATkhgYOKW6aJJLTGMbmN47gS4tcHcHSZ5TZWgTYHqmFX
+			fEoUedULWMa/vTnWHEKNqNc6m96P8HeN1Q/LWS2MnNqv+AsA6i6A
+			mAzOXLuw9AEVkkGKUHMG8KmHSHHFOU3Gmo5F+/8Uk/+JmkYeMMjN
+			gZ4V8YYTgSyiKtuOCAkK8+6KRZTXGIstol6+uL5KCuYn9DkJoAkA
+			sK8Ne2KfUw6gCLHGFWkWWbAHyn3DVHuvaHkJahML2jkUUj8jbacR
+			6ALQGApNa3sx6ezPK3RIMPKAGeaAKJSKfWaQ04kkOxKIu4kbMJ0P
+			Il+IvNaIIG0Iuh9IVIkiGAAHSAAEmZpVdcGqzBej6IIRoIfVuKUC
+			yIusGrIAoAcK8AqAaWsCGBUzqCEBUzinjcJc9c/dARCc8TwTKPco
+			SVAgYACbCMkLO5ugK5uese8H8iqbUMWH8H0JuH+HyWsR67giyVKK
+			atoydLAHnFq1lAgHsbMhMtm4eKeTGeyNqYlTmlM2ORsAfZefbLiN
+			9S4uM24AKvgM0Us+47OjAUQ+46Uf+PjddaLMdUDMqQggcp0QUL5M
+			S0QPUh0IIHhH2AAGoHUSC38RaLqKUHWkSO1WWGUGzIaHbD2zPKFA
+			+JoE0IvA+EYAAFfdDguiOJ0blbkAAIcN0IcIIR4R2S4IcIfhLOG+
+			iMcj7GYS4SM5gMdXMQqY6J0ASH4WkAUH8WkafJyH4knd/PSN2HlP
+			QH3PULMHYKQ4lQpI8Y45iAEVhPsIQAuAdPQLGS21YPTSexKnFCiY
+			Ybm0uLPSkUXDeW/YcAoAwi7FUSueHZ2R0yzUMnnYcAUfXQqABD2N
+			0hSMjSyWmBOWsAYu6VsJ0ZmLqxQ9UHa7IxMMiHqHmtI8CwpfO+E/
+			Qmsfg9QKYPQTof6le9Q7SOeyMOnFU+6ZEv+9vQYAemiLPjoPSKUH
+			kHUKUAWAko5YinljkMwb7K6a2HzeeZVEaAqA7Jy/2KMZUcoU03OL
+			nUQAuOWw9loZRHnL03Epw2YpjEKrK9kKUGUG64aHMHgJSF6GsHPb
+			9M9NoG7OIE6S5A+EWAAFXgxnVnXnZnbndnfnhnjnlnnfmAAC2JrO
+			GFZBmMiBCS40Oq0zyLHJrJnJjJm0MNi27VK9eqeZcnCJ0HEGu+WH
+			ixLI2WW1xWiY5d+aeTNG6AAGsGaKnFqToTofEJvjkyZGM7keUnUb
+			nivfuLPL9L0LQSidQoc88woMWVOJoM4e8kqAemhesNpKiwuImHUH
+			MJaZmH2JaUI7Y4zlLjadhlwh6HWT9GNZ0IypwTyJlPQN7oaeW+dD
+			WXMUGU+leTKNkIQAmAuxFX7MQfClMpnTcJcL66UhKWAHmN0szIsT
+			HE8HUHqJatddKjFbS+S0uH8AKKaHgAs4aH4APLWyM6OdO+WAEeeA
+			CjhbURTqWKwIuG2MdNaJ1s4IfIiIe4MIJIiJuHNIsJSKmZ4JoMjA
+			3I3ItnTI9nptoQaJ0qmi6cYDobU5aKaCOS5CIrG6uj6A3CGAAB6B
+			MAvuOBPuVtrudufc80gU8jAJpdGzMIvdXdeUqdWbUJ+K+H9cfdqj
+			AH45iH3hW3oY6vkHyZkhKO1kVvcbMeYKmYU1tRISxvsnk+6/Qf0f
+			hX3LsxFqepmIE7hfDfDaMAIvgezMKLIZ+NGS2f/KE3IgC3KpxMxs
+			hwdfrMg3ffZVZYI5uHeHwWtf6SYqSKQOnsuQ8IyKUHjvfAiJaGMG
+			rAsHWHjIjgEzSHEPzn0KUqCEcAAE3uhyAgkABN0auj6auN0JuZ4a
+			u/gPzV4MjJnhHhHhMIuIdhThSKU0PfkQ6Ite+auOifo5uASHsRuA
+			UHw6DKmAIHumi6GR0ToH+HmUqqedAHrP416LIcoAOfOAm0K2EUrM
+			ktPWgZfkbrEKSyBWahMn2HvZMWMK4IIAiAouE1+c81SjYb7UQOne
+			0J7ZiZenI1Unm2CBEBaWlQyIQ4eO0HgeE6aeWKUHOHExok1ZGwAg
+			QKQUffrweKc1WUUgIK+fOLQoCtTMEIfeSmFUvzsWmBEWsA8BGWtD
+			xsGN8agLPQXLqpcJ08fTTkgR0ys+QgNv9UIMZwiLOTPKFX0/xGE3
+			HUEOr3A7xMmrGOwKUGgHCnQHQHiJaFuGlNiHMHfsyrMHCbUFOMdN
+			Vx6FByD4J4L4N4P4R4T4V4X4YPWElAuHGrcKaGES45OKUzvy0iQA
+			XWH42JoCWBhV4CZ5A+T23VGU+uQ7KnCIeHUHEImHw46Su9+tf0CP
+			8HYUKTpCiKUGuGWbMHiVyUGAgAhyNYic8eWMixSLyTosLvu3CS5m
+			lwfda6PfvwiJxEaAQARDp0clkILqBEZhoooo6n8ImHOHAZ4HWHJL
+			S6ammlLXqIIU6WGLyPUwvIP290a0enCTAHU1snBSaNeK8fTQOL9D
+			wJsfRjeNPlCgZuk828KN1i4h1TYb6eCywIsrsN8LlKdsbK2XHH+H
+			sAebMH6AILyysHwACJadsMCh1PW103cRVAojVUwTGQELeIvHt9kJ
+			1ASImnQIJAsIJA2KVAsSNb+Gq4nnRIt4bugbkauZ4b+aKEyIuBzO
+			eS5TyrCBgA+Sf+qSeBQAySN+18r+P+//ArH1v9dumIxKLsgjB9Ad
+			OyPwnz82fBg3jvS5x7+H6Ws066c1QxMZpvaYUIA9QA9ntAnw+XuA
+			HzCAA/X+/AA/n8+wAAQIAQAAwLGAMCAEAI6BAAB49GQLHwLJQEAw
+			AAAEAowAY/LpZLZtFn9FZnNp5Lp3Nn+AX/PZlPYrGKNFaBSaHRqQ
+			AKbSqTTqXLafU6xVp4AavWa9X7BYbFY7JZbNUaFLXe+AQAGo6wqA
+			H4/Y+/alUbNeazQ4lQ30/H0AGG1WUAHS8HYAHo9npcn7dr1kclk6
+			9Q3tGQA4psyQANwAYwA1qgAEBEcpp9RqdVq9Zrddr9hsZsdgADZc
+			ABJCgAKZsJ6UJZtwJaDtHxJbIpaBZtIqHzABIoxLK7srJTZjz35y
+			gc9giAAg9LiAn9LAFEJbQYrOZa+el5ojGH++fP6obNnxLZhLQWC5
+			EBpOjKLgABAGJEBIHLq8x4HawJ9HwoZ+n4oZ7nsih+QiAACwCA4F
+			o+AkAwsnJ6HiwJ/rwqz8pej4HgkkQIAm5SZIwfZ9KGmD4RKAB9n2
+			nK+gABYGo+CoNAOAAFAclh9RogZ5pafR8qGfB7JycZusahbIKawC
+			oqGp78qkqqpgFLikJW46XqgpoCgOj4GgfGCkHoeT5Hse6KK4jAPB
+			LIgPhMtoCAOjADgVGqZzKkYFOkf6PgWCCWgsDqMAWB6MJWoc1Ksr
+			jqU1TdOMkfp/KGc54ISdx6vkUBhm4ABvHUxtO1esahnWpRjJsaIA
+			EeAA/1hXle19X9gWDYVh2JYtjWPZFk2VZdmWbZ1n2haNpWnalq2t
+			a9sWS0oGAAhIJAAwJgqUDzRp/bKygeBTlAeBIDAAJIXA3d4X3lc9
+			7TQoccTQlp/H4jB/IdfeBRKvz7sybCcnvVx7HknJsGawMFIhgCWg
+			YBkiQ8j99HqeSIMevlQIi9WPqhgMnJyfJ8JzO6exM8+XKOmlKOQA
+			gByCDK2gmDEiANIkBAUj6SRvWRysCdx0PlJyhpIlmmJ0lsdKGwCc
+			wtfL1H2+WBS9NWhxyfahnediEn+9VDAUBciAGAiZusp6mz+j4GAa
+			8iagHTLbozTOCKOmKZnueq7aOwO/sgpG1X46zkH+CuVraiIBpyfY
+			HPufoDPcoZ8gKwJ/PEiIBLseQCHiuQAoooLrZhe69tMjBwpseClG
+			Y250JsZbR9o+RytG+V3MviYAEm3XVeH4nitSjDaW4u1vqGTabBw0
+			1uOv4yyBuEgKAAHASLiEIKW4EHvep8Xx/J8vzfPZy0NH1Mtpr1Kb
+			H6mqeH6p8upcf7yAABKlI+oSkD/XcAMfr+z6lQH8RgfSM2vGBHxA
+			0hRDB9j9MCPswBpi7F8JczRAKakOgGI+2opBSACQeIqTUorMSXP1
+			OWys6ZPEzstNGVt+UIX1E3S+vlL60G7voWgPAfCRBqjrAsjkuhDS
+			molhasGCJFBjDWGaAAdQ8TEjvHm7CBJFIeFfMCR8dpmzMBeW6uB4
+			DwosxljMtc0pHzGv7Hkc8AAD39FKjgTkFB9QVk2BMb84JNgFGjAX
+			FkAh2TvD0AmAACI8zwxFIrEcqx6B/j6f6/QlskiFFIPMP9gMYUvn
+			7P6ms57NkBAMJYgMljFAADyHgYEfrXy5I7ABFUiBCyckdI+BICkA
+			SNrdHqRAdQ6CBL9UIR9FJGW7AAAoBlIkx2fH2cAyJTBLQBk1JWoE
+			BJGAHATJEAcBJH0dEtILAhJ63R6EQG+NeNo/B8nqf/DadhUy0lLh
+			O3IkQBD/t3hBCgl6kQHHQKQPdOoAIGkQcOAADoIzlAcBGu4BK3AA
+			AaBIR8BEf0AMzPwfkfA9ChqMI+z1Lh+W1JjiTGd1SPR2j1MCO8ex
+			gRNi/GyAAbg6UmL6pETYd5NhnU2VwAA2lM6eU9p9T+oFQahVDqJU
+			Wo1R6kVJqVUsyQVTMAcAACE24GD6iqKUBmnwHwKx/fAtwHIIy4va
+			LjUxao+UpAAG+NQoY8h3E5SiUMbIzjAoiR4eYA4Bl3TTgMRgfA92
+			JnqYAg9gNgSImQr6RBhR9Dzt3nXI0o0NTz0VIwo9/aj4+z0JaAhx
+			1mijDzHcRBERdmq2FZATGEUuZ6I3JalEuw5RxH3awXZmq/yJQpOi
+			gFSVeVM2jMYXaUyHiMAJASdI/IBptgAAcm6DJ8ELsnkmg+wFg2Qt
+			kkmhewhDnIj8apbUfy7iKgPJyP+ZbnR9AMRIAS3znR7gHIEPwAhF
+			IDk5HsAMxq/iIOnp4+qLBpnMFKMgAAgRLUmEYM4S0dRmBaG3Hcqs
+			AA2wACrjFWTCVRzSkiISDY+q5CIB6JsCwpVIXyt3RsAAJgMaoBMB
+			hVABYBiRAKAOcjCeMcZYzxotimRTCbsadRZEmx47Fnnf6mAoUH3K
+			zsKKmKAI/i2tkvCU2ChFEdMelWXIfhFFPseX7BZNBdq9ABJqAQBB
+			GIOTEf7iJLZSjrE2TEU7NJWiqFEOniDN0MUvw7WbnLGpq05LuG0O
+			6Qo+R+EsHxoFNGeFeKfLsN4c7rh4McAANccSqh5D2SZT99V/xpm3
+			w4R9VQi8G551BT4jAmY3DnABIV0YNTRrkJaEUmy3yMAiNG/vMRNj
+			lKWw/mqLIBR8ruAgPKQoEh2lxK4XUBbmwDE5c+TGIuyyKr+OePg5
+			R7yInmQgTkA5/wMgTj7ZpDp+UJ3ymbcAAAEgM0QAWRghZQxzDgIo
+			PUedvtoASAqcqe6M3QDxPvMCgA92E0YIyTMCQFkiATAvAFM9zm9x
+			IJHcevQBdp0LQ7LlC2Ah6wISUO8dJ9zEHyMA4W2mc5FsCK3Acpde
+			gGAQJZxB/p+dyKGheAkBZ0lMkLIgjOgRyANgjJFzskXKSWAiBcRg
+			BQDSMWpLA3ud2dtQrHb2p8oY9NAAAEkLoa4ABsDnjaPiCLIn3vlI
+			SRgcxNhkAAEcAALnTe1dr7Z23t3b+4dx7l3PundYy1OJZVAFRtwN
+			GmFATaqlPQSAYNsCUDBxAaAgkKDPxXdletYJyOgcBOYpMoQdWgaR
+			EB7DxcjFhEU3B9saauPm/7L7TY82qTmBLmN/WPX4TexiNW9FNPoP
+			4fWXJQASAuW0CPu0MbTAQz4BKgCewN9V61CDUpWerXwSCT3SLIjs
+			HQ0YdkE5wr7JllwopKSPgTAtH1Si4J0gAHd9XapzW1gAAYA45UL1
+			BS1ArLiBA9yhxSRIZBkhCLfHqrwR9AwljpAfBCAiqXIeIhYhonYA
+			oyBxQtIf4ApfItLQIigdQCDsYe4AzALHoAJwrUK/4hIj4wpWQ27B
+			IoaLolo0R3oACLogRIgux4JrLx0GJXqpxdwDoAAIgzCqQiANo3qn
+			y2ZDCUAJwGUGwJoGMGwAyUDFhc0GUJkJsJyHjG71xE5gSd4vDH0K
+			pRSHInkLJyC7zpgoT9sBxl7XRCwiEMohsAYx6C4+pUC3yTCIwuyH
+			aESEhrhmQnSGhMBlzNb1Am7NrNyd5TIq6EKdqyArDpkJ51TPalwd
+			5b7QAlhCg5g9BY8NoAAcj6SU4xgAAaIboaoAAd5ESpCuApQRIpQa
+			DswAAZ8REVRTrvCqJIpHJDEV42w+6IYiAzwj7VgADVwlpRooZcj8
+			KpLXhdwDYcYEBAQe7WgpQfYCbfYA8OI9AAbQh/wlz0I54e5GA9UL
+			IhotIBpRAAAE4Do4gBIkp0iKAch3IbwhK4wj4GgIw2wCoDYkSt7R
+			4ZzjgdqWb4gBwCRdyzCYglpQSuooYcIawhIcQbAy75K5ACJdwBwC
+			L9r9IBCXKF4lZNgCQ5RnrdSs4eAdLjwwKgCVwd4epHgpqvSfMO45
+			5miYogq+5kKUxvZ6aESYpP6aBLwoBtpExNSUaaoqxwouwAoAwjAD
+			QEIlgDIEQ5QBQBgjAD4FQlgBgCLQ0VZYwtBHAezqYSIXilrrJ0Ye
+			rrgxzr58g+Qj4xIloY4AARoAAKzHEqMtctktstzuQgKAACBQOCQW
+			DQeEQmFQuGQ2HQ+IRGJROKRWLReMRmNRuOR2PR+QSGRSOSSWTSeU
+			SmVQIzAACgAEgAgAABAAQwNCwMKSueQ0aCIJgAaiGgiQLA0ACMLg
+			6e02nU5+Pp/gB1uV+gB8vV/AB9PiBOVtvwAPV31N7vapuNt2Z7QJ
+			+vwAwJ/Vt/1MAAG8S4ETUBAO4wR+v6/39/P2pv9+3G6wIBTUAAMC
+			3ECAbHXZ+4YAPyrgC51N8vexZ/NwMJhACAAG3sAATTgAGBGXgsIS
+			+CPZ61es1fL1vLwJ95t/3MAPJ42J5O99gDL1MIhbTg4J6cCgcB48
+			BXHIbSBvp81t4Ovk3WtvzkgAJheX6zCQTq4sAe4A8K61O35574d/
+			fR93EEg/qgGAianufrwtoeB8nyzL4ruAi6AGuy/vewbfAK5Jzgkc
+			IAHuBB6qfDySrs98RJqrz6LuAC2oEe6BmomgAHUrgAFQgZ1vMABq
+			gAQEYw/Hkex9H8gISloFABIg5xOFyBh8gYLSCngLAeBAAKWmIghS
+			DCZBSC8ToEvEIydMEwzFMcyTLM0zzQp0QwjEKCzagcQzeuUIwiyq
+			CLiuLHH6l86RPPLH0BPC7gCmp+MK5VDrmq7Cquw7OREuqxPysSDK
+			mAQCr5ANBy6wYBQggSpq2hsv04g9SS5Ls4IHOlT1XVVUzTWNZIse
+			h9JecB4AgAB8H2055H0AzOH/VseqnXh9Q0fcEmCaJjgAdJ3xqzSx
+			PnWaQKmdsTmNFxTgARoAW7a1xXHciULjHTqnjKdAB/EQQOUAAlRO
+			piBS2qdgv4gaaqnPlypOAtgAADJzA8AAEHwmMvAAfYIQSfwDrEAJ
+			+pqAp+Oq+Ka4lPJ9NOAK7WGw4BK2BwE2CFQNqYA1MIFSh3HS5J0H
+			FZADAQuIXiBIgKA3YJ4naq5xG3ZB4HcrYEAUuIKg0l66riArqyKC
+			Can9QwAG0Z0Om4aEOwIrYGAfYIHAel7GoEBLqMfp8AJqCYM2CA4E
+			rieh4KuchsLafZ8WMzB2HosTMAABexSKBj0gIyXDNXxD3Hw0DOH5
+			N9CS6x0ROtN7CqnvC6MWvLGJrACpgoDC4gnLGDAWuIIgumoKg86u
+			36QDqagUBun3920yTWgZ7n0q5TmSb4AG8dR5gAb51HosZ80p26Hd
+			y0ZiABLAmphGI3Kx5nsez7Xt+57vve/8Hw/F8fyfL83z/R9P1I+K
+			oAWCDQACRQARUePkTqD9YchKnYdBICoAAPgTAYAADwFIBvre6eQq
+			Y8h2lbM+foqY6RwFbHwPUzyKRvjYKuPcebmB8lTHqPJQSq2mrBLu
+			ddVyw0JnvVEcI5TjyaQoQBCV2pclRD8hhDiEA81kD2HiclCJqTqm
+			pJqAQ2gEgMAHeiB+JRNG4jwLEPQ4pnD8lYH0VsfRUjOGBOGPFZEI
+			WItPBIC8pAGQRRKAQAs06BCzD0LjDhljVB3jsWQwoBgDS4gpBklJ
+			ABAjvlXGcLx4g9h6FTAcBI04IwVJEbe1KGA+SvHvY+pQfw+ypw6A
+			BD9BI/AEN0Hgh1ZCDitj+QeTQfRfB7tjlOigBbyB1gUHOigBjyIE
+			JAjqAAbKIkalxRmQIdKuwADPROW1/7xAVLwCsvCWsy5mECR0TUto
+			C0Yo6IEDJE4LyBgRgQB0Cc0gPTdAADsEr/wdAlSbM2dE6Z1TrnYh
+			5NbH05OUM4oIxSLnKKkMcP5fqqZ6KAdqxkvJgTdHCUZFRRqkERHj
+			REaMgxfWMuIciqgvCn6EkOcnCRVxd0IF/dyQtzk7aQK0VsAAcQ8Q
+			Hq7V6ABA8Sj8rER4fSLg+CogAGANJZy0Eaj4K7FRUUyx5InGsicT
+			4AHiVDHeo8VcyqQ1LfAucAESlsrBJqrogQGVABCRETcgT8i4wDK2
+			rqEdTCGAEH4S8C47wN1PH0lJCI+gFFeT2VcAbFmDD4rYP9fdCQCJ
+			xLuYKvpzAFRKBKA9XQ+niGrAGxQA6eWnxGIEA2RBLgDFxO4VMeY8
+			ip2VAABB/4AATA0K2AlIgAGXE1ANE1ZRWxqDEK8NMYtcJLEwAWbE
+			BZ7Ttj1OTJhCIBwFE1AsBxKQ+z7nDHUpJSjuytjrh+ZlURsiXgNa
+			/DFzp2GPEFQQouvx7GngBu3ClN0XB9rIVAVOiJfStxGLiBd2J5gL
+			n8mkAAB7qgAARAy65moAAJAZJrGmi9Yp0q8KuK4ZiGRvDreQNkc9
+			Px5j3PLMtbdJwnkDLajpFN/sLYXwxhnDWG8OYdw9h/EGIcRPcDAw
+			a+YAMSx5UfikAC9H1BFBa/AI2MTzALWCBIBcTcRpOOWQUqNmR7Rv
+			tiZ8gQ2xoFegZJeLQ7R0weN4XCvrS68SSKnEaGskiBD0Hm36GCEl
+			YMKzAY5ycWSBD1twWO5ZjS4gOjVZsBh/04INMYYcxayrMwfNcA4l
+			9PVNnBKnlosUhGImtBSDaaQIQWRKAYaYrA9ytrKIEPId1lDugAHY
+			Odahi47k1BKC6JQBJSjwHYVcaIwC2ldKmAsBpNQPgoJiAgBLFy8n
+			kVe1Nlg+IsWxHdJAzICSxDhHg8gfZwqyrUuqAMfBpwCDxiUAIfB1
+			R7ANeQOoC45kUbSx2RdEJNUEomhAid5BUxhonliXFbp1ZfiLWeq/
+			bO7SSFxDaahQAEkTiZIGDhEU0jsQIBqUAoQIidgjKOUnge7uDcH4
+			RwkhKcj4UITgxlOCw0/KgTui5p7H0/F5Ovlc67UqCKHMDKNzc8i6
+			KQuqm68hjqI0SVWnKlyqqw8uo5RhVCpt2cv4U+Ye1KRzD0KQPakY
+			7B7ExpamVzBbwADSG+Ne0g86jjjHVLEe2RJaqOIFLcTCIt7FXHYA
+			ASZVOc9hJBiVKSugZkDBOQMKj9yBk3KnEouNo0TlTYviOuZpwKj0
+			S2AkfEA2QFcreZwAdch+mnASPau6+7qj+zlxRiTGTE3zAUsEEQCl
+			dD4LKS5ldv9lGqbJJIxVHDNj6tioc8z8AAAuB+cl2Zcbw3kIGPgt
+			AABli6OSMwXJyW8ECAMAkmoC9YmZhgOkcaHR7t94cZpVTYYlW/gG
+			AP6CGtKjnHTXAzYDQHRDcFn0xcLlqrVTuY6O+yjI5YMyb/ilFWWQ
+			xKmAoB7sikVPbgwIEPhra/yIEA8CpkoTHT/g/45w7EXEH0+UF+Gu
+			l+HGHcLaGQG4RgHYHmQSmYGcRcDQUe2sEeAAHLAFA3A5A7A9A/BB
+			BDBFBHBJBKImDieoLiDOIGBWRECuIG/ifUCSBerSCVBovgASJeZI
+			hNBMJQWqKiLi9M1QAAG2GeWQgYKux+0sHMgo9my8MCNar8YUAKZW
+			YUiqAAyYty9Kp65ksYOwhQcuLGy2qIim+is2uiAk0YWqHcHWLaHa
+			HULaMQZCaebIL6LiAkAqiUAgAmrYMcHqQGKwHsKuAIsWKECKJeBW
+			B2JeAeAo48vGyUIEHEGwOqHOG424RWJoL8NQAgUsL+6QqIHcLE1o
+			i2ZYi0MQIEAOAWdWAu2UMohO6uQ6YWaoHGk+V26QHAHaeQWQKuH2
+			QqM4zkAEH0OqAKHqqlGEQ0AUQ6HaAgRgHslbB6IhEwAAGUREHQRO
+			FKRFA0eIHAqeRiEsAAlpGg5yLiDUXWdWfcABG+IEBuUeY65qfIQi
+			B4BOSaB4BMSaA4AiSIA2xxHFH7H9H+peoo/M/SIIymTcn64aMYUA
+			y8TWL+42VczUp5IkMMVCOEnq/SuqWGz5IIU6oyIKU8y+o64rI4IY
+			o/IAma52NOHQHqgG6AJeHUHqSI6KTMMCLEGyHIG8AAHeikAAG4HK
+			eAwXFinaqGK2E8IGHEAAEipJJO4SmeX0AA2sV0JqgGJi3wIEBS7U
+			ROpOKmqtIVAEY8aaH22aymASH2SIH+Nao0JolIYNLFLWL4H8YopG
+			YwLulWACHw9+AMNOAwAUmkH6uGtEOqiQOkvuc49kPGhhDsskT4Mc
+			/0IEBOBqKu1gIEHw1wdNMogsAAGgF+OSGgGA90vEAQbOaMJqLeK2
+			HUHKRWHwHowaS7FO5OAUcISmA+gGacQE0qHUHUtyi4Aa0Ya8NOOu
+			LiMCVCb+VUTe+gLiAW/u/8ioN8d4ypNcLuAGWRDMAhEaxaAktM/m
+			A2BINOjMT4L+AKAQ7odqLzORKYTPAIK2GKG2RgHKHeLaGEGwl+HU
+			HkkimWGiRPBQJrG4EYeLPRQBQDQFQHQJQLQNQPQQnSDocAYWAAD+
+			ROBiROB2IGJifG8/OCAACkBoA+AACmBqYKQDC+v7QSIqN6ILDDNW
+			kvC3FKLSG0eWLkH2PauyIGPJCCM29fCwHRNALor9OY1EU4TyLyUE
+			N3HAHiK2HmigRdOSdoxaAajWi46cWQHiHcK8HwHmOSK3CCRcocs3
+			DyvgAoXwRPMOQ1EEfdQqBgCAJeBSBwJet/C8/YYWvEHCGsOqHMG2
+			OqHvFic4AEzkT6IEPUx9MsHUHIkoIEjSLiA6BGiVPFTetO6ui4Gw
+			HIp+HkbmAAHAHYQ6HyACLEHwAORKZEJoroAKHy2arpU7DcAYRgrs
+			wrQCUcLjPuYjJ0RPG4IEFgIGeAKQFwO2RyUfRIpCfaWCXeqwIEJu
+			WQDeRO7TACe8c5L0OqCcBiA6AACaBkA4qeU0AO1BV9W1W3BMTaMW
+			PcVRIETZHeVIMUH+7rNccgL64mQiPyzovHR4VEo4S+VFXBI9XmVK
+			IKS+TYhWIS5fXGVhW4e6pkNOHXJiLGpGHPJYURWUWKOCpUHqeIHq
+			yIGKGpGouUWypAWcLjY2AAF0W8AAFzYEv9KcXUV0KuKCNOJaK2rS
+			LiByIGKYKnBicnXRB6U8YoH6qkciZEYoH8qlLiNWrKvgpMJpRiLu
+			HqYzaQJcbIAeAVPAaaZWa8JeMg9ciuAAHGHAQ6Hq+QAcNgKSBMKY
+			kaYMt6AAAsBA4gKmZiOTNQLEZoKmHWHHbXbiVcAcAgP+cQ4pRwLm
+			K2AOAPKnbsfdb8OsLiZojWi0vCK2HiHkPCIHEYJqAiAoY6hRI0IG
+			lGVEWUUWMwvQNWAEWDUZOMUfIvIcrJFeNQ/ecAqoAKsmAAZ0NOvy
+			Orc3T4IFDNZGR+M0K2GsHMHgWfPsAAFiGaHGAAHJAUmalyLiEUIG
+			mEEcmDdrebedefehejeleneowvHKgGWDeQLiBqIGSS94fIAKcQAM
+			sSAACjQ3fKBoYKcmYVeqJQM6OUH1CCVEgqz+HeN48iH00cWeHEOT
+			TGaYJgAYNPPPIi8ERO24zwHaHMKuHeyahYyqU0NY5UTgN4iqPqLG
+			HlSOim9M4pc3f/Tyg2K1dKAsA6JevyJeASveAoA0WCObGGZWHsHm
+			K3gSIEHs9mHqi8RQHsWoMxCpceAnMZOE0qWiOA/bSYAuaUL0c8/K
+			1UULYfAaeIb6WQG4wSV2ACOSHzVG8FSyH4v2HuSJLAKwAMRWHeAU
+			HdjDGlW29cIHGsLiF8RFVoABV0aEkzauKTQaR0vFfae87IxOC2Rc
+			7SK2mSIFQ4fXNsvmxsXiBgrSCWBfWqL8TyhRj1klkmmZW86sUrXy
+			nlHfJGkk4hOiVKLxgk4mz9OgUc/ATgTYp7I3X0VAhRX3YDX4rDko
+			fWeUOqHaHumkVqJeHKHnL9aATQLMQQQ0p2GIGoGSWfR/AIPDXsgQ
+			G0IGlyKmFTM0ABmkJmK2R1lXlmdtKcl+pOOqJiJemOK2SaJqC4RO
+			SaK2BYROx1QHjAr2bGymzgQqj5aArINOAeHkpPGCYuHtD8iLfIAk
+			8mJocQ1BGHdXT4JqvCKvaxa0HkLEkOWCBKBUKQ1gvsdQAyO0l8HE
+			QSHOHCQTRwgYLFhuLFXWNc0ZdUVJPOS5NIvwAqJe1gTtIGIGH2tj
+			NNOkIEAkvkdIL4n+5KUairTyLFpo1S1WvmAwNOtOiKhMAUAciLbw
+			McNZSyzEu2uqYUscNXdWTvJNm0JMUMK2eMeRAeQSFQd+AAHDUwmW
+			KmG6ROEuROWdeWW3q5rlrnrprrrtrvrxQM3iKYNOFAIGB0REJ232
+			fHabEXoECQBcrSCSxpX3YbryIWWqQIMUhaVE+OyVRUIEZcOSZ7Sy
+			LzMCMfbwS5aAT+O4K20kj8HVcyOxE0PIoAVec4hwK2ikKvUob8ir
+			DCMLXMWM9mHiHXRecAAeNOAWz1qwLiA2BEWCAuA8WDqSzQK3huNw
+			HxoWG9GUHUK8H4zwaSSkAjD4fddWgUQ0HquNE7t0JdWvFUAAA4BC
+			2ahMHMHyeQHuAiQ6GgHIRqQG91GCQkMOurFFlK8WAEUa5PW4csRc
+			WQKnd2IERaLiqCSI6yNOqOR0l/IJseTPevHQEMRO7OIFBa/ygRsK
+			AABaA6m0Byf8AAf6f/sbwpxVxWSC4bXe4W5sIPIFpuTZXBSDlEYU
+			PFlLW/xsTcoRI3fYVPlfIxXnllxYe0d4XSrsqJixrMHkKYMDRGTO
+			syQIAAGSGuGg0sZ60ttOHyvCmaQTVeIGEgQ1KSxMK9AxjRyOTLBQ
+			JiKu3xuMRPWOKnnJbKIGNOyrk3QNjAIIAOH67KHwm0QaOkHvc8Hw
+			T5i4TmZY7jfGAAA0Ahi/tGr8HTvdcHOhy9IqyrfIjvGGU0ZoJqiQ
+			WChmkk2MUaLsamKmLBzChQASAZTfpL1HpLuaAiArgFE0c45Xcqiq
+			HmHcUslKs5ceAuOqL6LtVALlOaV2Nu+EaLbIdINOt4Mk/K0XTeUI
+			7oAKUtkjzWR7feHdYmpU6AAAEyF9mcG2HSsOmXA0LiFcROFvZB3b
+			213h3j3l3n3p3r3sJQR1YKvhHQFFQkRFZmfIAoAaiV4EiUCIBWqt
+			4O9R3uInfeIRYfIGMshghcIJpKIIp3lbOgy8cYPwhsdzf/DkMyvE
+			pmtIHOsyi09kVCUojh2WPehyvFpoo45SUyTxE8H5nusiVSbkKuh8
+			NDMsHcHYQSHgHey4KmAYAcNOAZgCcT2jCCPLx05Op7RCfdbIA2A+
+			qkvuHQ+OV2AmeQGcHM67h0WRRi26oSQWH3vzkvrsQ7P4REeALiFU
+			JcAAliRWGnzKK8E0OG3Z4YJK3iiUOSpOJjP9e2UeYK7igR4KABHq
+			SaBgA83oBgA+3p758n8oIpmZILxko2VfISS6yuY980noMGLyUdXd
+			gcvHI84plNX19FXzJFX9sd8qScd4JqHkHySlAgWCHAHjyhl+WsWm
+			AAGiG+qCHa6deE6iRQ6omWNGeW3sWR7yKuRq6yRh9iJUJmNO7OrS
+			LFn0AACCROqsK2CyROqoNdKfeoAOH2SkAoHuf+AI8KMf0KNWHyY6
+			r98uAYAQNP8iKQZEMUP2IAAG82XsAHm8X6AASDAEAAYEAKAAQCgG
+			AH2938AHk7H2AH/GQABgRDQqGQMAAOCQCAAoHJWFQ5DQGBX/KARK
+			wKB5W+3zNQFNAAAQDPgFKwMCQAAAJEaDK6UBKdHgAAwJSQMC6SAo
+			bU4qAHo8aJKwJJ6VTKFSaDNbPaKS/H3NakAAFXZFDa1SQDRabaqd
+			c7xW6FUbZg8JhcNh8RicVi8Zjcdj8hkclk8pkX8/5q9Hw/I0946l
+			V41wA2XO8gBl8rqdVq7Q6bkAFxaFgAEaANnrNxud1u95vd9v+Bwe
+			Fw+JxeNx+RyeVy+Zzedz+h0el0+p1et1+x2e12+53ZWhwAEAA+QA
+			EwA8AAoLQOqD7e7ug+FKx8awORIFQB9gt7/5/f847MJqfp+JWy6a
+			o+tp8p2fCkn8hK0JXALTn8lZ9J6rx4JAf6nQojx/oafzUH1BgAQs
+			jJ+n2lZ1nKjJ2HGmp9n0pJ5Hczh7nshJ+n6moDAUhqUoatZ7HpGx
+			6weqQKgsA4AAiCiIgMnSgr0AatruuSugTHyPAEmp2Hwe4AH6CMGG
+			kdB3K8fsGHgA53zCAUjwa068P/Oj3rg9sjxkpL0KSbCpEo9pyAAZ
+			4AGcABgAAzk60XRjjoaOIAAzJD2kqtAbqkirBUayr6AALodhGAAN
+			AgpANAiBVN1TVVV1ZVtXVe7M7qjO7B1ouFbsaldNLYta1KatDMKT
+			WlhWAuLF2HXj3LXXdk2JOdYWhaLjn2fyGnsfaInkfCTm4d4IzDat
+			FsujJznc1x5nuelCm2agAHcec+Wkx87pq2N6qkZIAEmABkXlf1/q
+			SQDXni8L2jKqQPLQKK0AeqQEQg9tmYBibCAQfSkAoer8AIfqqgGf
+			WPH2qoAw7aqMwomoHgSiIQAVb6hpWfs9HGb8GHqeSEomiqHqqBIF
+			obGKMnmjj2x4A6GgkC8lgOm4AAuEKVguD6kpynADKNKK1qCjMDqm
+			qqQpGsrCK0tS9LymoDgXsqkyptioOrCVea1im6Vfrq4nqfLOEaXB
+			rAAa5y4IfR+IS1G6gBgiVmgtD1Ec9PD8hyPJcnynK8ty/MczzXN8
+			5zvPc+1iGj1py0PwgpNPbS/JBIC4GgB1nXBoELzdkCnQdvf8HQOu
+			EdZjRR+PJD1m1u1EYqTAcGw1Dc4otBUSwvCyan4fSanScKknSb8Y
+			Qug7OXgjrMJWBAGIqhaKpBxB3I6eh3s5CQMA3JYKaUlCVABqqbTm
+			qKVq3MNgjtHyQUfoDUZDVHSmceY/0GDsASOtMIA1FO4c8RklaDCa
+			vXJqKo144DXjBPGV5fQAB2LFglCUyIVSpgAA4AAFRaANlSPASsGD
+			ky1pUJWCECrrgzBCBMeUBZJwJALSXCaIkRYjRHhKsFZCxjEMSMGY
+			EwiwVmL0iYZOKETokRZP4PxDo9h+LZHwksbg7lvxcf6f8zBGR3jz
+			NMPSAIABkjYUMOweKZx+oOc2v0mq/SVi5AAI82EWpBGIhQRUrBET
+			9ghTCAA/BNQuloA0nIIB7VUSDVYAgfBSALDvkixxkbEVcICAOQkf
+			gBjOAWAYUgEY/3bD8HuSsfiJB3o1AAl9tDTQHAUasVYsgDQHFiKA
+			SkipKScJRJaUmY5ZVdF9K6WwfA9VhpWKo/wAZcG5lyjOTUpZfy/v
+			8jPJacC0iat5M4JMXY2W/jmYIZojsd4lr+XUSsbRaHUOOEzOGfE+
+			Z9T7n5P2f0/6AUBoFQM1UhYVQshdDA9sM3JAvA+t8GAHlvgpAyw0
+			FCo6CUZOMiGd5Hn0LAWQghWqEIpoFNQ8gAA5huFJHYoIiz1DxkYP
+			GPZk5IB7D1JXTcmqDiVjzHeQkr7uyagOAeVUB4ECqgHS0BAChDQG
+			gRIaAVr6Oikj5HojCLgAB1t5lqAMjo2B1QIAAmAdYDjXD9ghRpaC
+			wyEkVIKRkbx7RRGvG6AB64twACrRLWpzQbSUEhAAFY18PSEhbKlI
+			pyQBABkrAWAgiIKAMAOAAHUJULSizem/XyzVm7OO3VlSAtiuIrFO
+			WCr+kbEFnRVMoWea9nbXGMR2SsfLHXED3SWNkdoElErhUZTs1Dek
+			ZDCGmMcAA6R3wjXQPVD1HW6jtLRCMmqlTxKVYFFS17knHFIHU6RG
+			QdGEFoB4WhVDaD3XXOcAJcIBh9vyHgBgpVtABrhZgVJ6QCDOD8vs
+			AADADVUQ9PwPu5SiR9U9Zw89HklQIATmA1QpgGCYv3LIARo+ECxN
+			XPKBsmoFMMNeiwYVAc1lZ2mMcVrDt5sTG7s+Uke7gz0jEriNwdI8
+			6UjvuVitODE0ZErTOUk2rjhGYnyBkHIWQ8iZFyNkfJGSTEyTKqDM
+			AAMT2wrM4wIlYLnJg0BEeYGrs3XgWdcCMC9kslZjOWTwmo8B1ENH
+			cOYto/HpD5Iy8ZEo+CajvHbmfO+AikrwJqPbGRp1FAMIYAABQDCj
+			NNA4CQqoFwPERAI18eY7iEj1HiRkfKFx0jyTAZ4jI2h1noHoAJMA
+			6gI5sH4ASCOZDvJyKSOU9teCkjfTkLMtA54/ru1UqpSBSCVhpPaC
+			xOQSC0KSclY4ioFmVAABLfsAAbAhgnvLiLXO09qbVNzaU5FpLQmM
+			xLa3a1BDLk7rQee2zfx2nmjMqpYI+0UAAGONdQw6h4QjHWPG50d6
+			PuTniQYtAlyLAAExB+5TqCC7fP4wIqsHCq262gVVqZHQzlovcUkF
+			ZaIh8GN5fMAg/iqwEskAPcYCB6KoAQPYpBbB+AKvuAkjoGAHqoBm
+			BQ/Y/h8K6LZehYxOSkgKAeTUAZXZiFTK2AUphSyVkzLE18BrtgAA
+			OAnz5t/GOpHRxsAAVIydZDdHVjIbw6l1TkcOZynpUhFAAYb2UP5U
+			kI9T7Z23t3b+4dx7l3OIoZn7gAKwD814IE5ByLQClyYPwUAXAB4K
+			9wGVSKR8T3TxhaMPy1HpTkeaBUdphQe7o06D6gkGLAmEjoAByDbz
+			6PJCKwUoFGALMAlYFgOcLAuRXox5x1ve0lLVEg8x+nkHvHcAA1R0
+			XO8mmAdgDx0KJ1R406EFIPk11cUkWpr/n4/F5E+1XyDjBiAA65hq
+			lSVqXIzCslclXIgTAYkvLbtgOATVQEsGH4Prfv/hQPFP1eMmFVtc
+			zb0Tf4yCtKr4d4e5h4aYdQ/DdJViO4hIbgcqDgeDSgAAaQb40QfL
+			ORyqKgjIUwqQUpRIAClYS0Db/Y5IlZgRhpBg8RGQPAtAGQqSFolZ
+			JYjKT8D4xp5aaqQwfxVDkAioBQeABjQgd51wAIrq/CdoBjloCBh4
+			IQFCF4qB/hr4BQ8TCBtgpgo4jJKwAoAxtABSbRr5ZSa4qjqDEsGE
+			MAtkCQhIWwaTVwcIdq5QaIcJM7GhPRw5rolYQrswAEOYtoABgTVM
+			MMPcPkPsP0P8QEQKfyFAk6F4IopQACRQhINgtDaByQIQFa9wIYFZ
+			STLxh6HJh8QTtjx4wz/o1Ae4eohofAexCJB5CwnZ4IfxAimYpIew
+			0xD0FhKMKpYQ1AdocwhIeAdYjJwkFwCpGQfwCBBgXgbhQQeQfRGQ
+			egAhdRk0TQ4qEYhq4gmqvAir6YqpM48C50Zo1K7wrA8hb4iISR1J
+			OTpiwByQC4B5h8SZSRUZVAHgEw/cbUeMeT+S0L/Dm0eaI5WwlYd4
+			fBh4aQdSVofp/sL47gy4hIcwdg1weRIbdwbAZqWpCy5ZzYWhOUig
+			moZgAEcMh8fAyKDQioWzu48wFqFJSRGQNA9rwApKFYpMLUjguEKw
+			k4iIiJN4ioBAeYpABIejXiGpAoBYzgDICYpAJQFiSIAyxQoJt4h5
+			qgA4oklgBAjJtouRr4BYB0KaxcjkrBvQhIXgarWwcYdogoZYbyEY
+			dqNxy4RCwEtApA8hgREkrEt8uEuMuUucukuotCvxJYqoKY9oEoqQ
+			LwtAERyb9iF4JYF6F4Bqxz7IBIskuzqSjimJCsUg04uB6ZmJFKjz
+			FRdSWqnBZwvRKUywpMWwzgeIdi+7NwlADTsQChGQWgayDgdgfK5Q
+			8g8hD65kxoxRrpoBORfohqPgAD6Y2oXc24tigyF6HoqpSQhIRMFA
+			tCzJyIESVAAAMAHxUKIJJYDgCIrE4c7c7hgD+6Jse87py5WQuD/5
+			h4agda/8gROUgg7omsCRGQzw8gWgZL6YekUBRIfkPRyydAladAmo
+			U7W4VE8Q9pgR1wjphpMAPotCGYmsvopKyQnzaMuR5a+YuLjcmS2g
+			tgAgf4ip/DMCyQMAHswIBTCYARt4pcLxYtE6aIs9Fgps9tAjuJwY
+			jIY4bi7YcweAgoYAa41wdIeMtxykcIzkcIqpNqQDHdGVJVJdJlJt
+			J1J5zoMAiQAC3QLA9raAjILItBqZyQJwGSFYJwGIDrQkozQgA8lt
+			KDJETxYZEJ44fYhpCTdpRMy4j53ZCJDouJGJ6SmDfAAAdofpMD/4
+			8gU8sQAAd4fJMAzhB4odNIxw0QpNR4AE4Qzk4VIzW9JMuLuwiJ1z
+			7wABhImp0YlbipyQtcowhp2AAAMYH0voCABSID8tRtWNWQ6DbAwr
+			/NWZigeCML3odQ/YfU9a2JVZASqgzZGQW4ZgX4r0/AepG8iRyglb
+			5oADVwlYT77Jx8O8PMuEjwAEkAiI8zioqq9wjsRgpLwAmrwgpMTN
+			JguEGYqdDpZwvIpJlYqoEwDKyQNIIkvqIQiouZXSaorlGNXD+Ddg
+			jMsSEdHJMErjWwdAeBMBygmrfwjMDok67bH67dgVjFjNjVjdjljo
+			xbXYqTiLigtAJQ9qSJuotYKoGxqYKgGzvixbo8z1jzg1OTx7/p5Z
+			8JYRXwwiLgmodam6EQexMASwXyecN1mYxBI5I4YyFIYotAXwADH9
+			qEuZgRh5ggMg9qFomoJotElZyNM4kgBopDZayQMYIBUNVwqqy9pF
+			tltq04x9gNtw/oeIfJJYa4dh2wfAfYisApVp6R5AZIbIaIgxdKuw
+			dAcYiylBypriRYhpfYk5fZNQAASA88rEELvDf8EYAAPhOQF4tAFB
+			hgqRINWJLhIJ5dDcq4B6H4AEd5hoMwIMvtEpTIvtDlGFuT/cXj3p
+			wK4pbQAAWQZwcT0AdzgpyoUI9t4whqDjH7WV295t51596F6Lt9kA
+			pIN4tEkYpIITiRiYtaxQlYKgGrvl8BqczyKF6TJDzAj6J1Wp48VY
+			qN3Idge5Bln4goSoXZPwdwesN984lYao9pdomoXTf+ARGaEMV8bQ
+			laR5VA/YOw9tzwhI9gpI/BySIQqqHEHYEbLwAALAHCRUxaZt8+EO
+			EWEY7lui24dg8wzwipamEBVsA73ocCeZdBdQaocSeYfUCZyxu4AF
+			aopITw194Jx1xEeIlaSYioGihAmpSQjMRgldcxUQtDk9jC5iqQlc
+			6wAAE9ewAAM6HlMlNF82EjuV3IbbTKrQeY8gVgZR64cUNJy8C4zk
+			C4jIbYABSqeeMOO+PGPOPWPZ0EbiRdBYpLKApOJApK3RgF7zpplY
+			AAJ4GVMeRhhOPjahuIxqdxdwew8gdeM4AARwWxv0sp4OPmAQmqPw
+			pK4lyi4kZtZIquAVBOHg9oHYtDMUREc0dAAAIQFS90dgAAG4EY/F
+			U2SOYGYOYQyIeQfIk4bYdw8wexkA8bcZWBroeAeg02GYAAXoZ4Yg
+			AAesUZzomubGboqT6ccIXsbWVQACPx1xGQQM5gmrYApJht87Yxpz
+			xIEzZgMQHoEghVMuYbt+Socod4gt/I8gUQYiurrszRyoWIqQ24AB
+			xdyhxefeiGiOiWieig4oNQh1KY8GQZOUFbppiYA4AohoCwBxh4JQ
+			FyF4JIF9r2isxxYOZYzjTQjoXIabVwzQzhwxu9nAqUx4uK60yeHZ
+			CRAwiyrOSq2a3zOOoi35whRLytghEr3gfarOnruClYjKlYhr54pM
+			kBBhNrfxNsPgOYABqZGTwgirH4lbJ1dM5pyApxToK9lwlgBpJc6B
+			1wAhK2lmvGvN5+M4k4bod63QemZgzdNBVwmofDS4ryZ5Q4aZfs+6
+			5WbQguSZyilYlauolcDJ10DK6qEkD7hCsYAAGzf9MYmtrApKHtc4
+			9ri7b6Gy02D7oQnAu+u0FlMsz0o1fgvQA8q9tbR5TM5sgYrN04vq
+			1hZrm1UuuxJgBQiMc4pAHYErwmX+vTakx8NI8mf5GQTVosDbGJy4
+			2IhJeyOCEJfu6O8e8m8u82PL7B1w8UcIle0IjNLlzBgFVwioDw+Q
+			AAIkSm+4Fdk+87VWoItFGl4RdTdlYZrpAR5RAT/p441GoRHeHbzG
+			p1/QzmqImpdAjpaioBvREqrPCysdX6WrdmbPDSdh4T+ja3B4tAUg
+			9vFQpKuKQCuMPgOA/K74ldzgledpyoteLKyQNYIl0AB2RUxEmdW+
+			/vIvI04YeYfQk4b4d48WM4iIe6L5imS5MAYYahfOajT6OyPByy5Q
+			la5Qhpx0vpxzWwhJgTfL+FkAiriImriohNkole/jt4AwAoisqICM
+			xYlEo4BQBAioAxtplQk+RFsXQUq4B2kApRtoBHP4uQs+RB/Zswp1
+			tS01ft2yxabQu/RZnvOoAESybFuPI6vmoTsGmMjIXQ0Q0mA5yQmp
+			RAmtZIhqDyQCD3UPWnWvW3W826vyyQqoTgtAHJ0rixiYBgBAqvHb
+			woE7wgHyyHXDIs7+StIAjsx9Oq+kWHajbAuBlHEuyRCZ5JGD3jNx
+			GBah/zSz3nLkrWpkXcT/ELFYznEiNx71vQr3EYzexPC+qE07IKKg
+			lch4jJQwmucYpD6Zh5MEtr+OsKw20xOSR4pKxByKqQhpU4k+5x1w
+			MQIEvr8oqvP5IPInZnjvj0D+wIiIb4eHJ2YwABa4phgECQ8gagcK
+			dGagbQcauJwbz5ysN4jolYTY9vnRGSBxfaBzxqgxSUwOCURGi9co
+			qVB9azIQp2kkmRt87JJeeJU4iOkAqoCF1dsAhSqR+4vXOouwvXRd
+			fgp23O28Fm4+3e44qNtZuS1BLiZZXSzMz0zzn9DxtqH92fUHj6fp
+			CVX5oXegR4XF/wa6dXbhycaLdwqWAQSOc3vfx3x/yHyLqTuxhuzK
+			8CRcHbo5ibl4iIF6iQ/I+/0EeHyVjnv2oYjNH5MAdAeP1X1gAAc/
+			1wc9hoAFhhMGl/k62bJVh2z4pJ1BJfnQpJNstGr79+sIPw9rKwhI
+			HotH0ZyGCusQCorGDJ1wLQHEwO130n7P7TuHkKuweI8RbQk4epbB
+			ihwgzgcodr4uagZIa5QjFdIJzNAAqVAYpKdHxidHoKwEQw9qRQgD
+			/ABsAABAAnAEJhULhkNh0PiERiUTikVi0XjESg0KjYaCAKAAMBAE
+			AAiCwNAAPBQGkoWBYABwIAoADYRl4LA8kjcFAM7jM/oFBoVDolFo
+			1HpFJpVLplNp1PqFRi8ChMGgT1fL8ACJWrVADWcrwAD8ftUqVnoL
+			PhTOgoAWQAR1utFzul1u13vF5vV7vl9v1/wGBwWDi0BAgAAgUDgk
+			Fg0HhEJhULhkNh0PiERiUTikVi0XjEZjUbjkdj0fkEhkUjkklk0n
+			lEpkD/AABABxAAPAACACqloAHoAfwAA0DmkqoEGCILno2EYUAA1E
+			ITAA0ENIoNRqVTqlVq1XrFZrUpfr+lj+rwAej5flifD7sVks1oed
+			ns1lej4srxe76ADmeL2AD1fL9ADpvIAut+sFbw0mtECssCX8zAC+
+			AEsY4ARwAycClmHzWbhRVAADAARxwLACXxw1nQAEUDBmclATBgHp
+			IipAdCYKABEFYZAAHAmg13B4XD4nF43H5HJ5XL5nN53P471fQFAD
+			ieUyeL4nr0fU96EPr07eT1eYAeb3egAYLTZN7fF6fb8xPfjmNnbA
+			1LBACT9X0/yPDaAAHAAAgAAayIADWm4WIGHKBqg/7iAKAaaAKAiX
+			AqBrZAoBoEJiBSeggBKegkBbZARCbQgW6gDxSobZRa0AHARAoDQo
+			yIApcl0Ix5HsfR/IDkJYviykiXRsAAa68LWyLMyCg5poHKKXFcyg
+			AFbJ8sy1LcuS7L0vzBMMxTHMkyzNM80TSjSbNAayYgAeIASqgQfz
+			HDjZB6E4LgAGAPNEF4PAlNVB0JQtDOOeS6gAdi+AAZpvHcAB1Hkf
+			AAGgcR2gAd7pAArqWH/J1DpMcab1ImhPAA1pPgAQDU1E5VWu2ADq
+			LKV6bh2gcPIEn8wg2CLcCYGAOAAC4Hw8FoOtFCdeVfZtnWfaFo2l
+			adqTGep9uocp5wOeB7tkeR8tlLqvsyuJ6gAXJlsa89zrrStQVDMZ
+			roHJCdlSABIgBe9quJANhp2CyeAASCbhpBFxMdfiLxBAoFAO0AUg
+			0mWIpkDwKNIDzYABhkCAFHeFZBkORTIex9LKTBemyABsHOeVFrGn
+			Swy9JCBXml17srfeR53nme59n+gaDoWh6JoujIwSTegBSLRTimyB
+			JzMQKxmAAhBUDAABaDgIAAFgONFo+w7FsaTHyfa/Wuvxz269y0Uw
+			9NErQcZ2r0tqynQwLB07mWgpdOKBZclhWU6AHBpYaj9gBl2yJEOA
+			AN4gTeJcSybhk1MCx1L8KJcEQLNaLgdhGAEStkDURM/j3GdV1fWd
+			b13X2aex9wKcx6QOd57Q8eNwzBT7BH0e4AGQaxoPM9AAHOdx0AAf
+			h+r9Mx1QR6KBE01QAerAK7JdePYIclmPoEOYACtwgSpuLzHBC1LQ
+			cznkLJpGyaQzDcOgAC2qfvD38gBqcPAeiAmKI1ZgDJcx58D3YEQJ
+			aEyUsomxgDbAANodDLh0NsU8l+CBAoIEsFMwMAApYFQhhFCOEkJY
+			TQnhRCl2BLlWmkIEoJOMHSBK4TEsVDwRgWgaAACpiQAGItchVEGI
+			SzyvJDLVAwyw3B1vIHgpUZ44VIqbHy8wrqTWwksFyQMXThCbH8HJ
+			EMhRMAWmOQYTsPpAwUpjRyQI35NAUAZJkG8I8aUOo1RujmA8YI9R
+			7j5H2PyonZIFHQPU1o7ncgAiarpMRZC7DZHENx4x6RqjiggPofZd
+			kzFlJYX4lwi03yeGqXsAAq3CRge+AAQJN04r5IEwYlgKiboDaIw4
+			0CJkCgqA21xihqkMgABCBU1oAnUwEjzH+Y0x0Il1LKJ8YckIJHlH
+			IO1c4/G+JaJcN8gY3iBiiStNyZE35wThnFOOck5ZzKihYaF5gACm
+			LnFAQMHSYwMOnCUC8DYAATgYQGCeOE55/T/KwvAADZyWD6MKOOQx
+			Yh7tuHYekuhaBujpPKPJ2SkjzgALITtoA2iBwQJ2IgxybiZMuVaY
+			uIYdGqmpCEakLpNwPJjRQaB+4CQAAkAua0MIPgSMbAMgV1JLY10A
+			qFUOolRZzULkFIQADdEPSJTJNRu47YlnnPSMca4zTBD5XeghMRO3
+			fECE4Y4TMiAASQVQeWMAcgAAdnXWwmgfibgrIGBUgbCGFQGAABgB
+			9NJ5oehssSvb9gHU0f2r9EJRKgQFqNYuxhHplAAFGMWbQ3KJAAG+
+			Os8tBEvjiJvZwgSqzKqosbaO0lpbTWntRalo5Lg9P2rmYIAAmyBg
+			4TGBl04TgZVsBKBdA9NpZWquBcEhMRQAD2LUkQAAuxqDmAAOShI1
+			kltxaCfMspOwyUDAAMppQ5QACPthGAmAWCbhXQQDxB6Y7BnUh4TK
+			X5rQngzpfTG4V876X1vsmYe4/ECjqHoaQdg9qaDvHxIpMJX6sl2q
+			oAAXAzDID0HuXqgSaksL2owf0TCko9OOQcS62hLEFEudEzyoLmwA
+			KAUEDAD5ord29AugOvFeL74xtM3oU4yJtDdHUeUbQ57MxVS4S65h
+			AruECtkZW2WMskZJyVkvJmTclKtJoXqHRLGAllNMQIGyY1fG4CiD
+			Sl4IpgGqAsgfJ2ZZyUCs0PqKuODyjwZKAAaUUC/nZrLjkADJid3E
+			WrRo1JO3KEsXmaAWd3QAZDhLKeVJLh4AADOTfRpAqdkChcmF/YPw
+			Up7y2AAHQJGA09WZmbUGodRajInflAo6x63+wA0se+BHeoIea2gf
+			C5xfjSMng5c48zyE6VAmc+y6J1ioAAJUAA4YTqxLErM1IUyB7MJ2
+			rglxTFqzCJcAlFIEAFHUBTLmmtvJfS9NgbJEpPWPx41JuePZZy/C
+			qGUOAAGbEkjlTjnhL46SB72JdhcyuV90b939v/gHAeBKEygnAAAI
+			CbtYJZKwpqYwOASNwFYHHCAPgTNJxU1vA+NRDbOTsaGclMLnF0NO
+			5jdgAFnk0Zl7i0CXDLQRF8sogwAJRSifh59XHupsAAm40CcQ7EDD
+			qgg0hLjgJhA+xcAAVwbvqTvmI1oBJhcb6l1Pqk/i5X7Hqbi/9NB3
+			D3pooNd12RsvFwSOQdY54qUmTINIm57Sd3eYIvOEwd03kCJkX4NS
+			CO8k7NwQLoqz8SItJpuGtfFgAW4WHPqmm2K7dV8dAjdQABXjM2NZ
+			c9I0RxDvoxNRL6mSBDsIGJTQnovH+l9N6f1HqfVEFM8aCe4JkCOP
+			cJJ4gTlkxMZNI6A1emdM+r980a4hcS4Nm3iy4dyjRfjWeX8I8w+S
+			7a9Wk4vgxNIzoFGceaywAHKHpgQHmdmFSmYeQQgrvxN0uU/RiAAE
+			s+gABoCECdAW1qeGgxh7/+39/8Mj6uAAdY9utB6qaB2uvFCGzi0B
+			vhzlSMEhnhunEB8B9IpkzHliWJICyiYPRBmITq1J4iBQNjckEAiC
+			Bu/lnERvXChnHljCcATmAn/ieuHjcDfDQI2v8wZmdmzC/BZhoIvh
+			wKGgABmBvPQCzs+JrODCBE4iXGCBGtCQaQlwmQmwnQnohvWgAAPo
+			fCbodCyqQCBAYkxujjSAvgeKdrbKaQxQoQylqOOtCncKlmYBWhlt
+			jFNi7LMFKoLvoFolzjQJUiBBnnCPrrvFIoECYJ7iBJ7iXAykELrk
+			xOoCXAFkaAAAUIeg2giAUGNjfLEvzQzRMRMxNDnC5DQP+r/QAKlw
+			BlBqoC/h3PQMEhihrOXB7qtEzk4iWFSC0AzNhnhCBuVmyNECbmXA
+			mCBxeiWAZiBvbFXmPsSAGv5P1kBvcAAAkgXlhkQDQEaCaNzRNxqk
+			0QbAABahpQdJpLshtwgGzkvvuPsCBQkrvQkxrR0x1R1x2R2kgAgP
+			YxggXiblhiyhBCbgXExr2gAAyAgHzMxkPH+x3SBkuriN6CyC/Qdl
+			zh3GYBYBnFSC8i0KKIppqlDCWC0CXBiEENjCXBGErE3HtnXq1Qti
+			WAYCBgnyTr0P5J+CZAQMwgpgZq2L5B/o1piyCSbycSciHROqlh7D
+			SNUKaB2RRk1HfQHMEHjhehnhhqFFzmzJMEwqTFIidxDCdjJoptFn
+			qj5myEArfkBjQAxibywO7CBrflRAGRGrfAANMtLGAkNDqEOEPNqD
+			HEdSbSdS7DlSELkhqO0OQgABhhst7G9EvQIOTiBqQLvQsy7zFTFz
+			GTGzHCBFWkCk4nLCXK2CWA/iBoxkxR9gzAgvYH5gAS4THzRjmriC
+			+C/SGIphPhiJIB2B5oph0Q1JqRcE0pNibptCBHljQOgnzPrtGqTT
+			aGiwNDUwOgjCbgikxgJDYimingAGMjcAigWDeQYTSTqzrRMyeG6S
+			fxQyhOvlDPgtZl0BmD8MExWl3w6kvCWDyiXRaCaDJlMt7J3lKnVA
+			3liHCGAkCtGiaNHjHCWNPk1MSTlCegYuKznPDTomsTqCBS6zr0Gi
+			ty8hfBqu0G5i9BfhsHlzBEtiXPns7iBhDtCBDUHURUR0SUSt/TIv
+			sLaCdqXiWPvCXEGExARnPAAA0ghv4HSHRzl0TUdiqqBGZPIhshzk
+			4qGopw2rOLpOUIrTaiBiXC9QijHR7iew9j0l5j+PpGyHxAoDU0tC
+			BSTCBR5kxAOuIAAAoL4LBEPJdwZUeU102N/zsh7jcSgFFv/FRHfO
+			whlBsOyHjhyh2Hlnmu1EvlziaBCDUnii7OXNiPPHGHHKViXAgibi
+			ciWAfUmFDwSAAHTDSUxFgAZJ7rBiemLjZS5EnUGU21SiOGTC/BgB
+			rnoqEC9BehqruGSubkuKvDUiWOZF8x71TVd1eVe1fI+xaDqKaEHD
+			QUWAAA8CBq5UYsxkEgiP4ChiekX1f1piRILvjopzXTVJmw1oph3j
+			uNeTgkziWC9DQBEibhosKhjHEolnVHxAsiB13iWP4CWPYTNswguA
+			dH1PCDbDWsSVqV/2ALRi+jQQBDcL+Sg06FnCzophpBuk3MEhuBzt
+			jD4ytFxrijHF8iXEoiyjIF8t7GyCXHHNmCWNmUXkFlDqfr0v1MWu
+			DswgpMvAAL5KgRL2A2aiJ1UD1BsHornC9LlVYs1MCucJUmCQ82bW
+			jWj2kWklm1ggADSLaCaKXidvvCBVlEw0ZEDg1VnHRrEVpWlWvCEs
+			0CwrHuPvNLMIphahoQEi5IqQhUlyMAADGiWJsCymCPRGaHGCYO8i
+			WA0ibmAiBW/EuqejQSWEEgiv4EZkCtrH2Kg2v3G3HIT2BlNU4C/h
+			6KaP+u+lmwCjqh0ruMEhmBtu2QHTCEwFKiXNhCXGVCBBTgAQktjG
+			iiYKaCZKaGXW+CWA0SyXcE1NPEVDZDbDcAngZFhvGVLrAsSSaH23
+			H2v2cBghsN7WeS9LmVZEvpTknR7jK2i3k3s3tXt3uDN2mEDgbjU1
+			jLWiXWqkwWrgAWs0b2uETXu3tQ0Xnw5AABRBiBulNFOIkT0EzTbC
+			XJQshEEA+AAGuHilW22miz6iYCBHHCaCZSxwhiBERkCttiZA4o52
+			mxK2Z1SX3YN4OGRXIh33Jh03Kv+WElmxSh1RTpIgABiRVqsz53ps
+			KjQBYiBpIC7FUD+X7Giu6CZCyogAAEAiBEAiWDQYhkzmP1LANvDU
+			ZDWgsOlqeECkJy6YNYO1f3l3mgAVWgABeLlri2gT0xbkER72iYqY
+			yYy4zYziGUUPNLaCBKXiXUXGukx30A02tNx2tvG40WAriGzCdrkB
+			jBuHo1sgAVXu0LkE0HfCXFziBNFnwiBwMCBO0LvHgmepTiCHxVkC
+			BWpmlCWDvEsjfiXOjjWqbEDgwAdjV4IkcXkY85V5WE03Iuu2DYR3
+			LoiB/idrjFKsEhcF1D3UnEwntDHiBpsC/F8l83UmiCYGDCXDUCWA
+			lEEAlib4pprEdiiDqXfPDgYq2PCAQALDSOoRp5oZo5W0d2cVVN7Y
+			s1X3o4vSCiBs+OZLvVdZxZ455Z51qUUNF3w42iB3yY41lkD46X1k
+			SX256WjRsBroJlJFKAABUBjJtKHm91wkxCWD0iXOgiaOXDQKOBFR
+			yGeRdG/AAYAiaA9kEYiDPkt3dxHiZX0OlOEWZaB6XaXkf5X3J2D4
+			SXMFXnfJLCysEhahkhdymOcEuSL6SyliBNjC7SPD+E3GiqUQQCWT
+			kCWFcaoFBy5OLCe5RgAAvQwEDEURKP6XGaYVe5yBr5zKE50Yu1Zk
+			t1aubuZGCOZawa364a4yc0UD0jUUVjU4A2TZ+0aY6rEUca5VfTTC
+			1Q4aFBkpsBz4QNilGVwUlopjQXTgAGVCy3VmCN3Ge3YGlEPIpufi
+			WO6ZVEt1LAfgUGsZrDdTpjf7AbU7VDXCyWCaZzuYSlnFyCBFzLkh
+			mj9F2afkvKTV0CWIviWK4F8u2GeuCjeDQGVRaCWRaCBE97mFBpbA
+			AAigWjeOKjSAb0ZDeuoCZkdxqbV0eZyYr5z4uXpEvObqTVCLvVCb
+			vb172b2vUZ7Ckibq2CBYAiBTNWrUZ5/477973VerpBYhnlSBw7Fh
+			oBwFMzZ23ahiB6jAAakOdmfOfkDi9EDkCnxCXK1ExboRmp7tMgdg
+			StO7tb+8RcRiQzs06U5ShabFph6j34tBoSNMEh4h5nA6gEfzbCaF
+			5iWLmCy1kD+Q9mekAjZDcEPCyz6iWT64IEETvEyFlkPjqAsAcH1V
+			NAAARtvZvcSU17wayVXbx51QhqTJNAABCtCb1csczcz80L70UTJ7
+			5EETMb7ExnOjW0av4OLNxUdc00TQ0DAHg0gk4hQhiJtG9Q0EyKvm
+			liBvQCXNGn1BkYf0OyQl+T6k9iaGAiXXa0aExo6nx8oq8rAk+llE
+			b889RdRiDSeB1NU05uuShlqLjHghihqrtMEnkolsIkgsDCBMgsMC
+			/W+D+LtbLnrDQDViWAuKWVKUFkx5P0DDWzQAwKdJ2X24oxLdSTr2
+			cBf6x4sKE0I5060EtW35f0Qwk0Q9p9x9ydypvx4ECwtnLCaFhi/T
+			MCXR8kxc5UaUbdn8748dzTHILixi0IJGXBPBhJIMHC4C3aIdbVKZ
+			evNCWRDGuDLtkqSmFA2VLjHbjAAbl+LdMv5At18liGqGvdQT/98+
+			RbVtTP+Os9UtWcllpi6nghjBqqsMEhzB2nls9eDpTt7CWIli/RaD
+			+dGmeqUUYY4i/NmCBAqFBjfCaAVGt0zgAAtdOQWeR0G9q9r4s9ta
+			zkv9vCb9wAAdxeo+vev+wHV90AARgwtiXR6lWR8c40Zv3c6zlvCe
+			wzFvoHfG1ng0Inl0hC9BlQfoqeDEnnfEh0oCbvrngvrjTPNF+KUH
+			1Cyn1CBAvnzkxq9jqR+v4TQKbOn9Q+4/NaB9TL++UB3B8eVFpOwh
+			m3QYVQDlSDwksnfCaK0dDid9iGCBimfCYAmiB/bPaiBxgkzKftsC
+			egwgfx/mqCnjW3d/NzGWcBfaDdsUK0JerzBkETCKQGCUP/j/rDOC
+			AoAAIFA4JBYNB4RCYVC4ZDYdD4hEYlE4pFYtF4xGY1G45HY9H5BI
+			ZFI5JJZNJ5RKY4QAABAANgAMIGHAA+gAgQAAQALpVPYeIgsDAAZy
+			CJgAFAYBwAEwaCJ9T6hUalU6pVatV6xWa1W4M7Hm+AAy2+7AA43a
+			9gAvmq55q/X8AH8/65T7laIEjwBcmnA2AAEiAHTc8FBjiABFA8PA
+			i9Ay7g5ODwUBQAaCCKKODaUIQsC5aAgFjtBodFo9JpdNp9RqdVq9
+			Zrddrnu+5c63qCgA7HsCQA7nxutfUHw+7Azm21AA83u9AA3XO4bg
+			/rfv4Vcrln3rA3dcAAWgAkAAxelVZ0bgAVwBn/NOstAvX4YiAZ0A
+			ASBQGAAkDANQyFlgrTcu/ICM890BwJAsDQPBEEoyfJ+H6tJrHQsp
+			3LQX5rLYe59QdBSCnygawIERAALxEMNxLE0TxRFMVRXFkWxdF8YR
+			jGUZxpEyWJcGqdvOAANpqABBoGF8WhACqhDEHwSAAC4HKcC4Ht9G
+			soylKcqSqqR9rcAB7QyABtnSeQAE+YZuAAeh7n4AB5S2vMXpsuRe
+			zYb6BkkvwAGzKyFjoAAQoHPi3i/NjFxYCAFPyNwjssCakgADgIs4
+			AYBPjPFJ0pStLUvTFM01SczpcdB6KEs6nHgfCnU24MOmmbxruO5I
+			AGwchuue6MEOonIAOugTsrk7jvPBTcbgAECWgACIADggbCoEzllx
+			aBD6JiD4JAA/qlCkGgPgABz5vO+L4UlTdw3FcdyNafMsAAXRqHMA
+			BxHa65iGydQANjDUSp0sC5Q+ABExEAESXLgOBYHgmC4Ng+EYThWF
+			4Yilgh0AAWIHHp7gAQsgxaD4KM4MAeySDMngADAIShhuTZPlGDri
+			uR+rkABuS+ABQGFMh4HsfYAHUeWKn/l0VLlNCdGUgZxABB2Lzo41
+			Nz1PjP2HB1AT/FtCPyN4jhSpdFg2CLbUhcGU7BsOxbHsmy4a2NPH
+			rUJ7VHUtw1QABpm+bFWuUbBxzI6FaQPWzPuVXTtC27rv3CMAAKc3
+			TdKcOVkoGySBPzFlCvqH4UgyAALSYAAihWDAAAZZ+zdF0fSRZc8H
+			FwaRygAcN3gAYxtnWADg3tE2KoFiqdEUABHX50vf+B4PheH4ni+N
+			4/hiqAD6poyzPg07V+oEGMWg6CbbCyHM+A6CTOe5ZnkfD8XxpLnw
+			A56wGdgAYRtdkc0JgAYhtMDLGfRRvs0oGdoAMkMLDAAGOUMACaCB
+			P2SqshYaaFhkucMTpQCg1CgAUOolRajVHqRfJBmDUG4OQdbCzclw
+			5h6ANAAO9tgAB4j5KUqcfaqRujWbqq8co3lZoKfwmAgT+yBGNd6M
+			ZcIbQAAjIHEI+oXCBxGIITpr6KFHH5DaEUyzmUmshPoZ+D0V4sRZ
+			IE7QAAsRnDjAAWM5QzxwP7XO3tEo8yBpgJ072N0Wo4RxjlHOOkdY
+			7R3So8o+oHgAAleWABy7OBGEDBki0DgEjbBXBwsMD4EzOAeUVHiS
+			Uk2wjtHoh0Z44TsruOu6l1Y+h+RoRMz4+q+x3o7cMZyHw1V6AAFW
+			0ZSkCJYLZPrA0ADhoIROCMCdrJSnuFCa9JSYUw5iTFmMRBm5khyw
+			jhKPYpQ8oVNvhaAAaQ3ZWHIOUNkcqcm9Q2TYTqHAAH9k6h469cIa
+			wAArVuxIlwVFbzuRhFWXoAA4hIaxFJbQCT8zBmPP2fyk4uCuGa0U
+			b46zlDSk0ABBkokFDxIGPBW53nenen/RWi1F6MUZo1RtgYgEdloe
+			gXIC0AwACXIGTBFgGgIm6CeDOPgJALQkBHTGjlNabIIQYg4eA9Sb
+			DZHOmATIwBtL0S4dCA0o02ECOUfVPRkhlnaTI7uNSkw7gAj4miPh
+			bwxEDf9LkAAaQiS8KQUoEBSHlwYpvWmtVa62JVHoPoyQ4B4gQOOP
+			g/I9R9uPU03AZ43JrquG4Oabh0JvHVhKmx/aDnDJ0h8ptxgQ02BE
+			TYDxW9lEWAEAGTqRpQj+lODIEFJL3SlRKJzEuttp7UFZi4KgZCch
+			ujqjVT5MEoKGIJXmXIwJAqTHepNam31v7gXBuFcOjhnw6uYR2BWh
+			QABNq3Bui0DLJAABNBkB2PoF4SAlSXcS7l3SRShLehhBw2RzUOEs
+			L5O8l0HD6XQi4uR1zPh+j+M0ADOBouDohVSq1JKsgAq2QKrqK1CG
+			SDQEMywFDMJ7Y3WeK13sHYPwhhEiw8x9H5G+PCug8x8mSNjXpTJw
+			SwDPG3DCbDLxz2Dtqe5WxOpTkCLIXJwx3oAqbDeAAJit8bk6BmQM
+			GiLQDIBAACgDQD3MOaC4Dow7VMJZLyYQ68QABTjIhpa+NQ2hzxqS
+			xilA5bC5ZcAAJpOomcm5jzJmXM2Z80IFJ0v0oTOFpv7FKQMHaLUn
+			FOCMCxy4KgNV0BSBuumadAXDfQmwuVBTlCpGSOCcUl4wjqOUytFq
+			+xQK3VYQIV7vCyqUDsoykhNC5BkIGGNFpkDJBmCAUbBBSgR3YM7g
+			3QOr9YaxjtNApQ2x3ATS0Po+o+R+n1VOPosAzBuF7xKN8czRS45a
+			OliucRA8X3+cHjNTWNQyq32qTp6BAkeosdAS4JwMbrT4BsCMCgAF
+			Cku1lum06GE0JiVkNodEahySWgGXFE5Ok5EChoQIUWmN+7q4BwHg
+			XA+CZkd6bpMCxqICnIGD1W9pkEz4CECpzwLAOV04ssbgvG6MjlhM
+			AAWw03VjoHgxUaI4DsyhqOiUuSHT6ixIGmQmwngACTOXpoAD0Gcb
+			ZAAGYge1UWJPMkGIIEflqgABNduzGruOdN6d09gUKSlDYHZuU4J9
+			R9j+6YpdDGwRtX3xKOAdA5C4D/2Ub9/BgS5OyTRz7mwyFLE658S4
+			zgbCB92IFxpYqKa0akAAF0HcQp8AlAwA4AAB7MdQ8VJNLaaBOjAG
+			2ADeCYBzclaNvZFHkSdeaAAKYAAjQAZx8X6P0npfTeneFVXIiaBW
+			EDB8dqvXEECKKKUDzpIAAYgfWMDBaXqPfRZZsTYa15QADgoNF2gd
+			CpQotgIAC+5cuyFyvkX8aSlA0XIPrco/IaiB/cRYtsyQW8kJKc1x
+			aunS/f/p/V+s347x8FKGqOmkaGTPlv9kpwfTFRjDVGfDEcwdpdjS
+			BBIuT+wADsgnQwJBydAv6p5SbnwyTXDwwsC44t5PS0gnTrZAxSQA
+			xaDVIAAOwJRiQCpzRZ4z5SL+79kFJ0QexBgAC85O4bAc6hwdzDTs
+			pFAnQ40HAgYVrz4AD1sFUIEIMIUIcIg1znzIgoQVBW7hwt5KEDJA
+			o+4/IHAEi5QGYEDXEKzXEIsLZsiS5NAcQdg5QbodKNQU7RJ2ZdCo
+			xE5lhW5WQuRCIt5xhOi+hSadELQpYACJzu5FopolwLIHBPhJw3QF
+			wDxYyeULkRERMRQhzQYuTFge4pwaodTcrrIz8RxcMFhioYoaoZiG
+			Ic4dztTQZWo7QgROQnRCIgRZAvETpSZwwpxzxzxDpZAuQ8iJJW5D
+			cE4+w/BajBINwIydUDzIC0sFERcYpSh8wgcFhNASIXZukGKhweZN
+			bzBEwnS+4gT54AAWBfzS8Y0bsb0b8cERaIDwwz7SYnRiAnTvRyJB
+			TAYmIEBaYHAEa5UeK5UcMexcLSB+oAAa74gSoXZVgegfBNBesNYg
+			ZvxHY7InSIx3YYhW7lZGbTaEglwoRDoOY7UizbjxAAAJwGi6zPY2
+			wG4ELcoAsYUe8k0k7xRlonTXgyQeL95OwdhYyUMJ5TEFgtAYAaLu
+			DEodgeRXcURviWAz6GAgRdhnAPLmoAD/pSYwpaYgSQogSB4ACJBF
+			YA4Aoz4Fx7hahzQK4GyPhJ4/If4+EW8lEshKS98FoRoWyGAaocqi
+			ChZFpoYuQZIgYW5wcusssvEvMvUvbCEcZYi5ogQHJNikYnSFZBT8
+			CdLi4AAHgEqkYHYEykcvkyS9xlxWynyhwS4XqoZnZnAeJNch5Ahn
+			wz5DrFikgxYz8hovBfc0BFqjw2xDo3RDrTYuTTZFgBcjQJYGImjP
+			w2wHMKkPMksyc4U4a7sSpLQfaZ6uxl4d7Igt0mhS4eofJCgZ48DE
+			odweihxns1g9xoJuIgZ1YgQPjTEaxPCID7QAEJgAALIgaeBFafQ+
+			sKa5SfAJgGAmgprD04k/M0J9DSELzz8tUfb4jLJFYuSAIuSHwz4X
+			Rf1BU/VBtB1B9CCDaraEjIgv4nQmAuRYZZpDc96qysxzhy4IgFZy
+			9CNEo1x8x9DQzKEM4dsGtFUATlggYuSNQlwM5Yg8EuZdgvr5pGYV
+			SP6GA+qiE8U8Lh5FJyYADiZ6B7g2wIIFQC84DX1E1KVKaYcgQ2Y2
+			pXCuAAAc5tTy8YhSkgI64XIZgYKGJMxXNGJNAz8uYnRopnAQwABp
+			JShxi6wz4KI7TG4uQIsPgBAlwJ4GSPifAGoETXCfTdFKlRAxzSE6
+			JB0zlOIXSGC2RGIvouQvogVMo71S1RNTdTlTtTxKr7goQ/L0AnRH
+			IgRJIgSEhDZZ4+pkY3QJAFp6AJAFzbdT9WwwSTkbL5JnQsEfihwt
+			07ZBKNQt4wot6AJDryLMBnBGqwwvoz7mAPYgYPQgY+onVKJBNDoH
+			wE9J6SAzgIjPDw7xNW9cdch4KEAABT6EhLYyQdQ3LstL5Khn1MLk
+			AZIXyGIfDYEgpnE1AgY5xnARcpEoZPCWQlxwQt4IxNj1775bkP5P
+			ifAFcxVVlctiYlDSAd6ngABmxnATC9BLodCcJFwXhW9kQnQ8D0Eh
+			tillNlVldlgrBPQzhnBIAgTHYnQngnTP5BSYM24+oKKlwAAKJbFl
+			toQkwdIeJioYJeQADjwtAYx+a+plpFo64t9OBNCp4/M1KVpSZZDT
+			YnS44gQ21r5Esqoz4GYELXCsooTb661iVodtttxTbCjCwd5abq44
+			42QvMsJcJWzEoWIY1BTEqbpFAmwnQXBNhWRBykxOjyJSciwywuUW
+			YAAHBjBFiJoAANaKDIopxkA3UQ9t9zwh1YBdreiSxDoUoYxOVFRF
+			wnQWhHd1gz6+h3cVlz92d2l2ttwxozjXFaInQmQuQmAnUO5BKtEq
+			o+pa5bNoCPitEXN215gg4dYr4AAZQbosgswtAXpC1p7s5AwuogYv
+			At6+g/NBSQdNBKxxhxguRxggTw1VJErH8q8QowxIoAF4xw5aF5t+
+			9/BAZ+1vLWjyQdxaaUAz4fDXtvFeBKJlh9DEoWYY9v4e9qSwlwQg
+			YWTmIgYTpfxMhSY8idgAEo4uUp7IJFMsUXQpQOQJAFVzJYs24zuA
+			1/NlK8AAAb0Mg28GoVIZTRQcIdl8hFYnTS+HhNj6p3s8mFuIeImI
+			svYwo3QnQNKdY7QJAgdEhFYKQGqPl+gAxSE4E5+I1ltRxLxMAby2
+			EHwZQ50t5FhfbOIuS+4tDfrMChxSZxmJYuT64gVJ+OZEqeQEgDCE
+			imCEgLQHIw9DuLWQOQQrQuInQt4z5Ug/IawdLcsmYuBSVvJS5Wwf
+			AfImzEoWwZZOFM7SIgbhgt5O5NEJQSp1hSgwrHoz4vAuRJIuRzxF
+			FscXgpQPYJxISfCtBb+QdodAYaQcaU4dElwAAWoaDsgczj5GAUaP
+			7folyGhELfeXGZ2Z+aD9MVxagAB/wuWE5NAKBW4mhFgJwGQmlP66
+			zc4+TH+aNoU6JNAsw5RmCNQUl08NB2sgs0gAEHgt76onTMQ7y/JP
+			BxjarT5iegBDazAnSsq7LVgLwHmP+cuc2hmhojqUJfAfgyQeUl7W
+			yumR0S5TbZJegfIsDEoW4ZYX5XAfAuxFbSQ7RVhnDS4SzTJSbGq5
+			4z4TAgaPggUppBStABhbkEYpwPAJUYA/y0sseh1clAYZgb5/bypi
+			oXZdddDyxGGCwnQThYjsh3bsmoeq+rGrLMqIApQpQJ5NhJJByrYn
+			SIRFgIwFpy7O5y60UXRU2rVW9AcgJNFXzmsf6omeOCIgROAnSVhD
+			pEOUaHVgbv6I6IZW+stnKDBIopQE4DLwwM4IaXmcet+yeyh3Afgl
+			zRwoSngyQdAew2w6GFhKouKnQeg5TEoXwaAYekZ25FIuR3IAAShW
+			44wt4XZwYtml0xZHcJQgUesPOOyzNDyEmnYoYIBJJRwpUZGytTiU
+			BBwX4a4wIcZ+AZAbheYrxDq9xwYtAvAgSh2Nm5W7+8G8KjMB4+QA
+			Algz5PggRZWEBFgHwFCke91J8j7nJQm8VRMfNqEfiiASmu0gJByL
+			ipFfYAEuYgWlIAFaLmx2UpYAAKwgZ5QnWE+a5e4+JJgyQFLIYAAN
+			oIxrE29Q++3D9/N/YnVuKMLDChQfY+oeavOApcotxB0ng7LEoYQa
+			UucTNAhLRHdgGNCkkhvBJKKjzBo/KhyyzKBNhY1a1sUqwAAF8rKf
+			AKoG5bMr/EFTZ0+YAaLsgcGHKagcSU74MgsS5nAuVgBBx3YgRDrm
+			26/KfNXNfNiDRYJ6iQonS6wt4P5W4FpFoG4EjcsejBQoRIgoXNtR
+			Ey8F1jsz0ztjFYM7hW88hO5Bxxgv63JPBPWr4uWr4t56ggQmRFF9
+			ydLPwAAOmnwAHDvQPUltrQeQ9jMl4a0Sber+tGWSJcaUJNAdIdws
+			jEoYoayp4e+jtqJNgQRNj/t15fw7JGqjwlwpwzgsiyhNDzwnV9ZE
+			9I4HlbeFFWB6B0E/HUs/SLgVgZY52L6NQbdj6utHibxe214Q5f1O
+			HbPdfdndpsaPRPYABJIt5y5NFUgAGD5FQF9+HfZafC7Inf/d1CGd
+			gAATxmiEs6IwFo0G3cpHaoYgSoYt+JY7225PEiwJJNmJwuS54gXj
+			hE6YIFfTwOgJadXUYz6JW0PgXlUvc4yniZ4fNuTw052R4+PRJShB
+			pNDeZCLEoZQa7/rrvG6pYAFaYuS+g5SVm7xGurkPC5Q68wRnGqXZ
+			xFPUYItcCfAH4FBz3Uflc4TdhmQYZWRLyNQc5m2u+eRW5CInSiRw
+			frntowQgIIAAIFA4JBYNB4RCYVC4ZDYdD4hEYlE4pFYtF4xGY1G4
+			5HY9H5BIZFI5JJZNJ5RKZMAgAegAF4GFQA9gAmgAAQAN5VO4eJgy
+			DgAJwxQBkHwkABiIAnPKZTadT6hUalU6pVatV6xHm+63oAFMx28A
+			HY83yAHC7HqAH8/3/WZE/oG5IG3AABQAXQAigA5rdWTcACHNwAQg
+			BLB7A8PfZOKg2DwAdCULAADAOBLqA5wAc1is5nc9n9BodFo9JpdN
+			p9RqdVinw/Ms6nqCgA9X1dnQ9QYAH6/pxq7c+36+7M6XKAHm966z
+			W20gA+H1Zd9E7bXcscAAAwAyuMAG+AEsAK70Y6gABspoHwA/JyAL
+			akoGDfFEAYCMsThiHQAFgcCAANhGCjygMyz4wJAsDQPBEEwUq57H
+			y9RKl4bIAGuc54gAeR7n09J+rbBaCOmgZtPYmoAEiABMw9FMVRXF
+			kWxdF8YRjGUZxpGsbRvHEcosnA2gA+DsKOlhQxGHcRuw3sVA4CTZ
+			A6CQFgAHgTAsAAdylHUryxLMtS21BwHYrpVGScCxLIABunUebdLX
+			Dy2ranB2IGsL1CoABJgAuUuIEN4AB8wTDpwwiBUDGAUA0oA4COFQ
+			AP2uwEgNI7NzzSVJ0pStLUvTFMtWtacLglh6NqABxHgoEHOweR9A
+			M9h/yRTSFH2fjhG8dBxOM5AAGgbhquafboRhNKcDVEZkIG4pHgAe
+			8rx6oFVBPEYaLUvLBNzFoGgQuwpBqDz8v2ACiqXRzsVdcdyXLc0F
+			rYtp9N24zWgASpdmwABsnOeVeH6tS2Rcd8RmYgZRgASAAYBc+C4N
+			g+EYThWF4ZhuHYfiCOPIlh0gAxwDgAVLBT6tuMVbDwJMoAAJ5EIw
+			WAyAAihYDWI5bl2X5ghhxHatJXGYcIAHUeR8Xnes1Q7BWgU+gbu3
+			wJkS1FSY5AAHCB6agQkRGI8ZBOn4ADYIoUUWBK7WsuwBUjmOxbHs
+			my7Ns8PQ4nB9H8yx4nxjBtnWCL0n8lh+0joGEn0fkNG4c2cOOrpp
+			G8awAHyfcNRett7IEMbBGO9KxTrw8rjSAG6PgGDdW9zhAsFJ8Wgd
+			rgACuG4QW4/gWg7ulr3FtHYdj2UXrWtp5nw4UMOESl457xsaHUwo
+			AF8gZWgARoAFZ2fl+Z5vnef6Ho+l6fnpwM1FvKABPMEHURpknHXw
+			WBTKwCywmBgDYACaGIOMKzbNY/6n5fn+iVHGdy0loZ65HTt4ADTH
+			Ivw3bekENCAA4oACY18BFaQrVSQcQALQIFBIADRyBBLRkCUDB8A0
+			hDWcBABSqoQKqbA/F+sJ4UQphVCtDxrTLDsHsbIeo+y7DnHmbk3Z
+			OFWEDgIwdviGhsjjLC4IAA1RwoScRAhFrjHhF4YwMUAA7ULokOEj
+			qCBRy4A1eEDEgYfCBuhRYA90gWweAjdSAAFJQwAAHAK+GFkb44Rw
+			gGXsd5NH8FlFCMQboABvDqPCjQ4pOBXkDFuAARwABbRxkVIuRkjZ
+			HSPkhJFcgYkfPYPcTgnRbQSGCLsikARLH3E4CmDQ9AU1tHXbBKiU
+			EkpWStbIOWOoABbjTOKOgeCyRoDgHc3WHqClOkDZwTgILxyzKTOs
+			5sgTmycBQIGE9GQJALnwDKEIEzmIQgAAoAtjEn4TSum9N+cE4Xmj
+			zVTHwd7dHcHYHpDRVc3WFoOQ0NgcI21bFdGsOMug+nEoyQsZYLAA
+			EnjEiKsgAAq3OI6DnNhaIOURzIAAHgwRskWgPAUXYMIPgSxnBGBY
+			3JlY3TipBSFSw/F2DYZ8mhngr2bgAHGO0miNZggAFA8IYAABGAAp
+			rSKnVO6eU9p9T+oDsA6UAAAcJz5AgZPCoYQI/iKVIqRCWDB9oTAX
+			vtMoZYBa16g1bq4i4cw8CaC8GqOcAA55bgAGWN5OFJJeromAAAyw
+			RKiM4PIepLUEAWkDryQIKZAwpIyBHNEAAYwf0ZAjNc/R/ABypq7Y
+			2x1j7IGfH4bxZE7FQKqHAPExxwCWD7btO1lziCyjWHFPSIg2BxT5
+			VjPw64AE6G5GEAA8kVURo6R6TJVRiQAAvc5UMnFEkWQjABNOjNiQ
+			AFGNygKVdkbmXNM+rAuAyhvpwq+TQXo1KyDof8jVEROJDltGaABY
+			6/rnXlvNee9F6b1XrII9c2STy/kCryW2ZxOIwIvCGCsDAAAiArZQ
+			BVa02MA3swJgUk12lkjAGwxUc0sRjjbeCcCtqKmcH8CMABlDOC/q
+			+SxQlRS+FFE4CsQMKqMgRUcAAGAHsm0nMYAyBABMqJ3YGxpjXG04
+			TWnYpdDJUI5R6Q4s+2W0T/xwISiINschYW+W0RehYgUzljjBUnUN
+			KZAggLRBctGCFv0XARAWqoNQRGtXGA1jAy9y8b5pzUQpBy+Be1jp
+			ZS47Naooj0w4jAto1K4EteEiIvSEs16B0FoPQmhdDI4DAAA/jdAt
+			vCWcXB65AjHIxByCUmQOgSEyA+BNJ4HgKLU0PqHGrOmeDEG2xUcg
+			7iaDDGxhFdji2k4xCSAAo7OA6kzh4lfDznMQgAxGQLEqMcTm5ovi
+			ybQAAMRixlqLZmzdnMJTXAcfplh7KhHIPM+CpjjTlU42bIY0xwIi
+			yOOSPeS7WZPvEADKSklhX7NkYQtteV8J7JxjFFqTlVBvUTGfADGA
+			CWL2fwG5ruF8CvGarUrZXRsDmQs7pG14TLBkIGOgAAiwAcU4Fxnj
+			XG+Ocd48ADEqqj0NTJwCKooAA+mCKWjEF4H26AwA8UcFIGTHKF0n
+			x/nFOx1u3AAMkbo684k0F8NbihwC4IxHHa1o52GcYxTSeTo6Odd4
+			gMFr/kFgMUBhB/JvLzGCh4xsXjPnPY+ydlM+2pC4+T+DyHyqob47
+			zHG7JZDsgWE7Qq9AANQcO4lbjaHHuW1aMcnAAyhuqY2GLW4XLaZI
+			uAazBb2RYyRjAcwkqKuN13ZfZvNSQQyeqPJYdTppwaWlDK+EaxQP
+			5M5jCyTyUv836/2HsfZezfliU7B6AUmCZZ54gd+0Ygfmzcf4IOdM
+			gA+JlX2nyYUjtzsAAZl01RM0AALu7EB7Joy6SZaZhlmcMYX51BK6
+			e8sk4ryTiv5Avzowo2bmwnXNjn67BYz5X8/6f1ISvqA4/i7baG4O
+			4CD/I7A2gywtg3pJDuxlpvgsobochwyIgaIcBnBxDJhFxCwljEpD
+			S2JOyBEA5GANgABlhjAJREYFZaIM7x5FzyQAAPIJqvK4ybQyzsL+
+			0GRs5dKopDg8BBxd4Xga53xZBdZn5FwsonB4ItpYgxwLQgYuD8EG
+			cJkJsJ0J8KBBJiY5oABbY9QmA9R4wgRlgzJFwDACA/jZLGIH4FC/
+			YIAFAmAm8LsKMNhiL5gsoZob6KRmYtIXQagvhvjqJF7pIlgKKt4+
+			CXcJZHKY4wS3iZZEaZhGKwI+AMgIDria7AD+LsUNsSkSrAhoAAJD
+			rboeofouyFwADBYpayZu5vJtEApfRWAsocAdEBoew5IbpWp3ECZF
+			pCxfCf5eQYYAAXSgggUPRG8DxlhVSDAtsEgtp67epFwCgBpjAPEF
+			iM6q6UMS0aRcsGr0pC5dwSYXcHjhcWraJFwtomglhnAgQZKQwAAM
+			MacdMdUdcdkdoiyQ7GLpIo4toXYwRbYto2UNZDyNglh1wAA+w/B9
+			Z9qxYlkGMd0g5PLnZngZTOilq6zODoz7DpS1rpo7cQRHCoahgtpp
+			otpqcjpGQEyNSDpZyiguy4SEshElMlSkT/BtgyxdYlhUYoAfDaca
+			5VTbpVg3sDhiAzRjoAIuAfwfxngdId5wweQewtIXwajpIesHLWBe
+			wtriQuByIgToBOzO5Gw6xlAlkjwAAyQtpYUZBFsFIOgJjyxbsMBj
+			Eg0lcthGQ3YuArYtIsYsoVAZAsJLwtJGpOAnAYxEYaDdIP8tswUw
+			cwkwrjhNyh57AsqmonA9DSQgbNBBKT4gUlAKAGZbcyw/BAQ7BR8y
+			Mw0z5BEhQAAZBM7oIAAX4axisiJGJWpVRo7GJnEwJYC2rqRPggZj
+			gwZEaYZGJqooANjMRrZrp0klE0E4s4x2MTETRDoeofhVT/gdpuhB
+			wyw9SHTuhssA0ykTI8oAo4Qf8oSKId5eQeMpCWQaIuQehdxGJNIt
+			rxw4Uco4QuQmz1xHErQuplJaIyRfED0sRFhkLybyqM7zAAj+U49A
+			o1MiIaocgeAAAdJnYAAWQZ7pIcrVRGysggUXbPJgKm1A1DlDtD1D
+			6kRYSjoABIcxs/AwRjBFUAogYIKNIAAIFFwC7ZQC5btEFGw0NBpn
+			gYYbJitCYmgYgbTV0XxFYts1oABqI2SukXk2hHCCDqzEonBRQtpR
+			RGIFIxox4JYyUZYywAqVJ+FG9MFMJTDaI4D/YfrpgeDbMmqcgu0o
+			KHUUp2LuYABR5fDlzwYsocQdAvj5hZIVYZZwIe8WZFUcAwSm4uA5
+			gssXITBnJK7dp7LeAADeQADegADyBFbfAAANoIz3K41Gg/jf8z1M
+			VUQpzNsXQaaskOgAAZpLwAAdxUBGgtqPYnB7YgQuhY4VVUdXNXVX
+			dXhiAvBJ4mQ9wgQ9AuB7s/hF7SrS74rTw3LTa+9XtaAlDBDdTVqO
+			gmgYzU8G0nZA9IpEbC5CxnCmZX1bZBZj5pYL5EbRIgR1FYZFwgAB
+			AEDFYcCAAO5MFgABYHAgAAMRiEDikVi0XjEZjUbjkdj0fkEhkUjk
+			klk0nlEplUrlktl0vmExmUzmk1m03nE5nU7nk9n0/lD/itCAD9f8
+			Cer7AwAfL8h7bdwRAD6fgDAD+ib/olArldkMRoVWoUOfgAFIVd0D
+			f76ADadDrADseb4ACoY7fADye77r1ee8UToAoTWiayACPADlvuLi
+			5vAAXAEPIWCAAtq4Ax0CBWMngRBdLNhEFAACwOBAADAQBIAAoDAW
+			c2Gx2Wz2m12233G52tbANaAD4fb9ACuZzjADgdb0ADYczxvN73U4
+			bETSWUvGIXHR7Xb7nd73f8Hh8Xj8nl83n9Hp9Xr9nt93vn5gAGnC
+			QAOMUD+XLMTB3wjgTAy/oTwCAAYg+CYABkD76v9BsHQfCEIwk7hz
+			ngv5eGoc4AHMeB7AAZZvnYAB+KNCaKHDEYACGABpgBFBgRTEyLkc
+			ADVnlGq8gANrKR2gbNoG1cGgEgQAAaBSlhQDIHswIgTgABSHMEiU
+			iRlKsrSvLEsy1LcuS66J/KOAB7H2AqmKqAByHmBqmH6qx6nzMswI
+			Eo8iK3LyvAIAasAyBZ6vmAiygwBrlH+fyynEdx5gAda5gATZfG2A
+			EOrZCahL4gRixPFJFAASYAMJLo0NI+YAB8ADXhcy45onH8IAhI4A
+			DMIIStI0wAA8CYGAAAwCNfO9f2BYNhWGmStq0oR7KoABMl8bQAGy
+			c8bnfZIAH2fisSwZwAKsOsUw0SAAGvYlx3JctzXPdF03Vdd2Xbd1
+			3yvHYD22AAxIm/KhDOiaDxkDwKAXW4J4AHQSAqAAc4Kgcp3hhmG4
+			dh7YHNaYAFzDIAQqv5nRDEcwQhO0XMiAAggBXUUEAy8sjuAEloe/
+			q6McrA4IpXyJyFIYAAoBt5yS/o0CFJ0jofiGh6JoujaPpF2N4iit
+			zkq5/IEeJ9NOfCnRcdz+n1NqiokymkpK3t6IGAwBuED4IxuBICOE
+			CADw9MDhHQeMPHUeS6EoXZsgAd560pCShOE19QMSy49gAg5oABk9
+			sSxHeDIEHlTgAF6KW6zUJVfMoxB/WjStOEQK11Xira/0vTdPeFjq
+			K3x6KaABJFzcRsHO5zgOEf3Gb/rwAGVeg1sodQARo43UeL43j+R5
+			PleX5nm+d0uToetIe8k/KBESigLSqBgEIeBvugAJQXg4AAlhh8iI
+			oFKnn/Z9v3PCcmJlqaJyAAdMLAAaRxHfjmPvYVs14+SJjgRSEYAA
+			kQADiS8t0GBRQAQNKwFAigT2aoSV4a8FAGj+gjAsmsK4NwQnzNa+
+			+EkJYTQnhQsJa5Ah3D3YAU0qw6R7GrH2P4qw9x9EPadBV/zzVelY
+			AqAov73SygZUGaxPRkQAnCKEUIfDWgAN1LoIcWiLS5QCH6x1B8TX
+			JKEb25I+5pxlo5eCp6ASVT7n1KwDVyQMSKB8IowBCIDwFJlC6DwE
+			atTTgnAwf0hzpIUyBkFIMl0WShNyL+O5N4ABQjEG4AAbw6jlO4Ss
+			pcABzihDHMovogQ8DDgAL/ISUUo5SSllNKeVEqZVF9CqvQDZlV7m
+			UEsRQDJE31oOgurtXoAAngyA7LwGcvzXGvAG12Vcx5kPvHHIoAAt
+			BoP1HSPEug0xxv8kMf6ACYiJl4LKEqA8CUsECZPJ0AAQCJg/IpOg
+			gc6kTAHAKa8GYIEEAgAoroJ0voRSAmTPufk/Z/OoN4UQ3zXCBIkN
+			eOdNRv2rDqHqZta5r4evuSIAI3xrThAcAen5tRZQKAKOUr1j9Ays
+			FCikAAQgsBoqLUaVSiJ/iBUjAAcogQdCKO9LoN0AEszlJVDSAAqR
+			qwZGUqCUIP5E45IQAeAlMoWgeAij0AAFQGElzun1P+q1V2GrXKwN
+			0dJyorgAFUMovA4R2J+SwXQgbwSBSaP6GYAFRVFJzqxXOulda7V3
+			rxXmvRP5xJFlAACX8AhTkTl+QM/pA2aHwa6kMgQQ6ogACICuWoE3
+			vgAVyvOvdmbNJYHCO1PwrRmIoHW3Ytq0SixaPfFw15cCBU4LYFZT
+			qaErMqSWQNJZbAuGUtyQJgxAwKJVSgQ8I4LQNAAA4BEzYPQTmQlz
+			Zu51z7oXRK7SIf5r4VpooSPlrc0jT0PKmP2iCYYUpDKEBMBMAoiA
+			Ag0c5shWADACOFMZphQyhDtdaAASgvW9WjLoxJD1A0ZN+F4dZeks
+			wbrPABbA4SEl7JrM2k4h8bCBqcIErpCIDqlYJBsCCp4LgPFSARCO
+			6WI8SHiKocIYI2B0gAmWh4Yw23g1fSwXA16mShUpOUpwTU2sS49x
+			9j/IGQchZDQcyc17/HyGvFSfgyj2iBVVQiD0ExkLlPaA2BIzYG7k
+			ZEy5l0oA4B2HKrDASr9XFFTXQa4xDRA5HkDC3J8xSJiBBsABLU1Y
+			GIHL2KEGEiiZSB5+RM9wh4UAZgevUaoAANQRW/NbYnL2j9IaRkGn
+			agRRB9Q2WqP4143h3lSKaQ8eg+k43ihTRM3wAqKAAA2A6jSgDHgM
+			UVO93JIm+QCE0MGR9JRvjpRvah3V8cEEDHMyGcb+QAF4Q8KuByDq
+			aMALpU4qwNnJGIIGmtCL30yhUBtoZz0D1cI1bJpLcW4ySG+HycEA
+			AshpGKrIn4aj+1JLUSwYo14syKGEKwJyT8odyb939v/gHAeBT+VX
+			b84UcCBvWAAEWOKVQOsCsABMzYOwSva4o9rgfGeADb14AATuuG9t
+			9iiXowVLT0uAck3ogazisBqAAuDNaDV5JPVIXwLRFD9lC0NzqWyW
+			XMgADWaJnADF5r+YBMPjXSeldLV/FqaRq2qkPHTQ2UA/EylNNe04
+			rCdZBXkcOAi9GrgQAQk9e1bYAety3JEXovgsxnnGpKMUbTwVr8mt
+			SRQgRbInEUFiRRSJZRSX42Og/mZq2DFlByZffRArDoQIaQ8Idkqn
+			hBBTnjx/TPMY/hwWUuZZRNC/WcW5G6byy5oSuNVeghjKQKUUMkAG
+			Oy+eZ9l7P2ntfbe3PZGkimdCBL4ABK3aqVdugVVsEAFGePKGQ1QQ
+			KxnuPnT/oCUL0QABLi/Ui3MtmteSoN5QQL1BAm9F0DdTkAA6EGkC
+			VWggqyCCy5vzcRQqRQipJYZvT4z59gkgq/svOPpqzXO1PnwAwBQB
+			iXNKC1CiB+LqirwFB3IZqFCHh1B7DNi9odCsu7H2CwHJLENUogkP
+			I6iytVkbtZCXB6DgAABdhqPzKSheBqjFDgwLmPFqiKEYCBICCsBN
+			q/lnH+DlNlMFj1K3EyriipDlAdkUhQD+EJEjirAfPjqngjAWJanu
+			NAQCQqJjvtG5i+BNhgFIuOEbjgqRwYD2ouCBHEiHo4DhDFDjBqAA
+			Qewqw3Q3l0CAgIAAIFA4JBYNB4RCYVC4ZDYdD4hEYlE4pFYtF4xG
+			Y1G45HY9H5BIZFI5JJZNJ5RKZVEjMAAUAAcACCAH+AA+AH6AEAAA
+			CAArK6BDQGAp7Q56SRcGwASRfSgYCAKAAYBwJQatV6xWa1W65Xa9
+			X7BYZE/n/NX7NQA1nK8AAjVs1AA9XzOX7ZLFJJq+wAAgAyYG1wBe
+			j2AEmAHXd41O6rMai5gAUwA/sfNAAJoHloFfMziJRRIEDASBp8DQ
+			OAD4ThcAAXVAABQHPQDsc5s9ptdtt9xud1u95vd9v+BKbLAn0/ai
+			+39fHO9QWAHs+6q9Hzx38A8jkpo/572p7lOD34hRJqEwS9wACQK/
+			AAGAY9fOBb0BADktlHX0/Jy3HU8wA6nkfAAEwXpsgAfDkPAji0J4
+			50FnoyIAFJBcCIEWoAEeABywQhCejaADRNEHzKFSygIIG7sNIUqi
+			+BWDkSgsBwEAALIcBCAAHgU0UUR1HceR7H0fyAjhjv0ABzng8xdm
+			oc8iyPIKGrMvcGJqY8FjIAAMgAdwADquMnS9L8wTDMUxzJMszTPN
+			E0zVNc2TbNzEDAAEYguAAZQem59AAR0Fzo2E1iKFgNABQEsAmqYA
+			UM0s30XRlG0dR6Qrqmq5sktS2EeW5quc4rszEvMFmGgZrSiQK2gA
+			dkejvGwAKrEsACuygrIHLCa0FNyjAACjSJ9GAADyJgWJcAyqp5P1
+			IWPZFk2VZdmWbRjh06nEorsAB7n20R9n66xzno5rnqie5+OsurNW
+			crrYpq190gEmoLAW9wFPSnwFHtOQCPUklsslI16v9ABHlwwEDLpa
+			k30nKJYQWbcHlQAB8gAcLDWqABV2k8Cep26x5AAHsF4amoJMpYkn
+			AMoYABKDAGgBF8Yi+HgSAACAFxzc2a5tm+cN44cFF0ajHHId16yG
+			w52Hnh81TygR3spKjrDKyoAHiAAzsDnOravrGs61reua7r2v7BsM
+			vJ3coGABBwPWkViBg6ygEwXE8yBSDIHgAFANJiF4P5CGAPZDsXAc
+			DwWbnvTj/PMbR0Y2Tpgm5AtszLg6elbBZpQeTIAEgAC2YunQAOst
+			gnIH0Se2CgXTc+geRzY0LrB0EgLV5GIohptqqOtBW48H3fed733f
+			+AhbkOsfjk1OeqX3C6x3nw0riqqfp+p6snpvrBXgou8T1gXet4r0
+			Cl6TleSiMkzySrKmvioEdjpAARJZ8seVrAAd57TzaE2JrBT3IE/i
+			+CaSiqMgQwAACMP6j0N4AAbpREwQNtJAm/pOVwBJQ7LAAByCQCpR
+			Ch3sQdg9B88D6EHkCEkLobAABtDnY2O0eiAD7nYTOTUdqrC+mUGh
+			AcQwABRpdhBD2H0P4gRBiFEOIkRYjFiEkAA0o3wANtIEiMgRNyag
+			RQWuVMgIAKNmA+BQ5oNwRgUAADkEhP1ioLiPGeNEaSGFyPU0A9w3
+			B0n8FGMUbzjycpmQAT0UqCxogAP4KIAEAGpHBCqh5k4AIqIACoZQ
+			yBAgQEDRqsc1ZVQjAtUFBYIYKksLDitGqT0n5QShiOWhBT1DInaW
+			qP0qrxTrPsJec8qo8h9LYW0d6T6Jy0LoVYuxz58wAAaPaaoAx6gI
+			AJXqAcAcdytjufaI0XCox3lyAAOhJrBVIIAL4hEgUJ0ACzkMONCy
+			BSBvXN8HEAANEFuaJqzAgSdEvPmAcAo0oFVeh2CSClXIDUYxld1K
+			Kf0/3gr6AAcUyQkGAwocU2dAxOJrJnHQgsXpAxpmUiShc81AKMUZ
+			o1RujlHaPUfo+GhlZ5wACIIHFKMKC23pmdvEoApfAmAwA4AAJgMX
+			bAEL4rikFO6eLKfqnkaY5C2DgHWg4Wgz5wQvcigw60BiejMAAOkA
+			AvodQ8Z0gsOQAARkDDGZQHiCwZuqIGVFY4EWZgADYEQFDK1egaAi
+			S+nVPa5VzrpXU3S5AAD8H+XweQ+TRH/NKO0e6MS5nWH88aU0yiaT
+			9jUd0AZwyhmSAwA49wCwCF6AieWJQBCcl8JqfUrh0i9C3GkY4crQ
+			QADFG1VJbM5FFv6QW1IntsgACRQWM9aRfqLHfnMCtKKqia1hJrBp
+			MT5ldGlD2E4F9bEYgHpeXu0FdrpXTS/G4AF1hUDIiYOIdq9aGppJ
+			qgQ60SSBXbABRFirSbqXrvZe291774XxvkQclsYDmh4pOZQJKCzm
+			pmVwrgpBSgl0yZijhD1OL54JwUXeFjDxmjgS1dw9wuhpoZqUmZ/g
+			ABCLSGW6kY04aLm4MVOJlSAK1k9DYQMGJA58LLk5Bs0obgjT4gtW
+			Y0RRLGYLx1jvHkQ7PrRlMtR4ZgTqgAP/X95r9B8IxOK7ij1nlik1
+			NcZKnBkgNgOQcAwAxestMPpfDAsT9j1DFG2OoAGEgAC6tLQN9Vrl
+			GPTMoeYnrmCBW4QcLiJUfjCUDnGbrFNazRBuMoDkgYMEzqJV8E0F
+			tzDVGsrjj3SGkUE2wIENuOIAI4MbFmM8ciTMQpq0oAAuBAhDkDHE
+			zGGpO18aS1Zq3V2r9Yax1kbQOhqs+BGSiTcnpgyBRgTcC0DkVAZA
+			hZCDsErsYLaz2Vssgi/AAC8GqkscyTRljeVQfjNyYH/AADWlHD5z
+			WI6qN0HMmxlAsGUBKQMKBA2VECZoo81xfASgXZUBVXYXQeswxslE
+			gRscc7M4BwHgSXrC5sOsPOWcfh8mlW+c46BOJUWJlQWU7suKMgIm
+			SqwAZkgOgPP4As+B7085fQXZ/f5XVJAAwbQhqQnRhOOLkTkfTkFk
+			6hVQT3Tp1lSlV06e4uBhWjm43JroACsichIIGEJM4EMDBnCFumCw
+			HYKYHk7wPq18SyE1WoLxJWzxq2mfqtVTiaEoF8XqTUvxAg055hnS
+			Zzktur9x7l3Punde7RnTijGKkCzJE3L5DknqdMqRmTOCMCzKm7t1
+			CPJYAAG633Q37dHu/k6djk7CLYaOnR0pNGiOJpbxdso+1CxsqLTz
+			mjFAApqqTFbFFhkKdaKjZkYswKqGGSBlAiED3esgqBfAYgfAnowK
+			YNW0gOND5T5HyflEXdyWjIJA5TcUYcuJAo/CqtGNFwg0q4Soyw7h
+			Tx7UumZl6mQZIDgDj+ZaL1S89T2jc9ZU2TkbY6OW8vj8uHIz9vvq
+			NQUXy9Qw4mqkw6xiI9wYhU5Lq9I2xDqmYqIJoyh0QgTpBMxG4qIM
+			Bl7RgEhlKzY6z5cDqjAfJyAfB9RnoxwXYaYxyaJPKgRpAyhVAgQZ
+			AlytBXJzaC5icD0G8HEHMHUHcHg3pjDWw/imYnIUBBZtJdpBcDhM
+			rF6eIqILoHZmDeZlRQw0SlsHsKyIQbo/YAAUIYgbpLJ9oczsK75H
+			r/pLonpLQyQLoAC3D1CAjVY2YOyX5B6/YyStYmsNQz4yg5rk5N5X
+			DfYMgH4yzqICYl7eMK8Q8RDWR66VAeofb7sRxs4fQqIejhMEQqrg
+			rIL5zibwjPqkDkAvUT4AD85jZHA9Sl6zoAKXLfqq6cYmodIeI8wY
+			QbIw8MJerMi1gs5ZScj9pDAygxw6wPhKJDItiOqAAvQxCcxkIvgG
+			pB4LwgYLRM6SYpYpLRgHYEx2MaURMbR7CFJqQbKhIaDzwAAaAcJL
+			TlJNxJYmoXYyguA8wSqQMGz/cbcecekese0e7uwVR1MGBQQyQTZB
+			alCrYnqshMrfw85kpGQHCR4ETegmxQwqQ1h3MfEiZmpaC2DSxjYT
+			gYBxweD/RopAB/BIC2C2ZBaGYgUZxPbD4xD14nykg0om4qKQoyTd
+			I9QyAnpRRZQ+pHAqrRANIIYE40bvSs7R8ikosoyH0iQgSUrib5zk
+			qVB4rs0STh0ScqUSg0TJphyWquo7cVa6BdMVIAABrLYqQAxPIDYB
+			o/heI9Q7TH5HyZhh8chLQcIdrCZnzNgyUc5ZC2A6xeogTMwmpsjM
+			5LIAAZoACOo80NwsJVRuogTRYvSrompOJMxHA6wH4FADDRhQgqQq
+			Eo8zpZiERakcJpbzpLQbIc8byFRRxiInpj4ABAhpYU4AEIhAEz02
+			s20283E3KUQlpuo5oLcgBB4lonpEpNTHAAAETw6fI0oK4G4m4EIC
+			ps0rs3U6ZMqgjIx+YbAcxqQS4XqE5wonMMckRaQnqAUXomoPJzMc
+			YziBJOg6wIAga3wmrbsPImo0UPhRo9A6wG6MZ2QAAJopssI9DyMT
+			k6lAtAxq8qAuIfY0sER0DJIfL6kWA0qZTH9CpBSUlAinpdUrwAAC
+			SzUQhADLRPLkBPL8I7spJHrlI4omsjAAATwYBhZ+QvR+ph8kJY8X
+			ZKMdMXo6yrI6xDIvwx0xIriQo0RQSKgnrWtJBM4Ag16JrqaCzpzd
+			ICQ1dA9KpMKNguI+4AAXAaRDNLgxygQfZ9RNggABAD+AD/ADLAAC
+			ABtAAEADpAAJADkACAgYAjEZjUbjkdj0fkEhkUjkklk0nlEplUrl
+			ktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1
+			PqFRqU1OgABYAfgAIoAgQfjJ6jIUjMKqc8AMCAAWB0SB4KAwALI4
+			EAAEQVBgABQHhwFAdkst/wGBwWDwmFw2Fez6rLneL2ADbdDzACgY
+			TdAD4fb9w8xg1ZgUIjDjAD7ACEACUADTpcWhzxAAOrAArwDABRjI
+			kjJSrgAA+bpQEAcCBgIhxHFgbtIOBAAHIlCt4A0O33T6nV63X7HZ
+			7Xb7ndmEGjAB8D+8GahT/f8Cfb+8/prD+gT89gAe76AoAfT+2jzf
+			W9xSFHqfaHPIgSDLQ70EJsvqDL6ggDgGzUHqyCAEHyAAHwqADiKy
+			BICKzBKRvQjCDIMcB2HoABVGScIAHaekLG8dTJH68kQJ0giBMkgx
+			1t2RSCgA0R3gAZAAHqADHFW/CjiAhoABuqzRgAOsfynBjdtpGyML
+			6gQKAa3oKy8AA2CKFQAAmBjegIsizwPLM3TfOE4zlOaQsYxzGHuA
+			BhmwdU9GzPryIMf0azojjSIE1yDIQ+44gAzR2gARsWoy8FC0tS9M
+			UzTVN05TtPU/UFQ1FUdSVKp6LL8CUigAD0flMjIOtiiSBTbOYBLQ
+			vSFCYGNWhAuwABWDYHgACC3VNY9kWTZTsxPCxmG+dkgHbIxdmoc7
+			8PlS59IyWqMm4jJNAAR4AW+pVG1UrIaN2FwANoqqMNgg1Z2WjFb3
+			gvMzTQAA1CIEoAS65YGAM+8t3pg2D4RhOFYXTFKvE9T5nofa3v+A
+			B5Ym/B+tae7en68r5wMgsRPCi60UrhjsAWAzSYFbYJATPIJgVPLg
+			wYAMcLRWtC4dER5Hu0hsnSyRvxkABWmXFh82zhMSIzQ4AG+jLRIE
+			qrenM3lJosgikIFRo5N3r6DAajOxzle18t6OglBY5LlrXgmz5RuW
+			57puqPGKbSIGIbc+nGdzHHIdrHVEdzdoQgxngA+5DLxVetbtyHI8
+			lyfKcry3L8xzPNc2oqBEXxvCuQfAAE43dWoM5CMOlTK+IEHYTAuA
+			ANAgiQeBMCwAAuB6JbPNnOd/4Hgr+dB4zyYBrogcx3scY5uT6zOT
+			zig0LIEVTdmyi5SgASAAHAoYq3aAAMSg2jkIEJCMhQjItoy5ctWW
+			s6MOihQSLVf8wi0HQQ2JYy+IUrdnTwoBQDgJAWAxIGHKUPGbtH5o
+			2QEZUGQpHBWB+nxP0kVAR7yFD2YwZlAA+i3oEUdAqAMByhvxK4eJ
+			xSEHFACIIAwArLADLbAeAdbZynqQqPOsgxJWR0DwTyOAdaKBXDOH
+			EAAeg+CsjxHqtt6KyiDGaNopAgxECBCHISRMAA6AADOMvF9JJmij
+			BvTEbsNhuwJlhUuBFlS+wiPqLUct2ZEn/QmjtHePBKYlGaHyZlPx
+			EBhp/AAs1Fo80LKgIM1cgS3SMDVXAuI+keZJSTkpJWS0l5MSZk1J
+			sswAAzJmAAXcqpXYRhMN2XdTSBwHLGAah0AAYQem4BKBhYZbjaJq
+			hLJyXUu2FjfiGAAUwxxvSDkMAAcI7EjKBZ3JEgRqCDGqW2LsAAlo
+			tlDDsABsZpATo/BhFkPhGQIQjNgrSBiyzgECWKW8MAPQRgAAqcoA
+			AIUzgAfmQV+MuZeT5n1PufhRlCD5H6W8+RAkX0CYjBk+RCmfMdPd
+			BNkJ6IEsnPAelk0/SZl8IIAWFwAGXujZenlDppAFQxnKWc8DOYoI
+			ia3Ft4oABgvIAAOeICQ3nGjY8wwgj0zdyOINEcgQd0LzVIskZEZQ
+			w4AAfYQILht6mKWOGQ4JoMVYxxScCMsRbnV0Wq1VtTg5HlkTq+MY
+			bSfW8KAREyNURqiBCBR+aJYcXiLIfq5XOulda7V3rxXmvUupPrDn
+			C+wgxXjSSfnQp8BBfC8F6AAFIGpXlfF3BABIBUobFUUnLXuzFmSm
+			zKUINwdI8gACfGEt8eEHAADqZ8yJTCRorkXGglFIglVJydIsb0eD
+			4jdhBIuCuLIYzd2TIIW+fCo2Cu6OWBJgQAAtA4namc3oEwGlvTUX
+			6zRT4n2Xurdm7RRIEojPLFmBqNCMQTUGbRkJ8lBHuH1QFRx8EjwZ
+			RoQoe4/DaUJSOfYgZ7jNXDu2SBnKIgBACIMAYAZBDiGkOIZqGsNw
+			DoWQkbwAkYnKDviaAAaQ40hN+SML4ay1z6maw+wyuRFCMRcIEIUj
+			I5QAOFGuZMAEh4Gk9UabYjBuiDLsIEuxS0tgABABS+OqgRAVgZlD
+			Ye/uR8kE+vRe0gg2DGAAGwOa0A06vAAGoOO28iEfwbIu4kgRYCHR
+			ce9MOMOSczZnzRmnNWa82Zpk+fecJuLApRdKRgDRu7+JzYKCQC7Y
+			7oG9CrY0AAIAKSonvm3RGiYKEEiaZoa45jXCUF0Na+5mlCKaMkQo
+			M7igADHQ1UKL5OkmEOm6ByLIMyLiDjQRc585M8qkqeAAJgMFYpgO
+			WDcEkaasZ4hTorX2v9gFHomeAe4/T7nrg+xQfqAB+UGg+feEQ/IK
+			4xQPQ+tBAqV7Uorr6kz4SMAJAKVkCwC0UIUQtdGHKBqUHh1fThEW
+			0iCTHRQKxpCLR6Lbl8ihGl11TQJM0QZPJGBjG7RYaQiwPiHgACtC
+			Mn0ZwdxZ4eQoIhuytqWjrnxsdVJ1m4jYW/YPH8zjziVEgzAABejV
+			auLwaq1zMGaMxtlTpBjSEOW+QYZVMQAKNNJaDMvIOfc/6B0HoXQ+
+			iHVfAbQE1uE8qxIIJk3epiDAR14pps7ui2LGCgDJVoHwKFXuQW8v
+			SWOi9jn0z8zQ6+RAAG0Oe0AnBgDbMvH5OkCXBgASEQINRr0hgAau
+			kJcJpCbajAAciyZz+HkEBkk2M5GGxkEKvu1TyBy2lvLaffrKrWAA
+			ABMBlsfYeyEvu7BqJF+NuoHVuQb05CS0ep9SgXXsKXo+Q8/7NECl
+			WRno2wbtkcImQsegkePabIb5kOH7ssy99IHG0Hsxq/N8h9IDob7r
+			fnQr/+ohUcAgyajNIdKyg8zTMnRstLwATwBGvZN1Z4QZ4ieRe0wh
+			+Y4Zw4FIGK5leJha2yMPYkSbvFBCojmxjRHHidIyMcAAAXjdsaDa
+			lLpcHxFip3Ewg0AhJtrkE0k1oUPaQMI7qVqIAABym/wOqvhkBuke
+			BkBuFoj5CCPivplNOAk9CMnEjaNVBGFVwMwawbQbwcQcwdM0FUFV
+			ncCsnGCMCvCMOEHVFPoAIViBLmDngNAIrJgfgUnYpaCJQdwqnhEX
+			ELBmv5AABxFpgABdBpmrjFOYE4IonwuapqltiqjUBmlKCciFKgGx
+			issiCsnuCFJ2iDC5n3pyGDwGAcDnQHjeqolWm3l2mcwLwrCPGeFE
+			B8jehph1jnqNKMqNsHi9PusIjeMCp6ABissCDNKMIWwyMYxExSDq
+			L7B9h/iFI+j7vfD6B9iFNpINtmoHCBImj7r7PeCMtqvpKIiNKJoU
+			QVugC0ABkRRLKOAFnRgFPyC0gFkjEFnwmtxDmSICPQjMiCJDCskY
+			jJBShiphmfDSQsGFFKxYEfkdAABXjdnEiKBOgAEkwWicFzoRo0iF
+			CGCBCGFNC+iMLnAAA5gkm2KqRCmCxSyBm6slwUAAMOFrsOIuB3N7
+			sVkXlkiDFIDaK2DNJhsVJpEkv8SCSOSOyPSPyQSQlSA0gAOpCJO8
+			whIRgujdjew+FOmCgUgNFhkwDegigWjkANwnCrMCCGx8yRSflPP0
+			qYqZhfBrouKZDHQRQTqblLK5DQEgCMjTFxjVCcCBAwGsOpF2CDNT
+			CBJvyto1SXF6AFrFAEyeAhMhwHjlgdxANdygRfKJosh4B8DlhpB0
+			jnkGiGoVADABRPoWRQRPRQoVjNDgCCE1KHvVCCPWvVoVPTIVKizF
+			F6kRRgN1y3M0PQlKveNhkCvovczNrxj3PbjdoREaCBEaDaKADaTS
+			GMr6r3DMCHL7B8B+zUj5oJyOvVstsBCGqNjgsDIWTADlFtkNqOAE
+			E8m4zGJNGPP6iCHAkjBahoCKJCNHjXFBzPxgt+pIjaBikfhpMXgA
+			OnCFEhBJpBw3CZO8pUJQtOCGR6CMuPGsE5IUJ0gAAyggl/KqAPLk
+			J6E1TKz9lPh3B6kLSGkLBiBtEeBim+EjmlEi0EstGQkUIqnwkpja
+			CKObrXhgDYz+UMUM0NUN0OUOiWs3iIi6CLivD7ntF4CLrhFQmCrD
+			iFAngZlekwAAATgMDYHdj70PUcDtPbERBtB0LQBNO3gADGlt0ArV
+			FLnRiBUTMoIRnrBIwuCbunD7hsC0kfjTJSCDAbDdwqLwGDGCpZjY
+			NCi3gugdp2z4gCz9QkT+LyRUgAS5Dehoh0DniPJct1COEDvSi0S9
+			rgxNADqSTDDeS+TEMITCmbxMisgBRiVAIpIVD0mQ0cskoRL1jaD1
+			1JzZTVmMiFNkPkqbCFVJVOVP01xpkfvXKIon1HTLyBvUqNCDLDis
+			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 20ba1ff..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 (manageTransactions) 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..4b10bbe
--- /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 (manageTransactions) 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 {
