diff --git a/Android.mk b/Android.mk
index 95f38c5..5a4c547 100644
--- a/Android.mk
+++ b/Android.mk
@@ -425,10 +425,10 @@
 framework_docs_SDK_PREVIEW:=0
 
 ## Latest ADT version identifiers, for reference from published docs
-framework_docs_ADT_VERSION:=0.9.5
-framework_docs_ADT_DOWNLOAD:=ADT-0.9.5.zip
-framework_docs_ADT_BYTES:=3372982
-framework_docs_ADT_CHECKSUM:=227ec538359fbe417ccde7f0ad614a96
+framework_docs_ADT_VERSION:=0.9.6
+framework_docs_ADT_DOWNLOAD:=ADT-0.9.6.zip
+framework_docs_ADT_BYTES:=7456339
+framework_docs_ADT_CHECKSUM:=ea45d271be52b87b5dd1c9fb17536223
 
 framework_docs_LOCAL_DROIDDOC_OPTIONS += \
 		-hdf sdk.version $(framework_docs_SDK_VERSION) \
diff --git a/docs/html/guide/appendix/media-formats.jd b/docs/html/guide/appendix/media-formats.jd
index db5a15e..94a6471 100644
--- a/docs/html/guide/appendix/media-formats.jd
+++ b/docs/html/guide/appendix/media-formats.jd
@@ -2,7 +2,6 @@
 @jd:body
 
 <p>The <a href="#core">Core Media Formats</a> table below describes the media format support built into the Android platform. Note that any given mobile device may provide support for additional formats or file types not listed in the table. </p>
-<p>For your convenience, the table <a href="#g1">T-Mobile G1 Media Formats</a> describes additional media formats and characteristics provided by the T-Mobile G1 device. Other devices may support additional formats not listed on this page. </p>
 
 <p>As an application developer, you are free to make use of any media codec that is available on any Android-powered device, including those provided by the Android platform and those that are device-specific.</p>
 
@@ -152,56 +151,6 @@
 
 </tbody></table>
 
-<h2 id="g1">T-Mobile G1 Media Formats and Characteristics</h2>
-
-<p>The table below lists media formats supported by the T-Mobile G1 in addition to those provided as part of the Android platform. This table also details G1-specific performance characteristics of some Android core media formats.</p>
-
-<table>
-<tbody>
-
-<tr>
-<th>Type</th>
-<th>Format</th>
-<th>Encoder</th>
-<th>Decoder</th>
-<th>Comment</th>
-<th>File Type(s) Supported</th>
-</tr>
-
-<tr>
-<td>Audio</td>
-<td>WMA</td>
-<td>&nbsp;</td>
-<td style="text-align: center;">X</td>
-<td>Supports WMA standard L1-L3:
-<ul>
-<li>L1: 64 kbps - 161 kbps @ 44.1kHz</li>
-<li>L2: &lt;=161 kbps &lt;=48 kHz</li>
-<li>L3: &lt;385 kbps &lt;=48 kHz</li>
-</ul>
-Mono and stereo profiles with 16-bits per sample. Decoder does not support WMA Pro, Lossless, or Speech codecs. 
-</td>
-<td>Windows Media Audio (.wma)</td>
-</tr>
-
-<tr>
-<td rowspan="2">Video</td>
-<td>WMV</td>
-<td>&nbsp;</td>
-<td style="text-align: center;">X</td>
-<td>Versions 7, 8 and 9. Simple profile only</td>
-<td>Windows Media Video (.wmv)</td>
-</tr>
-
-<tr>
-<td>H.264&nbsp;AVC</td>
-<td>&nbsp;</td>
-<td style="text-align: center;">X</td>
-<td>On the G1, this decoder is limited to baseline profile up to 480x320, and 600 kbps average bitrate for the video stream.</td>
-<td>3GPP (.3gp) and MPEG-4 (.mp4)</td>
-</tr>
-
-</tbody></table>
 
 
 
diff --git a/docs/html/index.jd b/docs/html/index.jd
index e3bf685..913f83d 100644
--- a/docs/html/index.jd
+++ b/docs/html/index.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 
-	<div id="mainBodyFixed">
+<div id="mainBodyFixed">
               <div id="mainBodyLeft">			
                     <div id="homeMiddle">
                         <div id="topAnnouncement">
@@ -11,10 +11,10 @@
                             </div><!-- end homeTitle -->
                             <div id="announcement-block">
                             <!-- total max width is 520px -->
-                                  <img src="/assets/images/home/Android_Dev_Lab_l.png" alt="Android developer labs" width="100px" style="padding-left:78px;padding-right:46px;padding-bottom: 8px;"/>
+                                  <img src="{@docRoot}assets/images/home/gdc-logo.png" alt="Android at GDC 2010" width="203px" style="padding-left:22px;padding-bottom:28px;padding-top:22px;"/>
                                   <div id="announcement" style="width:275px">
-<p>We're hosting the next Android Developer Lab in Barcelona at <a href="http://www.mobileworldcongress.com/index.htm">Mobile World Congress&nbsp;&raquo;</a> on Wednesday February 17th at <a href="http://www.mobileworldcongress.com/exhibition/app_planet.htm">App Planet&nbsp;&raquo;</a>, located in Hall 7.  Come visit us to attend a technical presentation, talk to our Android developer relations team, and meet other members of the developer community.</p><p><a href="http://sites.google.com/site/androidmwc/home">Learn more &raquo;</a></p>
-<!--<p><a href="http://android-developers.blogspot.com/2009/11/bring-your-lab-coats.html">Learn more &raquo;</a></p>-->
+<p>Android will be at the <a href="http://www.gdconf.com/">2010 Game Developers Conference</a> in San Francisco, from March 9th to 11th. We're looking forward to seeing you there!</p>
+<p><a href="http://android-developers.blogspot.com/2010/03/android-at-game-developers-conference.html">Learn more &raquo;</a></p>
                                 </div> <!-- end annoucement -->
                             </div> <!-- end annoucement-block -->
                         </div><!-- end topAnnouncement -->
diff --git a/docs/html/resources/community-groups.jd b/docs/html/resources/community-groups.jd
index a36a425..72bdf7a 100644
--- a/docs/html/resources/community-groups.jd
+++ b/docs/html/resources/community-groups.jd
@@ -2,21 +2,27 @@
 page.title=Developer Forums
 @jd:body
 
-<p>Welcome to the Android developers community! We're glad you're here and invite you to participate in discussions with other Android application developers on topics that interest you.</p>
+<div id="qv-wrapper">
+<div id="qv">
 
-<p>The lists on this page are primarily for discussion about Android application development. If you are seeking discussion about Android source code (not application development), then please refer to the <a href="http://source.android.com/discuss">Open Source Project Mailing lists</a>.</p>
-
-<p style="margin-bottom:.5em"><strong>Contents</strong></p>
-<ol class="toc">
-  <li><a href="#StackOverflow">Stack Overflow</a> <span class="new">new!</span></li>
-  <li><a href="#MailingLists">Mailing lists</a><ol>
+  <h2>In this document</h2>
+  <ol>
+  <li><a href="#StackOverflow">Android on Stack Overflow</a></li>
+  <li><a href="#MailingLists">Mailing lists</a>
+  <ol>
     <li><a href="#BeforeYouPost">Before you post</a></li>
     <li><a href="#UsingEmail">Using email with the mailing lists</a></li>
     <li><a href="#ApplicationDeveloperLists">Application developer mailing lists</a></li>
   </ol></li>
   <li><a href="#MarketHelp">Android Market Help Forum</a></li>
-</ol>
+  </ol>
 
+</div>
+</div>
+
+<p>Welcome to the Android developers community! We're glad you're here and invite you to participate in discussions with other Android application developers on topics that interest you.</p>
+
+<p>The lists on this page are primarily for discussion about Android application development. If you are seeking discussion about Android source code (not application development), then please refer to the <a href="http://source.android.com/discuss">Open Source Project Mailing lists</a>.</p>
 
 <h2 id="StackOverflow">Stack Overflow</h2>
 
diff --git a/docs/html/resources/community-more.jd b/docs/html/resources/community-more.jd
index 2be015a..9f16fea 100644
--- a/docs/html/resources/community-more.jd
+++ b/docs/html/resources/community-more.jd
@@ -2,7 +2,7 @@
 page.title=IRC and Twitter
 @jd:body
 
-<p>In addition to the <a href="community-groups.html">Android developer groups</a>, you can also participate in the Android developer community through IRC, and you can also follow us on Twitter. </p>
+<p>In addition to the <a href="community-groups.html">Android developer forums</a>, you can participate in the Android developer community through IRC and you can follow us on Twitter. </p>
 
 <h3 id="irc">IRC</h3>
 
@@ -31,10 +31,10 @@
 <ul>
 <li>Set your nickname before you join the channel.</li>
 <li>Registering your nickname prevents others from using your nickname or impersonating you later:
-<pre>/nick &lt;yournickname&gt;
-/msg nickserv register &lt;password&gt; &lt;email&gt;</code></pre>
+<pre class="no-pretty-print" style="width:50%;">/nick &lt;yournickname&gt;
+/msg nickserv register &lt;password&gt; &lt;email&gt;</pre>
 <p>Afterwards, when you connect, you'll need to supply a password:</p>
-<pre>/connect irc.freenode.net
+<pre class="no-pretty-print" style="width:50%;">/connect irc.freenode.net
 /nick &lt;yournickname&gt;
 /msg nickserv identify &lt;password&gt;
 /join #android-dev</pre>
diff --git a/docs/html/resources/resources_toc.cs b/docs/html/resources/resources_toc.cs
index 0972029..659e08e 100644
--- a/docs/html/resources/resources_toc.cs
+++ b/docs/html/resources/resources_toc.cs
@@ -171,9 +171,12 @@
                <span class="zh-TW" style="display:none"></span>
     </h2>
     <ul>
+      <li><a href="<?cs var:toroot ?>resources/samples/get.html">
+            <span class="en">Getting the Samples</span>
+          </a></li>
       <li class="toggle-list">
         <div><a href="<?cs var:toroot ?>resources/samples/index.html">
-               <span class="en">List of Sample Apps</span>
+               <span class="en">List of Samples</span>
              </a> <span class="new">new!</span></div>
         <ul>
           <li><a href="<?cs var:toroot ?>resources/samples/ApiDemos/index.html">
diff --git a/docs/html/resources/samples/get.jd b/docs/html/resources/samples/get.jd
new file mode 100644
index 0000000..898bc49
--- /dev/null
+++ b/docs/html/resources/samples/get.jd
@@ -0,0 +1,90 @@
+page.title=Getting the Samples
+
+@jd:body
+
+<p>Sometimes, the best way to learn how things are done is to look at some
+code.</p>
+
+<p>To help you get started quickly, the Android SDK includes a variety of sample
+code and tutorials that illustrate key concepts and techniques of Android
+application development. For example, the samples show the structure of the
+manifest file and the use of activities, services, resources,
+intents, content providers, and permissions. They also show how to add
+specialized capabilities to your apps, such as Bluetooth and Contacts
+integration, multiple screens support, Live Wallpaper, and more. </p>
+
+<p>The SDK provides the samples both as source code and as browseable HTML, as
+described in the sections below. All of the samples included in the SDK are
+licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+2.0 license</a>, so feel free to use any of the code in your own applications as
+needed!</p>
+
+<h3 id="downloading">Downloading the Sample Code</h3>
+
+<p>The SDK sample code is available to you as a set of downloadable SDK
+components, each of which contains the samples for a specific Android platform
+version. Once you have installed the SDK, you can download one or more samples
+component(s) into your SDK environment using the Android SDK and AVD Manager
+tool, which is pre-installed in the SDK. </p>
+
+<p>To download the samples, launch the Android SDK and AVD Manager tool and
+select one of the samples components from the <strong>Available
+Packages</strong> panel, for example "Samples for SDK API 7". Select
+<strong>Install Selected</strong>, verify and accept the download, then select
+<strong>Install Accepted</strong> to download the component into your SDK. If
+you aren't familiar with the Android SDK and AVD Manager and how to launch or
+use it, please read the <a href="{@docRoot}sdk/adding-components.html">Adding
+SDK Components</a> document. </p>
+
+<p>When the download is complete, you can find the samples sources on your
+computer in this location:</p>
+
+<p style="margin-left:2em">
+<code><em>&lt;sdk&gt;</em>/samples/<em>&lt;platform-version&gt;</em>/</code>
+</p>
+
+<p>You can easily create new Android projects with the downloaded samples, modify them
+if you'd like, and then run them on an emulator or device. </p>
+
+<p>For example, if you are developing in Eclipse with the ADT Plugin, you can
+create a project for the "API Demos" sample app by starting a new Android
+Project, selecting "Create project from existing source", and then browsing to
+the <code><em>&lt;sdk&gt;</em>/samples/<em>&lt;platform&gt;</em>/ApiDemos</code>
+directory (the <code>samples</code> directory for the platform version you are
+using).</p>
+
+<p>If you are not working in Eclipse, you can create a project for the API Demos
+sample using the <code>android</code> tool, by executing this command:</p>
+
+<pre class="no-pretty-print">
+android update project -s -n API Demos -t <em>&lt;target_ID></em> -p <em>&lt;path&gt;</em>samples/<em>&lt;platforms&gt;</em>/ApiDemos/
+</pre>
+
+<h3 id="browsing">Browsing the Sample Code</h3>
+
+<p>For your convenience, the SDK provides browseable source code for the latest
+versions of the samples. You can use your browser to navigate through the
+structure of each sample and look at the source code in each of its files. </p>
+
+<p>To browse the samples, go to the <a
+href="{@docRoot}resources/samples/index.html">List of Sample Apps</a> first.
+From there you can read a short summary of each sample application and what
+types of concepts, features, or APIs it includes. Then, use the links provided
+to move through the directories and files of each sample. The browseable source
+is generated from the same source code that is downloadable through the Android
+SDK and AVD Manager, as described above. </p>
+
+<p>The browseable samples files are available online, at the Android Developers
+site only and are not included in the downloadable offline documentation.
+Note that, although samples for several platform versions are available for 
+download, only the samples for the latest platform version are browseable online.
+</p>
+
+
+<h3 id="more">More Sample Code</h3>
+
+<p>If you are looking for more sample code, check out
+<a href="http://code.google.com/p/apps-for-android/">apps-for-android</a>, a
+collection of open source applications that demonstrate various Android APIs.</p>
+
+
diff --git a/docs/html/resources/samples/index.jd b/docs/html/resources/samples/index.jd
index 5ebf41c..044c69de 100644
--- a/docs/html/resources/samples/index.jd
+++ b/docs/html/resources/samples/index.jd
@@ -1,38 +1,21 @@
-page.title=Sample Code
+page.title=List of Sample Apps
 @jd:body
 
+<p>The list below provides a summary of the sample applications that are 
+available with the Android SDK. Using the links on this page, you can view
+the source files of the sample applications in your browser. </p>
 
