diff --git a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/DayFilterWidget.java b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/DayFilterWidget.java
index a90fdee..7992538 100644
--- a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/DayFilterWidget.java
+++ b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/DayFilterWidget.java
@@ -24,6 +24,10 @@
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
 
+/**
+ * A UI Widget that allows a user to filter the days being displayed in 
+ * the dynamic table.
+ */
 public class DayFilterWidget extends Composite {
 
   private class DayCheckBox extends CheckBox {
diff --git a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/DynaTable.java b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/DynaTable.java
index 1f459e6..5772151 100644
--- a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/DynaTable.java
+++ b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/DynaTable.java
@@ -18,6 +18,10 @@
 import com.google.gwt.core.client.EntryPoint;
 import com.google.gwt.user.client.ui.RootPanel;
 
+/**
+ * The entry point class which performs the initial loading of the DynaTable
+ * application.
+ */
 public class DynaTable implements EntryPoint {
 
   public void onModuleLoad() {
diff --git a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/DynaTableDataProvider.java b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/DynaTableDataProvider.java
index 0c89621..eb9a1aa 100644
--- a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/DynaTableDataProvider.java
+++ b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/DynaTableDataProvider.java
@@ -15,8 +15,16 @@
  */
 package com.google.gwt.sample.dynatable.client;
 
+/**
+ * An interface for providing row-level updates of data, intended here to used
+ * to update a DynaTableWidget.
+ */
 public interface DynaTableDataProvider {
 
+  /**
+   * An interface allow a widget to accept or report failure when a row data
+   * is issued for update.
+   */
   interface RowDataAcceptor {
     void accept(int startRow, String[][] rows);
     void failed(Throwable caught);
diff --git a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/DynaTableWidget.java b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/DynaTableWidget.java
index aa9c29f..0ad3307 100644
--- a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/DynaTableWidget.java
+++ b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/DynaTableWidget.java
@@ -26,6 +26,10 @@
 import com.google.gwt.user.client.ui.HTML;
 import com.google.gwt.user.client.ui.Widget;
 
+/**
+ * A composite Widget that implements the main interface for the dynamic table,
+ * including the data table, status indicators, and paging buttons.
+ */
 public class DynaTableWidget extends Composite {
 
   private class NavBar extends Composite implements ClickListener {
@@ -149,7 +153,7 @@
   private void initTable(String[] columns, String[] columnStyles, int rowCount) {
     // Set up the header row.  It's one greater than the number of visible rows.
     //
-    grid.resize(rowCount+1, columns.length);
+    grid.resize(rowCount + 1, columns.length);
     for (int i = 0, n = columns.length; i < n; i++) {
       grid.setText(0, i, columns[i]);
       if (columnStyles != null) {
diff --git a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/Person.java b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/Person.java
index fde897e..08571a1 100644
--- a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/Person.java
+++ b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/Person.java
@@ -17,6 +17,10 @@
 
 import com.google.gwt.user.client.rpc.IsSerializable;
 
+/**
+ * Hold relevant data for Person. This class is meant to be serialized in
+ * RPC calls.
+ */
 public abstract class Person implements IsSerializable {
 
   public Person() {
diff --git a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/Professor.java b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/Professor.java
index 248e1b9..b1c7933 100644
--- a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/Professor.java
+++ b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/Professor.java
@@ -15,6 +15,10 @@
  */
 package com.google.gwt.sample.dynatable.client;
 
+/**
+ * Holds relevant data for a Professor type Person. This class is intended
+ * to be serialized in RPC calls.
+ */
 public class Professor extends Person {
 
   public Professor() {
diff --git a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/Schedule.java b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/Schedule.java
index b153952..38bab94 100644
--- a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/Schedule.java
+++ b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/Schedule.java
@@ -21,6 +21,10 @@
 import java.util.Iterator;
 import java.util.List;
 
+/**
+ * Hold the relevant data for a Schedule. This class is meant to be serialized
+ * in RPC calls.
+ */
 public class Schedule implements IsSerializable {
 
   public Schedule() {
diff --git a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/SchoolCalendarService.java b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/SchoolCalendarService.java
index bed7a73..7477765 100644
--- a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/SchoolCalendarService.java
+++ b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/SchoolCalendarService.java
@@ -17,6 +17,10 @@
 
 import com.google.gwt.user.client.rpc.RemoteService;
 
+/**
+ * The interface for the RPC server endpoint to get school calendar
+ * information.
+ */
 public interface SchoolCalendarService extends RemoteService {
   
   Person[] getPeople(int startIndex, int maxCount);
diff --git a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/SchoolCalendarServiceAsync.java b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/SchoolCalendarServiceAsync.java
index d3fc7fb..8a00074 100644
--- a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/SchoolCalendarServiceAsync.java
+++ b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/SchoolCalendarServiceAsync.java
@@ -17,6 +17,10 @@
 
 import com.google.gwt.user.client.rpc.AsyncCallback;
 
+/**
+ * The interface for the RPC server endpoint that provides school calendar
+ * information for clients that will be calling aysychronously. 
+ */
 public interface SchoolCalendarServiceAsync {
 
   void getPeople(int startIndex, int maxCount, AsyncCallback callback);
diff --git a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/SchoolCalendarWidget.java b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/SchoolCalendarWidget.java
index ce7b249..c5b4b08 100644
--- a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/SchoolCalendarWidget.java
+++ b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/SchoolCalendarWidget.java
@@ -22,8 +22,16 @@
 import com.google.gwt.user.client.rpc.ServiceDefTarget;
 import com.google.gwt.user.client.ui.Composite;
 
+/**
+ * A Composite widget that abstracts a DynaTableWidget and a data provider
+ * tied to the <@link SchoolCalendarService> RPC endpoint.
+ */
 public class SchoolCalendarWidget extends Composite {
 
+  /**
+   * A data provider that bridges the provides row level updates from the
+   * data available through a <@link SchoolCalendarService>.
+   */
   public class CalendarProvider implements DynaTableDataProvider {
 
     public CalendarProvider() {
@@ -88,7 +96,6 @@
         }
 
       });
-
     }
 
     private void pushResults(RowDataAcceptor acceptor, int startRow,
@@ -110,7 +117,7 @@
     private int lastStartRow = -1;
   }
 
-  private final static boolean USE_STATIC_RPC_ANSWERS = true;
+  private static final boolean USE_STATIC_RPC_ANSWERS = true;
 
   public SchoolCalendarWidget(int visibleRows) {
     String[] columns = new String[]{"Name", "Description", "Schedule"};
diff --git a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/Student.java b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/Student.java
index 57f18d8..994b164 100644
--- a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/Student.java
+++ b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/Student.java
@@ -15,7 +15,10 @@
  */
 package com.google.gwt.sample.dynatable.client;
 
-
+/**
+ * Holds relevant data for a Student type Person. This class is intended
+ * to be serialized in RPC calls.
+ */
 public class Student extends Person {
 
   public Schedule getClassSchedule() {
diff --git a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/TimeSlot.java b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/TimeSlot.java
index 380753a..393abc6 100644
--- a/samples/dynatable/src/com/google/gwt/sample/dynatable/client/TimeSlot.java
+++ b/samples/dynatable/src/com/google/gwt/sample/dynatable/client/TimeSlot.java
@@ -17,9 +17,13 @@
 
 import com.google.gwt.user.client.rpc.IsSerializable;
 
+/**
+ * Hold relevant data for a time slot. This class is intended to be
+ * serialized as part of RPC calls.
+ */
 public class TimeSlot implements IsSerializable, Comparable {
 
-  private final static transient String[] DAYS = new String[]{
+  private static final transient String[] DAYS = new String[]{
     "Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat"};
 
   public TimeSlot() {
