Index: trunk/src/atmsdriver/model/Highway.java
===================================================================
--- trunk/src/atmsdriver/model/Highway.java	(revision 93)
+++ trunk/src/atmsdriver/model/Highway.java	(revision 103)
@@ -10,8 +10,8 @@
  * @author jdalbey
  */
-final class Highway
+final public class Highway
 {
     /** The identifying number for this highway, e.g., 101 */
-    public final Integer highwayNumber;
+    public final Integer routeNumber;
     /** The ordered list of stations (lane detector stations) on this highway */
     public final ArrayList<Station> stations;
@@ -22,7 +22,7 @@
      * @param stations ordered list of stations on this highway
      */
-    public Highway(Integer highwayNum, ArrayList<Station> stations)
+    public Highway(Integer routeNumber, ArrayList<Station> stations)
     {
-        this.highwayNumber = highwayNum;
+        this.routeNumber = routeNumber;
         this.stations = stations;
     }
Index: trunk/src/atmsdriver/model/Station.java
===================================================================
--- trunk/src/atmsdriver/model/Station.java	(revision 94)
+++ trunk/src/atmsdriver/model/Station.java	(revision 103)
@@ -1,4 +1,6 @@
 package atmsdriver.model;
 
+import atmsdriver.ConsoleDriver;
+import atmsdriver.ConsoleDriver.DOTCOLOR;
 import java.util.List;
 import org.w3c.dom.Document;
@@ -21,12 +23,12 @@
 
     /* Static Station meta data */
-    final private int lineNum;
-    final private int ldsID; // double check
-    final private int drop;
-    final private String location;
-    final private List<LoopDetector> loops;
-    final private int highwayNum;
-    final private double postmile;
-    final private DIRECTION direction;
+    final public int lineNum;
+    final public int ldsID; // double check
+    final public int drop;
+    final public String location;
+    final public List<LoopDetector> loops;
+    final public int routeNumber;
+    final public double postmile;
+    final public DIRECTION direction;
 
     /* Dynamic Station data */
@@ -46,18 +48,8 @@
         this.postmile = postmile;
         this.direction = direction;
-        this.highwayNum = hwy;
+        this.routeNumber = hwy;
 
         this.MLTotVol = 0;
         this.OppTotVol = 0;
-    }
-
-    public int getHighwayNumber()
-    {
-        return this.highwayNum;
-    }
-
-    public DIRECTION getDirection()
-    {
-        return this.direction;
     }
 
@@ -76,5 +68,5 @@
         build.append(Integer.toString(this.drop));
         build.append(" ");
-        build.append(Integer.toString(this.highwayNum));
+        build.append(Integer.toString(this.routeNumber));
         build.append(" ");
         build.append(this.direction.getLetter());
@@ -91,9 +83,4 @@
         }
         return build.toString();
-    }
-
-    public double getPostmile()
-    {
-        return postmile;
     }
 
@@ -117,5 +104,5 @@
 
         // get difference of values
-        double otherStationPostmile = ((Station) otherStation).getPostmile();
+        double otherStationPostmile = ((Station) otherStation).postmile;
         double val = this.postmile - otherStationPostmile;
 
@@ -134,4 +121,49 @@
     }
 