-<p>Sometimes, the best way to learn how things are done is to look at some code.</p>
-
-<p>Here, you can browse the source of some sample Android applications. Also, each version of the
-Android platform available for the SDK includes a set of sample
-applications (which may vary between different versions of the platform).
-You can find the samples in your SDK at:</p>
-
-<p style="margin-left:2em">
-<code><em>&lt;sdk&gt;</em>/platforms/android-<em>&lt;version&gt;</em>/samples/</code>
-</p>
-
-<p>You can easily create new Android projects with these samples, modify them
-if you'd like, then run them on an emulator or device. For example, to create
-a project for the API Demos app from Eclipse,
-start a new Android Project, select "Create project from existing source", then select
-{@code ApiDemos} in the {@code samples/} directory. To create the API Demos project
-using the {@code android} tool, execute:</p>
-<pre>
-android update project -s -n API Demos -t <em>&lt;target_ID></em> -p <em>&lt;path-to-platform></em>/samples/ApiDemos/
-</pre>
-
-<p>The pages below provide an overview of each sample application (available with most
-platforms) and allow you to view the source files in your browser. </p>
-
+<p>You can also download the source of these samples into your SDK, then 
+modify and reuse it as you need. For more information, see <a 
+href="{@docRoot}resources/samples/get.html">Getting the Samples</a>.</p>
+<!--
 <div class="special">
   <p>Some of the samples in this listing may not yet be available in the
   SDK. To ensure that you have the latest versions of the samples, you can
   <a href="{@docRoot}shareables/latest_samples.zip">download the samples pack</a>
   as a .zip archive.</p>
 </div>
-
+-->
 <dl>
 
  <dt><a href="ApiDemos/index.html">API Demos</a></dt>
diff --git a/docs/html/sdk/RELEASENOTES.jd b/docs/html/sdk/RELEASENOTES.jd
index ae86a4b..a94eba7 100644
--- a/docs/html/sdk/RELEASENOTES.jd
+++ b/docs/html/sdk/RELEASENOTES.jd
@@ -39,8 +39,8 @@
 <li>Notes for the Android 2.0.1 platform are in the <a
 href="{@docRoot}sdk/android-2.0.1.html">Android 2.0.1, Release 1</a> document. </li>
 <li>You can find information about tools changes in the <a
-href="{@docRoot}sdk/tools-notes.html">SDK Tools Notes</a> and <a
-href="{@docRoot}sdk/adt-notes.html">ADT Plugin Notes</a>.</li>
+href="{@docRoot}sdk/tools-notes.html#notes">SDK Tools</a> and <a
+href="{@docRoot}sdk/eclipse-adt.html#notes">ADT Plugin for Eclipse</a>.</li>
 </ul>
 
 <p>To get started with the SDK, review the Quick Start summary on the <a
@@ -109,7 +109,7 @@
 <p>The new version of ADT is downloadable from the usual remote update site or
 is separately downloadable as a .zip archive. For instructions on how to
 download the plugin, please see <a
-href="{@docRoot}sdk/eclipse-adt.html">Installing and Updating ADT</a>. </p>
+href="{@docRoot}sdk/eclipse-adt.html">ADT Plugin for Eclipse</a>. </p>
 
 <h3>Android SDK and AVD Manager</h3>
 
@@ -545,7 +545,7 @@
 Plugin for Eclipse is <strong>0.8.0</strong>. If you are using a
 previous version of ADT, you should update to the latest version for use
 with this SDK. For information about how to update your ADT plugin, see
-<a href="{@docRoot}sdk/eclipse-adt.html">Installing and Updating ADT</a>.</p>
+<a href="{@docRoot}sdk/eclipse-adt.html">ADT Plugin for Eclipse</a>.</p>
 
 <h3>Installation and Upgrade Notes</h3>
 
@@ -651,7 +651,7 @@
 Development Tools (ADT) Plugin for Eclipse is <strong>0.8.0</strong>. If you are
 using a previous version of ADT, you should update to the latest version for use
 with this SDK. For information about how to update your ADT plugin, see <a
-href="{@docRoot}sdk/eclipse-adt.html">Installing and Updating ADT</a>.</p>
+href="{@docRoot}sdk/eclipse-adt.html">ADT Plugin for Eclipse</a>.</p>
 
 <h3>Other Notes</h3>
 
diff --git a/docs/html/sdk/adding-components.jd b/docs/html/sdk/adding-components.jd
index d7c886e..90e9045 100644
--- a/docs/html/sdk/adding-components.jd
+++ b/docs/html/sdk/adding-components.jd
@@ -7,22 +7,17 @@
 <h2>Quickview</h2>
 <ul>
   <li>Use the Android SDK and AVD Manager to 
-   keep your SDK up-to-date without having to install new
-   SDK directories.</li>
-  <li>The Android SDK and AVD Manager is available only with the 
-   Android 1.6 SDK or later.</li>
-  <li>The Eclipse ADT plugin may require an update when installing
-   new tools or system images.</li>
+   set up your SDK and keep it up-to-date.</li>
 </ul>
 
 <h2>In this document</h2>
 <ol>
+  <li><a href="#launching">Launching the Android SDK and AVD Manager</a>
   <li><a href="#InstallingComponents">Installing SDK Components</a>
-    <ol>
-      <li><a href="#AddingSites">Adding New Sites</a></li>
-    </ol>
-  </li>
+  <li><a href="#UpdatingComponents">Updating SDK Components</a>
   <li><a href="#dependencies">Component Dependencies</a></li>
+  <li><a href="#AddingSites">Adding New Sites</a></li>
+  <li><a href="#troubleshooting">Troubleshooting</a></li>
 </ol>
 </div>
 </div>
@@ -30,58 +25,102 @@
 <p>Adding and updating components in your Android SDK is fast and easy. To
 perform an update, use the <strong>Android SDK and AVD Manager</strong> to
 install or update the individual SDK components that you need. The Android SDK
-and AVD Manager tool is included in Android 1.6 and later SDK packages.</p>
+and AVD Manager tool is included in the <a href="index.html">Android SDK 
+download</a>.</p>
 
-<p>It only takes a couple of clicks to install
-individual versions of the Android platform, new development tools, new documentation, and
-SDK add-ons. The new SDK components are automatically installed into your existing SDK 
-directory, so you don't need to update your development environment to specify a
-new SDK location.</p>
+<p>It only takes a couple of clicks to install individual versions of the
+Android platform, new development tools, new documentation, and SDK add-ons. The
+new SDK components are automatically installed into your existing SDK directory,
+so you don't need to update your development environment to specify a new SDK
+location.</p>
 
-<p>Because each version of the Android platform can be installed as an individual component
-of your SDK, you can customize your development environment to the Android platforms
-you are targetting. Testing your app on multiple versions of
-the platform is very important in order to successfully operate on as many devices as possible.
-Be sure to install each version of the Android platform with which your app is compatible, then test
-your apps on <a href="{@docRoot}guide/developing/tools/avd.html">AVDs</a> that run each platform.</p>
+<p>Because each version of the Android platform can be installed as an
+individual component of your SDK, you can customize your development environment
+to the Android platforms you are targetting. Testing your app on multiple
+versions of the platform is very important in order to successfully operate on
+as many devices as possible. Be sure to install each version of the Android
+platform with which your app is compatible, then test your apps on <a
+href="{@docRoot}guide/developing/tools/avd.html">AVDs</a> that run each
+platform.</p>
+
+<p>If you are just getting started and you are not sure what components to install,
+see <a href="installing.html#components">Adding Platforms and Other
+Components</a> for information. </p>
 
 <p>If you develop applications using Eclipse, you may also need to update your
-ADT plugin when you update your development tools or in order to compile against
-a new version of the platform. See the <a
-href="{@docRoot}sdk/tools-notes.html">SDK Tools Notes</a> document for ADT
-compatibility.</p>
+ADT plugin when you update your development tools, in order to compile against
+a new version of the platform. See the revisions listed in the <a
+href="{@docRoot}sdk/tools-notes.html">SDK Tools</a> document for ADT
+Plugin compatibility.</p>
+
+<div style="TEXT-ALIGN:left; width:600px;"> 
+<img src="{@docRoot}images/sdk_manager_packages.png" 
+style="padding-bottom:0;margin-bottom:0;" /> 
+<p class="caption" style="margin:0 0 1.5em 1em;padding:0 0 0
+1em;"><strong>Figure 1.</strong> The Android SDK and AVD Manager's 
+<strong>Available Packages</strong>
+panel, which shows the SDK components that are
+available for you to download into your environment. </p>
+</div> 
+
+<h2 id="launching">Launching the Android SDK and AVD Manager</h2>
+
+<p>The Android SDK and AVD Manager is the tool that you use to install and 
+upgrade SDK components in your development environment. </p>
+
+<p>You can access the tool in any of three ways:</p>
+<ul>
+<li>If you are developing in the Eclipse IDE with the ADT Plugin, you can access
+the tool directly from the Eclipse UI.</li>
+<li>On Windows only, you can launch he tool by double-clicking a script file.</li>
+<li>In all environments, you can access the tool from a command line.</li>
+</ul>
+
+<h4>Launching from Eclipse/ADT</h4>
+
+<p>If you are developing in Eclipse and have already installed the ADT Plugin,
+follow these steps to access the Android SDK and AVD Manager tool:</p>
+
+<ol>
+<li>Open Eclipse</li>
+<li>Select <strong>Window</strong> &gt; <strong>Android SDK and AVD 
+Manager</strong>.</li>
+</ol>
+
+<h4>Launching from the setup script (Windows only)</h4>
+
+<p>For Windows only, the SDK includes a script that invokes the Android SDK and
+AVD Manager. To launch the tool using the script, double-click "SDK
+Setup.exe" at the root of the the SDK directory.</p>
+
+<h4>Launching from a command line</h4>
+
+<p>In all development environments, follow these steps to access the Android SDK
+and AVD Manager tool from the command line: </p>
+
+<ol>
+<li>Navigate to the <code>&lt;<em>sdk</em>&gt;/tools/</code> directory.</li>
+<li>Execute the {@code android} tool command with no options. 
+  <pre style="width:400px">$ android</pre></li>
+</ol>
 
 
 <h2 id="InstallingComponents">Installing SDK Components</h2>
 
-<p>Use the Android SDK and AVD Manager to install new SDK components. </p>
-
 <p class="caution"><strong>Important:</strong> Before you install SDK components, 
 we recommend that you disable any antivirus programs that may be running on
 your computer.</p>
 
-<p>You can launch the SDK and AVD Manager in one of these ways:</p>
-<ul>
-  <li>Execute the {@code android}</a> tool command with no options. If you
-haven't used the tool before, change to the <code>&lt;sdk&gt;/tools</code>
-directory and run the command: 
-  <pre style="width:400px">$ android</pre></li>
-  <li>If you have downloaded the SDK Tools (Revision 3 or higher) and are 
-  running Windows, you can double-click "SDK Setup.exe" in the SDK directory.
-  <li>If you are developing in Eclipse with ADT, you can select 
-  <strong>Window</strong> &gt;<strong>Android SDK and AVD Manager</strong>.</li>
-</ul>
+<p>Follow these steps to install new SDK components in your environment:</p>
 
-<img src="{@docRoot}images/sdk_manager_packages.png" alt="" style="float:right" />
-
-<p>When a new platform version, add-on, set of development tools or
-documentation becomes available, you can quickly install them into your existing
-Android SDK:</p>
 <ol>
-  <li>Select <strong>Available Components</strong> in the left panel.
-  This will reveal all components currently available for download.</li>
-  <li>Select the components you'd like to install and click <strong>Install
-  Selected</strong>.</li>
+  <li>Launch the Android SDK and AVD Manager as described in the section above.</li>
+  <li>Select <strong>Available Packages</strong> in the left panel.
+  This will reveal all of the components that are currently available for download 
+  from the SDK repository.</li>
+  <li>Select the component(s) you'd like to install and click <strong>Install
+  Selected</strong>. If you aren't sure which packages to select, read <a 
+  href="installing.html#which">Which components do I need?</a>.</li>
   <li>Verify and accept the components you want and click <strong>Install
   Accepted</strong>. The components will now be installed into your existing
   Android SDK directories.</li>
@@ -93,14 +132,56 @@
 directory; and new documentation is saved in the existing
 <code><em>&lt;sdk>/</em>docs/</code> directory (old docs are replaced).</p>
 
+
+<h2 id="UpdatingComponents">Updating SDK Components</h2>
+
+<p>From time to time, new revisions of existing SDK components are released and
+made available to you through the SDK repository. In most cases, if you have those
+components installed in your environment, you will want
+to download the new revisions as soon as possible. </p>
+
+<p>You can learn about the release of new revisions in two ways: </p>
+
+<ul>
+<li>You can watch for updates listed in the "SDK" tab of the Android Developers
+site, in the "Downloadable SDK Components" section. </li>
+<li>You can watch for updates listed in the <strong>Available Packages</strong>
+panel of the Android SDK and AVD Manager. </li>
+</ul>
+
+<p>When you see that a new revision is available, you can use the Android SDK
+and AVD Manager to quickly download it to your environment. Follow the same
+procedure as given in <a href="">Installing SDK Components</a>, above. The new
+component is installed in place of the old, but without impacting your
+applications. </p>
+
 <p class="note"><strong>Tip:</strong>
 Use the "Display updates only" checkbox to show only the components
 you do not have.</p>
 
 
-<h3 id="AddingSites">Adding New Sites</h3>
+<h2 id="dependencies">SDK Component Dependencies</h2>
 
-<p>By default, <strong>Available Components</strong> only shows the default
+<p>In some cases, an SDK component may require a specific minimum revision of
+another component or SDK tool. Where such dependencies exist, they are
+documented in the revision notes for each component, available from the links in
+the "Downloadable SDK Components" section at left.</p>
+
+<p>For example, there may be a dependency between the ADT Plugin for Eclipse and
+the SDK Tools component. When you install the SDK Tools
+component, you would then need to upgrade to the required version of ADT (if you
+are developing in Eclipse). In this case, you would find dependencies listed in
+"Revisions" section of the <a href="{@docRoot}sdk/eclipse-adt.html#notes">ADT
+Plugin Notes</a> and <a href="{@docRoot}sdk/tools-notes.html#notes">SDK Tools
+Notes</a> documents. </p>
+
+<p>Additionally, the development tools will notify you with debug warnings
+if there is dependency that you need to address. </p>
+
+
+<h2 id="AddingSites">Adding New Sites</h2>
+
+<p>By default, <strong>Available Packages</strong> only shows the default
 repository site, which offers platforms, SDK tools, documentation, the 
 Google APIs Add-on, and other components. You can add other sites that host 
 their own Android SDK add-ons, then download the SDK add-ons
@@ -115,14 +196,14 @@
 Manager:</p>
 
 <ol>
-  <li>Select <strong>Available Components</strong> in the left panel.</li>
+  <li>Select <strong>Available Packages</strong> in the left panel.</li>
   <li>Click <strong>Add Site</strong> and enter the URL of the 
 {@code repository.xml} file. Click <strong>OK</strong>.</li>
 </ol>
 <p>Any SDK components available from the site will now be listed under
-<strong>Available Components</strong>.</p>
+<strong>Available Packages</strong>.</p>
 
-<h3 id="troubleshooting">Troubleshooting</h3>
+<h2 id="troubleshooting">Troubleshooting</h2>
 
 <p><strong>Problems connecting to the SDK repository</strong></p>
 
@@ -138,18 +219,4 @@
   <li>Click <strong>Save &amp; Apply</strong>.</li>
 </ol>
 
-<h2 id="dependencies">SDK Component Dependencies</h2>
 
