diff --git a/bikeshed/src/com/google/gwt/cells/client/FieldUpdater.java b/bikeshed/src/com/google/gwt/cells/client/FieldUpdater.java
new file mode 100644
index 0000000..84d5a28
--- /dev/null
+++ b/bikeshed/src/com/google/gwt/cells/client/FieldUpdater.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2010 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.cells.client;
+
+/**
+ * A {@link FieldUpdater} may be added to a Column to update a particular field
+ * of a data item.
+ * 
+ * @param <T> the data type that will be modified
+ * @param <C> the data type of the modified field
+ */
+public interface FieldUpdater<T, C> {
+  
+  /**
+   * Announces a new value for a field within a base object.
+   * 
+   * @param object the base object to be updated
+   * @param value the new value of the field being updated.
+   */
+  void update(T object, C value);
+}
diff --git a/bikeshed/src/com/google/gwt/cells/client/ValueUpdater.java b/bikeshed/src/com/google/gwt/cells/client/ValueUpdater.java
new file mode 100644
index 0000000..27c6f51
--- /dev/null
+++ b/bikeshed/src/com/google/gwt/cells/client/ValueUpdater.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2010 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.cells.client;
+
+/**
+ * A {@link ValueUpdater} may be added to a Cell to provide updated data.
+ * 
+ * @param <C> the data type of the cell
+ */
+public interface ValueUpdater<C> {
+  
+  /**
+   * Announces a new value.
+   * 
+   * @param value the updated value.
+   */
+  void update(C value);
+}
diff --git a/bikeshed/src/com/google/gwt/sample/tree/Tree.gwt.xml b/bikeshed/src/com/google/gwt/sample/tree/Tree.gwt.xml
new file mode 100644
index 0000000..5a35cf1
--- /dev/null
+++ b/bikeshed/src/com/google/gwt/sample/tree/Tree.gwt.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 0.0.999//EN" "http://google-web-toolkit.googlecode.com/svn/tags/0.0.999/distro-source/core/src/gwt-module.dtd">
+<module rename-to='tree'>
+  <!-- Inherit the core Web Toolkit stuff.                        -->
+  <inherits name='com.google.gwt.user.User'/>
+  <inherits name='com.google.gwt.list.List'/>
+
+  <!-- Inherit the default GWT style sheet.  You can change       -->
+  <!-- the theme of your GWT application by uncommenting          -->
+  <!-- any one of the following lines.                            -->
+  <inherits name='com.google.gwt.user.theme.standard.Standard'/>
+  <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
+  <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/>     -->
+
+  <!-- Other module inherits                                      -->
+
+  <!-- Specify the app entry point class.                         -->
+  <entry-point class='com.google.gwt.sample.tree.client.Tree'/>
+
+  <!-- Specify the paths for translatable code                    -->
+  <source path='client'/>
+  <source path='shared'/>
+
+</module>
diff --git a/bikeshed/war/Stocks.css b/bikeshed/war/Stocks.css
new file mode 100644
index 0000000..7aca7ac
--- /dev/null
+++ b/bikeshed/war/Stocks.css
@@ -0,0 +1,34 @@
+/** Add css rules here for your application. */
+
+
+/** Example rules used by the template application (remove for your app) */
+h1 {
+  font-size: 2em;
+  font-weight: bold;
+  color: #777777;
+  margin: 40px 0px 70px;
+  text-align: center;
+}
+
+.sendButton {
+  display: block;
+  font-size: 16pt;
+}
+
+/** Most GWT widgets already have a style name defined */
+.gwt-DialogBox {
+  width: 400px;
+}
+
+.dialogVPanel {
+  margin: 5px;
+}
+
+.serverResponseLabelError {
+  color: red;
+}
+
+/** Set ids using widget.getElement().setId("idOfElement") */
+#closeButton {
+  margin: 15px 6px 6px;
+}
diff --git a/bikeshed/war/Stocks.html b/bikeshed/war/Stocks.html
new file mode 100644
index 0000000..2b92c92
--- /dev/null
+++ b/bikeshed/war/Stocks.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html>
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
+    <link type="text/css" rel="stylesheet" href="Stocks.css">
+    <title>Data Backed Widgets Sample</title>
+    <script type="text/javascript" language="javascript" src="stocks/stocks.nocache.js"></script>
+  </head>
+
+  <body>
+    <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
+    <noscript>
+      <div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">
+        Your web browser must have JavaScript enabled
+        in order for this application to display correctly.
+      </div>
+    </noscript>
+
+    <h1>Data Backed Widgets Sample</h1>
+    <table align="center">
+      <tr>
+        <td colspan="2" style="font-weight:bold;">Enter a search query:</td>        
+      </tr>
+      <tr>
+        <td id="queryFieldContainer"></td>
+      </tr>
+      <tr>
+        <td colspan="2" style="color:red;" id="errorLabelContainer"></td>
+      </tr>
+    </table>
+  </body>
+</html>
diff --git a/bikeshed/war/Tree.css b/bikeshed/war/Tree.css
new file mode 100644
index 0000000..7aca7ac
--- /dev/null
+++ b/bikeshed/war/Tree.css
@@ -0,0 +1,34 @@
+/** Add css rules here for your application. */
+
+
+/** Example rules used by the template application (remove for your app) */
+h1 {
+  font-size: 2em;
+  font-weight: bold;
+  color: #777777;
+  margin: 40px 0px 70px;
+  text-align: center;
+}
+
+.sendButton {
+  display: block;
+  font-size: 16pt;
+}
+
+/** Most GWT widgets already have a style name defined */
+.gwt-DialogBox {
+  width: 400px;
+}
+
+.dialogVPanel {
+  margin: 5px;
+}
+
+.serverResponseLabelError {
+  color: red;
+}
+
+/** Set ids using widget.getElement().setId("idOfElement") */
+#closeButton {
+  margin: 15px 6px 6px;
+}
diff --git a/bikeshed/war/Tree.html b/bikeshed/war/Tree.html
new file mode 100644
index 0000000..c8c2ce8
--- /dev/null
+++ b/bikeshed/war/Tree.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<html>
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
+    <link type="text/css" rel="stylesheet" href="Tree.css">
+    <title>Data Backed Widgets Sample</title>
+    <script type="text/javascript" language="javascript" src="tree/tree.nocache.js"></script>
+  </head>
+
+  <body>
+    <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
+    <noscript>
+      <div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">
+        Your web browser must have JavaScript enabled
+        in order for this application to display correctly.
+      </div>
+    </noscript>
+
+    <h1>Tree Sample</h1>
+  </body>
+</html>
