diff --git a/EduNetworkBuilder/EduNetworkBuilder.csproj b/EduNetworkBuilder/EduNetworkBuilder.csproj
index ca3708b..9c57274 100644
--- a/EduNetworkBuilder/EduNetworkBuilder.csproj
+++ b/EduNetworkBuilder/EduNetworkBuilder.csproj
@@ -177,6 +177,7 @@
       <DependentUpon>RTFWindow.cs</DependentUpon>
     </Compile>
     <Compile Include="SchoolworkClass.cs" />
+    <Compile Include="TraversalClass.cs" />
     <Compile Include="TrippleDESDocumentEncryption.cs" />
     <Compile Include="VLANConfig.cs">
       <SubType>Form</SubType>
diff --git a/EduNetworkBuilder/TraversalClass.cs b/EduNetworkBuilder/TraversalClass.cs
new file mode 100644
index 0000000..9a3afc8
--- /dev/null
+++ b/EduNetworkBuilder/TraversalClass.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EduNetworkBuilder
+{
+    public class TraversalClass
+    {
+        protected struct TraversalRecord
+        {
+            public string host;
+            public TraversalTechnology WhatUsed;
+
+            public TraversalRecord(string Host, TraversalTechnology what)
+            {
+                host = Host;
+                WhatUsed = what;
+            }
+        }
+
+        List<TraversalRecord> PathTaken = new List<TraversalRecord>();
+
+        public TraversalClass(){ }
+
+        public TraversalClass(TraversalClass CloneFrom)
+        {
+            Clone(CloneFrom, this);
+        }
+
+        public TraversalClass Clone()
+        {
+            TraversalClass newClass = new TraversalClass(this);
+            return newClass;
+        }
+
+        public static void Clone(TraversalClass source, TraversalClass dest)
+        {
+            dest.PathTaken.AddRange(source.PathTaken);
+        }
+
+        public void AddPath(string Host, TraversalTechnology WithWhat)
+        {
+            PathTaken.Add(new TraversalRecord(Host, WithWhat));
+        }
+
+        /// <summary>
+        /// This is just a debug function to print off the whole path as we find it.
+        /// </summary>
+        public void DumpPath()
+        {
+            foreach(TraversalRecord one in PathTaken)
+            {
+                Console.WriteLine(string.Format("{0:12} : {1:-12}",one.host, one.WhatUsed.ToString()));
+            }
+        }
+    }
+}