diff --git a/bikeshed/src/com/google/gwt/sample/expenses/gwt/request/EmployeeRecord.java b/bikeshed/src/com/google/gwt/sample/expenses/gwt/request/EmployeeRecord.java
index a5a8ee3..dc478e7 100644
--- a/bikeshed/src/com/google/gwt/sample/expenses/gwt/request/EmployeeRecord.java
+++ b/bikeshed/src/com/google/gwt/sample/expenses/gwt/request/EmployeeRecord.java
@@ -25,11 +25,10 @@
  * IRL this class will be generated by a JPA-savvy tool run before compilation.
  */
 public interface EmployeeRecord extends Record {
-  public static final Property<String> userName = new Property<String>(
-      "userName", String.class);
-  public static final Property<String> displayName = new Property<String>(
-      "displayName", String.class);
-  public static final Property<EmployeeRecord> supervisor = new Property<EmployeeRecord>(
+  Property<String> userName = new Property<String>("userName", String.class);
+  Property<String> displayName = new Property<String>("displayName",
+      String.class);
+  Property<EmployeeRecord> supervisor = new Property<EmployeeRecord>(
       "supervisor", EmployeeRecord.class);
 
   String getDisplayName();
diff --git a/bikeshed/src/com/google/gwt/sample/expenses/gwt/request/ReportRecord.java b/bikeshed/src/com/google/gwt/sample/expenses/gwt/request/ReportRecord.java
index 1a1644e..2829fb9 100644
--- a/bikeshed/src/com/google/gwt/sample/expenses/gwt/request/ReportRecord.java
+++ b/bikeshed/src/com/google/gwt/sample/expenses/gwt/request/ReportRecord.java
@@ -28,12 +28,10 @@
  */
 public interface ReportRecord extends Record {
 
-  public static final Property<Date> created = new Property<Date>("created",
-      Date.class);
-  public static final Property<String> purpose = new Property<String>(
-      "purpose", String.class);
-  public static final Property<EmployeeRecord> reporter = new Property<EmployeeRecord>(
-      "reporter", EmployeeRecord.class);
+  Property<Date> created = new Property<Date>("created", Date.class);
+  Property<String> purpose = new Property<String>("purpose", String.class);
+  Property<EmployeeRecord> reporter = new Property<EmployeeRecord>("reporter",
+      EmployeeRecord.class);
 
   Date getCreated();
 
diff --git a/bikeshed/src/com/google/gwt/sample/expenses/server/ExpensesDataServlet.java b/bikeshed/src/com/google/gwt/sample/expenses/server/ExpensesDataServlet.java
index 364f363..218c41f 100644
--- a/bikeshed/src/com/google/gwt/sample/expenses/server/ExpensesDataServlet.java
+++ b/bikeshed/src/com/google/gwt/sample/expenses/server/ExpensesDataServlet.java
@@ -96,7 +96,7 @@
       int length = reportArray.length();
       if (length > 0) {
         JSONObject report = reportArray.getJSONObject(0);
-        Report r = Report.findReport(report.getLong(Record.id.getName()));
+        Report r = Report.findReport(report.getString(Record.id.getName()));
         r.setPurpose(report.getString(ReportRecord.purpose.getName()));
         r.persist();
         report.put(Record.version.getName(), r.getVersion());
diff --git a/bikeshed/src/com/google/gwt/sample/expenses/server/domain/Employee.java b/bikeshed/src/com/google/gwt/sample/expenses/server/domain/Employee.java
index 0be04aa..9a5dfc4 100644
--- a/bikeshed/src/com/google/gwt/sample/expenses/server/domain/Employee.java
+++ b/bikeshed/src/com/google/gwt/sample/expenses/server/domain/Employee.java
@@ -60,7 +60,7 @@
     }
   }
 
-  public static Employee findEmployee(Long id) {
+  public static Employee findEmployee(String id) {
     if (id == null) {
       return null;
     }
diff --git a/bikeshed/src/com/google/gwt/sample/expenses/server/domain/Report.java b/bikeshed/src/com/google/gwt/sample/expenses/server/domain/Report.java
index 229b3d5..7027066 100644
--- a/bikeshed/src/com/google/gwt/sample/expenses/server/domain/Report.java
+++ b/bikeshed/src/com/google/gwt/sample/expenses/server/domain/Report.java
@@ -62,7 +62,7 @@
     }
   }
 
-  public static Report findReport(Long id) {
+  public static Report findReport(String id) {
     if (id == null) {
       return null;
     }
diff --git a/bikeshed/src/com/google/gwt/valuestore/client/RecordKey.java b/bikeshed/src/com/google/gwt/valuestore/client/RecordKey.java
index 4d57591..2bde533 100644
--- a/bikeshed/src/com/google/gwt/valuestore/client/RecordKey.java
+++ b/bikeshed/src/com/google/gwt/valuestore/client/RecordKey.java
@@ -19,18 +19,28 @@
 import com.google.gwt.valuestore.shared.impl.RecordJsoImpl;
 import com.google.gwt.valuestore.shared.impl.RecordSchema;
 
+/**
+ * The key used to store {@link com.google.gwt.valuestore.shared.Record Record}s
+ * in {@link com.google.gwt.valuestore.shared.ValueStore ValueStore}.
+ */
 class RecordKey {
   final RecordSchema<?> schema;
   final Object id;
 
   RecordKey(RecordImpl record) {
-    this.schema = record.getSchema();
-    this.id = record.getId();
+    this(record.getId(), record.getSchema());
   }
 
   RecordKey(RecordJsoImpl record) {
-    this.schema = record.getSchema();
-    this.id = record.getId();
+    this(record.getId(), record.getSchema());
+  }
+
+  private RecordKey(Object id, RecordSchema<?> schema) {
+    assert id != null;
+    assert schema != null;
+
+    this.id = id;
+    this.schema = schema;
   }
 
   @Override
