diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
index cf85a34..c77687d 100644
--- a/docs/html/sdk/index.jd
+++ b/docs/html/sdk/index.jd
@@ -2,95 +2,317 @@
 header.hide=1
 page.metaDescription=Download the official Android SDK to develop apps for Android-powered devices.
 
-sdk.win_installer=installer_r20.0.3-windows.exe
-sdk.win_installer_bytes=70495456
-sdk.win_installer_checksum=cf23b95d0c9cd57fac3c3be253171af4
+sdk.win_bundle_download=adt-bundle-windows.zip
+sdk.win_bundle_bytes=417851515
+sdk.win_bundle_checksum=73bdd1168fce0e36a27255a4335c865d
 
-sdk.win_download=android-sdk_r20.0.3-windows.zip
-sdk.win_bytes=90379469
-sdk.win_checksum=cd895c79201f7f02507eb3c3868a1c5e
+sdk.mac_bundle_download=adt-bundle-mac.zip
+sdk.mac_bundle_bytes=382957959
+sdk.mac_bundle_checksum=a320f8bbaee8572a36e68c434564bdd0
 
-sdk.mac_download=android-sdk_r20.0.3-macosx.zip
-sdk.mac_bytes=58218455
-sdk.mac_checksum=07dc88ba2c0817ef178a665d002831bf
+sdk.linux_bundle_download=adt-bundle-linux.zip
+sdk.linux_bundle_bytes=411217430
+sdk.linux_bundle_checksum=b0590fe9c1533da9b20ea65525b77677
 
-sdk.linux_download=android-sdk_r20.0.3-linux.tgz
-sdk.linux_bytes=82616305
-sdk.linux_checksum=0d53c2c31d6b5d0cf7385bccd0b06c27
+
+
+sdk.win_installer=installer_r21-windows.exe
+sdk.win_installer_bytes=77523031
+sdk.win_installer_checksum=29ca8cb8f0bc8db627fa2adc2139a3cc
+
+sdk.win_download=android-sdk_r21-windows.zip
+sdk.win_bytes=99093893
+sdk.win_checksum=7311452823470365f7975a545f8a2be4
+
+sdk.mac_download=android-sdk_r21-macosx.zip
+sdk.mac_bytes=65792626
+sdk.mac_checksum=67e46adca90dd18d7291443f6c15d6af
+
+sdk.linux_download=android-sdk_r21-linux.tgz
+sdk.linux_bytes=91378351
+sdk.linux_checksum=7f8d73b629f808cdcfc9f9900bbd7580
+
+
+
+
 
 @jd:body
 
 <style type="text/css">
-  .offline { display:none; }
+  .offline {display:none;}
 </style>
 
-<div class="wrap">
 
-<div class="col-13">&nbsp;</div><!-- provides top margin for content -->
+<div style="position:relative;height:660px;">
 
