Index: trunk/src/tmcsim/application.properties
===================================================================
--- trunk/src/tmcsim/application.properties	(revision 471)
+++ trunk/src/tmcsim/application.properties	(revision 475)
@@ -1,5 +1,5 @@
-#Mon, 29 Jul 2019 14:47:09 -0700
+#Wed, 21 Aug 2019 15:21:51 -0700
 
-Application.revision=470
+Application.revision=473
 
-Application.buildnumber=177
+Application.buildnumber=196
Index: trunk/src/tmcsim/client/cadclientgui/screens/UnitStatus.java
===================================================================
--- trunk/src/tmcsim/client/cadclientgui/screens/UnitStatus.java	(revision 458)
+++ trunk/src/tmcsim/client/cadclientgui/screens/UnitStatus.java	(revision 475)
@@ -165,10 +165,13 @@
                 }
 
+                // Set the cell colors depending on the unit's status
                 int unitNumColumn = 2;
                 try
                 {
-                    switch (ScreenManager.theCoordinator
-                            .getCadDataUnitStatus((String) unitStatusTable
-                            .getValueAt(row, unitNumColumn)))
+                    String unitNum = (String) unitStatusTable.getValueAt(row, unitNumColumn);
+                    
+                    UnitStatusEnums status = ScreenManager.theCoordinator
+                            .getCadDataUnitStatus(unitNum);
+                    switch (status)
                     {
                         case Assignable:
@@ -1088,5 +1091,5 @@
                     unitStatusTable.getSelectionModel().setSelectionInterval(index, index);
                 }});
-
+            // Perhaps these aren't needed since changing the model should cause auto repaint.
             revalidate();
             repaint();
Index: trunk/src/tmcsim/client/cadclientgui/screens/AssignedIncidents.java
===================================================================
--- trunk/src/tmcsim/client/cadclientgui/screens/AssignedIncidents.java	(revision 445)
+++ trunk/src/tmcsim/client/cadclientgui/screens/AssignedIncidents.java	(revision 475)
@@ -122,9 +122,9 @@
                     return new JLabel("?");
                 }
-
+                // Assign a color to the auxiliary units column, labeled "Unit/s"    
                 comp.setForeground(Color.BLACK);
                 comp.setBackground(Color.CYAN);
                 if (assignedIncidentsTable.getModel().getColumnName(column).equals("Unit/s"))
-                {//4 is the column for "Unit/s"
+                {
                     //System.out.println("Diagnostic: in AssignedIncidents.prepareRenderer()"); //Commenting this line breaks the client
                     comp.setBackground(Color.BLACK);
@@ -134,6 +134,7 @@
                         // get the unit name from the table   JD
                         String unitname = (String) assignedIncidentsTable.getValueAt(row, primaryColumn);
-                        // Validate that unitname isn't blank
-                        if (!unitname.equals(""))
+                        // Validate that unitname isn't blank ... I think the reason this happens intermittently
+                        // is a race condition in refreshTable() that resulted in blank unitname.
+                        if (unitname != null && unitname.length() > 0)
                         {
                             // Fetch the unit's current status from server
@@ -155,7 +156,11 @@
                             }
                         }
+                        else
+                        {
+                            System.out.println("Blank unitname found in AssignedIncidents prepareRenderer.");
+                        }
                     } catch (RemoteException e)
                     {
-                        e.printStackTrace();
+                        System.out.println("RemoteException in AssignedIncidents prepareRenderer: "+ e.getMessage());
                     }
                 }