-<p>In some cases, a specific SDK component may require a specific minimum
-version of another component or SDK tool. Such dependencies are documented
-in the release notes for each component. </p>
-
-<p>For example, there may be a dependency between the ADT plugin for Eclipse and
-a specific version of the SDK Tools component. When you install the SDK Tools
-component, you would then need to upgrade to the required version of ADT (if you
-are developing in Eclipse). In this case, you would find dependencies listed in
-the <a href="{@docRoot}sdk/adt-notes.html">ADT Plugin Notes</a> and <a
-href="{@docRoot}sdk/tools-notes.html">SDK Tools Notes</a> documents. </p>
-
-<p>Additionally, the development tools will notify you with debug warnings
-if there is dependency that you need to address. </p>
diff --git a/docs/html/sdk/adt-notes.jd b/docs/html/sdk/adt-notes.jd
index 361d99a..291b543 100644
--- a/docs/html/sdk/adt-notes.jd
+++ b/docs/html/sdk/adt-notes.jd
@@ -1,83 +1,5 @@
-page.title=ADT Plugin Notes
+page.title=ADT Plugin for Eclipse
+sdk.redirect=true
+sdk.redirect.path=eclipse-adt.html
+
 @jd:body
-
-<p>Android Development Tools (ADT) is a development plugin for the Eclipse IDE.  It
-extends the capabilites of Eclipse to let you quickly set up new Android
-projects, create an application UI, add components based on the Android
-Framework API, debug your applications using the Android SDK tools, and even export
-signed (or unsigned) APKs in order to distribute your application.</p>
-
-<p>This document provides version-specific information about ADT releases. To
-keep up-to-date on new releases, make sure that you view this page at <a
-href="http://developer.android.com/sdk/adt-notes.html">http://developer.
-android.com/sdk/adt-notes.html</a>.</p>
-
-<p>To install ADT in your Eclipse IDE environment, use the Eclipse Update Site
-feature. For more information, see <a
-href="{@docRoot}sdk/eclipse-adt.html">Installing and Updating ADT</a>. </p>
-
-
-<h2 id="0.9.5">ADT 0.9.5</h2>
-
-<p>December 2009. ADT 0.9.5 provides several bug fixes for developers, 
-as described below.
-</p>
-
-<h3>Dependencies</h3>
-
-<p>ADT 0.9.5 requires features provided in SDK Tools r4. If you install
-ADT 0.9.5, which is highly recommended, you should use the Android SDK and AVD
-Manager to download SDK Tools r4 or higher into your SDK. For more information,
-see <a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a>.
-</p>
-
-<h3>General Notes</h3>
-<ul>
-<li>AVD Launch dialog now shows scale value.</li>
-<li>Fixes potential NPE in SDK Manager on AVD launch, for older AVD with no skin name specified.</li>
-<li>Fixes XML validation issue in on older Java versions.</li>
-<li>.apk packaging now properly ignores vi swap files as well as hidden files.</li>
-</ul>
-
-
-<h2 id="0.9.4">ADT 0.9.4</h2>
-
-<p>October 2009. ADT 0.9.4 provides several new features for developers, as described below.
-</p>
-
-<h3>Dependencies</h3>
-
-<p>ADT 0.9.4 requires features provided in SDK Tools, revision 3. If you install
-ADT 0.9.4, which is highly recommended, you should use the Android SDK and AVD
-Manager to download SDK Tools r3 or higher into your SDK. For more information,
-see <a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a>.
-</p>
-
-<h3>Project Creation Wizard</h3> 
-<ul>
-<li>New option to create a project from a sample by choosing it from a list.</li>
-</ul>
-
-<h3>Layout Editor</h3>
-<ul>
-<li>Improved Configuration selector that lets you see how your layout will
-render on different devices. Default device descriptions include ADP1
-and Google Ion, while SDK add-ons can also provide new descriptions.
-A new UI allows you to create custom descriptions.</li>
-<li>Adds a new clipping toggle, to let you see your full layout even if it's
-bigger than the screen.</li>
-</ul>
-
-<h3>DDMS Integration</h3>
-<ul>
-<li>Includes the improvements from the standlone DDMS, revision 3.</li>
-<li>Adds an option to open HPROF files into eclipse instead of writing them on
-disk. If a profiler such as MAT (<a href="http://eclipse.org/mat">Memory Analyzer 
-Tool</a>) is installed, it'll open the file.</li>
-</ul>
-
-<h3>Android SDK and AVD Manager integration</h3>
-<ul>
-<li>Includes the improvements from the standalone Android SDK and AVD Manager, 
-revision 3.</li>
-</ul>
\ No newline at end of file
diff --git a/docs/html/sdk/adt_download.jd b/docs/html/sdk/adt_download.jd
index 6dbca48..96896c7 100644
--- a/docs/html/sdk/adt_download.jd
+++ b/docs/html/sdk/adt_download.jd
@@ -22,10 +22,17 @@
     <th>Notes</th>
   </tr>
   <tr>
-     <td>0.9.5</td>
-     <td><a href="http://dl-ssl.google.com/android/ADT-0.9.5.zip">ADT-0.9.5.zip</a></td>
+     <td>0.9.6</td>
+     <td><a href="http://dl-ssl.google.com/android/ADT-0.9.6.zip">ADT-0.9.6.zip</a></td>
      <td><nobr>{@adtZipBytes} bytes</nobr></td>
      <td>{@adtZipChecksum}</td>
+     <td>Requires SDK Tools, Revision 5 <em><nobr>March 2009</nobr></em></td>
+  </tr>
+  <tr>
+     <td>0.9.5</td>
+     <td><a href="http://dl-ssl.google.com/android/ADT-0.9.5.zip">ADT-0.9.5.zip</a></td>
+     <td><nobr>3372982 bytes</nobr></td>
+     <td>227ec538359fbe417ccde7f0ad614a96</td>
      <td>Requires SDK Tools, Revision 4 <em><nobr>December 2009</nobr></em></td>
   </tr>
   <tr>
diff --git a/docs/html/sdk/android-1.5.jd b/docs/html/sdk/android-1.5.jd
index 4612682..b3eea77 100644
--- a/docs/html/sdk/android-1.5.jd
+++ b/docs/html/sdk/android-1.5.jd
@@ -1,4 +1,4 @@
-page.title=Android 1.5, Release 3
+page.title=Android 1.5 Platform
 sdk.platform.version=1.5
 sdk.platform.apiLevel=3
 sdk.platform.majorMinor=major
@@ -13,6 +13,7 @@
   <h2>In this document</h2>
   <ol>
 	<li><a href="#features">Platform Highlights</a></li>
+	<li><a href="#relnotes">Revisions</a></li>
 	<li><a href="#apps">Built-in Applications</a></li>
 	<li><a href="#locs">Locales</a></li>
 	<li><a href="#skins">Emulator Skins</a></li>
@@ -33,7 +34,6 @@
 </div>
 
 <p>
-<em>Date:</em> {@sdkPlatformReleaseDate}<br />
 <em>API Level:</em>&nbsp;<strong>{@sdkPlatformApiLevel}</strong></p>
 
 <p>Android {@sdkPlatformVersion} is a {@sdkPlatformMajorMinor} platform release
@@ -60,6 +60,81 @@
 href="http://developer.android.com/sdk/android-{@sdkPlatformVersion}-highlights.html">Android 
 {@sdkPlatformVersion} Platform Highlights</a> document.</p>
 
+<h2 id="relnotes">Revisions</h2>
+
+<p>The sections below provide notes about successive releases of
+the Android {@sdkPlatformVersion} platform component for the Android SDK, as denoted by
+revision number. To determine what revision(s) of the Android
+{@sdkPlatformVersion} platforms are installed in your SDK environment, refer to
+the "Installed Packages" listing in the Android SDK and AVD Manager.</p>
+
+<script type="text/javascript">
+function toggleDiv(link) {
+  var toggleable = $(link).parent();
+  if (toggleable.hasClass("closed")) {
+    //$(".toggleme", toggleable).slideDown("fast");
+    toggleable.removeClass("closed");
+    toggleable.addClass("open");
+    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
+  } else {
+    //$(".toggleme", toggleable).slideUp("fast");
+    toggleable.removeClass("open");
+    toggleable.addClass("closed");
+    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
+  }
+  return false;
+}
+</script>
+<style>
+.toggleable {
+padding: .25em 1em;
+}
+.toggleme {
+  padding: 1em 1em 0 2em;
+  line-height:1em;
+}
+.toggleable a {
+  text-decoration:none;
+}
+.toggleable.closed .toggleme {
+  display:none;
+}
+#jd-content .toggle-img {
+  margin:0;
+}
+</style>
+
+<div class="toggleable opened">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px" />
+        Android 1.5, Revision 3</a> <em>(July 2009)</em></a>
+  <div class="toggleme">
+<dl>
+<dt>Dependencies:</dt>
+<dd>
+<p>Requires SDK Tools r3 or higher.</p>
+</dd>
+</dl>
+ </div>
+</div>
+
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+        Android 1.5, Revision 2</a> <em>(May 2009)</em></a>
+  <div class="toggleme">
+<p>Not available as an SDK component &mdash; please use Android 1.5, r3 instead. </p>
+ </div>
+</div>
+
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+        Android 1.5, Revision 1</a> <em>(April 2009)</em></a>
+  <div class="toggleme">
+<p>Not available as an SDK component &mdash; please use Android 1.5, r3 instead. </p>
+ </div>
+</div>
 
 <h2 id="apps">Built-in Applications</h2>
 
diff --git a/docs/html/sdk/android-1.6.jd b/docs/html/sdk/android-1.6.jd
index 7151325..e0bac41 100644
--- a/docs/html/sdk/android-1.6.jd
+++ b/docs/html/sdk/android-1.6.jd
@@ -1,4 +1,4 @@
-page.title=Android 1.6, Release 2
+page.title=Android 1.6 Platform
 sdk.platform.version=1.6
 sdk.platform.apiLevel=4
 sdk.platform.majorMinor=minor
@@ -13,7 +13,7 @@
   <h2>In this document</h2>
   <ol>
 	<li><a href="#features">Platform Highlights</a></li>
-	<li><a href="#releases">Release Notes</a></li>
+	<li><a href="#relnotes">Revisions</a></li>
 	<li><a href="#apps">Built-in Applications</a></li>
 	<li><a href="#locs">Locales</a></li>
 	<li><a href="#skins">Emulator Skins</a></li>
@@ -34,7 +34,6 @@
 </div>
 
 <p>
-<em>Date:</em> {@sdkPlatformReleaseDate}<br />
 <em>API Level:</em>&nbsp;<strong>{@sdkPlatformApiLevel}</strong></p>
 
 <p>Android {@sdkPlatformVersion} is a {@sdkPlatformMajorMinor} platform release
@@ -63,44 +62,106 @@
 {@sdkPlatformVersion} Platform Highlights</a> document.</p>
 
 
-<h2 id="relnotes">Release Notes</h2>
+<h2 id="relnotes">Revisions</h2>
 
-<p>The sections below provide information about the available releases of the 
-Android 1.6 platform.</p>
+<p>The sections below provide notes about successive releases of
+the Android {@sdkPlatformVersion} platform component for the Android SDK, as denoted by
+revision number. To determine what revision(s) of the Android
+{@sdkPlatformVersion} platforms are installed in your SDK environment, refer to
+the "Installed Packages" listing in the Android SDK and AVD Manager.</p>
 
-<h3>Android 1.6, Release 2</h3>
+<script type="text/javascript">
+function toggleDiv(link) {
+  var toggleable = $(link).parent();
+  if (toggleable.hasClass("closed")) {
+    //$(".toggleme", toggleable).slideDown("fast");
+    toggleable.removeClass("closed");
+    toggleable.addClass("open");
+    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
+  } else {
+    //$(".toggleme", toggleable).slideUp("fast");
+    toggleable.removeClass("open");
+    toggleable.addClass("closed");
+    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
+  }
+  return false;
+}
+</script>
+<style>
+.toggleable {
+padding: .25em 1em;
+}
+.toggleme {
+  padding: 1em 1em 0 2em;
+  line-height:1em;
+}
+.toggleable a {
+  text-decoration:none;
+}
+.toggleable.closed .toggleme {
+  display:none;
+}
+#jd-content .toggle-img {
+  margin:0;
+}
+</style>
 
-<p>December 2009. Requires SDK Tools r4 or higher.</p>
+<div class="toggleable opened">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px" />
+        Android 1.6, Revision 2</a> <em>(December 2009)</em></a>
+  <div class="toggleme">
+<dl>
+<dt>Dependencies:</dt>
+<dd>
+<p>Requires SDK Tools r4 or higher.</p>
+</dd>
 
-<p>API related:</p>
-<ul>
-<li>Properly exposes CDMA-related constants in {@link android.telephony.TelephonyManager android.telephony.TelephonyManager}: <code>DATA_ACTIVITY_DORMANT</code>,
+<dt>API related:</dt> 
+<dd>
+<ul> 
+<li>Properly exposes CDMA-related constants in <code><a href="{@docRoot}reference/android/telephony/TelephonyManager.html">android.telephony.TelephonyManager</a></code>: <code>DATA_ACTIVITY_DORMANT</code>,
 <code>PHONE_TYPE_CDMA</code>, <code>NETWORK_TYPE_CDMA</code>,
 <code>NETWORK_TYPE_EVDO_0</code>, <code>NETWORK_TYPE_EVDO_A</code>, and
-<code>NETWORK_TYPE_1xRTT</code>.</li>
-</ul>
-<p>System image:</p>
-<ul>
-<li>Fixes bug so that Bitmap's density is now propagated through Parcelable.</li>
-<li>Fixes NinePatchDrawable to properly scale its reported padding for compatibility mode.</li>
-<li>Fixes TextView to properly compute styled font metrics based on the screen density.</li>
+<code>NETWORK_TYPE_1xRTT</code>.</li> 
+</ul> 
+</dd>
+<dt>System image:</dt> 
+<dd>
+<ul> 
+<li>Fixes bug so that Bitmap's density is now propagated through Parcelable.</li> 
+<li>Fixes NinePatchDrawable to properly scale its reported padding for compatibility mode.</li> 
+<li>Fixes TextView to properly compute styled font metrics based on the screen density.</li> 
 <li>Updates kernel to 2.6.29, to match kernel on commercially
-available Android-powered devices.</li>
-</ul>
-<p>Tools:</p>
-<ul>
+available Android-powered devices.</li> 
+</ul> 
+</dd>
+<dt>Tools:</dt> 
+<dd>
+<ul> 
 <li>Adds new Ant build system with support for Emma instrumentation projects
-(code coverage).</li>
-<li>Fixes emulator skins to properly emulate d-pad in landscape mode.</li>
-<li>Fixes density rendering in the layout editor in ADT.</li>
-</ul>
+(code coverage).</li> 
+<li>Fixes emulator skins to properly emulate d-pad in landscape mode.</li> 
+<li>Fixes density rendering in the layout editor in ADT.</li> 
+</ul> 
+</dd>
+</dl>
+ </div>
+</div>
 
-
-
-<h3>Android 1.6, Release 1</h3>
-
-<p>September 2009. Initial release. Requires SDK Tools r3 or higher.</p>
-
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+        Android 1.6, Revision 1</a> <em>(September 2009)</em></a>
+  <div class="toggleme">
+<dl>
+<dt>Dependencies</dt>
+<dd>
+<p>Requires SDK Tools r3 or higher.</p>
+</dd>
+</dl>
+ </div>
+</div>
 
 <h2 id="apps">Built-in Applications</h2>
 
@@ -188,7 +249,9 @@
 
 <h2 id="skins">Emulator Skins</h2>
 
-<p>The downloadable platform includes a set of emulator skins that you can use for modeling your application in different screen sizes and resolutions. The emulator skins are: </p>
+<p>The downloadable platform includes a set of emulator skins that you can 
+use for modeling your application in different screen sizes and resolutions. 
+The emulator skins are: </p>
 
 <ul>
   <li>
