diff --git a/src/main/java/com/syncleus/ferma/AbstractEdgeFrame.java b/src/main/java/com/syncleus/ferma/AbstractEdgeFrame.java
index e86e7cf5ef11c6d380fc0019f39e3deed357fd50..5409e122ec0baacbb3de1e0330ff03f415e5e604 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 94081f5678f3d861bc015cbcda44583f268ba7b0..b69c383ac5dde57122d6b26b249108f3eb39afc7 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 26f4fe27c8e842df1abaf6ab9fe6c93698659328..1915d04d41d839783def1ba6bb9a535a0fb4748c 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 bd298e4392a6829669a3414920b402f769cfa234..b89ca6a8ed4129c0033bf11589e7c544a2ec470d 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 1fa79c8995c5135bc020fb33e34417b73f116214..e76d4bcb91618e44ebeeeb70da1ba84391398779 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 b8db339886b9a4ded04e859794d8044da19923f0..533a687d58638e9de74bc7c02b03375cd976e321 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 754a86f6e69fba555c45aa3a688545bc9c89b1ad..f5c59de6426f797e839da52a02b83e3ddfabfafc 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 846ed8871fbcec1e12e25ad3897c64c3238356d2..eb5c12b6a21ef45706de02d9fc600cd41f35af00 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 94d880b10bff3c5284d95d5a461a05e3109223ab..d1f9c7ffec776414cba7502496a3dae0a507ef9d 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 0ecf30d61a4d9e045ffa712b33332e584ad26133..a485445836851cf0de06f24569c6b18ab89c2951 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 fd6e9814d42d1fdec4767432c9535eeec1766bc7..4e7da578bbd0089ded2e3e32497e2063a8cd7036 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 f7c71cac85a72ecb86b8156b7aa51afbce9e28a7..1e8a87a7046a41074526f9dbf66e37de62249c84 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 529f56f66c09d139f080c0c42b6876bee8812ef5..dffdc0bd0dda829788335d3ec4625eca409cca94 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 fde022fe4fae162d1c78ffb9e8f07d759d0c9b92..3b1c013d0c58e92112422da3d35fae1acbd6e0d6 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 05f2bea1dab8b769ad3f841200b52d1792eb24a1..80fae29f3e235ff1f56466e321c0695011194ac9 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 053e0c611de0a54a6eb3d3c97af7891776cb7a65..2e93dd14db6c2da9b286c767fdb85345527f78fe 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 654aaa12afe8f8cadc7c72b2411cbd4b6d65034f..8b315c5f8a6cf79314ddc1cf93260e709044916a 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 acbca6684ec1a7cc0684834beca60964eedd2330..680e4f47a89d00796de88d321458ccff0eb162f8 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 63ede1f2fa79ba11ce997fd34cd268b36dbddf0d..b38b9332f2cb09f18d9b298d094052cdfe345db8 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 099540814e358068d9d3ebe83f86e4c3c9bce45b..0fef9b84644cfbc38481a340cd063f07616723bd 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 46d57c0e27762b9d08222d3d9b8a09c3368f2516..33f6d495c8c2c6c34bfa6ca4d3f3e11aa2dd3a0c 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 212a06fff0d8703362ca2b83ada98ee3d8ee046f..b61d25a3706d965698041c946e4483ddc7ebb4c7 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 b2ce3a52390d6de5a4cfeea1626cc0eedf2f834e..e36f7738157381d7727a867ede1030b5dcc309c3 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 79f0e19a354af27216290644336e3d3c9b250cd4..382b1ba9b8034ffa42cfe56666c440a78d5149fb 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 0aa363d298280405e7e52db020ac9a5007b05674..7db029fd192e56796d994339383c80cd049c0c1f 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 a713ec233711fbd07b07d560aca7c7530b47c9ce..f6212014a84019ee6db5077940b3692c9d8b2d4a 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 4a4c49508c2376804bf1c411552e4fbb7617d44b..dca9f4ed745078d756f53314f98a634744559ffb 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 12aac79a7f1dcffaea8c1ea13ceefe85309e436e..0c52dc1c24a0652feda872b58300388f8abcb4c1 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 3a46dc64498a4fdcc61d3e3e93e1998c39eef788..81fce37933c71852cb4b0117d1cfdefc354b0543 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 51c8a2f32c680589fa30f76ed43ee1e21aa70c43..752afa4c1e2ea645ca5553dd3249c30e5ded1ed6 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 e0ac0428c4a9c7f21c80b8104fa019223c87f332..cf313250715c5764c5f74d54adf8e9ffa0f600cd 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 ed7b914085ecc7334f82569596cff159ca9294ba..378f951519ed4ddafbdb4900eea7cd51fd8aa371 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 2bd70fee36c2fc08c3ecf46443604a52ab0c61f0..f74e950f276ac5d61b48d5021670116dadc06a9d 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;