Index: /trunk/src/atmsdriver/NetworkLoader.java
===================================================================
--- /trunk/src/atmsdriver/NetworkLoader.java	(revision 84)
+++ /trunk/src/atmsdriver/NetworkLoader.java	(revision 90)
@@ -228,5 +228,5 @@
         sc.nextInt(); // skip count
         sc.nextInt(); // fwy
-        DIRECTION dir = DIRECTION.getEnum(sc.next()); // direction
+        DIRECTION dir = DIRECTION.toDirection(sc.next()); // direction
         sc.nextDouble();
         
@@ -261,5 +261,5 @@
                 scLine.nextInt(); // skip count
                 int fwy = scLine.nextInt(); // fwy
-                DIRECTION dir = DIRECTION.getEnum(scLine.next()); // direction
+                DIRECTION dir = DIRECTION.toDirection(scLine.next()); // direction
                 double postmile = scLine.nextDouble();
                 String ldsName = getLocation(strLine); /************* DOESNT GRAB WHOLE???? */////
Index: /trunk/src/atmsdriver/model/Station.java
===================================================================
--- /trunk/src/atmsdriver/model/Station.java	(revision 88)
+++ /trunk/src/atmsdriver/model/Station.java	(revision 90)
@@ -25,5 +25,5 @@
     final private String location;
     final private List<LoopDetector> loops;
-    final private int freeway;
+    final private int highwayNum;
     final private double postmile;
     final private DIRECTION direction;
@@ -35,5 +35,5 @@
     /* Constructor */
     public Station(int lineNum, int ldsID, int drop,
-            String location, List<LoopDetector> loops, int fwy,
+            String location, List<LoopDetector> loops, int hwy,
             DIRECTION direction, double postmile) {
         this.lineNum = lineNum;
@@ -44,5 +44,5 @@
         this.postmile = postmile;
         this.direction = direction;
-        this.freeway = fwy;
+        this.highwayNum = hwy;
 
         this.MLTotVol = 0;
@@ -52,5 +52,5 @@
     public int getHighwayNumber()
     {
-        return this.freeway;
+        return this.highwayNum;
     }
     
@@ -73,7 +73,7 @@
         build.append(Integer.toString(this.drop));
         build.append(" ");
-        build.append(Integer.toString(this.freeway));
-        build.append(" ");
-        build.append(this.direction.name);
+        build.append(Integer.toString(this.highwayNum));
+        build.append(" ");
+        build.append(this.direction.getLetter());
         build.append(" ");
         build.append(Double.toString(this.postmile));
@@ -93,6 +93,11 @@
     }
 
+    /** Compare this Station to another by postmile.
+     * Note: This might be better as a Comparator since it checks only one field.
+     */
     @Override
     public int compareTo(Object otherStation) {
+        // check for identity
+        if (this == otherStation) return 0;
         // check that Object is of type Station, if not throw exception
         if (!(otherStation instanceof Station)) {
@@ -163,9 +168,9 @@
 
         Element directionElement = theDoc.createElement(XML_TAGS.DIRECTION.tag);
-        directionElement.appendChild(theDoc.createTextNode(this.direction.name));
+        directionElement.appendChild(theDoc.createTextNode(""+this.direction.getLetter()));
         stationElement.appendChild(directionElement);
 
         Element freewayElement = theDoc.createElement(XML_TAGS.FREEWAY.tag);
-        freewayElement.appendChild(theDoc.createTextNode(String.valueOf(this.freeway)));
+        freewayElement.appendChild(theDoc.createTextNode(String.valueOf(this.highwayNum)));
         stationElement.appendChild(freewayElement);
 
@@ -194,35 +199,33 @@
     public static enum DIRECTION {
 
-        NORTH("N"),
-        SOUTH("S"),
-        EAST("E"),
-        WEST("W");
-
-        String name;
-
-        DIRECTION(String name) {
-            this.name = name;
-        }
-
+        NORTH,
+        SOUTH,
+        EAST,
+        WEST;
+
+        // All the first letters of the values, in order.
+        private static String allLetters = "NSEW";
+
+        /** Return the first letter of this enum.
+         * 
+         * @return String first letter of this enum.
+         */
+        public String getLetter()
+        {
+            return this.toString().substring(0,1);
+        }
+        
         /**
-         * Returns the direction enum, given a string value.
+         * Returns a direction given its first character.
          *
-         * @param name str value for enum
-         * @return enum for given str value
+         * @param letter the first character of a direction
+         * @return direction corresponding to letter
+         * @pre letter must be one of allLetters
          */
-        public static DIRECTION getEnum(String name) {
-            switch (name) {
-                case "S":
-                    return SOUTH;
-                case "N":
-                    return NORTH;
-                case "E":
-                    return EAST;
-                case "W":
-                    return WEST;
-                default:
-                    return null;
-            }
-        }
+        public static DIRECTION toDirection(String letter)
+        {
+            return values()[allLetters.indexOf(letter.charAt(0))];
+        }
+        
     }
 }
Index: /trunk/src/atmsdriver/model/Highways.java
===================================================================
--- /trunk/src/atmsdriver/model/Highways.java	(revision 89)
+++ /trunk/src/atmsdriver/model/Highways.java	(revision 90)
@@ -102,5 +102,5 @@
             DIRECTION hwyDir = hwyKey.get(hwyNum);
             Collections.sort(highwayTable.get(hwyKey));
-            System.out.println("Adding highway: " + hwyNum + " " + hwyDir.name);
+            System.out.println("Adding highway: " + hwyNum + " " + hwyDir.toString().charAt(0));
             highways.add(new Highway(hwyNum, 
                     hwyDir, hwyStations));