diff --git a/docs/html/sdk/android-2.0.1.jd b/docs/html/sdk/android-2.0.1.jd
index 43b1710..cacb6bf 100644
--- a/docs/html/sdk/android-2.0.1.jd
+++ b/docs/html/sdk/android-2.0.1.jd
@@ -13,6 +13,7 @@
   <h2>In this document</h2>
   <ol>
 	<li><a href="#features">Platform Highlights</a></li>
+	<li><a href="#relnotes">Revisions</a></li>
 	<li><a href="#apps">Built-in Applications</a></li>
 	<li><a href="#locs">Locales</a></li>
 	<li><a href="#skins">Emulator Skins</a></li>
@@ -39,7 +40,7 @@
 </div>
 
 <p>
-<em>Date:</em> {@sdkPlatformReleaseDate}<br />
+
 <em>API Level:</em>&nbsp;<strong>{@sdkPlatformApiLevel}</strong></p>
 
 <p>Android {@sdkPlatformVersion} is a {@sdkPlatformMajorMinor} platform release
@@ -67,6 +68,64 @@
 href="http://developer.android.com/sdk/android-2.0-highlights.html">Android
 2.0 Platform Highlights</a> document.</p>
 
+<h2 id="relnotes">Revisions</h2>
+
+<p>The sections below provide notes about successive releases of
+the Android {@sdkPlatformVersion} platform component for the Android SDK, as denoted by
+revision number. To determine what revision(s) of the Android
+{@sdkPlatformVersion} platforms are installed in your SDK environment, refer to
+the "Installed Packages" listing in the Android SDK and AVD Manager.</p>
+
+<script type="text/javascript">
+function toggleDiv(link) {
+  var toggleable = $(link).parent();
+  if (toggleable.hasClass("closed")) {
+    //$(".toggleme", toggleable).slideDown("fast");
+    toggleable.removeClass("closed");
+    toggleable.addClass("open");
+    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
+  } else {
+    //$(".toggleme", toggleable).slideUp("fast");
+    toggleable.removeClass("open");
+    toggleable.addClass("closed");
+    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
+  }
+  return false;
+}
+</script>
+<style>
+.toggleable {
+padding: .25em 1em;
+}
+.toggleme {
+  padding: 1em 1em 0 2em;
+  line-height:1em;
+}
+.toggleable a {
+  text-decoration:none;
+}
+.toggleable.closed .toggleme {
+  display:none;
+}
+#jd-content .toggle-img {
+  margin:0;
+}
+</style>
+
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+        Android 2.0.1, Revision 1</a> <em>(December 2009)</em></a>
+  <div class="toggleme">
+<dl>
+<dt>Dependencies:</dt>
+<dd>
+<p>Requires SDK Tools r4 or higher.</p>
+</dd>
+</dl>
+ </div>
+</div>
+
 <h2 id="apps">Built-in Applications</h2>
 
 <p>The system image included in the downloadable platform provides these
diff --git a/docs/html/sdk/android-2.0.jd b/docs/html/sdk/android-2.0.jd
index 9dadf8b..a430f34 100644
--- a/docs/html/sdk/android-2.0.jd
+++ b/docs/html/sdk/android-2.0.jd
@@ -13,6 +13,7 @@
   <h2>In this document</h2>
   <ol>
 	<li><a href="#features">Platform Highlights</a></li>
+	<li><a href="#relnotes">Revisions</a></li>
 	<li><a href="#apps">Built-in Applications</a></li>
 	<li><a href="#locs">Locales</a></li>
 	<li><a href="#skins">Emulator Skins</a></li>
@@ -34,7 +35,6 @@
 </div>
 
 <p>
-<em>Date:</em> {@sdkPlatformReleaseDate}<br />
 <em>API Level:</em>&nbsp;<strong>{@sdkPlatformApiLevel}</strong></p>
 
 <p>Android {@sdkPlatformVersion} is a {@sdkPlatformMajorMinor} platform release
@@ -50,7 +50,7 @@
 
 <p>To get started developing or testing against the Android
 {@sdkPlatformVersion} platform, use the Android SDK and AVD Manager tool to
-download the platform into your Android 1.6 or later SDK. For more information,
+download the platform into your SDK. For more information,
 see <a href="{@docRoot}sdk/adding-components.html">Adding SDK
 Components</a>.</p>
 
@@ -61,6 +61,64 @@
 href="http://developer.android.com/sdk/android-{@sdkPlatformVersion}-highlights.html">Android 
 {@sdkPlatformVersion} Platform Highlights</a> document.</p>
 
+<h2 id="relnotes">Revisions</h2>
+
+<p>The sections below provide notes about successive releases of
+the Android {@sdkPlatformVersion} platform component for the Android SDK, as denoted by
+revision number. To determine what revision(s) of the Android
+{@sdkPlatformVersion} platforms are installed in your SDK environment, refer to
+the "Installed Packages" listing in the Android SDK and AVD Manager.</p>
+
+<script type="text/javascript">
+function toggleDiv(link) {
+  var toggleable = $(link).parent();
+  if (toggleable.hasClass("closed")) {
+    //$(".toggleme", toggleable).slideDown("fast");
+    toggleable.removeClass("closed");
+    toggleable.addClass("open");
+    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
+  } else {
+    //$(".toggleme", toggleable).slideUp("fast");
+    toggleable.removeClass("open");
+    toggleable.addClass("closed");
+    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
+  }
+  return false;
+}
+</script>
+<style>
+.toggleable {
+padding: .25em 1em;
+}
+.toggleme {
+  padding: 1em 1em 0 2em;
+  line-height:1em;
+}
+.toggleable a {
+  text-decoration:none;
+}
+.toggleable.closed .toggleme {
+  display:none;
+}
+#jd-content .toggle-img {
+  margin:0;
+}
+</style>
+
+<div class="toggleable opened">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px" />
+        Android 2.0, Revision 1</a> <em>(October 2009)</em></a>
+  <div class="toggleme">
+<dl>
+<dt>Dependencies:</dt>
+<dd>
+<p>Requires SDK Tools r3 or higher.</p>
+</dd>
+</dl>
+ </div>
+</div>
+
 <h2 id="apps">Built-in Applications</h2>
 
 <p>The system image included in the downloadable platform provides these
diff --git a/docs/html/sdk/android-2.1.jd b/docs/html/sdk/android-2.1.jd
index b546f0f..dfa82b3 100644
--- a/docs/html/sdk/android-2.1.jd
+++ b/docs/html/sdk/android-2.1.jd
@@ -1,8 +1,7 @@
-page.title=Android 2.1, Release 1
+page.title=Android 2.1 Platform
 sdk.platform.version=2.1
 sdk.platform.apiLevel=7
 sdk.platform.majorMinor=minor
-sdk.platform.releaseDate=January 2010
 sdk.platform.deployableDate=January 2010
 
 @jd:body
@@ -13,6 +12,7 @@
 <h2>In this document</h2>
 <ol>
   <li><a href="#features">Platform Highlights</a></li>
+  <li><a href="#relnotes">Revisions</a></li>
   <li><a href="#apps">Built-in Applications</a></li>
   <li><a href="#locs">Locales</a></li>
   <li><a href="#skins">Emulator Skins</a></li>
@@ -36,7 +36,6 @@
 </div>
 
 <p>
-<em>Date:</em> {@sdkPlatformReleaseDate}<br />
 <em>API Level:</em>&nbsp;<strong>{@sdkPlatformApiLevel}</strong></p>
 
 <p>Android {@sdkPlatformVersion} is a {@sdkPlatformMajorMinor} platform release
@@ -53,7 +52,7 @@
 
 <p>To get started developing or testing against the Android
 {@sdkPlatformVersion} platform, use the Android SDK and AVD Manager tool to
-download the platform into your Android SDK. For more information,
+download the platform into your SDK. For more information,
 see <a href="{@docRoot}sdk/adding-components.html">Adding SDK
 Components</a>.</p>
 
@@ -64,6 +63,64 @@
 href="http://developer.android.com/sdk/android-2.0-highlights.html">Android
 2.0 Platform Highlights</a> document for the latest user features.</p>
 
+<h2 id="relnotes">Revisions</h2>
+
+<p>The sections below provide notes about successive releases of
+the Android {@sdkPlatformVersion} platform component for the Android SDK, as denoted by
+revision number. To determine what revision(s) of the Android
+{@sdkPlatformVersion} platforms are installed in your SDK environment, refer to
+the "Installed Packages" listing in the Android SDK and AVD Manager.</p>
+
+<script type="text/javascript">
+function toggleDiv(link) {
+  var toggleable = $(link).parent();
+  if (toggleable.hasClass("closed")) {
+    //$(".toggleme", toggleable).slideDown("fast");
+    toggleable.removeClass("closed");
+    toggleable.addClass("open");
+    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
+  } else {
+    //$(".toggleme", toggleable).slideUp("fast");
+    toggleable.removeClass("open");
+    toggleable.addClass("closed");
+    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
+  }
+  return false;
+}
+</script>
+<style>
+.toggleable {
+padding: .25em 1em;
+}
+.toggleme {
+  padding: 1em 1em 0 2em;
+  line-height:1em;
+}
+.toggleable a {
+  text-decoration:none;
+}
+.toggleable.closed .toggleme {
+  display:none;
+}
+#jd-content .toggle-img {
+  margin:0;
+}
+</style>
+
+<div class="toggleable opened">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px" />
+        Android 2.1, Revision 1</a> <em>(January 2010)</em></a>
+  <div class="toggleme">
+<dl>
+<dt>Dependencies:</dt>
+<dd>
+<p>Requires SDK Tools r4 or higher.</p>
+</dd>
+</dl>
+ </div>
+</div>
+
 <h2 id="apps">Built-in Applications</h2>
 
 <p>The system image included in the downloadable platform provides these
diff --git a/docs/html/sdk/eclipse-adt.jd b/docs/html/sdk/eclipse-adt.jd
index 1d99c91..d3e0a10 100644
--- a/docs/html/sdk/eclipse-adt.jd
+++ b/docs/html/sdk/eclipse-adt.jd
@@ -1,4 +1,4 @@
-page.title=Installing and Updating ADT
+page.title=ADT Plugin for Eclipse
 sdk.preview=0
 
 @jd:body
@@ -8,9 +8,12 @@
 
   <h2>In this document</h2>
   <ol>
-    <li><a href="#preparing">Prepare for Installation</a></li>
+    <li><a href="#notes">Revisions</a></li>
     <li><a href="#installing">Installing the ADT Plugin</a>
       <ol>
+        <li><a href="#preparing">Preparing for Installation</a></li>
+        <li><a href="#downloading">Downloading the ADT Plugin</a>
+        <li><a href="#configuring">Configuring the ADT Plugin</a></li>
         <li><a href="#troubleshooting">Troubleshooting</a></li>
       </ol>
     </li>
@@ -21,50 +24,266 @@
 </div>
 </div>
 
-<p>Android offers a custom plugin for the Eclipse IDE, called Android
-Development Tools (ADT), that is designed to give you a powerful,
-integrated environment in which to build Android applications. </p>
+<p>Android Development Tools (ADT) is a plugin for the Eclipse IDE 
+that is designed to give you a powerful, integrated environment in which
+to build Android applications. </p>
 
 <p>ADT extends the capabilities of Eclipse to let you quickly set up new Android
 projects, create an application UI, add components based on the Android
 Framework API, debug your applications using the Android SDK tools, and even
 export signed (or unsigned) APKs in order to distribute your application.</p>
 
-<p>In general, using Eclipse with ADT is a highly recommended approach to
-Android development and is the fastest way to get started. If you use Eclipse,
-the ADT plugin gives you an incredible boost in developing Android
-applications.</p>
+<p>Developing in Eclipse with ADT is highly recommended and is the fastest way
+to get started. With the guided project setup it provides, as well as tools
+integration, custom XML editors, and debug ouput pane, ADT gives you an
+incredible boost in developing Android applications. </p>
 
-<p>To install and update the ADT Plugin, you can take advantage of the Eclipse
-remote update feature. By setting up a remote update site, you can easily
-download, install, and check for ADT updates. Alternatively, you can download
-the latest ADT to your development computer as a local site archive. The
-sections below provide instructions for both methods.</p>
+<p>This document provides step-by-step instructions on how to download the ADT
+plugin and install it into your Eclipse development environment. Note that
+before you can install or use ADT, you must have compatible versions of both the
+Eclipse IDE and the Android SDK installed. For details, make sure to read <a
+href="#installing">Installing the ADT Plugin</a>, below. </p>
 
+<p>If you are already using ADT, this document also provides instructions on 
+how to update ADT to the latest version or how to uninstall it, if necessary.
+</p>
 
-<h2 id="preparing">Prepare for Installation</h2>
+<h2 id="notes">Revisions</h2>
 
-<p>Before you begin, take a moment to confirm that your development machine
-meets the <a href="requirements.html">System Requirements</a>.</p>
+<p>The sections below provide notes about successive releases of
+the ADT Plugin, as denoted by revision number. </p>
 
