diff --git a/doc/src/gettingstarted.html b/doc/src/gettingstarted.html
new file mode 100644
index 0000000..0400263
--- /dev/null
+++ b/doc/src/gettingstarted.html
@@ -0,0 +1,340 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+
+<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+<title>Google Web Toolkit - Getting Started Guide</title>
+<link href="../css/base.css" rel="stylesheet" type="text/css">
+<link href="./doc.css" rel="stylesheet" type="text/css">
+<link href="../css/print.css" rel="stylesheet" media="print" type="text/css">
+
+<style type="text/css">
+
+#footer .text {
+  padding-top: 5px;
+}
+
+.documentation {
+  margin-left: 0.25in;  
+}
+
+.documentation h1 {
+  margin-left: -0.25in;
+}
+
+.documentation h2 {
+  margin-left: -0.25in;
+  margin-top: 1.5em;
+}
+
+.documentation h3 {
+  margin-left: -0.125in;
+}
+
+.documentation ul.toc {
+  margin: 0;
+  padding: 0;
+  margin-left: 2em;
+}
+
+</style>
+
+    <style type="text/css">
+
+    ol.instructions {
+      margin: 0;
+      padding: 0;
+      margin-left: 2em;
+    }
+
+    .instructions .header {
+      font-weight: bold;
+    }
+
+    .instructions li {
+      margin-bottom: 1em;
+    }
+
+    div.screenshot {
+      text-align: center;
+      margin: 1em;
+    }
+
+    </style>
+  </head>
+  <body>
+    
+<div id="gaia">
+  &nbsp;
+</div>
+
+<div id="header">
+  <div id="logo"><a href="http://code.google.com/"><img src="http://code.google.com/images/code_sm.png" alt="Google"/></a></div>
+  <div id="title">
+      Google Web Toolkit
+  </div>
+  <div id="breadcrumbs">
+    
+      <span class="item"><a href="http://code.google.com">Google Code Home</a></span> &gt;
+      
+<span class="item"><a href="http://code.google.com/webtoolkit">Google Web Toolkit</a></span> &gt;
+<span class="item"><a href="">Getting Started Guide</a></span>
+    
+  </div>
+</div>
+
+<div id="side" dir="ltr">
+  <div id="menu">
+    
+      
+<h4><a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a></h4>
+<ul>
+  <li><a href="http://code.google.com/webtoolkit/download.html">Download GWT</a></li>
+</ul>
+<ul>
+  <li><a href="http://code.google.com/webtoolkit/overview.html">Product Overview</a></li>
+  <li><a href="">Getting Started Guide</a></li>
+  <li><a href="http://code.google.com/webtoolkit/documentation/examples/">Example Projects</a></li>
+</ul>
+<ul>
+  <li><a href="./com.google.gwt.doc.DeveloperGuide.html">Developer Guide</a></li>
+  <li><a href="./gwt.html">Class Reference</a></li>
+  <li><a href="http://code.google.com/p/google-web-toolkit/issues/list">Issue Tracking</a></li>
+  <li><a href="http://groups.google.com/group/Google-Web-Toolkit">Developer Forum</a></li>
+</ul>
+<ul>
+  <li><a href="http://googlewebtoolkit.blogspot.com/">GWT Blog</a></li>
+  <li><a href="http://code.google.com/webtoolkit/faq.html">GWT FAQ</a></li>
+  <li><a href="http://code.google.com/webtoolkit/makinggwtbetter.html">Making GWT Better</a></li>
+</ul>
+<ul>
+  <li><a href="http://code.google.com/webtoolkit/thirdparty.html">Third Party Tools</a></li>
+</ul>
+    
+  </div>
+
+  <div id="search">
+    <form id="searchbox_015986126177484454297:pfmwlvdl42y" action="http://www.google.com/cse">
+      <input type="hidden" name="cx" value="015986126177484454297:pfmwlvdl42y" />
+      <input type="hidden" name="cof" value="FORID:0" />
+	  <div class="header">Search Google Code:</div>
+      <input name="q" type="text" size="20" />
+      <input type="submit" name="sa" value="Search" /><br/>
+    </form>
+    <script type="text/javascript" src="http://google.com/coop/cse/brand?form=searchbox_015986126177484454297:pfmwlvdl42y"></script>
+  </div>
+
+</div>
+
+
+<script type="text/javascript">
+//<![CDATA[
+
+function walk(element, condition, operation) {
+  if (!element) return;
+  if (condition(element)) {
+    operation(element);
+    return;
+  }
+  for (var e = element.firstChild; e != null; e = e.nextSibling) {
+    walk(e, condition, operation);
+  }
+}
+
+function isCurrentLink(e) {
+  return e.tagName == "A" && e.href == window.location.href;
+}
+
+function makeSelected(e) {
+  e.className = "selected";
+}
+
+walk(document.getElementById("breadcrumbs"), isCurrentLink, makeSelected);
+walk(document.getElementById("menu"), isCurrentLink, makeSelected);
+
+//]]>
+</script>
+
+<div id="body">
+
+
+
+<div class="documentation">
+
+<h1>Google Web Toolkit Getting Started Guide</h1>
+
+<h2>Table of Contents</h2>
+
+<ul class="toc">
+  <li><a href="#Install">Installing Google Web Toolkit</a></li>
+  <li><a href="#Sample">Building a Sample Application</a></li>
+  <li><a href="#New">Creating an Application from Scratch (without Eclipse)</a></li>
+  <li><a href="#NewEclipse">Creating an Application from Scratch (with Eclipse)</a></li>
+</ul>
+
+
+<a name="Install"></a>
+<h2>Installing Google Web Toolkit</h2>
+
+<ol class="instructions">
+  <li>
+    <div class="header">Install the Java SDK.</div>
+    <div class="details">If you don't have a recent version of the Java SDK installed, download and install <a href="http://java.sun.com/javase/downloads/" rel="nofollow">Sun Java Standard Edition SDK</a>.</div>
+  </li>
+  <li>
+    <div class="header">Download Google Web Toolkit.</div>
+    <div class="details">Download the <a href="http://code.google.com/webtoolkit/download.html">Google Web Toolkit package</a> for your operating system.</div>
+  </li>
+  <li>
+    <div class="header">Unzip the Google Web Toolkit package.</div>
+    <div class="details">On Windows, extract the files from <code>gwt-windows-@GWT_VERSION@.zip</code> with a program like <a 
+href="http://www.winzip.com/" rel="nofollow">WinZip</a>.  On Mac and Linux, you can 
+unpack the package with a command like <pre class="code">tar xvzf gwt-mac-@GWT_VERSION@.tar.gz</pre></div>
+  </li>
+  <li>
+    <div class="header">Done! Start using Google Web Toolkit.</div>
+    <div class="details">GWT doesn't have an installer application.  All the files you need to run and use GWT are located in the extracted directory. The main application you'll need to use GWT is <code>applicationCreator</code>, which is <a href="#New">described below</a>. It may be easiest to start out by building one of the <a href="#Sample">sample applications</a> shipped with GWT.</div>
+  </li>
+</ol>
+
+
+
+<a name="Sample"></a>
+<h2>Building a Sample Application</h2>
+
+<p>All the sample applications are in the <code>samples/</code> directory in your GWT package. Each sample has a script you can run to start it in <a href="./com.google.gwt.doc.DeveloperGuide.Fundamentals.HostedMode.html">hosted mode</a> and a script you can use to compile it into JavaScript and HTML to run it <a href="com.google.gwt.doc.DeveloperGuide.Fundamentals.WebMode.html">web mode</a>.</p>
+
+<h3>Running in Hosted Mode</h3>
+
+<p>To run the Kitchen Sink sample in <a href="./com.google.gwt.doc.DeveloperGuide.Fundamentals.HostedMode.html">hosted mode</a>, navigate to the <code>samples/KitchenSink/</code> directory and run the <code>KitchenSink-shell</code> script. This will open the GWT browser with the Kitchen Sink application running inside:</p>
+
+<div class="screenshot"><img src="./kitchensink-hosted.jpg" alt="Screenshot"/></div>
+
+<p>Since you're running in <a href="./com.google.gwt.doc.DeveloperGuide.Fundamentals.HostedMode.html">hosted mode</a>, the application is running in the Java Virtual Machine (JVM).  This is typically the mode you'll use to debug your applications.</p>
+
+<h3>Running in Web Mode</h3>
+
+<p>To run the application in <a href="./com.google.gwt.doc.DeveloperGuide.Fundamentals.WebMode.html">web mode</a>, compile the application by running the <code>KitchenSink-compile</code> script. The GWT compiler will generate a number of JavaScript and HTML files from the Kitchen Sink Java source code in the <code>www/</code> subdirectory.  To see the application, open the file <code>www/com.google.gwt.sample.kitchensink.KitchenSink/KitchenSink.html</code> in your favorite web browser.</p>
+
+<div class="screenshot"><img src="./kitchensink-web.jpg" alt="Screenshot"/></div>
+
+<p>Since you've compiled the project, you're now running pure JavaScript and HTML that should work in IE, Firefox, or Safari. If you were to deploy the Kitchen Sink example project in production, you would distribute the files in your <code>www/com.google.com.google.gwt.sample.kitchensink.KitchenSink/</code> directory to your web servers.</p>
+
+<h3>Make a Few Changes</h3>
+
+<p>The source code for Kitchen Sink is in the <code>src/</code> subdirectory. Try closing your browser windows, and open the file 
+<code>src/com/google/gwt/sample/kitchensink/client/Info.java</code> in a text editor.  Line 26 of the file is the first line of the 
+static initialization method for the first tab in the Kitchen Sink application (&quot;Intro&quot;):</p>
+
+<pre class="code">return new SinkInfo(&quot;Intro&quot;, &quot;&lt;h2&gt;Introduction to the Kitchen Sink.&lt;/h2&gt;&quot;) {</pre>
+
+<p>Change the second string from <code>&quot;&lt;h2&gt;Introduction to the Kitchen Sink.&lt;/h2&gt;&quot;</code> to <code>&quot;&lt;h2&gt;Foo bar&lt;/h2&gt;&quot;</code>:</p>
+
+<pre class="code">return new SinkInfo(&quot;Intro&quot;, <ins>&quot;&lt;h2&gt;Foo bar&lt;/h2&gt;&quot;</ins>) {</pre>
+
+<p>Now, save the file and simply click "Refresh" in the hosted mode application to see your recent change (if you previously closed 
+hosted mode, go ahead and re-run the <code>KitchenSink-shell</code> script). The header should now say &quot;Foo 
+bar&quot; instead of &quot;Introduction to the Kitchen Sink.&quot;:</p>
+
+<div class="screenshot"><img src="./kitchensink-modified.jpg" alt="Screenshot" style="border: 1px solid silver"/></div>
+
+<a name="New"></a>
+<h2>Creating an Application from Scratch (without Eclipse)</h2>
+
+<p>GWT ships with a command line utility called <code>applicationCreator</code> that automatically generates all the files you'll need in order to start a GWT project.  It can also generate <a href="http://www.eclipse.org/" rel="nofollow">Eclipse</a> project files and launch config files for easy hosted mode debugging, as <a href="#NewEclipse">described below</a>.</p>
+
+<p>Based on the <a href="./com.google.gwt.doc.DeveloperGuide.Fundamentals.ProjectStructure.html">recommended GWT project structure</a>, your main GWT application class should be in a subpackage <code>client</code>.  You can create a new application called MyApplication with the command:</p>
+
+<pre class="code">applicationCreator com.mycompany.client.MyApplication</pre>
+
+<p>The <code>applicationCreator</code> script will generate a number of files in <code>src/com/mycompany/</code>, including some basic &quot;Hello, world&quot; functionality in the class <code>src/com/mycompany/client/MyApplication.java</code>.  The script also generates a <a href="overview.html#Modes">hosted mode</a> launch script called <code>MyApplication-shell</code> and a compilation script called <code>MyApplication-compile</code>, just like the <a href="#Sample">sample application</a> above.</p>
+
+<p>To run your newly created application in hosted mode, run the <code>MyApplication-shell</code> script:</p>
+
+<div class="screenshot"><img src="./myapplication-hosted.jpg" alt="Screenshot"/></div>
+
+<p>Try editing the files <code>src/com/mycompany/client/MyApplication.java</code> and <code>src/com/mycompany/public/MyApplication.html</code> to see how it changes your application.</p>
+
+
+<a name="NewEclipse"></a>
+<h2>Creating an Application from Scratch (with Eclipse)</h2>
+
+<p>GWT includes a command line utility called <code>applicationCreator</code> that automatically generates all the files you'll need in order to start a GWT project.  It can also generate <a href="http://www.eclipse.org/" rel="nofollow">Eclipse</a> project files and launch config files for easy hosted mode debugging.  To generate an Eclipse project for a new application, first use the <code>projectCreator</code> script to generate a shell Eclipse project for your application:</p>
+
+<pre class="code">projectCreator -eclipse MyProject</pre>
+
+<p>Then generate your GWT application as <a href="#New">described above</a>, but with an additional <code>-eclipse</code> flag specifying the name of your Eclipse project:</p>
+
+<pre class="code">applicationCreator -eclipse MyProject com.mycompany.client.MyApplication</pre>
+
+<p>When you're done with these scripts, in addition to the <code>MyApplication-shell</code> and <code>MyApplication-compile</code> scripts, you should see <code>.project</code>, <code>.classpath</code>, and <code>MyApplication.launch</code> files in your current directory.</p>
+
+<p>To open your project in Eclipse, launch Eclipse and click the File -> Import menu.  Choose &quot;Existing Projects into Workspace&quot; in the first screen of the wizard, and enter the directory in which you genetrated the <code>.project</code> file in the next screen of the wizard.  When you are complete, you should see your GWT project loaded into your Eclipse workspace:</p>
+
+<div class="screenshot"><img src="./myapplication-eclipse.jpg" alt="Screenshot" style="border: 1px solid silver"/></div>
+
+<p>Just click the green &quot;Run&quot; button at the top of the window to start your project in <a href="./com.google.gwt.doc.DeveloperGuide.Fundamentals.HostedMode.html">hosted mode</a>.</p>
+
+</div>
+
+    
+
+
+
+</div> 
+
+<div id="footer" dir="ltr">
+  
+  <div class="text">
+  
+    
+<div style="margin-bottom: 0.5em">Java&trade; is a trademark of Sun Microsystems.</div>
+<div style="margin-bottom:0.5em">
+  &copy;2007 Google -
+  <a href="http://www.google.com/">Google Home</a> -
+  <a href="http://www.google.com/jobs/">We're Hiring</a> -
+  <a href="/webtoolkit/terms.html">Terms and Conditions</a> -
+  <a href="http://groups.google.com/group/Google-Web-Toolkit">Developer Forum</a>
+</div>
+<div id="notice" style="text-align: center; border: 1em 0em 1em 0em">
+  Except as otherwise <a
+  href="http://code.google.com/policies.html#restrictions">noted</a>,
+  the content of this page is licensed under the <a rel="license"
+  href="http://creativecommons.org/licenses/by/2.5/">Creative Commons
+  Attribution 2.5 License</a>.
+<!-- <rdf:RDF xmlns="http://web.resource.org/cc/" 
+              xmlns:dc="http://purl.org/dc/elements/1.1/"
+              xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+  <Work rdf:about="">
+    <license rdf:resource="http://creativecommons.org/licenses/by/2.5/" />
+  </Work>
+  <License rdf:about="http://creativecommons.org/licenses/by/2.5/">
+    <permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+    <permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+    <requires rdf:resource="http://web.resource.org/cc/Notice"/>
+    <requires rdf:resource="http://web.resource.org/cc/Attribution"/>
+    <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+  </License>
+</rdf:RDF> -->
+</div>
+
+
+
+  
+  </div>
+</div>
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+
+
+<script type="text/javascript">
+  _uacct="UA-18071-1"; // code.google.com site-wide tracking
+  _uanchor=1;
+  _uff=0;
+  urchinTracker();
+</script>
+
+
+  </body>
+</html>