+    public void updateByDirection(DIRECTION direction, DOTCOLOR dotColor) {
+        if(direction.equals(this.direction))
+        {
+            updateML(dotColor);
+        }
+        else
+        {
+            updateOPP(dotColor);
+        }
+    }
+    
+    private void updateML(DOTCOLOR dotcolor)
+    {
+        outputUpdateMessage(dotcolor, "ML");
+        
+        for(LoopDetector loop : loops)
+        {
+            if(loop.loopLocation.startsWith("ML"))
+            {
+                // UPDATE LOOP WITH VALUES
+            }
+        }
+    }
+    
+    private void updateOPP(DOTCOLOR dotcolor)
+    {
+        outputUpdateMessage(dotcolor, "OPP");
+        for(LoopDetector loop : loops)
+        {
+            if(loop.loopLocation.startsWith("OP"))
+            {
+                // UPDATE LOOP WITH VALUES
+            }
+        }
+    }
+    
+    private void outputUpdateMessage(DOTCOLOR dotcolor, String OPP_ML)
+    {
+        System.out.printf("Updating route %-3.3s %-5.5s %-3.3s lanes\t %-12.12s "
+                + "at postmile %-6.6s to %-7.7s\n", 
+                Integer.toString(this.routeNumber), this.direction.name(), 
+                OPP_ML, this.location, Double.toString(this.postmile), 
+                dotcolor.name());
+    }
+    
     private static enum XML_TAGS
     {
@@ -189,5 +221,5 @@
 
         Element freewayElement = theDoc.createElement(XML_TAGS.FREEWAY.tag);
-        freewayElement.appendChild(theDoc.createTextNode(String.valueOf(this.highwayNum)));
+        freewayElement.appendChild(theDoc.createTextNode(String.valueOf(this.routeNumber)));
         stationElement.appendChild(freewayElement);
 
Index: trunk/src/atmsdriver/model/FEPLine.java
===================================================================
--- trunk/src/atmsdriver/model/FEPLine.java	(revision 88)
+++ trunk/src/atmsdriver/model/FEPLine.java	(revision 103)
@@ -4,6 +4,4 @@
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
-
-
 
 /** An FEPLine is a simulated line of communication from the FEP to 
@@ -18,11 +16,14 @@
 public class FEPLine {
     /* Static FEPLine meta data */
-    final private int lineNum;
-    final private List<Station> stations;
+    final public int lineNum;
+    final public List<Station> stations;
     final private int count;
-    // NOT SURE IF NEXT IS FINAL
+    
     final private int schedule;
     final private int lineInfo;
     final private long systemKey;
+    
+    // THESE WILL NEED TO BE UPDATED MAYBE, NOT SURE, NOT A PRIORITY. SEE METHOD
+    // UPDATESEQUENCES()
     private long globalSeq;
     private long scheduleSeq;
@@ -40,14 +41,4 @@
         this.globalSeq = globalSeq;
         this.scheduleSeq = scheduleSeq;
-    }
-    
-    public int getLineNumber()
-    {
-        return this.lineNum;
-    }
-    
-    public List<Station> getStations()
-    {
-        return this.stations;
     }
     
Index: trunk/src/atmsdriver/model/Highways.java
===================================================================
--- trunk/src/atmsdriver/model/Highways.java	(revision 101)
+++ trunk/src/atmsdriver/model/Highways.java	(revision 103)
@@ -1,8 +1,6 @@
 package atmsdriver.model;
 
-import atmsdriver.NetworkLoader;
-import atmsdriver.model.Station.DIRECTION;
+import atmsdriver.FEPLineLoader;
 import java.io.File;
-import java.io.FileNotFoundException;
 import java.io.FileWriter;
 import java.io.IOException;
@@ -13,12 +11,8 @@
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Enumeration;
 import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.List;
 import java.util.Map;
 import java.util.Observable;
 import java.util.Observer;
-import java.util.Scanner;
 import java.util.Set;
 import java.util.logging.Level;
@@ -34,17 +28,29 @@
 import org.w3c.dom.Element;
 
-/**
+/** The Highways class aggregates all Highway instances within a geographic
+ *  region, and all of the FEPLines within an electronic detector 
+ *  network, in the same geographic region. An instance of Highways.java 
+ *  comprises the underlying model for the ATMSDriver application.
+ * 
+ *  Highways uses method writeToFEP() to communicate with the FEP Simulator. 
+ *  It creates a socket client which sends the FEP Simulator a highways status
+ *  message over the socket. This message is in the XML format required by the 
+ *  FEP Simulator, which is provided by the resident toXML() method.
+ * 
+ *  Currently, there is no driving logic within the highways class. It is only
+ *  done through an instance of the ConsoleDriver.java class. Eventually, it
+ *  will receive incident data (from exchange.xml or better yet, directly from 
+ *  the TMCSimulator itself) and drive the highways using resident logic.
  *
  * @author John A. Torres
  */