-<p>If you will be developing in Eclipse with the Android Development
-Tools (ADT) Plugin &mdash; the recommended path if you are new to
-Android &mdash; make sure that you have a suitable version of Eclipse
-installed on your computer (3.4 or newer is recommended). If you need 
-to install Eclipse, you can download it from this location: </p>
+<script type="text/javascript">
+function toggleDiv(link) {
+  var toggleable = $(link).parent();
+  if (toggleable.hasClass("closed")) {
+    //$(".toggleme", toggleable).slideDown("fast");
+    toggleable.removeClass("closed");
+    toggleable.addClass("open");
+    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
+  } else {
+    //$(".toggleme", toggleable).slideUp("fast");
+    toggleable.removeClass("open");
+    toggleable.addClass("closed");
+    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
+  }
+  return false;
+}
+</script>
+<style>
+.toggleable {
+padding: .25em 1em;
+}
+.toggleme {
+  padding: 1em 1em 0 2em;
+  line-height:1em;
+}
+.toggleable a {
+  text-decoration:none;
+}
+.toggleable.closed .toggleme {
+  display:none;
+}
+#jd-content .toggle-img {
+  margin:0;
+}
+</style>
+
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+ADT 0.9.6</a> <em>(March 2010)</em>
+  <div class="toggleme">
+
+<dl>
+<dt>Dependencies:</dt>
+
+<dd><p>ADT 0.9.6 is designed for use with SDK Tools r5 and later. Before 
+updating to ADT 0.9.6, we highly recommend that you use the Android SDK and
+AVD Manager to install SDK Tools r5 into your SDK.</p></dd>
+
+<dt>General Notes:</dt>
+<dd>
+<ul>
+<li>Editing <code>default.properties</code> outside of Eclipse will now
+automatically update the project.</li>
+<li>Loads the SDK content only when a project requires it. This will make
+Eclipse use less resources when the SDK contains many versions of Android.</li>
+<li>Resolves potential deadlock between modal dialogs, when launching ADT the
+first time with the SDK Usage panel.</li>
+<li>Fixes issues with the New Project Wizard when selecting samples.</li>
+</ul>
+</dd>
+<dt>AVD/SDK Manager:</dt>
+<dd>
+<ul>
+<li>Adds support for platform samples components.</li>
+<li>Improves support for dependency between components.</li>
+<li>AVDs now sorted by API level.</li>
+<li>The AVD creation dialog now enforces a minimum SD card size of 9MB.</li>
+<li>Prevents deletion of running AVDs.</li>
+</ul>
+</dd>
+<dt>DDMS:</dt>
+<dd>
+<ul>
+<li>DDMS plug-in now contains the Allocation Tracker view.</li>
+<li>New action in the Logcat view: "Go to problem" lets you go directly from an
+exception trace output to the code.</li>
+</ul>
+</dd>
+<dt>Editors:</dt>
+<dd>
+<ul>
+<li>Explode mode in the Visual Layout Editor adds a margin to all layout objects
+so that it's easier to see embedded or empty layouts.</li>
+<li>Outline mode in the Visual Layout Editor draws layout outline to make it
+easier to see layout objects.</li>
+<li>Several fixes in the configuration selector of the Visual Layout
+Editor.</li>
+</ul>
+</dd>
+<dt>Application launching:</dt>
+<dd>
+<ul>
+<li>Applications launched from ADT now behave as if they were clicked from the
+Home screen.</li>
+<li>Fixes issue where add-on with no optional library would not show up as valid
+targets for application launches.</li>
+<li>Resolves possible crash when launching applications.</li>
+</ul>
+</dd>
+</dl>
+ </div>
+</div>
+
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+ADT 0.9.5</a> <em>(December 2009)</em>
+  <div class="toggleme">
+<dl>
+<dt>Dependencies:</dt>
+
+<dd><p>ADT 0.9.5 requires features provided in SDK Tools r4 or higher. If you install
+ADT 0.9.5, which is highly recommended, you should use the Android SDK and AVD
+Manager to download thye latest SDK Tools into your SDK. For more information,
+see <a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a>.</p>
+</dd>
+
+<dt>General Notes:</dt>
+<dd>
+<ul>
+<li>AVD Launch dialog now shows scale value.</li>
+<li>Fixes potential NPE in SDK Manager on AVD launch, for older AVD with no skin name specified.</li>
+<li>Fixes XML validation issue in on older Java versions.</li>
+<li>.apk packaging now properly ignores vi swap files as well as hidden files.</li>
+</ul>
+</dd>
+</dl>
+ </div>
+</div>
+
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+ADT 0.9.4</a> <em>(October 2009)</em>
+  <div class="toggleme">
+<dl>
+<dt>Dependencies:</dt>
+
+<dd><p>ADT 0.9.4 requires features provided in SDK Tools r3 or higher. If you install
+ADT 0.9.4, which is highly recommended, you should use the Android SDK and AVD
+Manager to download the latest SDK Tools into your SDK. For more information,
+see <a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a>.</p>
+</dd>
+
+<dt>Project Creation Wizard:</dt>
+<dd>
+<ul>
+<li>New option to create a project from a sample by choosing it from a list.</li>
+</ul>
+</dd>
+
+<dt>Layout Editor:</dt>
+<dd>
+<ul>
+<li>Improved Configuration selector that lets you see how your layout will
+render on different devices. Default device descriptions include ADP1
+and Google Ion, while SDK add-ons can also provide new descriptions.
+A new UI allows you to create custom descriptions.</li>
+<li>Adds a new clipping toggle, to let you see your full layout even if it's
+bigger than the screen.</li>
+</ul>
+</dd>
+
+<dt>DDMS Integration:</dt>
+<dd>
+<ul>
+<li>Includes the improvements from the standlone DDMS, revision 3.</li>
+<li>Adds an option to open HPROF files into eclipse instead of writing them on
+disk. If a profiler such as MAT (<a href="http://eclipse.org/mat">Memory Analyzer 
+Tool</a>) is installed, it'll open the file.</li>
+</ul>
+</dd>
+
+<dt>Android SDK and AVD Manager integration:</dt>
+<dd>
+<ul>
+<li>Includes the improvements from the standalone Android SDK and AVD Manager, 
+revision 3.</li>
+</ul>
+</dd>
+</dl>
+ </div>
+</div>
+
+<h2 id="installing">Installing the ADT Plugin</h2>
+
+<p>The sections below provide instructions on how to download and install
+ADT into your Eclipse environment. If you encounter problems, see the <a
+href="#troubleshooting">Troubleshooting</a> section.</p>
+
+<h3 id="preparing">Preparing Your Development Computer</h3>
+
+<p>ADT is a plugin for the Eclipse IDE. Before you can install or use ADT,
+you must have a compatible version of Eclipse installed on your development
+computer. </p>
+
+<ul>
+<li>If Eclipse is already installed on your computer, make sure that it is
+a version that is compatible with ADT and the Android SDK. Check the <a
+href="requirements.html">System Requirements</a> document for
+a list of Eclipse versions that are compatible with the Android SDK.</li>
+<li>If you need to install or update Eclipse, you can download it from this
+location:
 
 <p style="margin-left:2em;"><a href=
 "http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a>
 </p>
 
-<p>A Java or RCP version of Eclipse is recommended. </p>
+<p>A Java or RCP version of Eclipse is recommended.</p></li>
+</ul>
 
-<h2 id="installing">Installing the ADT Plugin</h2>
+<p>Additionally, before you can configure or use ADT, you must install the
+Android SDK starter package, as described in <a
+href="installing.html#Installing">Downloading the SDK Starter Pacskage</a>.
+Specifically, you need to install a compatible version of the Android SDK Tools
+and at least one development platform. To simplify ADT setup, we recommend
+installing the Android SDK prior to installing ADT. </p>
 
-<p>Once you have the Eclipse IDE installed, as described in <a
-href="#preparing">Preparing for Installation</a>, above, follow these steps to
-download the ADT plugin and install it in your respective Eclipse environment.
-</p>
+<p>When your Eclipse and Android SDK environments are ready, continue with the
+ADT installation as described in the steps below. </p>
+
+<h3 id="downloading">Downloading the ADT Plugin</h3>
+
+<p>Use Update Manager feature of your Eclipse installation to install the latest
+revision of ADT on your development computer.<p>
+
+<p>Assuming that you have a compatible version of the Eclipse IDE installed, as
+described in <a href="#preparing">Preparing for Installation</a>, above, follow
+these steps to download the ADT plugin and install it in your Eclipse
+environment. </p>
 
 <table style="font-size:100%">
 <tr><th>Eclipse 3.4 (Ganymede)</th><th>Eclipse 3.5 (Galileo)</th></tr>
@@ -121,7 +340,11 @@
 </tr>
 </table>
 
-<p>Now modify your Eclipse preferences to point to the Android SDK directory:</p>
+<h3 id="preparing">Configuring the ADT Plugin</h3>
+
+<p>Once you've successfully downnloaded ADT as described above, the next step
+is to modify your ADT preferences in Eclipse to point to the Android SDK directory:</p>
+
 <ol>
     <li>Select <strong>Window</strong> &gt; <strong>Preferences...</strong> to open the Preferences
         panel (Mac OS X: <strong>Eclipse</strong> &gt; <strong>Preferences</strong>).</li>
@@ -131,8 +354,10 @@
     <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
 </ol>
 
-<p>Done! If you haven't encountered any problems, then you're ready to
-begin developing Android applications. </p>
+<p>Done! If you haven't encountered any problems, then the installation is
+complete. Now read <a href="installing.html#components">Adding Platforms and
+Other Components</a> for instructions on how to complete the setup of your 
+SDK environment. </p>
 
 
 <h3 id="troubleshooting">Troubleshooting ADT Installation</h3>
@@ -179,7 +404,7 @@
 </li>
 
 </li>
-  <li>Follow steps 1 and 2 in the <a href="#InstallingADT">default install 
+  <li>Follow steps 1 and 2 in the <a href="#installing">default install 
       instructions</a> (above).</li>
   <li>In the Add Site dialog, click <strong>Archive</strong>.</li>
   <li>Browse and select the downloaded zip file.</li>
@@ -187,7 +412,7 @@
       "Android Plugin") in the "Name" field.</li>
   <li>Click <strong>OK</strong>.
   <li>Follow the remaining procedures as listed for 
-      <a href="#InstallingADT">default installation</a> above,
+      <a href="#installing">default installation</a> above,
       starting from step 4.</li>
 </ol>
 
@@ -216,13 +441,27 @@
 Plugin.</p>
 
 
-<h2 id="updating">Updating Your Eclipse ADT Plugin</h2>
+<h2 id="updating">Updating the ADT Plugin</h2>
 
-<p>From time to time, a new version of the ADT Plugin becomes available. Follow 
-the steps below to check whether an update is available and, if so, to install it. 
-For 
-information about new features in ADT, see the <a
-href="{@docRoot}sdk/adt-notes.html">ADT Plugin Notes</a> document. </p>
+<p>From time to time, a new revision of the ADT Plugin becomes available, with
+new features and bug fixes. Generally, when a new revision of ADT is available,
+you should update to it as soon as convenient. </p>
+
+<p>In some cases, a new revision of ADT will have a dependency on a specific
+revision of the Android SDK Tools. If such dependencies exist, you will need to
+update the SDK Tools component of the SDK after installing the new revision of
+ADT. To update the SDK Tools component, use the Android SDK and AVD Manager, as
+described in <a href="adding-components.html">Adding SDK Components</a>.</p>
+
+<p>To learn about new features of each ADT revision and also any dependencies on
+the SDK Tools, see the listings in the <a href="#notes">Revisions</a>
+section. To determine the version currently installed, open the 
+Eclipse Installed Software window using <strong>Help</strong>
+&gt; <strong>Software Updates</strong> and refer to the version listed for 
+"Android Development Tools".</p>
+
+<p>Follow the steps below to check whether an update is available and, if so, 
+to install it. </p>
 
 <table style="font-size:100%">
 <tr><th>Eclipse 3.4 (Ganymede)</th><th>Eclipse 3.5 (Galileo)</th></tr>
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
index 25d0a82..e9d20ff 100644
--- a/docs/html/sdk/index.jd
+++ b/docs/html/sdk/index.jd
@@ -1,19 +1,17 @@
 page.title=Android SDK
 sdk.redirect=0
-sdk.version=2.0.1
-sdk.date=December 2009
 
 sdk.win_download=android-sdk_r04-windows.zip
-sdk.win_bytes=23069119
-sdk.win_checksum=c48b407de852ba483869f17337e90997
+sdk.win_bytes=23449838
+sdk.win_checksum=cc2c51a24e2f876e0fa652e182ef5840
 
 sdk.mac_download=android-sdk_r04-mac_86.zip
-sdk.mac_bytes=19657927
-sdk.mac_checksum=b08512765aa9b0369bb9b8fecdf763e3
+sdk.mac_bytes=19871714
+sdk.mac_checksum=6fcfeed0e1c36624c926551637eb3308
 
 sdk.linux_download=android-sdk_r04-linux_86.tgz
-sdk.linux_bytes=15984887
-sdk.linux_checksum=ef84b08fd9da84f4c4ae77564fe4eaee
+sdk.linux_bytes=16208523
+sdk.linux_checksum=1d695d6a31310406f5d49092a1bd9850
 
 @jd:body
 
@@ -22,69 +20,52 @@
 
 <p>The steps below provide an overview of how to get started with the Android
 SDK. For detailed instructions, start with the <a
-href="{@docRoot}sdk/installing.html">Installing</a> guide. </p>
+href="{@docRoot}sdk/installing.html">Installing the SDK</a> guide. </p>
 
-<p><strong>0. Prepare your development computer</strong></p>
+<p><strong>1. Prepare your development computer</strong></p>
 
 <p>Read the <a href="{@docRoot}sdk/requirements.html">System Requirements</a>
 document and make sure that your development computer meets the hardware and
 software requirements for the Android SDK. Install any additional software
-needed before downloading the Android SDK. In particular, if you plan to develop
-Android applications in the Eclipse IDE using the ADT Plugin (see below), make
-sure that you have the correct version of Eclipse installed. 
+needed before downloading the Android SDK. In particular, you may need to
+install the <a href="http://java.sun.com/javase/downloads/index.jsp">JDK</a>
+ (version 5 or 6 required) and <a href="http://www.eclipse.org/downloads/">Eclipse</a>
+ (version 3.4 or 3.5, needed only if you want develop using the ADT Plugin).
 
-<p><strong>1. Download and install the SDK starter package</strong></p>
+<p><strong>2. Download and install the SDK starter package</strong></p>
 
 <p>Select a starter package from the table at the top of this page and download
 it to your development computer. To install the SDK, simply unpack the starter
 package to a safe location and then add the location to your PATH. </p>
 
-<p><strong>2. Install the ADT Plugin for Eclipse</strong></p>
+<p><strong>3. Install the ADT Plugin for Eclipse</strong></p>
 
-<p>If you are developing in Eclipse, set up a remote update site and install the
-Android Development Tools (ADT) plugin. For detailed instructions, see <a
-href="{@docRoot}sdk/eclipse-adt.html">Installing and Updating ADT</a>.</p>
+<p>If you are developing in Eclipse, set up a remote update site at
+<code>https://dl-ssl.google.com/android/eclipse/</code>. Install the Android 
+Development Tools (ADT) Plugin, restart Eclipse, and set the "Android" 
+preferences in Eclipse to point to the SDK install location. For detailed
+instructions, see <a href="{@docRoot}sdk/eclipse-adt.html">ADT Plugin 
+for Eclipse</a>.</p>
 
-<p><strong>3. Add Android platforms to your SDK</strong></p>
+<p><strong>4. Add Android platforms and other components to your SDK</strong></p>
 
 <p>Use the Android SDK and AVD Manager, included in the SDK starter package, to
-add one or more Android platforms (for example, Android 1.6 or Android 2.0) to
-your SDK. In most cases, you will want to download multiple platforms, so that
-you can build your application on the lowest version you want to support, but
-test against higher versions that you intend the application to run on.
-Information about each platform is available at left, under "Downloadable SDK
-Components."</p>
+add one or more Android platforms (for example, Android 1.6 or Android 2.0) and
+other components to your SDK. If you aren't sure what to add, see <a
+href="installing.html#which">Which components do I need?</a></p>
 
 <p>To launch the Android SDK and AVD Manager on Windows, execute <code>SDK
 Setup.exe</code>, at the root of the SDK directory. On Mac OS X or Linux,
 execute the <code>android</code> tool in the <code>&lt;sdk&gt;/tools/</code>
-folder. For more information about how to add platforms and other components,
-see <a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a>.
-</p>
+folder. For detailed instructions, see <a
+href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a>.</p>
 
-<p><strong>4. Get the latest documentation</strong></p>
-
-<p>If you develop while offline, use the Android SDK and AVD Manager to download
-the latest documentation package. The documentation covers all versions of the
-API and lets you filter out those versions that your application won't support.
-Once installed, the documentation is also available to you directly from the
-Eclipse IDE. When you are online, you can always access the latest documentation
-at the Android Developers site.</p>
-
-<p><strong>5. Download other SDK components</strong></p>
-
-<p>You can use the Android SDK and AVD Manager to download other SDK components,
-such as the SDK add-ons. An SDK add-on provides a development environment for an
-Android external library or a customized Android system image. For example, the
-Google APIs Add-On lets you develop an application that takes advantage of the
-Google Maps external library. </p>
-
-<p><strong>6. Get started with an application project</strong></p>
-
-<p>Once you've set up your SDK, the next step is to start a new application
-project or move existing applications into the new SDK.</p>
+<p><strong>Done!</strong></p>
 
 <p>If you are new to Android, you can use the <a
 href="{@docRoot}resources/tutorials/hello-world.html">Hello World</a> tutorial to
 get started quickly. <a href="{@docRoot}sdk/installing.html#NextSteps">Next
