diff --git a/EduNetworkBuilder/Network.cs b/EduNetworkBuilder/Network.cs
index 0008115..84f1719 100644
--- a/EduNetworkBuilder/Network.cs
+++ b/EduNetworkBuilder/Network.cs
@@ -59,6 +59,7 @@ namespace EduNetworkBuilder
         private int NumberOfSecondsForTimeout = 10;
         private List<Rectangle> PacketRectangles = new List<Rectangle>();
         public BindingList<VLANName> VlanNames = new BindingList<VLANName>() { new VLANName(1, "Default") };
+        public TraversalClass LastTraversal = null;
 
         private bool previously_had_packets = false; //used on "tick" to determine if we are starting from scratch
 
@@ -1202,6 +1203,13 @@ namespace EduNetworkBuilder
                 else if (myPackets[loop].ready_to_delete)
                 {
                     myPackets[loop].PrepareToDelete();
+                    if(myPackets[loop].MyStatus == PacketStatus.finished_ok)
+                    {
+                        if (myPackets[loop].TraversalInformation != null)
+                        {
+                            LastTraversal = myPackets[loop].TraversalInformation;
+                        }
+                    }
                     myPackets.RemoveAt(loop);
                 }
             }
@@ -1870,15 +1878,18 @@ namespace EduNetworkBuilder
             return HomeworkSolvedStatus.NeverChecked; //for now.  We want to change this later.  Just so we keep re-testing
         }
 
-        public void NonVisualPingOneHost(string source, string dest)
+        public TraversalClass NonVisualPingOneHost(string source, string dest)
         {
+            LastTraversal = null;
             NB.RegisterInvisibleNetwork(this);
             NetworkDevice src = GetDeviceFromName(source);
-            if (src == null) return;
+            if (src == null) return null;
             IPAddress destination = DNSLookup(src, dest);
             src.PingFromHere(destination);
             NonVisualProcessPacketsOnce();
+            if (LastTraversal != null) LastTraversal.DumpPath();
             NB.UnregisterInvisibleNetwork();
+            return LastTraversal;
         }
 
         public void NonVisualDoDHCPOnAll()
diff --git a/EduNetworkBuilder/NetworkBuilder.cs b/EduNetworkBuilder/NetworkBuilder.cs
index e7f8712..0f1ff86 100644
--- a/EduNetworkBuilder/NetworkBuilder.cs
+++ b/EduNetworkBuilder/NetworkBuilder.cs
@@ -2149,6 +2149,8 @@ namespace EduNetworkBuilder
         {
             //we will prompt for stuff.  For now, just use the firewalls network
             LoadSolvedResource( SolvedNetworkNames.firewalls.ToString());
+            myNetwork.NonVisualDoDHCPOnAll();
+            myNetwork.NonVisualPingOneHost("pc1", "pc2");
         }
         #endregion Random Map Stuff
     }
diff --git a/EduNetworkBuilder/NetworkDevice.cs b/EduNetworkBuilder/NetworkDevice.cs
index 882317f..c7a7f43 100644
--- a/EduNetworkBuilder/NetworkDevice.cs
+++ b/EduNetworkBuilder/NetworkDevice.cs
@@ -1692,6 +1692,8 @@ namespace EduNetworkBuilder
               
                 tPacket.MyStatus = PacketStatus.finished_ok; //It stops here
                 nPacket = tPacket.payloadPacket;
+                if (nPacket.TraversalInformation != null && tPacket.TraversalInformation != null)
+                    nPacket.TraversalInformation.AddPath(tPacket.TraversalInformation);
                 NetworkCard nc = LocalNic(nPacket.TsourceIP, true);
                 nPacket.TsourceIP = null;
                 if (nc != null)
diff --git a/EduNetworkBuilder/TraversalClass.cs b/EduNetworkBuilder/TraversalClass.cs
index a712502..a3158a2 100644
--- a/EduNetworkBuilder/TraversalClass.cs
+++ b/EduNetworkBuilder/TraversalClass.cs
@@ -44,7 +44,10 @@ namespace EduNetworkBuilder
         {
             PathTaken.Add(new TraversalRecord(Host, WithWhat));
         }
-
+        public void AddPath(TraversalClass OtherTraversal)
+        {
+            PathTaken.AddRange(OtherTraversal.PathTaken);
+        }
         /// <summary>
         /// This is just a debug function to print off the whole path as we find it.
         /// </summary>