diff --git a/MV3302ClassCode/src/mv3302/TransferLineComponent.java b/MV3302ClassCode/src/mv3302/TransferLineComponent.java
index b46c06603364a66f34598f617d6869382f8daa6b..8086aa8b4d265436e46e1dc0777fb12032f93920 100644
--- a/MV3302ClassCode/src/mv3302/TransferLineComponent.java
+++ b/MV3302ClassCode/src/mv3302/TransferLineComponent.java
@@ -153,7 +153,6 @@ public class TransferLineComponent extends SimEntityBase {
         fireIndexedPropertyChange(station, "delayInQueue", oldDelayInQueue[station], delayInQueue[station]);
         part.incrementDelayInQueue(delayInQueue[station]);
 
-        
         waitDelay("EndProcessing", getProcessingTimeGenerator()[station].generate(), part, station);
     }
 
@@ -166,7 +165,7 @@ public class TransferLineComponent extends SimEntityBase {
      */
     public void doEndProcessing(Part part, int station) {
         int[] oldNumberAvailableMachines = getNumberAvailableMachines().clone();
-        getNumberAvailableMachines()[station]++;
+        numberAvailableMachines[station]++;
         fireIndexedPropertyChange(station, "numberAvailableMachines", oldNumberAvailableMachines[station], getNumberAvailableMachines()[station]);
         double[] oldTimeAtStation = getTimeAtStation().clone();
         timeAtStation[station] = part.getElapsedTime();
@@ -181,6 +180,7 @@ public class TransferLineComponent extends SimEntityBase {
             waitDelay("StartProcessing", 0.0, station);
         }
     }
+
     /**
      * doPartComplete brings in argument part and assigns the value of
      * totalTimeInSystem to the parts getAge() value. It also assigns the
@@ -188,9 +188,14 @@ public class TransferLineComponent extends SimEntityBase {
      * number of completed parts by one.
      */
     public void doPartComplete(Part part) {
+        double oldTotalTimeInSystem = totalTimeInSystem;
         totalTimeInSystem = part.getAge();
+        firePropertyChange("totalTimeInSystem", oldTotalTimeInSystem, getTotalTimeInSystem());
+        double oldTotalDelayInQueue = totalDelayInQueue;
         totalDelayInQueue = part.getTotalDelayInQueue();
+        firePropertyChange("totalDelayInQueue", oldTotalDelayInQueue, getTotalDelayInQueue());
     }
+
     /**
      * @return the totalNumberMachines
      */
diff --git a/MV3302ClassCode/src/mv3302/run/RunTransferLineComponent.java b/MV3302ClassCode/src/mv3302/run/RunTransferLineComponent.java
index dbd08447ed8a969f0ff07e55c47a1c4160b68a23..da91a5c3390777c75f720fd766e0962f0fdcea31 100644
--- a/MV3302ClassCode/src/mv3302/run/RunTransferLineComponent.java
+++ b/MV3302ClassCode/src/mv3302/run/RunTransferLineComponent.java
@@ -11,6 +11,7 @@ import simkit.random.RandomVariate;
 import simkit.random.RandomVariateFactory;
 import simkit.stat.MultipleCollectionSizeTimeVarying;
 import simkit.stat.MultipleSimpleStatsTally;
+import simkit.stat.SimpleStatsTally;
 import simkit.util.SimplePropertyDumper;
 
 /**
@@ -49,8 +50,8 @@ public class RunTransferLineComponent {
                 = new MultipleCollectionSizeTimeVarying("queue");
         transferLineComponent.addPropertyChangeListener("queue", numberInQueueStat);
 
-        MultipleCollectionSizeTimeVarying numberAvailableMachinesStat
-                = new MultipleCollectionSizeTimeVarying("numberAvailableMachines");
+        MultipleSimpleStatsTally numberAvailableMachinesStat
+                = new MultipleSimpleStatsTally("numberAvailableMachines");
         transferLineComponent.addPropertyChangeListener("numberAvailableMachines", numberAvailableMachinesStat);
 
 //        Tally statistics are computed in the same way by "listening" 
@@ -64,26 +65,35 @@ public class RunTransferLineComponent {
         transferLineComponent.addPropertyChangeListener("delayInQueue",
                 delayInQueueStat);
 
+        SimpleStatsTally totalTimeInSystemStat = new SimpleStatsTally("totalTimeInSystem");
+        transferLineComponent.addPropertyChangeListener(totalTimeInSystemStat);
+
+        SimpleStatsTally totalDelayInQueueStat = new SimpleStatsTally("totalDelayInQueue");
+        transferLineComponent.addPropertyChangeListener(totalDelayInQueueStat);
+
 //        arrivalProcess.addPropertyChangeListener(simplePropertyDumper);
 //        transferLineComponent.addPropertyChangeListener(simplePropertyDumper);
 //        Was "true" when debugging model
         Schedule.setVerbose(false);
 
 //        Run for 500,000 time units        
-        double stopTime = 500.0;
+        double stopTime = 500000.0;
         Schedule.stopAtTime(stopTime);
 
 //      Initialized and Run
         Schedule.reset();
 //Start Running of Simulation
-        Schedule.startSimulation(); //Commented out because I couldn't get the code to run past the doArrival() method.
+        Schedule.startSimulation();
         System.out.printf("%nSimulation ended at time %,.2f%n%n", Schedule.getSimTime());
 
         System.out.printf("Number arrivals: %5s%n", arrivalProcess.getNumberArrivals());
-        System.out.printf("Number Completed: %4s%n%n", timeAtStationStat.getCount());
+        System.out.printf("Number Completed: %4s%n%n", totalTimeInSystemStat.getCount());
 
         System.out.printf("%15s%15s%15s%15s%15s%n", "", "Avg", "Avg #", "Avg Delay", "Avg Time");
         System.out.printf("%15s%15s%15s%15s%15s%n", "station", "util", "in Queue", "in Queue", "at Station");
+        double avgNumberInSystem = numberInQueueStat.getMean() + 11
+                - numberAvailableMachinesStat.getMean();
+        double arrivalRate = arrivalProcess.getNumberArrivals() / Schedule.getSimTime();
         for (int i = 0; i < totalNumberMachines.length; i++) {
             double utilization = 1.0 - numberAvailableMachinesStat.getMean(i) / transferLineComponent.getTotalNumberMachines(i);
             double avgNumberInQueue = numberInQueueStat.getMean(i);
@@ -97,14 +107,16 @@ public class RunTransferLineComponent {
         System.out.printf("%15s%15s%15s%n", "", "Avg Delay", "Avg Time");
         System.out.printf("%15s%15s%15s%n", "station", "in Queue", "at Station");
         for (int i = 0; i < totalNumberMachines.length; i++) {
+            double avgNumberInQueue = numberInQueueStat.getMean(i);
             double avgDelayInQueue = delayInQueueStat.getMean(i);
-            double avgTimeAtStation = avgDelayInQueue + timeAtStationStat.getMean() / transferLineComponent.getNumberComplete();
+            double avgTimeAtStation = avgNumberInQueue / arrivalRate;
             System.out.printf("%15s%15.4f%15.4f%n", i, avgDelayInQueue, avgTimeAtStation);
         }
         System.out.println();
-        System.out.printf("Avg Time in System: %.4f (Using Little: %.4f)%n", timeAtStationStat.getMean() + delayInQueueStat.getMean(),
-                timeAtStationStat.getMean() + delayInQueueStat.getMean() - transferLineComponent.getTotalTimeInSystem());
-        System.out.printf("Avg total delay in queue: %.4f (Using Little: %.4f)%n", delayInQueueStat.getMean(),
-                delayInQueueStat.getMean() - transferLineComponent.getTotalTimeInSystem() * (1.0 - numberAvailableMachinesStat.getMean() / totalNumberMachines.length));
+
+        System.out.printf("Avg Time in System: %.4f (Using Little: %.4f)%n", totalTimeInSystemStat.getMean() + totalDelayInQueueStat.getMean(),
+                avgNumberInSystem / arrivalRate);
+        System.out.printf("Avg total delay in queue: %.4f (Using Little: %.4f)%n", totalDelayInQueueStat.getMean(),
+                totalDelayInQueueStat.getMean() - transferLineComponent.getTotalTimeInSystem() * ((1.0 - numberAvailableMachinesStat.getMean()) / totalNumberMachines.length));
     }
 }