-Steps</a> offers other suggestions of how to begin. Welcome!</p>
+Steps</a> offers other suggestions of how to begin.</p>
+
+<p>For a more detailed guide to installing and setting up the SDK, read <a 
+href="installing.html">Installing the SDK</a>.</p>
diff --git a/docs/html/sdk/installing.jd b/docs/html/sdk/installing.jd
index 7b98e7f..abf36c7 100644
--- a/docs/html/sdk/installing.jd
+++ b/docs/html/sdk/installing.jd
@@ -1,4 +1,4 @@
-page.title=Installing the Android SDK
+page.title=Installing the SDK
 sdk.preview=0
 
 @jd:body
@@ -8,25 +8,28 @@
 
   <h2>In this document</h2>
   <ol>
-    <li><a href="#Preparing">Prepare for Installation</a></li>
-    <li><a href="#Installing">Install the SDK</a></li>
-    <li><a href="#InstallingADT">Install the ADT Plugin for Eclipse</a></li>
-    <li><a href="#components">Add Platforms and Other SDK Components</a></li>
-    <li><a href="#sdkContents">Explore the SDK</a></li>
+    <li><a href="#Preparing">Preparing Your Development Computer</a></li>
+    <li><a href="#Installing">Downloading the SDK Starter Package</a></li>
+    <li><a href="#InstallingADT">Installing the ADT Plugin for Eclipse</a></li>
+    <li><a href="#components">Adding Platforms and Other Components</a>
+    <ol>
+    <li><a href="#which">Which components do I need?</a></li>
+    </ol></li>
+    <li><a href="#sdkContents">Exploring the SDK</a></li>
     <li><a href="#NextSteps">Next Steps</a></li>
     <li><a href="#troubleshooting">Troubleshooting</a></li>
   </ol>
 
 <h2>See also</h2>
   <ol>
-    <li><a href="{@docRoot}sdk/eclipse-adt.html">Installing ADT</a></li>
+    <li><a href="{@docRoot}sdk/eclipse-adt.html">ADT Plugin for Eclipse</a></li>
     <li><a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a></li>
   </ol>
 
 </div>
 </div>
 
-<p>This page describes how to install the latest version of the Android SDK 
+<p>This page describes how to install the Android SDK 
 and set up your development environment for the first time.</p>
 
 <p>If you encounter any problems during installation, see the 
@@ -35,40 +38,51 @@
 
 <h4>Updating?</h4>
 
-<p>If you are currently using the Android 1.6 SDK, you do not necessarily need
-to install a newer SDK, since you can already update the platforms, tools, and
-other components using the Android SDK and AVD Manager tool. To develop against
-the latest Android platform, for example, you could just download the latest SDK
-Tools and then add the new Android platform into your existing SDK.</p>
+<p>If you are currently using the Android 1.6 SDK or later and want to update 
+to the latest tools or platforms, you do not need to install a new SDK. Instead, 
+you can simply update the individual components in your SDK using the 
+Android SDK and AVD Manager tool. For information about how to do that, see <a 
+href="{@docRoot}sdk/adding-components.html#UpdatingComponents">Updating SDK 
+Components</a></p>
 
-<p>If you are using Android 1.5 SDK or older, you should install the new SDK as
+<p>If you are using Android 1.5 SDK or earlier, you should install a new SDK as
 described in this document and move your application projects to the new
 SDK environment. </p>
 
-<h2 id="Preparing">Prepare for Installation</h2>
 
-<p>Before you begin, take a moment to confirm that your development machine
-meets the <a href="requirements.html">System Requirements</a>.</p>
+<h2 id="Preparing">Step 1. Preparing Your Development Computer</h2>
+
+<p>Before getting started with the Android SDK, take a moment to confirm that
+your development computer meets the <a href="requirements.html">System
+Requirements</a>. In particular, you may need to install the <a 
+href="http://java.sun.com/javase/downloads/index.jsp">JDK</a> before 
+continuing, if it's not already installed on your computer. </p>
 
 <p>If you will be developing in Eclipse with the Android Development
 Tools (ADT) Plugin &mdash; the recommended path if you are new to
 Android &mdash; make sure that you have a suitable version of Eclipse
 installed on your computer (3.4 or newer is recommended). If you need 
-to install Eclipse, you can download it from this location: </p>
-
+to install Eclipse, you can download it from this location: </p> 
+ 
 <p style="margin-left:2em;"><a href=
-"http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a></p>
-
+"http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a></p> 
+ 
 <p>A Java or RCP version of Eclipse is recommended. For Eclipse 3.5, the 
-"Eclipse Classic" version is recommended.</p>
+"Eclipse Classic" version is recommended.</p> 
 
-<h2 id="Installing">Download and Install the SDK</h2>
 
-<p>Download the SDK package that is appropriate for your development computer.
-You can get the latest version from the <a href="{@docRoot}sdk/index.html">SDK
-download page</a>.</p>
+<h2 id="Installing">Step 2. Downloading the SDK Starter Package</h2>
 
-<p>After downloading, unpack the Android SDK archive to a suitable location on your
+<p>The first step in setting up your environment for developing Android applications
+is downloading the Android SDK starter package. The starter package is not a full
+development environment &mdash; it includes only the core SDK Tools, which you can 
+use to download the rest of the SDK components. </p>
+
+<p>You can get the latest version of the SDK starter package from the <a
+href="{@docRoot}sdk/index.html">SDK download page</a>. Make sure to download the
+package that is appropriate for your development computer.</p>
+
+<p>After downloading, unpack the Android SDK archive to a safe location on your
 machine. By default, the SDK files are unpacked into a directory named
 <code>android-sdk-&lt;machine-platform&gt;</code>. Make a note of the name and
 location of the unpacked SDK directory on your system &mdash; you will need to
@@ -101,71 +115,80 @@
   <code>tools/</code> directory to the path. </li>
   </ul>
 
-<p>If you will be using the Eclipse IDE as your development environment,
-the next section describes how to install the Android Development Tools (ADT) plugin and set up Eclipse. 
-If you choose not to use Eclipse, you can 
-develop Android applications in an IDE of your choice and then compile, debug and deploy using
-the tools included in the SDK (skip to <a href="#NextSteps">Next Steps</a>).</p>
+<p>If you will be using the Eclipse IDE as your development environment, the
+next section describes how to install the Android Development Tools (ADT) plugin
+and set up Eclipse. If you choose not to use Eclipse, you can develop Android
+applications in an IDE of your choice and then compile, debug and deploy using
+the tools included in the SDK (skip to <a href="#components">Adding Platforms
+and Other Components</a>).</p>
 
 
-<h2 id="InstallingADT">Install the ADT Plugin for Eclipse</h2>
+<h2 id="InstallingADT">Step 3. Installing the ADT Plugin for Eclipse</h2>
 
 <p>Android offers a custom plugin for the Eclipse IDE, called Android
-Development Tools (ADT), that is designed to give you a powerful,
-integrated environment in which to build Android applications. It
-extends the capabilites of Eclipse to let you quickly set up new Android
-projects, create an application UI, add components based on the Android
-Framework API, debug your applications using the Android SDK tools, and even export
-signed (or unsigned) APKs in order to distribute your application.</p>
+Development Tools (ADT), that is designed to give you a powerful, integrated
+environment in which to build Android applications. It extends the capabilites
+of Eclipse to let you quickly set up new Android projects, create an application
+UI, add components based on the Android Framework API, debug your applications
+using the Android SDK tools, and even export signed (or unsigned) APKs in order
+to distribute your application. In general, developing in Eclipse with ADT is a
+highly recommended approach and is the fastest way to get started with Android.
+</p>
 
-<p>In general, using Eclipse with ADT is a highly recommended approach to
-Android development and is the fastest way to get started. For complete 
-information about how to install ADT, see 
-<a href="{@docRoot}sdk/eclipse-adt.html">Installing and Updating ADT</a>.</p>
+<p>If you'd like to use ADT for developing Android applications, install it now.
+Read <a href="{@docRoot}sdk/eclipse-adt.html">ADT Plugin for Eclipse</a> for
+step-by-step installation instructions, then return here to continue with the
+last step in setting up your SDK: adding platforms and other
+components.</p>
 
 <p>If you prefer to work in an IDE other than Eclipse, you do not need to
 install Eclipse or ADT, instead, you can directly use the SDK tools to build and
 debug your application.</p>
 
 
-<h2 id="components">Add Android Platforms and Other Components</h2>
+<h2 id="components">Step 4. Adding Android Platforms and Other Components</h2>
 
-<div class="sidebox-wrapper">
-<div class="sidebox">
-<p>The <strong>Android SDK and AVD Manager</strong> tool is pre-installed in
-your SDK. Using the tool is a key part of performing the initial setup of your
-SDK, as well as keeping it up-to-date with the latest platforms, tools, and
-other components. </p>
+<div class="sidebox-wrapper" style="margin-right:2.5em;">
+<div class="sidebox"> <h2>Using the Android SDK and AVD Manager</h2>
 
-<p style="margin-top:.75em;">For full instructions on how to use the tool, see 
-<a href="/sdk/adding-components.html#installingComponents">Adding SDK
-Components</a>.</p> 
+<p>The <em>Android SDK and AVD Manager</em> is a tool that you will use often,
+to add components to your SDK environment and manage Android Virtual Devices.
+</p>
+
+<p style="margin-top:.5em;">The tool is pre-installed in your SDK. See <a
+href="adding-components.html">Adding SDK Components</a> for details on how to
+launch and use the tool.</p>
 </div>
 </div>
 
-<p>The Android SDK uses a modular structure that separates the major parts of
-the SDK &mdash; platforms, add-ons, tools, and the API documentation &mdash;
-into a set of separately installable components. The SDK components are
-available to you for individual download, as needed, from the Android SDK
-repository site. </p>
+<p>The last step in setting up your SDK is using a tool included the SDK starter
+package &mdash; the <em>Android SDK and AVD Manager</em> &mdash; to download
+essential components into your development environment. Read the information
+below to understand what components you'll need, then see <a
+href="adding-components.html">Adding SDK Components</a> for step-by-step
+instructions on how to launch the Android SDK and AVD Manager and download the
+components into your environment.</p>
 
-<p>The Android SDK starter package includes only a single component: the latest
-version of the SDK Tools. Included in that component is a tool called <em>Android
-SDK and AVD Manager</em> that you can use to download other components from the SDK
-repository site. The tool provides a graphical UI that lets you browse the
-repository, select new or updated components for download, and then install them
-in your SDK. </p>
+<p>The SDK uses a modular structure that separates the major parts of the SDK
+&mdash; Android platform versions, add-ons, tools, samples, and the API
+documentation &mdash; into a set of separately installable components. The SDK
+starter package, which you've already downloaded, includes only a single
+component: the latest version of the SDK Tools. To develop any Android
+application, you also need to download at least one Android platform into your
+environment, although downloading additional components is highly recommended.
+See <a href="#which">Which components do I need?</a> for information about
+which components are required and which are optional.</p>
 
-<p>There are several types of SDK components available:</p>
+<p>The SDK repository offers these types of components:</p>
 
 <ul>