-<div class="col-7" style="margin-left:0">
-  <img src="{@docRoot}images/sdk-cube.png" alt="" />
+
+<div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
+<div class="col-13" style="margin:0;">&nbsp;</div><!-- provides top margin for content -->
+
+<h1 id="tos-header" style="margin-top:0">Get the Android SDK</h1>
+
+
+
+<p class="sdk-terms-intro">Before installing the Android SDK, you must agree to the following terms and conditions.</p>
+
+<div class="sdk-terms" onfocus="this.blur()">
+<h2 class="norule">Terms and Conditions</h2>
+This is the Android Software Development Kit License Agreement
+
+<h3>1. Introduction</h3>
+1.1 The Android Software Development Kit (referred to in this License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of this License Agreement. This License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+
+1.2 “Android” means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
+
+1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
+
+<h3>2. Accepting this License Agreement</h3>
+2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use the SDK if you do not accept this License Agreement.
+
+2.2 By clicking to accept, you hereby agree to the terms of this License Agreement.
+
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries including the country in which you are resident or from which you use the SDK.
+
+2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to this License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
+
+
+<h3>3. SDK License from Google</h3>
+3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable and non-exclusive license to use the SDK solely to develop applications to run on the Android platform.
+
+3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+
+3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+
+3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.
+
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not this License Agreement.
+
+3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
+
+3.7 Nothing in this License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+
+3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
+
+
+<h3>4. Use of the SDK by You</h3>
+4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under this License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
+
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) this License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
+
+4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
+
+4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
+
+4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
+
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under this License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
+
+
+<h3>5. Your Developer Credentials</h3>
+5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
+
+
+<h3>6. Privacy and Information</h3>
+6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
+
+6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
+
+
+<h3>7. Third Party Applications</h3>
+7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
+
+7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
+
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, this License Agreement does not affect your legal relationship with these third parties.
+
+
+<h3>8. Using Android APIs</h3>
+8.1 Google Data APIs
+
+8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
+
+8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
+
+
+<h3>9. Terminating this License Agreement</h3>
+9.1 This License Agreement will continue to apply until terminated by either you or Google as set out below.
+
+9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
+
+9.3 Google may at any time, terminate this License Agreement with you if:
+(A) you have breached any provision of this License Agreement; or
+(B) Google is required to do so by law; or
+(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
+(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
+
+9.4 When this License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst this License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
+
+
+<h3>10. DISCLAIMER OF WARRANTIES</h3>
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+
+10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
+
+10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+
+
+<h3>11. LIMITATION OF LIABILITY</h3>
+11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
+
+<h3>12. Indemnification</h3>
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with this License Agreement.
+
+
+<h3>13. Changes to the License Agreement</h3>
+13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
+
+
+<h3>14. General Legal Terms</h3>
+14.1 This License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
+
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in this License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
+
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of this License Agreement is invalid, then that provision will be removed from this License Agreement without affecting the rest of this License Agreement. The remaining provisions of this License Agreement will continue to be valid and enforceable.
+
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to this License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of this License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to this License Agreement.
+
+14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
+
+14.6 The rights granted in this License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under this License Agreement without the prior written approval of the other party.
+
+14.7 This License Agreement, and your relationship with Google under this License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from this License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+
+
+<em>November 13, 2012</em>
 </div>
 
 
-<div class="col-6" style="margin-right:0;">
-  
-<div id="intro" style="position:absolute;width:inherit">
+
+
+<div id="next-steps" style="display:none;position:absolute;width:inherit">
+  <p>Now that you've downloaded the Android SDK, you don't need to return here
+  for SDK updates. The SDK tools allow you to
+  install additional packages and future updates from the SDK Manager.</p>
+  <p>For instructions about setting up your Android SDK for the first time,
+  read <a id="next-link" href="{@docRoot}sdk/installing/bundle.html">Setting
+  Up the ADT Bundle</a>.</p>
+
+</div><!-- end next-steps -->
+
+
+
+<div id="sdk-terms-form">
+<p>
+<input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
+<label id="agreeLabel" for="agree">I have read and agree with the above terms and conditions</label>
+</p>
+<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
+</div>
+
+
+
+</div><!-- end TOS -->
+
+
+
+<div class="wrap" id="landing">
+
+<div class="col-13">&nbsp;</div><!-- provides top margin for content -->
+
+<div class="col-6" style="margin-left:0">
+
 <h1 style="margin-top:0">Get the Android SDK</h1>
 
   
 <p>The Android SDK provides you the API libraries and developer tools necessary to build, test,
   and debug apps for Android.</p>
 
+<p>If you're a new Android developer, we recommend you download the ADT Bundle
+to quickly start developing apps. It includes the essential
+Android SDK components and a version of the Eclipse IDE with built-in
+<b>ADT (Android Developer Tools)</b> to
+streamline your Android app development.</p>
+
+<p>With a single download, the ADT Bundle
+includes everything you need to begin developing apps:</p>
+<ul>
+<li>Eclipse + ADT plugin</li>
+<li>Android SDK Tools</li>
+<li>Android Platform-tools</li>
+<li>The latest Android platform</li>
+<li>The latest Android system image for the emulator</li>
+</ul>
+
+
 <!-- this appears when viewing the offline docs -->
 <p class="offline">
-To get the latest Android SDK, please visit the web site at <a
+To get the ADT Bundle or stand-alone SDK Tools, please visit the web site at <a
 href="http://developer.android.com/sdk/index.html">developer.android.com/sdk/</a>
 </p>
 
+</div>
+
+
+
+
+<div class="col-7" style="margin-right:0;">
+  <img src="{@docRoot}images/sdk-cube.png" alt="" />
+
 <!-- this appears when viewing the online docs -->
 <div class="online">
-<a class="big button" id="download-button" href="" style="display:none" ></a>
+
+<a class="big button subtitle" id="download-bundle-button"
+href="" style="display:none;width:265px;margin:0 auto;display:block" ></a>
+
 <p id="not-supported">Choose the SDK package for your OS from the table below.</p>
 
-<p style="margin-top:20px;font-size:12px"><a href='' onclick="
-  if ($('.pax').is(':visible')) {
-    $('.pax').slideUp();
-  } else {
-    $('.reqs').slideUp();
-    $('.pax').slideDown();
-  }return false;">Other platforms</a> | 
-  <a href='' onclick="
-  if ($('.reqs').is(':visible')) {
-    $('.reqs').slideUp();
-  } else {
-    $('.pax').slideUp();
-    $('.reqs').slideDown();
-  }return false;">System requirements</a></p>
-</div><!-- end online -->
+</div>
+<!-- end online -->
 
-</div><!-- end intro -->
+</div><!-- end col-7 -->
 
 
 
-<div id="next-steps" class="online" style="display:none;position:absolute;width:inherit">
-  <h1 style="margin-top:0">Get ready to code!</h1>
-  <p><em><span id="filename"></span></em> is now downloading...</p>
-  <p>You'll soon be developing apps for Android! Once the download completes,
-    you need to follow a few steps to set up your environment.</p>
-  <p>To continue, follow the guide to <a href="{@docRoot}sdk/installing/index.html">Installing
-the SDK</a>.</p>
-  
-</div><!-- end next-steps -->
-
-</div><!-- end col-6 -->
-
-
-<div class="col-13">&nbsp;</div><!-- provides padding -->
  
 
-<div class="col-6 reqs" style="margin-left:0;display:none;font-size:12px">
-<h3>Operating Systems</h3>
+<!-- alternative SDK options -->
+<div class="col-13" style="margin:0;">
+
+<p>If you prefer to use an existing version of Eclipse or another IDE,
+you can instead take a more customized approach to installing
+the Android SDK. See the following instructions.</p>
+
+
+<h4 id="ExistingIDE"><a href='' class="expandable"
+  onclick="toggleExpandable(this,'.myide');hideExpandable('.pax,.reqs');return false;"
+  >USE AN EXISTING IDE</a></h4>
+
+<div class="col-13 myide" style="margin:0 0 15px;display:none;">
+
+<p>If you already have an IDE you want to use for Android app development,
+setting up a new SDK requires that you download the SDK Tools, then
+select additional Android SDK packages to install (such as the Android platform
+and system image). If you'll be using an existing version of Eclipse, then you can add
+the ADT plugin to it.</p>
+  <p>
+<a class="button subtitle" id="download-tools-button" href="" style="display:none" ></a>
+  </p>
+
+
+</div>
+
+
+
+
+
+<h4 id="Requirements"><a href='' class="expandable"
+  onclick="toggleExpandable(this,'.reqs');hideExpandable('.pax,.myide');return false;"
+  >SYSTEM REQUIREMENTS</a></h4>
+
+<div class="col-6 reqs" style="margin:0 0 15px;display:none;font-size:12px">
+<h5>Operating Systems</h5>
 <ul>
   <li>Windows XP (32-bit), Vista (32- or 64-bit), or Windows 7 (32- or 64-bit)</li>
   <li>Mac OS X 10.5.8 or later (x86 only)</li>
@@ -104,10 +326,10 @@
 </ul>
 </div>
 
-<div class="col-7 reqs" style="margin-right:0;display:none;font-size:12px">
-<h3>Eclipse IDE</h3>
+<div class="col-7 reqs" style="margin:0 0 15px;display:none;font-size:12px">
+<h5>Eclipse IDE</h5>
     <ul>
-      <li>Eclipse 3.6.2 (Helios) or greater
+      <li><a href="http://eclipse.org/mobile/">Eclipse</a> 3.6.2 (Helios) or greater
 <p class="note"><strong>Note:</strong> Eclipse 3.5 (Galileo) is no longer
 supported with the latest version of ADT.</p></li>
       <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin (included
@@ -120,7 +342,7 @@
     </ul>
 
 
-<h3>Other development environments</h3>
+<h5>Other development environments</h5>
     <ul>
       <li><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">JDK 6</a>
         (JRE alone is not sufficient)</li>
@@ -132,13 +354,21 @@
 
 <p class="note"><strong>Note:</strong> Some Linux distributions may include JDK 1.4 or Gnu Compiler
 for Java, both of which are <em>not</em> supported for Android development. </p>
-</div>
+</div><!-- end col-7 reqs -->
 
-</div>
+
+
+<h4><a href='' class="expandable"
+  onclick="toggleExpandable(this,'.pax');hideExpandable('.myide,.reqs');return false;"
+  >DOWNLOAD FOR OTHER PLATFORMS</a></h4>
+
+</div><!-- end col-13 for lower-half content -->
 
 <script>
   if (location.hash == "#Requirements") {
     $('.reqs').show();
+  } else if (location.hash == "#ExistingIDE") {
+	 $('.ide').show();
   }
 </script>
 
diff --git a/docs/html/sdk/installing/adding-packages.jd b/docs/html/sdk/installing/adding-packages.jd
index 65c5d94..2853db1 100644
--- a/docs/html/sdk/installing/adding-packages.jd
+++ b/docs/html/sdk/installing/adding-packages.jd
@@ -1,5 +1,4 @@
 page.title=Adding Platforms and Packages
-walkthru=1
 
 @jd:body
 
@@ -9,8 +8,8 @@
 SDK package you've downloaded includes only the SDK Tools. To develop an Android app,
 you also need to download at least one Android platform and the latest SDK Platform-tools.</p>
 
-<p>You can update and install SDK packages at any time using the Android SDK Manager.</p>
-
+<ol>
+<li>Launch the SDK Manager.
 <p>If you've used the Windows installer to install the SDK tools, you should already have the
 Android SDK Manager open. Otherwise, you can launch the Android SDK Manager in one of the following
 ways:</p>
@@ -20,14 +19,18 @@
   <li>On Mac or Linux, open a terminal and navigate to the <code>tools/</code> directory in the
 Android SDK, then execute <code>android sdk</code>.</li>
 </ul>
+</li>
 
-<p>When you open the Android SDK Manager, it automatically selects a set of recommended packages.
+<li>When the Android SDK Manager opens, it automatically selects a set of recommended packages,
+as shown in figure 1.
 Simply click <strong>Install</strong> to install the recommended packages. The Android SDK Manager
 installs the selected packages into
-your Android SDK environment. The following sections describe some of the available SDK
-packages and more about which ones we recommend you install.</p>
+your Android SDK environment.</li>
+</ol>
 
-<p>Once you have installed your packages, continue to the next page.</p>
+<p>If you install the recommended packages, you're now ready to start developing apps!
+To start developing, read <a href="{@docRoot}training/basics/firstapp/index.html"
+>Building Your First App</a>.</p>
 
 <img src="/images/sdk_manager_packages.png" alt="" />
 <p class="img-caption"><strong>Figure 1.</strong> The Android SDK Manager shows the
@@ -35,49 +38,17 @@
 
 
 
+<h3>Additional information</h3>
 
-<h2 id="Recommended">Recommended Packages</h2>
+<p>For more information about using the SDK Manager and some of the available packages,
+see the <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> document.</p>
 
-<p>Here's an outlines of the packages required and those we recommend you use:
-</p>
-
-<dl>
-  <dt>SDK Tools</dt>
-  <dd><strong>Required.</strong> Your new SDK installation already has the latest version. Make sure
-you keep this up to date.</dd>
-  <dt>SDK Platform-tools</dt>
-  <dd><strong>Required.</strong> You must install this package when you install the SDK for
-the first time.</dd>
-  <dt>SDK Platform</dt>
-  <dd><strong>Required.</strong>You must download <em>at least one platform</em> into your
-environment so you're able to compile your application. In order to provide the best user experience
-on the latest devices, we recommend that you use the latest platform version as your build target.
-You'll still be able to run your app on older versions, but you must build against the latest
-version in order to use new features when running on devices with the latest version of Android.
-  <p>To get started, download the latest Android version, plus the lowest version you plan
-  to support (we recommend Android 2.2 for your lowest version).</p></dd>
-  <dt>System Image</dt>
-  <dd>Recommended. Although you might have one or more Android-powered devices on which to test
- your app, it's unlikely you have a device for every version of Android your app supports. It's
-a good practice to download system images for all versions of Android your app supports and test
-your app running on them with the <a href="{@docRoot}tools/devices/emulator.html">Android emulator</a>.</dd>
-  <dt>Android Support</dt>
-  <dd>Recommended. Includes a static library that allows you to use some of the latest
-Android APIs (such as <a href="{@docRoot}guide/components/fragments.html">fragments</a>,
-plus others not included in the framework at all) on devices running
-a platform version as old as Android 1.6. All of the activity templates available when creating
-a new project with the <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT Plugin</a>
-require this. For more information, read <a
-href="{@docRoot}tools/extras/support-library.html">Support Library</a>.</dd>
-  <dt>SDK Samples</dt>
-  <dd>Recommended. The samples 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 packages are available &mdash; one for each Android platform version. When
-you are choosing a samples package to download, select the one whose API Level
-matches the API Level of the Android platform that you plan to use.</dd>
-</dl>
+<p>Everything you need to develop Android apps is on this web site, including <a
+href="{@docRoot}design/index.html">design guidelines</a>,
+<a href="{@docRoot}training/index.html">developer training</a>, <a
+href="{@docRoot}reference/packages.html">API reference</a>, and information
+about how you can <a href="{@docRoot}distribute/index.html">distribute your app</a>.
+For additional resources about developing and distributing your app, see the
+<a href="{@docRoot}support.html">Developer Support Resources</a>.</p>
 
 
-<p class="note"><strong>Tip:</strong> For easy access to the SDK tools from a command line, add the
-location of the SDK's <code>tools/</code> and
-<code>platform-tools</code> to your <code>PATH</code> environment variable.</p>
diff --git a/docs/html/sdk/installing/bundle.jd b/docs/html/sdk/installing/bundle.jd
new file mode 100644
index 0000000..243c03d
--- /dev/null
+++ b/docs/html/sdk/installing/bundle.jd
@@ -0,0 +1,44 @@
+page.title=Setting Up the ADT Bundle
+
+@jd:body
+
+
+<p>The ADT Bundle provides everything you need to start developing apps, including
+a powerful IDE based on Eclipse called ADT (Android Developer Tools).
+If you haven't already, go download the <a href="{@docRoot}sdk/index.html"
+>Android ADT Bundle</a>. (If you downloaded the SDK Tools only, for use with an
+existing IDE, you should instead read
+<a href="{@docRoot}sdk/installing/index.html">Setting Up an Existing IDE</a>.)</p>
+
+<h3>Install the SDK and Eclipse IDE</h3>
+<ol>
+<li>Unpack the ZIP file
+(named {@code adt-bundle-&lt;os_platform>.zip}) and save it to an appropriate location,
+such as a "Development" directory in your home directory.</li>
+<li>Open the {@code adt-bundle-&lt;os_platform>/eclipse/} directory and launch
+<strong>eclipse</strong>.</li>
+</ol>
+
+<p>That's it! The IDE is already loaded with the Android Developer Tools plugin and
+the SDK is ready to go. To start developing, read <a href="{@docRoot}training/basics/firstapp/index.html"
+>Building Your First App</a>.</p>
+
+<p class="caution"><strong>Caution:</strong> Do not move any of the files or directories
+from the {@code adt-bundle-&lt;os_platform>} directory. If you move the {@code eclipse}
+or {@code sdk} directory, ADT will not be able to locate the SDK and you'll
+need to manually update the ADT preferences.</p>
+
+<h3>Additional information</h3>
+
+<p>As you continue developing apps, you may need to install additional versions
+of Android for the emulator and other packages such as the library for
+Google Play In-app Billing. To install more packages, use
+the <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a>.</p>
+
+<p>Everything you need to develop Android apps is on this web site, including <a
+href="{@docRoot}design/index.html">design guidelines</a>,
+<a href="{@docRoot}training/index.html">developer training</a>, <a
+href="{@docRoot}reference/packages.html">API reference</a>, and information
+about how you can <a href="{@docRoot}distribute/index.html">distribute your app</a>.
+For additional resources about developing and distributing your app, see the
+<a href="{@docRoot}support.html">Developer Support Resources</a>.</p>
\ No newline at end of file
diff --git a/docs/html/sdk/installing/index.jd b/docs/html/sdk/installing/index.jd
index f049191..24d86cf 100644
--- a/docs/html/sdk/installing/index.jd
+++ b/docs/html/sdk/installing/index.jd
@@ -1,30 +1,37 @@
-page.title=Installing the SDK
-walkthru=1
+page.title=Setting Up an Existing IDE
 
 @jd:body
 
 
-<p>You should have already downloaded the <a href="{@docRoot}sdk/index.html">Android SDK</a>. Now
-you need to set up your development environment.</p>
+<p>You should have already downloaded the <a href="{@docRoot}sdk/index.html#ExistingIDE"
+>Android SDK Tools</a>. (If you downloaded the ADT Bundle, you should instead read
+<a href="{@docRoot}sdk/installing/bundle.html">Setting Up the ADT Bundle</a>.)</p>
 
-<p>The SDK you've downloaded is not the complete SDK environment. It includes only the core SDK tools, which you can
+<p>The SDK Tools package is not the complete SDK environment. It includes only the core SDK tools, which you can
 use to download the rest of the SDK packages (such as the latest system image).</p>
 
 
 <div id="win" class="docs" style="display:none">
-  
+
 <h3>Getting started on Windows</h3>
 <p>Your download package is an executable file that starts an installer. The installer checks your machine
   for required tools, such as the proper Java SE Development Kit (JDK) and installs it if necessary.
   The installer then saves the Android SDK Tools into a default location (or you can specify the location).</p>
 
-<p>Make a note of the name and location of the SDK directory on your system&mdash;you will need to
+<ol>
+<li>Double-click the executable ({@code .exe} file) to start the install.</li>
+<li>Make a note of the name and location in which it saves the SDK on your system&mdash;you will need to
 refer to the SDK directory later, when setting up the ADT plugin and when using
-the SDK tools from the command line.</p>
-
-<p>Once the tools are installed, the installer offers to start the Android SDK Manager. Start it and
-continue with the installation guide by clicking the
-<strong>Next</strong> link on the right.</p>
+the SDK tools from the command line.</li>
+<li>Once the installation completes. the installer offers to start the Android SDK Manager.
+If you'll be using Eclipse, <strong>do not</strong> start the Android SDK Manager,
+and instead move on to <a href="{@docRoot}sdk/installing/installing-adt.html"
+>Installing the Eclipse Plugin</a>.
+<p>If you're using a different IDE,
+start the SDK Manager and read <a href="{@docRoot}sdk/installing/adding-packages.html"
+>Adding Platforms and Packages</a>.</p>
+</li>
+</ol>
 
 </div>
 
@@ -34,16 +41,20 @@
   
 <h3>Getting started on Mac</h3>
 
-<p>Your download package is {@code .zip}.
-  Unpack it to a safe location on your machine. By default, the SDK files are unpacked
-into a directory named <code>android-sdk-mac_x86</code>.</p>
+<ol>
+<li>Unpack the ZIP file you've downloaded. By default, it's unpacked
+into a directory named <code>android-sdk-mac_x86</code>. Move it to an appropriate location on your machine,
+such as a "Development" directory in your home directory.
 
 <p>Make a note of the name and location of the SDK directory on your system&mdash;you will need to
 refer to the SDK directory later, when setting up the ADT plugin and when using
 the SDK tools from the command line.</p>
-
-<p>Now continue with the installation guide by clicking the
-<strong>Next</strong> link on the right.</p>
+</li>
+<li>If you're using Eclipse, move on to <a href="{@docRoot}sdk/installing/installing-adt.html"
+>Installing the Eclipse Plugin</a>. Otherwise, if you're using a different IDE,
+read <a href="{@docRoot}sdk/installing/adding-packages.html"
+>Adding Platforms and Packages</a>.</li>
+</ol>
 
 </div>
 
@@ -54,20 +65,27 @@
   
 <h3>Getting started on Linux</h3>
 
-<p>Your download package is a {@code .tgz}.
-  Unpack it to a safe location on your machine. By default, the SDK files are unpacked
-into a directory named <code>android-sdk-linux_x86</code>.</p>
+<ol>
+<li>Unpack the {@code .tgz} file you've downloaded. By default, the SDK files are unpacked
+into a directory named <code>android-sdk-linux_x86</code>. Move it to an appropriate location on your machine,
+such as a "Development" directory in your home directory.
 
 <p>Make a note of the name and location of the SDK directory on your system&mdash;you will need to
 refer to the SDK directory later, when setting up the ADT plugin and when using
 the SDK tools from the command line.</p>
-
-<p>Now continue with the installation guide by clicking the
-<strong>Next</strong> link on the right.</p>
+</li>
+<li>If you're using Eclipse, move on to <a href="{@docRoot}sdk/installing/installing-adt.html"
+>Installing the Eclipse Plugin</a>. Otherwise, if you're using a different IDE,
+read <a href="{@docRoot}sdk/installing/adding-packages.html"
+>Adding Platforms and Packages</a>.</li>
+</ol>
 
 
-<h4 id="Troubleshooting">Troubleshooting Ubuntu</h4>
+<h5 id="Troubleshooting"><a href='' class="expandable"
+  onclick="toggleExpandable(this,'#ubuntu-trouble');return false;"
+  >Troubleshooting Ubuntu</a></h5>
 
+<div id="ubuntu-trouble" style="display:none">
 <ul>
   <li>If you need help installing and configuring Java on your
     development machine, you might find these resources helpful:
@@ -95,10 +113,12 @@
     </ol>
   </li>
 </ul>
+</div><!-- end ubuntu trouble -->
+
 
 </div>
 
-<p><a href='' onclick='showAll();return false;'>Other platforms</a></p>
+<p style="margin-top:2em;"><a href='' onclick='showAll();return false;'>Information for other platforms</a></p>
 
 <script>
   var $osDocs;
diff --git a/docs/html/sdk/installing/installing-adt.jd b/docs/html/sdk/installing/installing-adt.jd
index feec56df..dcb9c36 100644
--- a/docs/html/sdk/installing/installing-adt.jd
+++ b/docs/html/sdk/installing/installing-adt.jd
@@ -1,9 +1,8 @@
 page.title=Installing the Eclipse Plugin
-walkthru=1
-adt.zip.version=20.0.3
-adt.zip.download=ADT-20.0.3.zip
-adt.zip.bytes=12390954
-adt.zip.checksum=869a536b1c56d0cd920ed9ae259ae619
+adt.zip.version=21.0.0
+adt.zip.download=ADT-21.0.0.zip
+adt.zip.bytes=13556487
+adt.zip.checksum=7db4eaae5df6a34fd853317a2bd8250b
 
 @jd:body
 
@@ -16,21 +15,13 @@
 UI, debug your app, and export signed (or unsigned) app packages (APKs) for distribution.
 </p>
 
-<p>If you will be developing in Eclipse with the ADT Plugin, first make sure that you have a
-suitable version of Eclipse
-installed on your computer as described by the 
-<a href="{@docRoot}sdk/index.html#Requirements">system requirements</a>.</p>
-
 <p>If you need to install Eclipse, you can download it from <a href=
-"http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a>.
-We recommend the "Eclipse Classic" version. Otherwise, you should use a Java or
-RCP version of Eclipse.</p>
+"http://eclipse.org/mobile/">eclipse.org/mobile</a>.</p>
 
 
 <p class="note"><strong>Note:</strong> If you prefer to work in a different IDE, you do not need to
 install Eclipse or ADT. Instead, you can directly use the SDK tools to build and
-debug your application. So if you're not using Eclipse, continue to the next page by clicking
-the <strong>Next</strong> link on the right.</p>
+debug your application.</p>
 
 
 
@@ -70,59 +61,21 @@
     <li>In the "Welcome to Android Development" window that appears, select <strong>Use
 existing SDKs</strong>.</li>
     <li>Browse and select the location of the Android SDK directory you recently
-downloaded.</li>
+downloaded and unpacked.</li>
     <li>Click <strong>Next</strong>.</li>
 </ol>
 
-
-<p>If you haven't encountered any errors, you're done setting up ADT
-  and can continue to <a href="{@docRoot}sdk/installing/next.html">Next Steps</a>.</p>
+<p>Your Eclipse IDE is now set up to develop Android apps, but you need to add
+the latest SDK platform tools and an Android platform to your environment.
+To get these packages for your SDK, continue to
+<a href="{@docRoot}sdk/installing/adding-packages.html">Adding Platforms and Packages</a>.</p>
 
 
 
 
-<h2 id="Updating">Updating the ADT Plugin</h2>
-
-<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 package of the SDK after installing the new revision of
-ADT. To update the SDK Tools package, use the Android SDK Manager, as
-described in <a href="{@docRoot}sdk/exploring.html">Exploring the SDK</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>
-
-<ol>
-    <li>Select <strong>Help</strong> &gt; <strong>Check for Updates</strong>.
-      <p>If there are no updates available, a dialog will say so and you're done.</p></li>
-    <li>If there are updates available, select Android DDMS, Android Development Tools,
-      and Android Hierarchy Viewer, then click <strong>Next</strong>.</li>
-    <li>In the Update Details dialog, click <strong>Next</strong>.</li>
-    <li>Read and accept the license agreement and then click <strong>Finish</strong>.
-      This will download and install the latest version of Android DDMS and
-      Android Development Tools.</li>
-    <li>Restart Eclipse.</li>
-</ol>
 
 
-<p>If you encounter problems during the update, remove the existing ADT plugin from Eclipse, then
-perform a fresh installation, using the instructions for <a href="#installing">Installing the ADT
-Plugin</a>.</p>
-
-
-
-<h2 id="Troubleshooting">Troubleshooting</h2>
+<h2 id="Troubleshooting">Troubleshooting Installation</h2>
 
 <p> If you are having trouble downloading the ADT plugin after following the
 steps above, here are some suggestions: </p>
diff --git a/docs/html/sdk/installing/next.jd b/docs/html/sdk/installing/next.jd
index b1da7c6..cb974a4 100644
--- a/docs/html/sdk/installing/next.jd
+++ b/docs/html/sdk/installing/next.jd
@@ -1,5 +1,4 @@
 page.title=Next Steps
-walkthru=1
 
 @jd:body
 
diff --git a/docs/html/sdk/terms.jd b/docs/html/sdk/terms.jd
index 2b92a6f..74e5254 100644
--- a/docs/html/sdk/terms.jd
+++ b/docs/html/sdk/terms.jd
@@ -1,207 +1,142 @@
 page.title=Terms and Conditions
 hide_license_footer=true
+fullpage=1
 @jd:body
 
-<p>This is the Android Software Development Kit License Agreement.</p>
+<div class="wrap" style="width:940px;">
 
-<h2>
-	1. Introduction
-</h2>
-<p>
-	1.1 The Android Software Development Kit (referred to in this License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of this License Agreement. This License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+<div class="sdk-terms fullsize" onfocus="this.blur()">
+<h1>Terms and Conditions</h1>
 
-</p>
-<p>
-	1.2 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-</p>
-<h2>
-	2. Accepting this License Agreement
-</h2>
-<p>
-	2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use the SDK if you do not accept this License Agreement.
-</p>
-<p>
-	2.2 You can accept this License Agreement by:
-</p>
-<p>
-	(A) clicking to accept or agree to this License Agreement, where this option is made available to you; or
-</p>
-<p>
-	(B) by actually using the SDK. In this case, you agree that use of the SDK constitutes acceptance of the Licensing Agreement from that point onwards.
-</p>
-<p>
-	2.3 You may not use the SDK and may not accept the Licensing Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries including the country in which you are resident or from which you use the SDK.
-</p>
-<p>
-	2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to this License Agreement. If you do not have the requisite authority, you may not accept the Licensing Agreement or use the SDK on behalf of your employer or other entity.
-</p>
-<h2>
-	3. SDK License from Google
-</h2>
-<p>
-	3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non- assignable and non-exclusive license to use the SDK solely to develop applications to run on the Android platform.
-</p>
-<p>
-	3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you. 
+This is the Android Software Development Kit License Agreement
 
-</p>
-<p>
-	3.3 Except to the extent required by applicable third party licenses, you may not copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK. Except to the extent required by applicable third party licenses, you may not load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK. 
-</p>
-<p>
-	3.4 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not this License Agreement.
-</p>
-<p>
-	3.5 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
-</p>
-<p>
-	3.6 Nothing in this License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
-</p>
-<p>
-	3.7 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
-</p>
-<h2>
-	4. Use of the SDK by You
-</h2>
-<p>
-	4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under this License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications. 
-</p>
-<p>
-	4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) this License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
-</p>
-<p>
-	4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, your must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
-</p>
-<p>
-	4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
-</p>
-<p>
-	4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through the Android platform and/or applications for the Android platform, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
-</p>
-<p>
-	4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under this License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
-</p>
-<h2>
-	5. Your Developer Credentials
-</h2>
-<p>
-	5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
-</p>
-<h2>
-	6. Privacy and Information
-</h2>
-<p>
-	6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
-</p>
-<p>
-	6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
-</p>
-<h2>
-	7. Third Party Applications for the Android Platform
-</h2>
-<p>
-	7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
-</p>
-<p>
-	7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
-</p>
-<p>
-	7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, this License Agreement does not affect your legal relationship with these third parties.
-</p>
-<h2>
-	8. Using Android APIs
-</h2>
-<p>
-	8.1 Google Data APIs
-</p>
-<p>
-	8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
-</p>
-<p>
-	8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so. 
+<h3>1. Introduction</h3>
+1.1 The Android Software Development Kit (referred to in this License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of this License Agreement. This License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
 
-</p>
-<h2>
-	9. Terminating this License Agreement
-</h2>
-<p>
-	9.1 This License Agreement will continue to apply until terminated by either you or Google as set out below.
-</p>
-<p>
-	9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
-</p>
-<p>
-	9.3 Google may at any time, terminate this License Agreement with you if:
-</p>
-<p>
-	(A) you have breached any provision of this License Agreement; or
-</p>
-<p>
-	(B) Google is required to do so by law; or
-</p>
-<p>
-	(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-</p>
-<p>
-	(D) Google decides to no longer providing the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
-</p>
-<p>
-	9.4 When this License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst this License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
-</p>
-<h2>
-	10. DISCLAIMER OF WARRANTIES
-</h2>
-<p>
-	10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-</p>
-<p>
-	10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-</p>
-<p>
-	10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-</p>
-<h2>
-	11. LIMITATION OF LIABILITY
-</h2>
-<p>
-	11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-</p>
-<h2>
-	12. Indemnification
-</h2>
-<p>
-	12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with this License Agreement.
-</p>
-<h2>
-	13. Changes to the License Agreement
-</h2>
-<p>
-	13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
-</p>
-<h2>
-	14. General Legal Terms
-</h2>
-<p>
-	14.1 This License Agreement constitute the whole legal agreement between you and Google and govern your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replace any prior agreements between you and Google in relation to the SDK.
-</p>
-<p>
-	14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in this License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
-</p>
-<p>
-	14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of this License Agreement is invalid, then that provision will be removed from this License Agreement without affecting the rest of this License Agreement. The remaining provisions of this License Agreement will continue to be valid and enforceable.
-</p>
-<p>
-	14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to this License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of this License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to this License Agreement.
-</p>
-<p>
-	14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-</p>
-<p>
-	14.6 The rights granted in this License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under this License Agreement without the prior written approval of the other party.
-</p>
-<p>
-	14.7 This License Agreement, and your relationship with Google under this License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from this License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-</p>
-<p>
-	<em>April 10, 2009</em>
-</p>
\ No newline at end of file
+1.2 “Android” means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
+
+1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
+
+<h3>2. Accepting this License Agreement</h3>
+2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use the SDK if you do not accept this License Agreement.
+
+2.2 By clicking to accept, you hereby agree to the terms of this License Agreement.
+
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries including the country in which you are resident or from which you use the SDK.
+
+2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to this License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
+
+
+<h3>3. SDK License from Google</h3>
+3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable and non-exclusive license to use the SDK solely to develop applications to run on the Android platform.
+
+3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+
+3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement.  Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+
+3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.
+
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not this License Agreement.
+
+3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
+
+3.7 Nothing in this License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+
+3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
+
+
+<h3>4. Use of the SDK by You</h3>
+4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under this License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
+
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) this License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
+
+4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
+
+4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
+
+4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
+
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under this License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
+
+
+<h3>5. Your Developer Credentials</h3>
+5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
+
+
+<h3>6. Privacy and Information</h3>
+6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
+
+6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
+
+
+<h3>7. Third Party Applications</h3>
+7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
+
+7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
+
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, this License Agreement does not affect your legal relationship with these third parties.
+
+
+<h3>8. Using Android APIs</h3>
+8.1 Google Data APIs
+
+8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
+
+8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
+
+
+<h3>9. Terminating this License Agreement</h3>
+9.1 This License Agreement will continue to apply until terminated by either you or Google as set out below.
+
+9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
+
+9.3 Google may at any time, terminate this License Agreement with you if:
+(A) you have breached any provision of this License Agreement; or
+(B) Google is required to do so by law; or
+(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
+(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
+
+9.4 When this License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst this License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
+
+
+<h3>10. DISCLAIMER OF WARRANTIES</h3>
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+
+10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
+
+10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+
+
+<h3>11. LIMITATION OF LIABILITY</h3>
+11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
+
+<h3>12. Indemnification</h3>
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with this License Agreement.
+
+
+<h3>13. Changes to the License Agreement</h3>
+13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
+
+
+<h3>14. General Legal Terms</h3>
+14.1 This License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
+
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in this License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
+
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of this License Agreement is invalid, then that provision will be removed from this License Agreement without affecting the rest of this License Agreement. The remaining provisions of this License Agreement will continue to be valid and enforceable.
+
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to this License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of this License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to this License Agreement.
+
+14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
+
+14.6 The rights granted in this License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under this License Agreement without the prior written approval of the other party.
+
+14.7 This License Agreement, and your relationship with Google under this License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from this License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+
+
+<em>November 13, 2012</em>
+</div>
+
+</div>
\ No newline at end of file
diff --git a/docs/html/sitemap.txt b/docs/html/sitemap.txt
index 6924ef3..a3e17a6 100644
--- a/docs/html/sitemap.txt
+++ b/docs/html/sitemap.txt
@@ -450,7 +450,6 @@
 http://developer.android.com/sdk/installing/index.html
 http://developer.android.com/sdk/installing/adding-packages.html
 http://developer.android.com/sdk/installing/installing-adt.html
-http://developer.android.com/sdk/installing/next.html
 http://developer.android.com/sdk/exploring.html
 http://developer.android.com/tools/sdk/ndk/index.html
 http://developer.android.com/tools/workflow/index.html
diff --git a/docs/html/tools/help/adt.jd b/docs/html/tools/help/adt.jd
index cd5bc67..18e7443 100644
--- a/docs/html/tools/help/adt.jd
+++ b/docs/html/tools/help/adt.jd
@@ -23,6 +23,7 @@
         </li>
 
         <li><a href="#refactoring">Layout Factoring Support</a></li>
+        <li><a href="#Updating">Updating the ADT Plugin</h2>
 
       </ol>
 
@@ -525,3 +526,46 @@
     as a string, place the text cursor in the string and press Ctrl-1 to see the refactoring context
     menu.</dd>
   </dl>
+
+
+
+
+
+<h2 id="Updating">Updating the ADT Plugin</h2>
+
+<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 package of the SDK after installing the new revision of
+ADT. To update the SDK Tools package, use the Android SDK Manager, as
+described in <a href="{@docRoot}sdk/exploring.html">Exploring the SDK</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>
+
+<ol>
+    <li>Select <strong>Help</strong> &gt; <strong>Check for Updates</strong>.
+      <p>If there are no updates available, a dialog will say so and you're done.</p></li>
+    <li>If there are updates available, select Android DDMS, Android Development Tools,
+      and Android Hierarchy Viewer, then click <strong>Next</strong>.</li>
+    <li>In the Update Details dialog, click <strong>Next</strong>.</li>
+    <li>Read and accept the license agreement and then click <strong>Finish</strong>.
+      This will download and install the latest version of Android DDMS and
+      Android Development Tools.</li>
+    <li>Restart Eclipse.</li>
+</ol>
+
+
+<p>If you encounter problems during the update, remove the existing ADT plugin from Eclipse, then
+perform a fresh installation, using the instructions for <a href="#installing">Installing the ADT
+Plugin</a>.</p>
diff --git a/docs/html/tools/sdk/ndk/index.jd b/docs/html/tools/sdk/ndk/index.jd
index 9b30ff1..7c8ca71 100644
--- a/docs/html/tools/sdk/ndk/index.jd
+++ b/docs/html/tools/sdk/ndk/index.jd
@@ -44,8 +44,8 @@
 
   <p>The NDK is a toolset that allows you to implement parts
   of your app using native-code languages such as C and C++. For certain types of apps,
-  this can be helpful so that you may reuse existing code libraries written in these
-  languages and possibly increased performance.</p>
+  this can be helpful so you can reuse existing code libraries written in these
+  languages, but most apps do not need the Android NDK.</p>
 
   <p>Before downloading the NDK, you should understand that <strong>the NDK
    will not benefit most apps</strong>. As a developer, you need to balance its benefits
diff --git a/docs/html/tools/tools_toc.cs b/docs/html/tools/tools_toc.cs
index 3c8732f..46665b2 100644
--- a/docs/html/tools/tools_toc.cs
+++ b/docs/html/tools/tools_toc.cs
@@ -10,22 +10,22 @@
     <div class="nav-section-header"><a href="<?cs var:toroot
 ?>sdk/index.html"><span class="en">Download</span></a></div>
     <ul>
+	    <li><a href="<?cs var:toroot ?>sdk/installing/bundle.html">
+	        <span class="en">Setting Up the ADT Bundle</span></a></li>
       <li class="nav-section">
         <div class="nav-section-header">
-          <a href="<?cs var:toroot ?>sdk/installing/index.html"><span class="en">Installing
-    the SDK</span></a></div>
+          <a href="<?cs var:toroot ?>sdk/installing/index.html"><span class="en">Setting Up
+    an Existing IDE</span></a></div>
         <ul>
-          <li><a href="<?cs var:toroot ?>sdk/installing/adding-packages.html">
-              <span class="en">Adding Platforms and Packages</span></a></li>
           <li><a href="<?cs var:toroot ?>sdk/installing/installing-adt.html">
               <span class="en">Installing the Eclipse Plugin</span></a></li>
-          <li><a href="<?cs var:toroot ?>sdk/installing/next.html">
-              <span class="en">Next Steps</span></a></li>
+		    <li><a href="<?cs var:toroot ?>sdk/installing/adding-packages.html">
+		        <span class="en">Adding Platforms and Packages</span></a></li>
         </ul>
       </li>
-          <li><a href="<?cs var:toroot ?>sdk/exploring.html">
-              <span class="en">Exploring the SDK</span></a></li>
-      <li><a href="<?cs var:toroot ?>tools/sdk/ndk/index.html">NDK</a>
+	    <li><a href="<?cs var:toroot ?>sdk/exploring.html">
+	        <span class="en">Exploring the SDK</span></a></li>
+      <li><a href="<?cs var:toroot ?>tools/sdk/ndk/index.html">Download the NDK</a>
       </li>
     </ul>
   </li>
