From 4f4f7e55fc630e3b8c5f6d0d4e51964e547fabfb Mon Sep 17 00:00:00 2001
From: Jeffrey Phillips Freeman <jeffrey.freeman@syncleus.com>
Date: Sun, 22 Mar 2015 10:40:58 -0400
Subject: [PATCH] Refactored traversal classes into their own package.

---
 .../java/com/syncleus/ferma/AbstractEdgeFrame.java   |  3 +++
 .../com/syncleus/ferma/AbstractElementFrame.java     |  2 ++
 .../java/com/syncleus/ferma/AbstractVertexFrame.java |  3 +++
 .../com/syncleus/ferma/DelegatingFramedGraph.java    |  4 ++++
 src/main/java/com/syncleus/ferma/EdgeFrame.java      |  2 ++
 src/main/java/com/syncleus/ferma/ElementFrame.java   |  2 ++
 src/main/java/com/syncleus/ferma/FramedGraph.java    |  2 ++
 src/main/java/com/syncleus/ferma/TEdge.java          |  2 +-
 src/main/java/com/syncleus/ferma/TVertex.java        |  2 +-
 src/main/java/com/syncleus/ferma/VertexFrame.java    |  2 ++
 .../syncleus/ferma/pipes/TraversalFunctionPipe.java  |  2 +-
 .../{ => traversals}/AbstractEdgeTraversal.java      |  4 +++-
 .../ferma/{ => traversals}/AbstractTraversal.java    |  8 +++++++-
 .../{ => traversals}/AbstractVertexTraversal.java    |  7 ++++++-
 .../ferma/{ => traversals}/EdgeTraversal.java        |  3 ++-
 .../syncleus/ferma/{ => traversals}/FrameMaker.java  |  6 +++++-
 .../ferma/{ => traversals}/FramingCollection.java    |  4 +++-
 .../ferma/{ => traversals}/FramingComparator.java    |  5 ++++-
 .../syncleus/ferma/{ => traversals}/FramingMap.java  |  5 ++++-
 .../{ => traversals}/FramingSideEffectFunction.java  |  6 +++++-
 .../{ => traversals}/FramingTraversalFunction.java   |  4 +++-
 .../{ => traversals}/GlobalVertexTraversal.java      |  8 +++++++-
 .../ferma/{ => traversals}/SideEffectFunction.java   |  2 +-
 .../ferma/{ => traversals}/SimpleTraversal.java      | 12 +++++++-----
 .../ferma/{ => traversals}/SplitTraversal.java       |  2 +-
 .../syncleus/ferma/{ => traversals}/Traversal.java   |  5 ++++-
 .../ferma/{ => traversals}/TraversalFunction.java    |  2 +-
 .../ferma/{ => traversals}/TraversalFunctions.java   |  2 +-
 .../ferma/{ => traversals}/VertexTraversal.java      |  5 ++++-
 .../ferma/typeresolvers/PolymorphicTypeResolver.java |  4 ++--
 .../syncleus/ferma/typeresolvers/TypeResolver.java   |  4 ++--
 .../ferma/typeresolvers/UntypedTypeResolver.java     |  4 ++--
 src/test/java/com/syncleus/ferma/TraversalsTest.java |  5 +++++
 33 files changed, 102 insertions(+), 31 deletions(-)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/AbstractEdgeTraversal.java (99%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/AbstractTraversal.java (99%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/AbstractVertexTraversal.java (99%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/EdgeTraversal.java (99%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/FrameMaker.java (95%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/FramingCollection.java (97%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/FramingComparator.java (93%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/FramingMap.java (95%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/FramingSideEffectFunction.java (93%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/FramingTraversalFunction.java (96%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/GlobalVertexTraversal.java (99%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/SideEffectFunction.java (98%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/SimpleTraversal.java (93%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/SplitTraversal.java (98%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/Traversal.java (99%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/TraversalFunction.java (98%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/TraversalFunctions.java (98%)
 rename src/main/java/com/syncleus/ferma/{ => traversals}/VertexTraversal.java (99%)

diff --git a/src/main/java/com/syncleus/ferma/AbstractEdgeFrame.java b/src/main/java/com/syncleus/ferma/AbstractEdgeFrame.java
index e86e7cf5..5409e122 100644
--- a/src/main/java/com/syncleus/ferma/AbstractEdgeFrame.java
+++ b/src/main/java/com/syncleus/ferma/AbstractEdgeFrame.java
@@ -27,6 +27,9 @@
  */
 package com.syncleus.ferma;
 
+import com.syncleus.ferma.traversals.SimpleTraversal;
+import com.syncleus.ferma.traversals.VertexTraversal;
+import com.syncleus.ferma.traversals.EdgeTraversal;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.JsonObject;
diff --git a/src/main/java/com/syncleus/ferma/AbstractElementFrame.java b/src/main/java/com/syncleus/ferma/AbstractElementFrame.java
index 94081f56..b69c383a 100644
--- a/src/main/java/com/syncleus/ferma/AbstractElementFrame.java
+++ b/src/main/java/com/syncleus/ferma/AbstractElementFrame.java
@@ -27,6 +27,8 @@
  */
 package com.syncleus.ferma;
 
+import com.syncleus.ferma.traversals.VertexTraversal;
+import com.syncleus.ferma.traversals.EdgeTraversal;
 import java.util.Set;
 
 import com.syncleus.ferma.framefactories.annotation.CachesReflection;
diff --git a/src/main/java/com/syncleus/ferma/AbstractVertexFrame.java b/src/main/java/com/syncleus/ferma/AbstractVertexFrame.java
index 26f4fe27..1915d04d 100644
--- a/src/main/java/com/syncleus/ferma/AbstractVertexFrame.java
+++ b/src/main/java/com/syncleus/ferma/AbstractVertexFrame.java
@@ -27,6 +27,9 @@
  */
 package com.syncleus.ferma;
 
+import com.syncleus.ferma.traversals.SimpleTraversal;
+import com.syncleus.ferma.traversals.VertexTraversal;
+import com.syncleus.ferma.traversals.EdgeTraversal;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.JsonObject;
diff --git a/src/main/java/com/syncleus/ferma/DelegatingFramedGraph.java b/src/main/java/com/syncleus/ferma/DelegatingFramedGraph.java
index bd298e43..b89ca6a8 100644
--- a/src/main/java/com/syncleus/ferma/DelegatingFramedGraph.java
+++ b/src/main/java/com/syncleus/ferma/DelegatingFramedGraph.java
@@ -27,6 +27,10 @@
  */
 package com.syncleus.ferma;
 
+import com.syncleus.ferma.traversals.GlobalVertexTraversal;
+import com.syncleus.ferma.traversals.SimpleTraversal;
+import com.syncleus.ferma.traversals.VertexTraversal;
+import com.syncleus.ferma.traversals.EdgeTraversal;
 import com.syncleus.ferma.framefactories.FrameFactory;
 import com.syncleus.ferma.framefactories.DefaultFrameFactory;
 import com.syncleus.ferma.typeresolvers.UntypedTypeResolver;
diff --git a/src/main/java/com/syncleus/ferma/EdgeFrame.java b/src/main/java/com/syncleus/ferma/EdgeFrame.java
index 1fa79c89..e76d4bcb 100644
--- a/src/main/java/com/syncleus/ferma/EdgeFrame.java
+++ b/src/main/java/com/syncleus/ferma/EdgeFrame.java
@@ -18,6 +18,8 @@
  ******************************************************************************/
 package com.syncleus.ferma;
 
+import com.syncleus.ferma.traversals.VertexTraversal;
+import com.syncleus.ferma.traversals.EdgeTraversal;
 import com.google.gson.JsonObject;
 import com.tinkerpop.blueprints.Edge;
 
diff --git a/src/main/java/com/syncleus/ferma/ElementFrame.java b/src/main/java/com/syncleus/ferma/ElementFrame.java
index b8db3398..533a687d 100644
--- a/src/main/java/com/syncleus/ferma/ElementFrame.java
+++ b/src/main/java/com/syncleus/ferma/ElementFrame.java
@@ -18,6 +18,8 @@
  ******************************************************************************/
 package com.syncleus.ferma;
 
+import com.syncleus.ferma.traversals.VertexTraversal;
+import com.syncleus.ferma.traversals.EdgeTraversal;
 import com.tinkerpop.blueprints.Element;
 
 import java.util.Set;
diff --git a/src/main/java/com/syncleus/ferma/FramedGraph.java b/src/main/java/com/syncleus/ferma/FramedGraph.java
index 754a86f6..f5c59de6 100644
--- a/src/main/java/com/syncleus/ferma/FramedGraph.java
+++ b/src/main/java/com/syncleus/ferma/FramedGraph.java
@@ -18,6 +18,8 @@
  ******************************************************************************/
 package com.syncleus.ferma;
 
+import com.syncleus.ferma.traversals.VertexTraversal;
+import com.syncleus.ferma.traversals.EdgeTraversal;
 import com.syncleus.ferma.typeresolvers.TypeResolver;
 import com.tinkerpop.blueprints.*;
 
diff --git a/src/main/java/com/syncleus/ferma/TEdge.java b/src/main/java/com/syncleus/ferma/TEdge.java
index 846ed887..eb5c12b6 100644
--- a/src/main/java/com/syncleus/ferma/TEdge.java
+++ b/src/main/java/com/syncleus/ferma/TEdge.java
@@ -33,5 +33,5 @@ package com.syncleus.ferma;
  *
  */
 public final class TEdge extends AbstractEdgeFrame {
-    static final ClassInitializer<TEdge> DEFAULT_INITIALIZER = new DefaultClassInitializer(TEdge.class);
+    public static final ClassInitializer<TEdge> DEFAULT_INITIALIZER = new DefaultClassInitializer(TEdge.class);
 }
diff --git a/src/main/java/com/syncleus/ferma/TVertex.java b/src/main/java/com/syncleus/ferma/TVertex.java
index 94d880b1..d1f9c7ff 100644
--- a/src/main/java/com/syncleus/ferma/TVertex.java
+++ b/src/main/java/com/syncleus/ferma/TVertex.java
@@ -33,5 +33,5 @@ package com.syncleus.ferma;
  *
  */
 public final class TVertex extends AbstractVertexFrame {
-    static final ClassInitializer<TVertex> DEFAULT_INITIALIZER = new DefaultClassInitializer(TVertex.class);
+    public static final ClassInitializer<TVertex> DEFAULT_INITIALIZER = new DefaultClassInitializer(TVertex.class);
 }
diff --git a/src/main/java/com/syncleus/ferma/VertexFrame.java b/src/main/java/com/syncleus/ferma/VertexFrame.java
index 0ecf30d6..a4854458 100644
--- a/src/main/java/com/syncleus/ferma/VertexFrame.java
+++ b/src/main/java/com/syncleus/ferma/VertexFrame.java
@@ -18,6 +18,8 @@
  ******************************************************************************/
 package com.syncleus.ferma;
 
+import com.syncleus.ferma.traversals.VertexTraversal;
+import com.syncleus.ferma.traversals.EdgeTraversal;
 import com.google.gson.JsonObject;
 import com.tinkerpop.blueprints.Vertex;
 
diff --git a/src/main/java/com/syncleus/ferma/pipes/TraversalFunctionPipe.java b/src/main/java/com/syncleus/ferma/pipes/TraversalFunctionPipe.java
index fd6e9814..4e7da578 100644
--- a/src/main/java/com/syncleus/ferma/pipes/TraversalFunctionPipe.java
+++ b/src/main/java/com/syncleus/ferma/pipes/TraversalFunctionPipe.java
@@ -30,7 +30,7 @@ package com.syncleus.ferma.pipes;
 import java.util.Iterator;
 import java.util.List;
 
-import com.syncleus.ferma.TraversalFunction;
+import com.syncleus.ferma.traversals.TraversalFunction;
 
 import com.tinkerpop.pipes.Pipe;
 
diff --git a/src/main/java/com/syncleus/ferma/AbstractEdgeTraversal.java b/src/main/java/com/syncleus/ferma/traversals/AbstractEdgeTraversal.java
similarity index 99%
rename from src/main/java/com/syncleus/ferma/AbstractEdgeTraversal.java
rename to src/main/java/com/syncleus/ferma/traversals/AbstractEdgeTraversal.java
index f7c71cac..1e8a87a7 100644
--- a/src/main/java/com/syncleus/ferma/AbstractEdgeTraversal.java
+++ b/src/main/java/com/syncleus/ferma/traversals/AbstractEdgeTraversal.java
@@ -25,12 +25,14 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
 import java.util.*;
 
 import com.google.common.base.Function;
 import com.google.common.collect.*;
+import com.syncleus.ferma.EdgeFrame;
+import com.syncleus.ferma.TEdge;
 import com.tinkerpop.blueprints.Edge;
 import com.tinkerpop.blueprints.Element;
 import com.tinkerpop.blueprints.Predicate;
diff --git a/src/main/java/com/syncleus/ferma/AbstractTraversal.java b/src/main/java/com/syncleus/ferma/traversals/AbstractTraversal.java
similarity index 99%
rename from src/main/java/com/syncleus/ferma/AbstractTraversal.java
rename to src/main/java/com/syncleus/ferma/traversals/AbstractTraversal.java
index 529f56f6..dffdc0bd 100644
--- a/src/main/java/com/syncleus/ferma/AbstractTraversal.java
+++ b/src/main/java/com/syncleus/ferma/traversals/AbstractTraversal.java
@@ -25,7 +25,7 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
 import java.util.*;
 
@@ -37,6 +37,12 @@ import com.google.common.base.Function;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
+import com.syncleus.ferma.EdgeFrame;
+import com.syncleus.ferma.FramedGraph;
+import com.syncleus.ferma.Path;
+import com.syncleus.ferma.TEdge;
+import com.syncleus.ferma.TVertex;
+import com.syncleus.ferma.VertexFrame;
 import com.syncleus.ferma.pipes.*;
 import com.tinkerpop.blueprints.Edge;
 import com.tinkerpop.blueprints.Element;
diff --git a/src/main/java/com/syncleus/ferma/AbstractVertexTraversal.java b/src/main/java/com/syncleus/ferma/traversals/AbstractVertexTraversal.java
similarity index 99%
rename from src/main/java/com/syncleus/ferma/AbstractVertexTraversal.java
rename to src/main/java/com/syncleus/ferma/traversals/AbstractVertexTraversal.java
index fde022fe..3b1c013d 100644
--- a/src/main/java/com/syncleus/ferma/AbstractVertexTraversal.java
+++ b/src/main/java/com/syncleus/ferma/traversals/AbstractVertexTraversal.java
@@ -25,7 +25,7 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
 import java.util.*;
 
@@ -34,6 +34,11 @@ import com.google.common.collect.Collections2;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
+import com.syncleus.ferma.ClassInitializer;
+import com.syncleus.ferma.DefaultClassInitializer;
+import com.syncleus.ferma.EdgeFrame;
+import com.syncleus.ferma.TVertex;
+import com.syncleus.ferma.VertexFrame;
 import com.tinkerpop.blueprints.Element;
 import com.tinkerpop.blueprints.Predicate;
 import com.tinkerpop.blueprints.Vertex;
diff --git a/src/main/java/com/syncleus/ferma/EdgeTraversal.java b/src/main/java/com/syncleus/ferma/traversals/EdgeTraversal.java
similarity index 99%
rename from src/main/java/com/syncleus/ferma/EdgeTraversal.java
rename to src/main/java/com/syncleus/ferma/traversals/EdgeTraversal.java
index 05f2bea1..80fae29f 100644
--- a/src/main/java/com/syncleus/ferma/EdgeTraversal.java
+++ b/src/main/java/com/syncleus/ferma/traversals/EdgeTraversal.java
@@ -25,8 +25,9 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
+import com.syncleus.ferma.EdgeFrame;
 import java.util.*;
 
 import com.tinkerpop.blueprints.Predicate;
diff --git a/src/main/java/com/syncleus/ferma/FrameMaker.java b/src/main/java/com/syncleus/ferma/traversals/FrameMaker.java
similarity index 95%
rename from src/main/java/com/syncleus/ferma/FrameMaker.java
rename to src/main/java/com/syncleus/ferma/traversals/FrameMaker.java
index 053e0c61..2e93dd14 100644
--- a/src/main/java/com/syncleus/ferma/FrameMaker.java
+++ b/src/main/java/com/syncleus/ferma/traversals/FrameMaker.java
@@ -25,8 +25,12 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
+import com.syncleus.ferma.ElementFrame;
+import com.syncleus.ferma.FramedGraph;
+import com.syncleus.ferma.TEdge;
+import com.syncleus.ferma.TVertex;
 import com.tinkerpop.blueprints.Edge;
 import com.tinkerpop.blueprints.Element;
 import com.tinkerpop.blueprints.Vertex;
diff --git a/src/main/java/com/syncleus/ferma/FramingCollection.java b/src/main/java/com/syncleus/ferma/traversals/FramingCollection.java
similarity index 97%
rename from src/main/java/com/syncleus/ferma/FramingCollection.java
rename to src/main/java/com/syncleus/ferma/traversals/FramingCollection.java
index 654aaa12..8b315c5f 100644
--- a/src/main/java/com/syncleus/ferma/FramingCollection.java
+++ b/src/main/java/com/syncleus/ferma/traversals/FramingCollection.java
@@ -25,8 +25,10 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
+import com.syncleus.ferma.FramedGraph;
+import com.syncleus.ferma.traversals.FrameMaker;
 import java.util.Collection;
 import java.util.Iterator;
 
diff --git a/src/main/java/com/syncleus/ferma/FramingComparator.java b/src/main/java/com/syncleus/ferma/traversals/FramingComparator.java
similarity index 93%
rename from src/main/java/com/syncleus/ferma/FramingComparator.java
rename to src/main/java/com/syncleus/ferma/traversals/FramingComparator.java
index acbca668..680e4f47 100644
--- a/src/main/java/com/syncleus/ferma/FramingComparator.java
+++ b/src/main/java/com/syncleus/ferma/traversals/FramingComparator.java
@@ -25,8 +25,11 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
+import com.syncleus.ferma.ElementFrame;
+import com.syncleus.ferma.FramedGraph;
+import com.syncleus.ferma.traversals.FrameMaker;
 import java.util.Comparator;
 
 /**
diff --git a/src/main/java/com/syncleus/ferma/FramingMap.java b/src/main/java/com/syncleus/ferma/traversals/FramingMap.java
similarity index 95%
rename from src/main/java/com/syncleus/ferma/FramingMap.java
rename to src/main/java/com/syncleus/ferma/traversals/FramingMap.java
index 63ede1f2..b38b9332 100644
--- a/src/main/java/com/syncleus/ferma/FramingMap.java
+++ b/src/main/java/com/syncleus/ferma/traversals/FramingMap.java
@@ -25,8 +25,11 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
+import com.syncleus.ferma.ElementFrame;
+import com.syncleus.ferma.FramedGraph;
+import com.syncleus.ferma.traversals.FrameMaker;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
diff --git a/src/main/java/com/syncleus/ferma/FramingSideEffectFunction.java b/src/main/java/com/syncleus/ferma/traversals/FramingSideEffectFunction.java
similarity index 93%
rename from src/main/java/com/syncleus/ferma/FramingSideEffectFunction.java
rename to src/main/java/com/syncleus/ferma/traversals/FramingSideEffectFunction.java
index 09954081..0fef9b84 100644
--- a/src/main/java/com/syncleus/ferma/FramingSideEffectFunction.java
+++ b/src/main/java/com/syncleus/ferma/traversals/FramingSideEffectFunction.java
@@ -25,7 +25,11 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
+
+import com.syncleus.ferma.ElementFrame;
+import com.syncleus.ferma.FramedGraph;
+import com.syncleus.ferma.traversals.FrameMaker;
 
 /**
  * Frames the argument before delegation.
diff --git a/src/main/java/com/syncleus/ferma/FramingTraversalFunction.java b/src/main/java/com/syncleus/ferma/traversals/FramingTraversalFunction.java
similarity index 96%
rename from src/main/java/com/syncleus/ferma/FramingTraversalFunction.java
rename to src/main/java/com/syncleus/ferma/traversals/FramingTraversalFunction.java
index 46d57c0e..33f6d495 100644
--- a/src/main/java/com/syncleus/ferma/FramingTraversalFunction.java
+++ b/src/main/java/com/syncleus/ferma/traversals/FramingTraversalFunction.java
@@ -25,8 +25,10 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
+import com.syncleus.ferma.ElementFrame;
+import com.syncleus.ferma.FramedGraph;
 import com.tinkerpop.pipes.PipeFunction;
 
 /**
diff --git a/src/main/java/com/syncleus/ferma/GlobalVertexTraversal.java b/src/main/java/com/syncleus/ferma/traversals/GlobalVertexTraversal.java
similarity index 99%
rename from src/main/java/com/syncleus/ferma/GlobalVertexTraversal.java
rename to src/main/java/com/syncleus/ferma/traversals/GlobalVertexTraversal.java
index 212a06ff..b61d25a3 100644
--- a/src/main/java/com/syncleus/ferma/GlobalVertexTraversal.java
+++ b/src/main/java/com/syncleus/ferma/traversals/GlobalVertexTraversal.java
@@ -25,10 +25,16 @@
  * Source License: Apache Public License v2.0
  * When: November, 30th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
 import com.google.common.base.Function;
 import com.google.common.collect.Iterators;
+import com.syncleus.ferma.ClassInitializer;
+import com.syncleus.ferma.DefaultClassInitializer;
+import com.syncleus.ferma.EdgeFrame;
+import com.syncleus.ferma.FramedGraph;
+import com.syncleus.ferma.Path;
+import com.syncleus.ferma.VertexFrame;
 import com.tinkerpop.blueprints.*;
 import com.tinkerpop.blueprints.impls.tg.TinkerGraph;
 import com.tinkerpop.gremlin.Tokens;
diff --git a/src/main/java/com/syncleus/ferma/SideEffectFunction.java b/src/main/java/com/syncleus/ferma/traversals/SideEffectFunction.java
similarity index 98%
rename from src/main/java/com/syncleus/ferma/SideEffectFunction.java
rename to src/main/java/com/syncleus/ferma/traversals/SideEffectFunction.java
index b2ce3a52..e36f7738 100644
--- a/src/main/java/com/syncleus/ferma/SideEffectFunction.java
+++ b/src/main/java/com/syncleus/ferma/traversals/SideEffectFunction.java
@@ -25,7 +25,7 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
 /**
  * 
diff --git a/src/main/java/com/syncleus/ferma/SimpleTraversal.java b/src/main/java/com/syncleus/ferma/traversals/SimpleTraversal.java
similarity index 93%
rename from src/main/java/com/syncleus/ferma/SimpleTraversal.java
rename to src/main/java/com/syncleus/ferma/traversals/SimpleTraversal.java
index 79f0e19a..382b1ba9 100644
--- a/src/main/java/com/syncleus/ferma/SimpleTraversal.java
+++ b/src/main/java/com/syncleus/ferma/traversals/SimpleTraversal.java
@@ -25,8 +25,10 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
+import com.syncleus.ferma.ElementFrame;
+import com.syncleus.ferma.FramedGraph;
 import java.util.ArrayDeque;
 import java.util.Deque;
 import java.util.Iterator;
@@ -42,22 +44,22 @@ import com.tinkerpop.blueprints.Graph;
  * @param <S> The SideEffect of the current pipe.
  * @param <M> The current marked type for the current pipe.
  */
-class SimpleTraversal<T, C, S, M> extends AbstractTraversal<T, C, S, M> {
+public class SimpleTraversal<T, C, S, M> extends AbstractTraversal<T, C, S, M> {
 
     private final FramedGraph graph;
     private final FermaGremlinPipeline pipeline;
     private final Deque<MarkId> marks = new ArrayDeque<>();
     private int markId = 0;
 
-    protected SimpleTraversal(final FramedGraph graph, final Graph delegate) {
+    public SimpleTraversal(final FramedGraph graph, final Graph delegate) {
         this(graph, new FermaGremlinPipeline<>(delegate));
     }
 
-    protected SimpleTraversal(final FramedGraph graph, final Iterator starts) {
+    public SimpleTraversal(final FramedGraph graph, final Iterator starts) {
         this(graph, new FermaGremlinPipeline<>(starts));
     }
 
-    protected SimpleTraversal(final FramedGraph graph, final ElementFrame starts) {
+    public SimpleTraversal(final FramedGraph graph, final ElementFrame starts) {
         this(graph, new FermaGremlinPipeline<>(starts.getElement()));
     }
 
diff --git a/src/main/java/com/syncleus/ferma/SplitTraversal.java b/src/main/java/com/syncleus/ferma/traversals/SplitTraversal.java
similarity index 98%
rename from src/main/java/com/syncleus/ferma/SplitTraversal.java
rename to src/main/java/com/syncleus/ferma/traversals/SplitTraversal.java
index 0aa363d2..7db029fd 100644
--- a/src/main/java/com/syncleus/ferma/SplitTraversal.java
+++ b/src/main/java/com/syncleus/ferma/traversals/SplitTraversal.java
@@ -25,7 +25,7 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
 public interface SplitTraversal<T> {
 
diff --git a/src/main/java/com/syncleus/ferma/Traversal.java b/src/main/java/com/syncleus/ferma/traversals/Traversal.java
similarity index 99%
rename from src/main/java/com/syncleus/ferma/Traversal.java
rename to src/main/java/com/syncleus/ferma/traversals/Traversal.java
index a713ec23..f6212014 100644
--- a/src/main/java/com/syncleus/ferma/Traversal.java
+++ b/src/main/java/com/syncleus/ferma/traversals/Traversal.java
@@ -25,8 +25,11 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
+import com.syncleus.ferma.EdgeFrame;
+import com.syncleus.ferma.Path;
+import com.syncleus.ferma.VertexFrame;
 import java.util.*;
 
 import com.tinkerpop.blueprints.Graph;
diff --git a/src/main/java/com/syncleus/ferma/TraversalFunction.java b/src/main/java/com/syncleus/ferma/traversals/TraversalFunction.java
similarity index 98%
rename from src/main/java/com/syncleus/ferma/TraversalFunction.java
rename to src/main/java/com/syncleus/ferma/traversals/TraversalFunction.java
index 4a4c4950..dca9f4ed 100644
--- a/src/main/java/com/syncleus/ferma/TraversalFunction.java
+++ b/src/main/java/com/syncleus/ferma/traversals/TraversalFunction.java
@@ -25,7 +25,7 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
 import com.tinkerpop.pipes.PipeFunction;
 
diff --git a/src/main/java/com/syncleus/ferma/TraversalFunctions.java b/src/main/java/com/syncleus/ferma/traversals/TraversalFunctions.java
similarity index 98%
rename from src/main/java/com/syncleus/ferma/TraversalFunctions.java
rename to src/main/java/com/syncleus/ferma/traversals/TraversalFunctions.java
index 12aac79a..0c52dc1c 100644
--- a/src/main/java/com/syncleus/ferma/TraversalFunctions.java
+++ b/src/main/java/com/syncleus/ferma/traversals/TraversalFunctions.java
@@ -25,7 +25,7 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
 public class TraversalFunctions {
 
diff --git a/src/main/java/com/syncleus/ferma/VertexTraversal.java b/src/main/java/com/syncleus/ferma/traversals/VertexTraversal.java
similarity index 99%
rename from src/main/java/com/syncleus/ferma/VertexTraversal.java
rename to src/main/java/com/syncleus/ferma/traversals/VertexTraversal.java
index 3a46dc64..81fce379 100644
--- a/src/main/java/com/syncleus/ferma/VertexTraversal.java
+++ b/src/main/java/com/syncleus/ferma/traversals/VertexTraversal.java
@@ -25,8 +25,11 @@
  * Source License: Apache Public License v2.0
  * When: November, 20th 2014
  */
-package com.syncleus.ferma;
+package com.syncleus.ferma.traversals;
 
+import com.syncleus.ferma.ClassInitializer;
+import com.syncleus.ferma.EdgeFrame;
+import com.syncleus.ferma.VertexFrame;
 import java.util.*;
 
 import com.tinkerpop.blueprints.Predicate;
diff --git a/src/main/java/com/syncleus/ferma/typeresolvers/PolymorphicTypeResolver.java b/src/main/java/com/syncleus/ferma/typeresolvers/PolymorphicTypeResolver.java
index 51c8a2f3..752afa4c 100644
--- a/src/main/java/com/syncleus/ferma/typeresolvers/PolymorphicTypeResolver.java
+++ b/src/main/java/com/syncleus/ferma/typeresolvers/PolymorphicTypeResolver.java
@@ -21,10 +21,10 @@ package com.syncleus.ferma.typeresolvers;
 import com.syncleus.ferma.AbstractEdgeFrame;
 import com.syncleus.ferma.AbstractVertexFrame;
 import com.syncleus.ferma.EdgeFrame;
-import com.syncleus.ferma.EdgeTraversal;
+import com.syncleus.ferma.traversals.EdgeTraversal;
 import com.syncleus.ferma.ReflectionCache;
 import com.syncleus.ferma.VertexFrame;
-import com.syncleus.ferma.VertexTraversal;
+import com.syncleus.ferma.traversals.VertexTraversal;
 import com.tinkerpop.blueprints.Element;
 import com.tinkerpop.gremlin.Tokens;
 import java.util.Set;
diff --git a/src/main/java/com/syncleus/ferma/typeresolvers/TypeResolver.java b/src/main/java/com/syncleus/ferma/typeresolvers/TypeResolver.java
index e0ac0428..cf313250 100644
--- a/src/main/java/com/syncleus/ferma/typeresolvers/TypeResolver.java
+++ b/src/main/java/com/syncleus/ferma/typeresolvers/TypeResolver.java
@@ -27,8 +27,8 @@
  */
 package com.syncleus.ferma.typeresolvers;
 
-import com.syncleus.ferma.EdgeTraversal;
-import com.syncleus.ferma.VertexTraversal;
+import com.syncleus.ferma.traversals.EdgeTraversal;
+import com.syncleus.ferma.traversals.VertexTraversal;
 import com.tinkerpop.blueprints.Element;
 
 /**
diff --git a/src/main/java/com/syncleus/ferma/typeresolvers/UntypedTypeResolver.java b/src/main/java/com/syncleus/ferma/typeresolvers/UntypedTypeResolver.java
index ed7b9140..378f9515 100644
--- a/src/main/java/com/syncleus/ferma/typeresolvers/UntypedTypeResolver.java
+++ b/src/main/java/com/syncleus/ferma/typeresolvers/UntypedTypeResolver.java
@@ -21,11 +21,11 @@ package com.syncleus.ferma.typeresolvers;
 import com.syncleus.ferma.AbstractEdgeFrame;
 import com.syncleus.ferma.AbstractVertexFrame;
 import com.syncleus.ferma.EdgeFrame;
-import com.syncleus.ferma.EdgeTraversal;
+import com.syncleus.ferma.traversals.EdgeTraversal;
 import com.syncleus.ferma.TEdge;
 import com.syncleus.ferma.TVertex;
 import com.syncleus.ferma.VertexFrame;
-import com.syncleus.ferma.VertexTraversal;
+import com.syncleus.ferma.traversals.VertexTraversal;
 import com.tinkerpop.blueprints.Element;
 
 /**
diff --git a/src/test/java/com/syncleus/ferma/TraversalsTest.java b/src/test/java/com/syncleus/ferma/TraversalsTest.java
index 2bd70fee..f74e950f 100644
--- a/src/test/java/com/syncleus/ferma/TraversalsTest.java
+++ b/src/test/java/com/syncleus/ferma/TraversalsTest.java
@@ -18,6 +18,11 @@
  ******************************************************************************/
 package com.syncleus.ferma;
 
+import com.syncleus.ferma.traversals.SideEffectFunction;
+import com.syncleus.ferma.traversals.TraversalFunction;
+import com.syncleus.ferma.traversals.TraversalFunctions;
+import com.syncleus.ferma.traversals.Traversal;
+import com.syncleus.ferma.traversals.VertexTraversal;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
-- 
GitLab