@@ -592,25 +597,23 @@
     public void refreshTable()
     {
-
+        //only update info if resize not in progress
         if (assignedIncidentsTable.getTableHeader().getResizingColumn() == null)
-        {//only update info if resize not in progress
+        {
+            // Note the odd comment in legacy code in prepare renderer:
+            // "//Commenting this line breaks the client"
+            // Maybe because the sout accidentally solves a concurrency problem, slowing down
+            // the prepare Renderer until the RMI call can complete.
+            int index = assignedIncidentsTable.getSelectedRow();
+            int[] columnWidths = new int[20];
+            List<? extends SortKey> keys = assignedIncidentsTable.getRowSorter().getSortKeys();
+            for (int i = 0; i < assignedIncidentsTable.getColumnCount(); i++)
+            {
+                columnWidths[i] = assignedIncidentsTable.getColumnModel().getColumn(i).getWidth();
+            }
+
+            // Update the model here
             try
             {
-                int index = assignedIncidentsTable.getSelectedRow();
-                int[] columnWidths = new int[20];
-                List<? extends SortKey> keys = assignedIncidentsTable.getRowSorter().getSortKeys();
-                for (int i = 0; i < assignedIncidentsTable.getColumnCount(); i++)
-                {
-                    columnWidths[i] = assignedIncidentsTable.getColumnModel().getColumn(i).getWidth();
-                }
-
                 assignedIncidentsTable.setModel(ScreenManager.theCoordinator.getCadDataTable(CADDataEnums.TABLE.ASSIGNED_INCIDENTS));
-
-                for (int i = 0; i < assignedIncidentsTable.getColumnCount(); i++)
-                {
-                    assignedIncidentsTable.getColumnModel().getColumn(i).setPreferredWidth(columnWidths[i]);
-                }
-                assignedIncidentsTable.getRowSorter().setSortKeys(keys);
-                assignedIncidentsTable.getSelectionModel().setSelectionInterval(index, index);
             } catch (RemoteException ex)
             {
@@ -618,4 +621,12 @@
                 System.out.println(ex.getMessage());
             }
+
+            for (int i = 0; i < assignedIncidentsTable.getColumnCount(); i++)
+            {
+                assignedIncidentsTable.getColumnModel().getColumn(i).setPreferredWidth(columnWidths[i]);
+            }
+            assignedIncidentsTable.getRowSorter().setSortKeys(keys);
+            assignedIncidentsTable.getSelectionModel().setSelectionInterval(index, index);
+            
             revalidate();
             repaint();
Index: trunk/src/tmcsim/client/cadclientgui/screens/CADMenu.java
===================================================================
--- trunk/src/tmcsim/client/cadclientgui/screens/CADMenu.java	(revision 59)
+++ trunk/src/tmcsim/client/cadclientgui/screens/CADMenu.java	(revision 475)
@@ -28,4 +28,5 @@
 import javax.swing.JFrame;
 import javax.swing.JLabel;
+import tmcsim.common.RevisionNumber;
 
 /**
@@ -80,5 +81,5 @@
 
         getContentPane().add(mainPanel);
-        setTitle("Inform CAD ");
+        setTitle("Inform CAD  ("+RevisionNumber.getAppVersion()+")");
         // Load an image for the task bar icon --JD
         // First try to get the image from a local file
Index: trunk/src/tmcsim/client/cadclientgui/data/CADData.java
===================================================================
--- trunk/src/tmcsim/client/cadclientgui/data/CADData.java	(revision 310)
+++ trunk/src/tmcsim/client/cadclientgui/data/CADData.java	(revision 475)
@@ -231,21 +231,26 @@
 
     /**
-     * Sends all the objects for UnitStatus
+     * Accessor to the Unit Status table model 
      *
      * @return DefaultTableModel for UnitStatus
      */
+    synchronized
     public DefaultTableModel tableForUnitStatus()
     {
-        toUnitTableVector.clear();
-        for (int i = 0; i < units.size(); i++)
-        {
-            toUnitTableVector.add(units.get(i).toVector());
+        Vector<Object> toUnitTableVector = new Vector<Object>();
+
+        // build a new unit table 
+        for (Unit unit: units)
+        {
+            toUnitTableVector.add(unit.toVector());
         }
         // Exception occurred here: http://pastebin.com/fvifM5i8
+        // Probably a distributed object concurrency problem.
+        // Assign the unit status table from the newly created vector
         unitStatusTableModel
                 .setDataVector(toUnitTableVector, unitStatusHeaders);
+        // return a reference to the updated table
         return unitStatusTableModel;
     }
-
     /**
      * Sends all the objects for AssignedIncidents
Index: trunk/src/tmcsim/cadsimulator/Coordinator.java
===================================================================
--- trunk/src/tmcsim/cadsimulator/Coordinator.java	(revision 471)
+++ trunk/src/tmcsim/cadsimulator/Coordinator.java	(revision 475)
@@ -144,6 +144,6 @@
      * Constructor. Call UnicastRemoteObject constructor and call
      * initializeSimulation.
-     * @param simTimeFilename name of the file where the simulation clock time is written
-     * @param commentLogname name of file where CADcommentLog is written
+     * @param simTimeFilename path to the file where the simulation clock time is written
+     * @param commentLogname path to the file where CADcommentLog is written
      * @throws RemoteException
      */
