Index: trunk/src/atmsdriver/model/Highway.java
===================================================================
--- trunk/src/atmsdriver/model/Highway.java	(revision 212)
+++ trunk/src/atmsdriver/model/Highway.java	(revision 237)
@@ -1,4 +1,5 @@
 package atmsdriver.model;
 
+import atmsdriver.model.Station.DIRECTION;
 import java.util.ArrayList;
 import java.util.List;
@@ -17,5 +18,5 @@
     /** The ordered list of stations (lane detector stations) on this highway */
     public final List<Station> stations;
-
+        
     /** Construct a highway 
      * 
@@ -28,3 +29,26 @@
         this.stations = stations;
     }
+    
+    /**
+     * 
+     */
+    public List<DIRECTION> getDirections()
+    {
+                    // Get available directions for route
+            ArrayList<DIRECTION> availDirs = new ArrayList<>();
+            for(Station stn : stations)
+            {
+                if(!availDirs.contains(stn.direction))
+                {
+                    availDirs.add(stn.direction);
+                }
+            }
+            return availDirs;
+    }
+    
+    @Override
+    public String toString()
+    {
+        return Integer.toString(this.routeNumber);
+    }
 }
Index: trunk/src/atmsdriver/model/Station.java
===================================================================
--- trunk/src/atmsdriver/model/Station.java	(revision 234)
+++ trunk/src/atmsdriver/model/Station.java	(revision 237)
@@ -2,4 +2,5 @@
 
 import atmsdriver.model.LoopDetector.DOTCOLOR;
+import java.util.ArrayList;
 import java.util.List;
 import org.w3c.dom.Document;
@@ -366,5 +367,5 @@
             return this.toString().substring(0, 1);
         }
-
+        
         public DIRECTION getOpposite()
         {
@@ -392,7 +393,16 @@
         public static DIRECTION toDirection(String letter)
         {
+            if(letter.indexOf(letter.charAt(0)) == -1)
+            {
+                return null;
+            }
             return values()[allLetters.indexOf(letter.charAt(0))];
         }
-
+    }
+    
+    @Override
+    public String toString()
+    {
+        return Integer.toString(this.ldsID);
     }
 }
Index: trunk/src/atmsdriver/model/Highways.java
===================================================================
--- trunk/src/atmsdriver/model/Highways.java	(revision 234)
+++ trunk/src/atmsdriver/model/Highways.java	(revision 237)
@@ -1,4 +1,6 @@
 package atmsdriver.model;
 
+import atmsdriver.batchbuilder.TrafficLaneEvent;
+import atmsdriver.model.LoopDetector.DOTCOLOR;
 import atmsdriver.model.Station.DIRECTION;
 import java.io.File;
@@ -520,4 +522,20 @@
         return result.toString();
     }
+    
+    /**
+     * Generates the route number list, used for user input validation.
+     * @return list of route numbers.
+     */
+    public List<Integer> getAllRouteNums()
+    {
+        ArrayList<Integer> routeNums = new ArrayList<>();
+        // add the route number for each highway to the list
+        for(Highway hwy : highways)
+        {
+            routeNums.add(hwy.routeNumber);
+        }
+        return routeNums;
+    }
+    
     /**
      * XML tags used in writeToXML()
@@ -535,3 +553,40 @@
         }
     }
+    
+    public void reset()
+    {
+        for(FEPLine line : lines)
+        {
+            for(Station stn : line.stations)
+            {
+                for(LoopDetector ld : stn.loops)
+                {
+                    ld.occ = 0;
+                    ld.vol = 0;
+                }
+            }
+        }
+    }
+    
+    public void applyTrafficLaneEvent(TrafficLaneEvent event)
+    {
+        Integer routeNum = event.routeNum;
+        Highway hwy = getHighwayByRouteNumber(routeNum);
+        for(Station stn: hwy.stations)
+        {
+            if(stn.equals(event.station))
+            {
+                for(LoopDetector ld : stn.loops)
+                {
+                    if(ld.equals(event.loopDetector))
+                    {
+                        ld.occ = event.color.occupancy();
+                        ld.vol = event.color.volume();
+                        break;
+                    }
+                }
+                break;
+            }
+        }
+    }
 }