-<li><strong>SDK Tools</strong> (available pre-installed in the Android SDK
+<li><strong>SDK Tools</strong> (pre-installed in the Android SDK starter
 package) &mdash; Contains the full set of SDK tools for developing, debugging,
 and testing your application code and UI. You can read about the tools in the <a
 href="{@docRoot}guide/developing/tools/index.html">Dev Guide</a> and access them
 in the <code>&lt;sdk&gt;/tools/</code> directory. </li>
 
-<li><strong>Android platforms</strong> &mdash; An SDK platform component is
+<li><strong>Android platforms</strong> &mdash; An SDK platform is
 available for every production Android platform deployable to Android-powered
 devices. Each platform component includes a fully compliant Android library and
 system image, sample code, emulator skins, and any version specific tools. For
@@ -180,30 +203,133 @@
 <code>com.google.android.maps</code> library. You can also add additional
 repositories, so that you can download other SDK add-ons, where available. </li>
 
+<li><strong>USB Driver for Windows</strong> &mdash; Contains driver files 
+that you can install on your Windows computer, so that you can run and debug
+your applications on an actual device. You <em>do not</em> need the USB driver unless
+you plan to debug your application on an actual Android-powered device. If you
+develop on Mac OS X or Linux, you do not need a special driver to debug 
+your application on an Android-powered device.</li>
+
+<li><strong>Samples</strong> &mdash; Contains the sample code and apps available
+for each Android development platform. If you are just getting started with
+Android development, make sure to download the samples to your SDK. <!--The download
+includes not only a set of very useful sample apps, but also the source for <a
+href="{@docRoot}resources/tutorials/hello-world.html">Hello World</a> and other
+tutorials. --></li>
+
 <li><strong>Documentation</strong> &mdash; Contains a local copy of the latest
-multiversion documentation for the Android framework API. 
-</li>
+multiversion documentation for the Android framework API. </li>
 </ul>
 
-<p>To develop <em>any</em> Android application, even if you are following the <a
-href="{@docRoot}resources/tutorials/hello-world.html">Hello World</a> tutorial, you
-<strong>must download at least one Android platform</strong> into your SDK.
-Typically, you will want to download multiple platforms, so that you can build
-your application on the lowest version you want to support, but test against
+<p>To download components, use the graphical UI of the Android SDK and AVD
+Manager, shown in Figure 1, to browse the SDK repository, select new or updated
+components for download, and then install the selected components in your SDK
+environment. </p>
+
+<div style="TEXT-ALIGN:left;width:600px;"> 
+<img src="/images/sdk_manager_packages.png" 
+style="padding-bottom:0;margin-bottom:0;" /> 
+<p class="caption" style="margin:0 0 1.5em 1em;padding:0 0 0
+1em;"><strong>Figure 1.</strong> The Android SDK and AVD Manager's 
+<strong>Available Packages</strong>
+panel, which shows the SDK components that are
+available for you to download into your environment. </p>
+</div> 
+
+
+<h3 id="which">Which components do I need?</h3>
+
+<p>The SDK repository contains a range of components that you can download.
+Use the table below to determine which components you need, based on whether you
+want to set up a basic (but functionnal) development environment or a
+recommended or full development environment: </p>
+
+<table style="width:95%">
+
+<tr>
+<th>Environment</th>
+<th>SDK&nbsp;Component</th>
+<th>Comments</th>
+</tr>
+
+<tr>
+<td rowspan="2" style="font-size:.9em;background-color:#FFE;">Basic</td>
+<td style="font-size:.9em;background-color:#FFE;color:gray">SDK Tools</td>
+<td style="font-size:.9em;background-color:#FFE;color:gray">If you've installed
+the SDK starter package, then you already have this component preinstalled. The
+SDK Tools component is required &mdash; you can't develop or build an application 
+without it. </td>
+</tr>
+
+<tr>
+<td style="font-size:.9em;background-color:#FFE;">SDK platform</td>
+<td style="font-size:.9em;background-color:#FFE;">You need to download <strong
+style="color:red">at least one platform</strong> into your environment, so that
+you will be able to compile your application and set up an Android Virtual
+Device (AVD) to run it on (in the emulator). To start with, just download the
+latest version of the platform. Later, if you plan to publish your application,
+you will want to download other platforms as well, so that you can test your
+application on the full range of Android platform versions that your customers
+are using.</td>
+</tr>
+<tr>
+<td colspan="3" style="border:none;text-align:center;font-size:1.5em;font-weight:bold;">+</td>
+</tr>
+<tr>
+<td rowspan="3">Recommended</td>
+<td>Documentation</td>
+<td>The Documentation component is useful because it lets you work offline and
+also look up API reference information from inside Eclipse.</td>
+</tr>
+
+<tr>
+<td>Samples</td>
+<td>The Samples components give you source code that you can use to learn about
+Android, load as a project and run, or reuse in your own app. Note that multiple
+samples components are available &mdash; one for each Android platform version. When
+you are choosing a samples component to download, select the one whose API Level
+matches the API Level of the Android platform that you plan to use.</td>
+</tr>
+<tr>
+<td>Usb Driver</td>
+<td>The Usb Driver component is needed only if you are developing on Windows and
+have an Android-powered device on which you want to install your application for
+debugging and testing. For Mac OS X and Linux platforms, no
+special driver is needed.</td>
+</tr>
+<tr>
+<td colspan="3" style="border:none;text-align:center;font-size:1.5em;font-weight:bold;">+</td>
+</tr>
+<tr>
+<td rowspan="3">Full</td>
+<td>Google APIs</td>
+<td>The Google APIs add-on gives your application access to the Maps external
+library, which makes it easy to display and manipulate Maps data in your
+application. </td>
+</tr>
+<tr>
+<td>Additional SDK Platforms</td>
+<td>If you plan to publish your application, you will want to download
+additional platforms corresponding to the Android platform versions on which you
+want the application to run. The recommended approach is to compile your
+application against the lowest version you want to support, but test it against
 higher versions that you intend the application to run on. You can test your
-applications on different platforms by running in an 
-Android Virtual Device (AVD) on the Android emulator. </p>
+applications on different platforms by running in an Android Virtual Device
+(AVD) on the Android emulator.</td>
+</tr>
+
+</table>
 
 <p>For step-by-step instructions on how to use the Android SDK and AVD Manager
 to add components, see the <a href="{@docRoot}sdk/adding-components.html">Adding
 SDK Components</a> document. </p>
 
-<p>For release notes and other detailed information about individual SDK 
+<p>For revision notes and other detailed information about individual SDK 
 components, see the documents listed under "Downloadable SDK Components" in 
 the navigation at left.</p>
 
 
-<h2 id="sdkContents">Explore the SDK</h2>
+<h2 id="sdkContents">Step 5. Exploring the SDK</h2>
 
 <p>Once you've installed the SDK and downloaded the platforms, documentation,
 and add-ons that you need, open the SDK directory and take a look at what's
@@ -236,7 +362,7 @@
 <tr>
 <td style="width:2em;border-bottom-color:white;"></td>
 <td colspan="2"><code>&lt;platform&gt;/</code></td>
-<td>Platform version directory, for example "Android 1.6". All platform version 
+<td>Platform version directory, for example "android-1.6". All platform version 
 directories contain a similar set of files and subdirectory structure.</td>
 </tr>
 
@@ -257,13 +383,6 @@
 <tr>
 <td style="width:2em;border-bottom-color:white;"></td>
 <td style="width:2em;border-bottom-color:white;"></td>
-<td><code>samples/</code></td>
-<td>Contains a wide variety of sample applications that you can load as projects
-into your development environment, compile, and run on the emulator.</td>
-</tr>
-<tr>
-<td style="width:2em;border-bottom-color:white;"></td>
-<td style="width:2em;border-bottom-color:white;"></td>
 <td><code>skins/</code></td>
 <td>A set of emulator skins available for the platform version. Each skin is
 designed for a specific screen resolution.</td>
@@ -288,6 +407,9 @@
 version.</td>
 </tr>
 <tr>
+<td colspan="3"><code>samples/</code></td>
+<td>Sample code and apps that are specific to platform version.</td>
+</tr>
 <td colspan="3"><code>tools/</code></td>
 <td>Contains the set of development and profiling tools available to you, such
 as the emulator, the <code>android</code> tool, adb, ddms, and more.</td>
@@ -300,7 +422,7 @@
 </tr>
 <tr>
 <td colspan="3"><code>SDK Setup.exe</code></td>
-<td>For Windows SDK only. A shortcut that launches the Android SDK and AVD 
+<td>Windows SDK only. A shortcut that launches the Android SDK and AVD 
 Manager tool, which you use to add components to your SDK. </td>
 </tr>
 <!--<tr>
@@ -315,6 +437,19 @@
 <p>Once you have completed installation, you are ready to
 begin developing applications. Here are a few ways you can get started: </p>
 
+<p><strong>Set up the Hello World application</strong></p>
+<ul>
+  <li>If you have just installed the SDK for the first time, <a 
+  href="{@docRoot}resources/tutorials/hello-world.html">go to the Hello
+  World tutorial</a>. The tutorial takes you step-by-step through the process
+  of setting up your first Android project, including setting up an Android
+  Virtual Device (AVD) on which to run the application. 
+</li>
+</ul>
+
+<p class="caution">Following the Hello World tutorial is an essential 
+first step in getting started with Android development. </p>
+
 <p><strong>Learn about Android</strong></p>
 <ul>
   <li>Take a look at the <a href="{@docRoot}guide/index.html">Dev
@@ -329,7 +464,7 @@
   href="{@docRoot}reference/packages.html">Reference</a> tab</li>
 </ul>
 
-<p><strong>Explore the SDK</strong></p>
+<p><strong>Explore the development tools</strong></p>
 <ul>
   <li>Get an overview of the <a
   href="{@docRoot}guide/developing/tools/index.html">development
@@ -340,15 +475,28 @@
   </li>
 </ul>
 
-<p><strong>Explore some code</strong></p>
+<p><strong>Follow the Notepad tutorial</strong></p>
+
 <ul>
-  <li>Set up a <a href="{@docRoot}resources/tutorials/hello-world.html">Hello
-  World application</a> (highly recommended, especially for Eclipse users)</li>
-  <li>Follow the <a href="{@docRoot}resources/tutorials/notepad/index.html">
-  Notepad Tutorial</a> to build a full Android application </li>
-  <li>Create a new project for one of the other sample applications
-  included in <code><em>&lt;sdk&gt;</em>/platforms/<em>&lt;platform&gt;</em>/samples</code>, 
-  then compile and run it in your development environment</li>
+  <li>The <a href="{@docRoot}resources/tutorials/notepad/index.html">
+  Notepad Tutorial</a> shows you how to build a full Android application 
+  and provides  helpful commentary on the Android system and API. The 
+  Notepad tutorial helps you bring together the important design
+  and architectural concepts in a moderately complex application. 
+  </li>
+</ul>
+<p class="caution">Following the Notepad tutorial is an excellent 
+second step in getting started with Android development. </p>
+
+<p><strong>Explore some code</strong></p>
+
+<ul>
+  <li>The Android SDK includes sample code and applications for each platform
+version. You can browse the samples in the <a 
+href="{@docRoot}resources/index.html">Resources</a> tab or download them
+into your SDK using the Android SDK and AVD Manager. Once you've downloaded the
+samples, you'll find them in
+<code><em>&lt;sdk&gt;</em>/samples/<em>&lt;platform&gt;/</em></code>. </li>
 </ul>
 
 <p><strong>Visit the Android developer groups</strong></p>
@@ -361,7 +509,6 @@
   community is like.</li>
 </ul>
 
-
 <h2 id="troubleshooting">Troubleshooting</h2>
 
 <h3>Ubuntu Linux Notes</h3>
@@ -402,4 +549,4 @@
   in the <a href="requirements.html">System Requirements</a>.
   In particular, note that some Linux distributions may include JDK 1.4 or Gnu
   Compiler for Java, both of which are not supported for Android development.</li>
-</ul>
\ No newline at end of file
+</ul>
diff --git a/docs/html/sdk/requirements.jd b/docs/html/sdk/requirements.jd
index c1f74ad..cb9cdf3 100644
--- a/docs/html/sdk/requirements.jd
+++ b/docs/html/sdk/requirements.jd
@@ -2,48 +2,56 @@
 @jd:body
 
 <p>The sections below describe the system and software requirements for developing 
-Android applications using the Android Development Tools, revision 3. </p>
+Android applications using the Android SDK. </p>
 
 <h3>Supported Operating Systems</h3>
 <ul>
   <li>Windows XP (32-bit) or Vista (32- or 64-bit)</li>
-  <li>Mac OS X 10.4.8 or later (x86 only)</li>
+  <li>Mac OS X 10.5.8 or later (x86 only)</li>
   <li>Linux (tested on Linux Ubuntu Hardy Heron)
     <ul>
       <li>64-bit distributions must be capable of running 32-bit applications. 
       For information about how to add support for 32-bit applications, see
-      the <a href="installing.html#troublehooting">Ubuntu Linux
+      the <a href="installing.html#troubleshooting">Ubuntu Linux
 installation notes</a>.</li>
     </ul>
   </li>
 </ul>
 
 <h3>Supported Development Environments</h3>
-<ul>
-  <li>Eclipse IDE
+
+<h4 style="margin-top:.25em"><em>Eclipse IDE</em></h4>
     <ul>
-      <li><a href="http://www.eclipse.org/downloads/">Eclipse</a> 3.4 (Ganymede) or 3.5 (Galileo)
-        <ul>
-        <li>Note: Eclipse 3.3 has not been tested with the latest version of 
-ADT and support can no longer be guaranteed. We suggest you upgrade to Eclipse
-3.4 or 3.5.</li>
-        <li>Recommended Eclipse IDE packages: Eclipse IDE for Java EE
-Developers, Eclipse IDE for Java Developers, Eclipse for RCP/Plug-in
-Developers, or Eclipse Classic (3.5.1+)</li>
-        <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin
-(included in most Eclipse IDE packages) </li>
-        </ul>
-      </li>     
-      <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
-      <li><a href="eclipse-adt.html">Android Development Tools
-plugin</a> (optional)</li>
+      <li>Eclipse 3.4 (Ganymede) or 3.5 (Galileo)
+      <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin (included
+in most Eclipse IDE packages) </li>
+      <li>If you need to install or update Eclipse, you can download it from <a
+href="http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a>. 
+
+      <p>Several types of Eclipse packages are available for each platform. For
+developing Android applications, we recommend that you install one of these
+packages: </p>
+         <ul>
+           <li>Eclipse IDE for Java EE Developers</li>
+           <li>Eclipse IDE for Java Developers</li>
+           <li>Eclipse for RCP/Plug-in Developers</li>
+           <li>Eclipse Classic (versions 3.5.1 and higher)</li>
+         </ul>
+      </li>
+      <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK
+6</a> (JRE alone is not sufficient)</li>
+      <li><a href="eclipse-adt.html">Android Development Tools plugin</a>
+(optional)</li>
       <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
     </ul>
-  </li>
-  <li>Other development environments or IDEs
+
+
+<h4><em>Other development environments or IDEs</em></h4>
     <ul>
-      <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
-      <li><a href="http://ant.apache.org/">Apache Ant</a> 1.6.5 or later for Linux and Mac, 1.7 or later for Windows</li>
+      <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK
+6</a> (JRE alone is not sufficient)</li>
+      <li><a href="http://ant.apache.org/">Apache Ant</a> 1.6.5 or later for
+Linux and Mac, 1.7 or later for Windows</li>
       <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
     </ul>
   </li>
@@ -53,7 +61,47 @@
 particular, note that some Linux distributions may include JDK 1.4 or Gnu Compiler for Java, both of which are not supported for Android development. </p>
 
 <h3>Hardware requirements</h3>
-<ul>
-  <li>For the base SDK package, at least 600MB of available disk space. For each platform downloaded into the SDK, an additional 100MB is needed. </li>
-</ul>
+
+<p>The Android SDK requires disk storage for all of the components that you choose to install. The table below provides a rough idea of the disk-space requirements to expect, based on the components that you plan to use. </p>
+
+<table>
+<tr>
+<th>Component type</th>
+<th>Approximate size</th>
+<th>Comments</th>
+</tr>
+<tr>
+<td>SDK Tools</td>
+<td>50 MB</td>
+<td>Required.</td>
+</tr>
+<tr>
+<td>Android platform (each)</td>
+<td>150 MB</td>
+<td>At least one platform is required.</td>
+</tr>
+<tr>
+<td>SDK Add-on (each)</td>
+<td>100 MB</td>
+<td>Optional.</td>
+</tr>
+<tr>
+<td>USB Driver for Windows</td>
+<td>10 MB</td>
+<td>Optional. For Windows only.</td>
+</tr>
+<tr>
+<td>Samples (per platform)</td>
+<td>10M</td>
+<td>Optional.</td>
+</tr>
+<tr>
+<td>Offline documentation</td>
+<td>250 MB</td>
+<td>Optional.</td>
+</tr>
+</table>
+
+<p>Note that the disk-space requirements above are <em>in addition to</em> those of the Eclipse IDE, JDK, or other prerequisite tools that you may need to install on your development computer.</p>
+
 
diff --git a/docs/html/sdk/sdk_toc.cs b/docs/html/sdk/sdk_toc.cs
index b790218..a845e55 100644
--- a/docs/html/sdk/sdk_toc.cs
+++ b/docs/html/sdk/sdk_toc.cs
@@ -24,7 +24,7 @@
           <span style="display:none" class="zh-TW">下載</span>
         </a></li>
       <li><a href="<?cs var:toroot ?>sdk/installing.html">
-          <span class="en">Installing</span>
+          <span class="en">Installing the SDK</span>
           <span style="display:none" class="de">Installieren</span>
           <span style="display:none" class="es">Instalación</span>
           <span style="display:none" class="fr">Installation</span>
@@ -82,10 +82,9 @@
       </li>
     </ul>
     <ul>
-      <li><a href="<?cs var:toroot ?>sdk/tools-notes.html">SDK Tools, r4</a>
-      </li>
+      <li><a href="<?cs var:toroot ?>sdk/tools-notes.html">SDK Tools, r5</a> <span class="new">new!</span></li>
       <li><a href="<?cs var:toroot ?>sdk/win-usb.html">USB Driver for
-Windows, r3</a> <span class="new">new!</span>
+      Windows, r3</a>
       </li>
     </ul>
   </li>
@@ -101,7 +100,8 @@
       <span style="display:none" class="zh-TW"></span>
       </h2>
     <ul>
-      <li><a href="<?cs var:toroot ?>sdk/eclipse-adt.html">Installing and Updating
+      <li><a href="<?cs var:toroot ?>sdk/eclipse-adt.html">ADT
+      <?cs var:adt.zip.version ?></a>  <span class="new">new!</span>
       <span style="display:none" class="de"></span>
       <span style="display:none" class="es"></span>
       <span style="display:none" class="fr"></span>
@@ -110,9 +110,6 @@
       <span style="display:none" class="zh-CN"></span>
       <span style="display:none" class="zh-TW"></span></a>
       </li>
-      <li><a href="<?cs var:toroot ?>sdk/adt-notes.html">ADT <?cs var:adt.zip.version ?> 
-          </a>
-      </li>
     </ul>
   </li>
   <li>
@@ -144,8 +141,8 @@
     <ul>
       <li><a href="<?cs var:toroot ?>sdk/requirements.html">SDK System Requirements</a></li>
       <li><a href="<?cs var:toroot ?>sdk/terms.html">SDK Terms and Conditions</a></li>
-      <li><a href="<?cs var:toroot ?>sdk/RELEASENOTES.html">SDK Release
-            Notes</a></li>
+      <!-- <li><a href="<?cs var:toroot ?>sdk/RELEASENOTES.html">SDK Release
+            Notes</a></li> -->
       <li><a href="<?cs var:toroot ?>sdk/older_releases.html">SDK
             Archives</a></li>
 
diff --git a/docs/html/sdk/tools-notes.jd b/docs/html/sdk/tools-notes.jd
index 1b0d8f0..3db226f 100644
--- a/docs/html/sdk/tools-notes.jd
+++ b/docs/html/sdk/tools-notes.jd
@@ -1,39 +1,131 @@
-page.title=SDK Tools Notes
+page.title=SDK Tools
 @jd:body
 
-<p>SDK Tools is a downloadable component for the Android SDK. It
-includes the complete set of development and debugging tools for the Android
-SDK.</p>
+<p>SDK Tools is a downloadable component for the Android SDK. It includes the
+complete set of development and debugging tools for the Android SDK. </p>
 
-<p>This document provides version-specific information about SDK Tools
-releases. To keep up-to-date on new releases, make sure that you view this page
-at <a
-href="http://developer.android.com/sdk/tools-notes.html">http://developer.
-android.com/sdk/tools-notes.html</a>.</p>
+<p>If you are new to the Android SDK, the <a 
+href="{@docRoot}sdk/index.html">SDK starter package</a> installs the
+latest revision of the SDK Tools in the <code>&lt;sdk&gt;/tools</code> directory.</p>
 
-<p>To install SDK Tools in your SDK environment (and replace the
-existing tools), use the Android SDK and AVD Manager. For more information, see
-<a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a>. </p>
+<p>If you are already using the SDK Tools, you should update to the latest revision by
+using the Android SDK and AVD Manager (rather than by downloading a new SDK package).
+For more information about how to update, see <a 
+href="{@docRoot}sdk/adding-components.html#UpdatingComponents">Adding SDK Components</a>. </p>
 
-<h2 id="4">SDK Tools, Revision 4</h2>
+<h2 id="notes">Revisions</h2>
 
-<p>December 2009. SDK Tools r4 provides several new features for developers and includes
-fixes for several issues, as described below. </p>
+<p>The sections below provide notes about successive releases of
+the SDK Tools, as denoted by revision number. To determine what revision of the SDK
+Tools you are using, refer to the "Installed Packages" listing in the Android SDK
+and AVD Manager. </p>
 
-<h3>Dependencies</h3>
+<script type="text/javascript">
+function toggleDiv(link) {
+  var toggleable = $(link).parent();
+  if (toggleable.hasClass("closed")) {
+    //$(".toggleme", toggleable).slideDown("fast");
+    toggleable.removeClass("closed");
+    toggleable.addClass("open");
+    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
+  } else {
+    //$(".toggleme", toggleable).slideUp("fast");
+    toggleable.removeClass("open");
+    toggleable.addClass("closed");
+    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
+  }
+  return false;
+}
+</script>
+<style>
+.toggleable {
+padding: .25em 1em;
+}
+.toggleme {
+  padding: 1em 1em 0 2em;
+  line-height:1em;
+}
+.toggleable a {
+  text-decoration:none;
+}
+.toggleable.closed .toggleme {
+  display:none;
+}
+#jd-content .toggle-img {
+  margin:0;
+}
+</style>
+<div class="toggleable opened">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px" />
+SDK Tools, Revision 5</a> <em>(March 2010)</em>
+  <div class="toggleme">
 