-public class Highways implements Observer {
+public class Highways {
 
     final private ArrayList<FEPLine> lines;
     final private String FEPHostName;
     final private int FEPPortNum;
-    final private ArrayList<Highway> highways;
-    private Map<Integer, List<Station>> HiwayMap = new HashMap<Integer, List<Station>>();
     
-    // NEED FINISH final private ArrayList<Highway> highways;
+    final public ArrayList<Highway> highways;
+    
     public Highways(String ldsFileName, String loopsFileName,
             String highwayMetaFileName, String FEPHostName, int FEPPortNum) {
@@ -54,5 +60,5 @@
          */
 
-        NetworkLoader ldr = new NetworkLoader(new File(ldsFileName), new File(loopsFileName));
+        FEPLineLoader ldr = new FEPLineLoader(new File(ldsFileName), new File(loopsFileName));
         this.lines = (ArrayList<FEPLine>) ldr.getFEPLines();
         this.FEPHostName = FEPHostName;
@@ -61,10 +67,4 @@
         //writeHighwaysMeta("hard.txt");
     }
-
-    public ArrayList<Highway> getHighways()
-    {
-        return this.highways;
-    }
-    
     
     private ArrayList<Highway> loadHighways() {
@@ -72,46 +72,41 @@
         // The list of highways to return
         ArrayList<Highway> highways = new ArrayList<Highway>();
-        Hashtable<Hashtable<Integer, DIRECTION>, ArrayList<Station>>
-                highwayTable = new Hashtable<>();
+        
+        Map<Integer, ArrayList<Station>>
+                highwayMap = new HashMap<>();
         
         for (FEPLine line : lines)
         {
-            ArrayList<Station> lineStations = (ArrayList<Station>) line.getStations();
+            ArrayList<Station> lineStations = (ArrayList<Station>) line.stations;
             for(Station station : lineStations)
             {
-                Integer hwyNum = station.getHighwayNumber();
-                DIRECTION dir = station.getDirection();
-                Hashtable<Integer, DIRECTION> check = new Hashtable<>();
-                check.put(hwyNum, dir);
-                if(highwayTable.get(check) == null)
+                Integer hwyNum = station.routeNumber;
+
+                if(!highwayMap.containsKey(hwyNum))
                 {
                     ArrayList<Station> stnList = new ArrayList<>();
                     stnList.add(station);
-                    Hashtable<Hashtable<Integer, DIRECTION>, ArrayList<Station>>
-                            newEntry = new Hashtable();
-                    newEntry.put(check, stnList);
-                    highwayTable.putAll(newEntry);
+                    highwayMap.put(hwyNum, stnList);
                 }
                 else
                 {
-                    highwayTable.get(check).add(station);
+                    highwayMap.get(hwyNum).add(station);
                 }
             }
         }
         
-        Set<Hashtable<Integer, DIRECTION>> hwyKeys = highwayTable.keySet();
-        for(Hashtable<Integer, DIRECTION> hwyKey : hwyKeys)
+        Set<Integer> hwyKeys = highwayMap.keySet();
+        for(Integer hwyKey : hwyKeys)
         {
-            Enumeration<Integer> hwyNumEnum = hwyKey.keys();
-            Integer hwyNum = hwyNumEnum.nextElement();
-            ArrayList<Station> hwyStations = highwayTable.get(hwyKey);
-            DIRECTION hwyDir = hwyKey.get(hwyNum);
-            Collections.sort(highwayTable.get(hwyKey));
-            System.out.println("Adding highway: " + hwyNum + " " + hwyDir.toString().charAt(0));
-            highways.add(new Highway(hwyNum, 
+            ArrayList<Station> hwyStations = highwayMap.get(hwyKey);
+            Collections.sort(hwyStations);
+            System.out.println("Loaded highway " + hwyKey + "...");
+            highways.add(new Highway(hwyKey, 
                     hwyStations));
         }
+        System.out.println("");
         return highways;
     }
+    
     /*
      private ArrayList<FEPLine> loadLines(String highwayMetaFileName) {
@@ -215,6 +210,4 @@
 
     public void writeToFEP() {
-                    System.out.println(this.toXML().toCharArray().length);
-
         try {
             Socket sock = new Socket(FEPHostName, FEPPortNum);
@@ -293,7 +286,15 @@
     }
 
-    @Override
-    public void update(Observable o, Object arg) {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    public Highway getHighwayByRouteNumber(Integer routeNum) {
+        Highway returnHwy = null;
+        for(Highway hwy : highways)
+        {
+            if(hwy.routeNumber.equals(routeNum))
+            {
+                returnHwy = hwy;
+                break;
+            }
+        }
+        return returnHwy;
     }
 
Index: trunk/src/atmsdriver/model/LoopDetector.java
===================================================================
--- trunk/src/atmsdriver/model/LoopDetector.java	(revision 87)
+++ trunk/src/atmsdriver/model/LoopDetector.java	(revision 103)
@@ -17,7 +17,7 @@
 {
     /* static data */
-    final private int loopID;
-    final private String loopLocation;
-    final private int laneNum;
+    final public int loopID;
+    final public String loopLocation;
+    final public int laneNum;
     
     /* dynamic data */