-<p>SDK Tools r4 is compatible with ADT 0.9.5 and later, but not
+<dl>
+<dt>Dependencies:</dt>
+<dd><ul>
+<li>If you are developing in Eclipse with ADT, note that SDK Tools r5 is
+designed for use with ADT 0.9.6 and later. After installing SDK Tools r5, we
+highly recommend updating your ADT Plugin to 0.9.6.</li>
+<li>For Mac OS platforms, OS X 10.4.x (Tiger) is no longer
+officially supported. </li>
+</ul>
+</dd>
+
+<dt>SDK and AVD Manager:</dt>
+<dd>
+<ul>
+<li>Fixes SSL download for the standalone version of the SDK Updater.</li>
+<li>Fixes issue with 64-bit JVM on Windows.</li>
+<li>Adds support for platform samples components.</li>
+<li>Improves support for dependency between components.</li>
+<li>AVDs now sorted by API level.</li>
+<li>The AVD creation dialog now enforces a minimum SD card size of 9MB.</li>
+<li>Prevents deletion of running AVDs.</li>
+<li>Settings are now automatically saved, no need to click "Apply".</li>
+</ul>
+</dd>
+
+<dt>Emulator:</dt>
+<dd>
+<ul>
+<li>Emulator now requires SD card to be 9MB or more.</li>
+</ul>
+</dd>
+
+<dt>Layoutopt:</dt>
+<dd>
+<ul>
+<li>Fixes <code>layoutopt.bat</code> to execute correctly on Windows.</li>
+</ul>
+</dd>
+</dl>
+ </div>
+</div>
+
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+SDK Tools, Revision 4</a> <em>(December 2009)</em>
+  <div class="toggleme">
+
+<dl>
+<dt>Dependencies:</dt>
+<dd><p>SDK Tools r4 is compatible with ADT 0.9.5 and later, but not
 compatible with earlier versions. If you are developing in Eclipse with ADT, you
 <strong>must</strong> update your ADT plugin to version 0.9.5 or higher if you
-install SDK Tools r4 in your SDK. </p>
+install SDK Tools r4 in your SDK. </p></dd>
 
-<h3>General notes</h3>
+<dt>General notes:</dt>
+<dd>
 <ul>
 <li>Launcher script now forces GDK_NATIVE_WINDOW=true (linux only), to fix a 
 compatibility issue between GTK and SWT.</li>
 </ul>
+</dd>
 
-<h3>Android SDK and AVD Manager</h3>
+<dt>Android SDK and AVD Manager:</dt>
+<dd>
 <ul>
 <li>AVD Launch dialog now shows scale value.</li>
 <li>Fixes potential NPE in SDK Manager on AVD launch, for older AVD with no 
@@ -41,38 +133,50 @@
 <li>Fixes XML validation issue in on older Java versions.</li>
 <li>No longer forces the use of Java 1.5 on Mac OS X.</li>
 </ul>
+</dd>
 
-<h3>Emulator</h3>
+<dt>Emulator:</dt>
+<dd>
 <ul>
 <li>No longer limits the size of the system partition.</li>
 </ul>
+</dd>
 
-<h3>Ant build tools</h3>
+<dt>Ant build tools:</dt>
+<dd>
 <ul>
 <li>.apk packaging now properly ignores vi swap files as well as hidden files.</li>
 </ul>
+</dd>
+</dl>
+ </div>
+</div>
 
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+SDK Tools, Revision 3</a> <em>(October 2009)</em>
+  <div class="toggleme">
 
-<h2 id="3">SDK Tools, Revision 3</h2>
-
-<p>October 2009. SDK Tools r3 provides several new features for developers and includes
-fixes for several tools issues, as described below. </p>
-
-<h3>Dependencies</h3>
-
-<p>SDK Tools r3 is compatible with ADT 0.9.4 and later, but not
+<dl>
+<dt>Dependencies:</dt>
+<dd><p>SDK Tools r3 is compatible with ADT 0.9.4 and later, but not
 compatible with earlier versions. If you are developing in Eclipse with ADT, you
 <strong>must</strong> update your ADT plugin to version 0.9.4 or higher if you
-install SDK Tools r3 in your SDK. </p>
+install SDK Tools r3 in your SDK.</p>
+</dd>
 
-<h3>Android tool</h3>
+<dt>Android tool:</dt>
+<dd>
 <ul>
 <li>Adds new <code>android create test-project</code> and <code>android update
 test-project</code> commands to allow for greater flexibility in the location of the
 main and test projects.</li>
 </ul>
+</dd>
 
-<h3>DDMS</h3>
+<dt>DDMS:</dt>
+<dd>
 <ul>
 <li>Adds a button to dump HPROF file for running appplications (app must be able
 to write to the sdcard).</li>
@@ -83,8 +187,10 @@
 10.6.</li>
 <li>Fixed screenshot support for devices running 32-bit framebuffer.</li>
 </ul>
+</dd>
 
-<h3>Android SDK and AVD Manager</h3>
+<dt>Android SDK and AVD Manager:</dt>
+<dd>
 <ul>
 <li>Provides a new UI that lets you set options for controlling
 the emulator skin, screen size/density, and scale factor used when launching 
@@ -94,14 +200,17 @@
 <li>Now enforces dependencies between platforms and tools components, and
 between SDK add-ons and platforms.</li>
 </ul>
+</dd>
 
-<h3>Layoutopt, a new tool for optimizing layouts</h3>
+<dt>Layoutopt, a new tool for optimizing layouts:</dt>
 
-<p>The SDK Tools r3 package includes <code>layoutopt</code>, a new command-line 
+<dd><p>The SDK Tools r3 package includes <code>layoutopt</code>, a new command-line 
 tool that helps you optimize your layout hierarchies. When run against your 
 layout files, the tool analyzes their hierarchies and notifies you of 
 inefficiencies and other potential issues. The tool also provides simple 
 solutions for the issues it finds. For usage, see <a 
-href="{@docRoot}guide/developing/tools/layoutopt.html">layoutopt</a>.
-</p>
-
+href="/guide/developing/tools/layoutopt.html">layoutopt</a>.</p>
+</dd>
+</dl>
+ </div>
+</div>
diff --git a/docs/html/sdk/win-usb.jd b/docs/html/sdk/win-usb.jd
index d3dce9e..38b34ed 100644
--- a/docs/html/sdk/win-usb.jd
+++ b/docs/html/sdk/win-usb.jd
@@ -5,7 +5,7 @@
 <div id="qv">
   <h2>In this document</h2>
   <ol>
-    <li><a href="#RevisionNotes">Revision Notes</a></li>
+    <li><a href="#notes">Revisions</a></li>
     <li><a href="#WinUsbDriver">Installing the USB Driver for Windows</a></li>
   </ol>
   <h2>See also</h2>
@@ -34,18 +34,86 @@
 href="{@docRoot}guide/developing/device.html#setting-up">Setting up a
 Device</a> to start development with a device.</p>
 
-<h2 id="RevisionNotes">Revision Notes</h2>
+<h2 id="notes">Revisions</h2>
 
-<h4>Revision 3</h4>
-<p>Adds support for the Nexus One. Released January 2010.</p>
+<p>The sections below provide notes about successive revisions of the USB Driver
+for Windows, as denoted by revision number. To determine what revision of the
+USB Driver for Windows you are using, refer to the "Installed Packages" listing
+in the Android SDK and AVD Manager.</p>
 
-<h4>Revision 2</h4>
-<p>Adds support for the Verizon Droid (or similar hardware on
-other carriers). Released November 2009.</p>
+<script type="text/javascript">
+function toggleDiv(link) {
+  var toggleable = $(link).parent();
+  if (toggleable.hasClass("closed")) {
+    //$(".toggleme", toggleable).slideDown("fast");
+    toggleable.removeClass("closed");
+    toggleable.addClass("open");
+    $(".toggle-img", toggleable).attr("title", "hide").attr("src", (toRoot + "assets/images/triangle-opened.png"));
+  } else {
+    //$(".toggleme", toggleable).slideUp("fast");
+    toggleable.removeClass("open");
+    toggleable.addClass("closed");
+    $(".toggle-img", toggleable).attr("title", "show").attr("src", (toRoot + "assets/images/triangle-closed.png"));
+  }
+  return false;
+}
+</script>
+<style>
+.toggleable {
+padding: .25em 1em;
+}
+.toggleme {
+  padding: 1em 1em 0 2em;
+  line-height:1em;
+}
+.toggleable a {
+  text-decoration:none;
+}
+.toggleable.closed .toggleme {
+  display:none;
+}
+#jd-content .toggle-img {
+  margin:0;
+}
+</style>
 
-<h4>Revision 1</h4>
-<p>This was the initial release of the WinUsb-based driver, with support
-for the T-Mobile G1 and myTouch 3G (and similar devices).</p>
+<div class="toggleable opened">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px" />
+USB Driver for Windows, Revision 3</a> <em>(January 2010)</em>
+  <div class="toggleme">
+
+<dl>
+<dt><p>Adds support for the Nexus One.</p></dt>
+</dl>
+ </div>
+</div>
+
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+USB Driver for Windows, Revision 2</a> <em>(November 2009)</em>
+  <div class="toggleme">
+
+<dl>
+<dt><p>Adds support for the Verizon Droid (or similar hardware on
+other carriers).</p></dt>
+</dl>
+ </div>
+</div>
+
+<div class="toggleable closed">
+  <a href="#" onclick="return toggleDiv(this)">
+        <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px" />
+USB Driver for Windows, Revision 1</a> <em>(October 2009)</em>
+  <div class="toggleme">
+
+<dl>
+<dt><p>Initial release of the WinUsb-based driver, with support
+for the T-Mobile G1 and myTouch 3G (and similar devices).</p></dt>
+</dl>
+ </div>
+</div>
 
 <h2 id="WinUsbDriver">Installing the USB Driver for Windows</h2>
 
@@ -66,21 +134,37 @@
 </div>
 </div>
 
-<p>Before you perform the installation below, you must have the USB
-driver saved to your development computer. To get the USB driver, use
-the AVD and SDK Manager included with the SDK Tools to download the USB driver
-as an SDK component. For more information, read <a
-href="adding-components.html">Adding SDK Components</a>.</p>
 
-<p>Once you have the USB driver saved to your computer, select the
-appropriate procedure below, based on your operating system and whether you're
-installing for the first time or upgrading.</p>
+<p>The sections below provide instructions on how to download the USB Driver
+for Windows and install it on your development computer. </p>
 
-<p>If you are connecting an Android-powered
-device to your computer for the first time, follow the below procedure to
-"Perform a fresh installation." If you have installed one of the older
-USB drivers and would like to upgrade to the latest version, follow the
-procedure to "Upgrade an existing driver."</p>
+<h3>Downloading the USB Driver for Windows</h3>
+
+<p>The USB Driver for Windows is available for download as an optional SDK
+component. You need the driver only if you are developing on Windows and 
+want to connect an Android-powered device to your development environment
+over USB. </p>
+
+<p>To install the driver or upgrade your existing driver to the latest
+revision, you must first download the driver to your development computer. </p>
+
+<p>To download the driver, use the Android SDK and AVD Manager tool that is
+included with the Android SDK. If you haven't yet installed the Android SDK, as
+described in <a href="installing.html">Installing the Android SDK</a>, please do
+so before continuing with the driver installation. </p>
+
+<p>When you are ready to download the driver, follow the instructions given in
+<a href="adding-components.html">Adding SDK Components</a> to launch the Android
+SDK and AVD Manager. From the <strong>Available Packages</strong> panel, select
+"Usb Driver Package" and download it to your computer. The driver files are
+downloaded into the <code>&lt;sdk&gt;\usb_driver</code> directory.</p>
+
+<p>After the download, follow the instructions below to install or upgrade the
+driver, based on your needs and Windows operating system version. If you are
+connecting an Android-powered device to your computer for the first time, follow
+the below procedure to "Perform a fresh installation." If you have installed one
+of the older USB drivers and would like to upgrade to the latest version, follow
+the procedure to "Upgrade an existing driver."</p>
 
 <p>Once you've completed the USB driver installation,
 please see <a
diff --git a/docs/html/sitemap.txt b/docs/html/sitemap.txt
index 5039dfc..b0ec7c9 100644
--- a/docs/html/sitemap.txt
+++ b/docs/html/sitemap.txt
@@ -74,7 +74,6 @@
 http://developer.android.com/sdk/tools-notes.html
 http://developer.android.com/sdk/win-usb.html
 http://developer.android.com/sdk/eclipse-adt.html
-http://developer.android.com/sdk/adt-notes.html
 http://developer.android.com/sdk/ndk/1.6_r1/index.html
 http://developer.android.com/sdk/requirements.html
 http://developer.android.com/sdk/RELEASENOTES.html
