diff --git a/src/accessories/accessories_toc.cs b/src/accessories/accessories_toc.cs
index 3bc5718..273977b 100644
--- a/src/accessories/accessories_toc.cs
+++ b/src/accessories/accessories_toc.cs
@@ -13,7 +13,7 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<?cs # Table of contents for Dev pdk.?>
+<?cs # Table of contents for adk?>
 <ul id="nav">
   <!-- Accessories -->
   <li class="nav-section">
diff --git a/src/compatibility/compatibility.jd b/src/compatibility/compatibility.jd
deleted file mode 100644
index 5d07a95..0000000
--- a/src/compatibility/compatibility.jd
+++ /dev/null
@@ -1,203 +0,0 @@
-page.title=Overview
-@jd:body
-
-<!--
-    Copyright 2010 The Android Open Source Project     
-
-    Licensed under the Apache License, Version 2.0 (the "License");    
-    you may not use this file except in compliance with the License.   
-    You may obtain a copy of the License at    
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software    
-    distributed under the License is distributed on an "AS IS" BASIS,    
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
-    See the License for the specific language governing permissions and    
-    limitations under the License.   
--->
-
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>
-      In this document
-    </h2>
-    <ol>
-      <li><a href="#arch">Android Low-Level System Architecture</a></li>
-      <li><a href="#pdk">PDK Components</a></li>
-     <li><a href="#inc-ex">PDK Inclusions and Exclusions</a></li>
-      <li><a href="#knownissues">Support and Known Issues</a></li>
-    </ol>
-  </div>
-</div>
-
-<p>Welcome to the Android Platform Development Kit (PDK) Guide! The Android PDK allows partners to port 
-  their drivers as well as develop, optimize, and test against an upcoming Android platform release.
-  The Android PDK includes a set of interfaces for the Android hardware abstraction layer (HAL),
-  platform sources for integration, a binary system image, and HAL and integration documentation.
-  In addition, the PDK also ships with the Android Compatibility Test Suite (CTS).
-</p>
-
-<h2 id="arch">Android Low-Level System Architecture</h2>
-<p>Before you begin porting Android to your hardware, it is important to have an
-understanding of how Android works at a high level. Because your drivers and HAL code interact
-with many layers of Android code, this understanding can help you find
-your way through the many layers of code that are available to you through the AOSP
-(Android Open Source Project) source tree as well as the PDK.
-The following diagram shows a system level view of how Android works:
-</p>
-
-<img src="images/system-architecture.png">
-
-<p class="img-caption"><strong>Figure 1.</strong> Android System Architecture</p>
-
-  <h4>Application framework</h4>
-  <p>This is the level that most application developers concern themselves with. You should be
-    aware of the APIs available to developers as many of them map 1:1 to the underlying HAL
-    interfaces and can provide information as to how to implement your driver.
-  </p>
-
-  <h4>Binder IPC</h4>
-  <p>
-  The Binder Inter-Process Communication mechanism allows the application framework to
-  cross process boundaries and call into the Android system services code. This basically allows
-  high level framework APIs to interact with Android's system services. At the application framework level, all
-  of this communication is hidden from the developer and things appear to "just work." 
-  </p>
-
-  <h4>System services</h4>
-  <p>Most of the functionality exposed through the application framework APIs  must
-    communicate with some sort of system service to access the underlying hardware. Services
-    are divided into modular components with focused functionality 
-    such as the Window Manager, Search Service, or Notification Manager. System services are grouped
-    into two buckets: system and media. The system services include things such as the Window or
-    Notification Manager. The media services include all the services involved in playing and
-    recording media.
-  </p>
-  
-<h4>Hardware abstraction layer (HAL)</h4>
-<p>The HAL serves as a standard interface that allows the Android system to call into the device
-  driver layer while being agnostic about the lower-level implementations of your drivers and hardware.
-  You must implement the corresponding HAL (and driver) for the particular piece of hardware that your product
-  provides. Android does not mandate a standard interaction between your HAL implementation and your device drivers, so
-  you have free reign to do what is best for your situation. However, you must abide by the contract
-  defined in each hardware-specific HAL interface for the Android system to be able
-  to correctly interact with your hardware. HAL implementations are typically built into
-  shared library modules (<code>.so</code> files).
-</p>
-<h4>Linux Kernel</h4>
-<p>For the most part, developing your device drivers is the same as developing a typical Linux device driver.
-  Android uses a specialized version of the Linux kernel with a few special additions such as
-  wakelocks, a memory management system that is more agressive in preserving memory,
-  the Binder IPC driver, and other features that are important for a mobile embedded platform like Android.
-  These additions have less to do with driver development than with the system's functionality. The PDK
-  does not provide kernel sources, so you must provide your own. You can use any version of the kernel that
-  you want as long as it supports the required features, such as the binder driver. However, we recommend
-  using the latest version of the Android kernel. For the latest Android kernel, see
-  <a href="http://source.android.com/source/building-kernels.html" >Building Kernels</a>.
-</p>
-
-
-<h2 id="pdk">PDK Components</h2>
-<p>Now that you have a high-level overview of the Android system, we'll go over the PDK and what it provides
-  to port Android to your product. The PDK provides source files needed to implement
-  your product and a platform binary that lets you build a runnable system image. You can then install
-  this barebones image to test your product with the latest builds of Android. The most important source files
-  included in the PDK are located in the:</p>
-
-  <ul>
-    <li><code>frameworks/native</code> directory</li>
-    <li><code>frameworks/av</code> directory for media, camera, DRM, and the audio framework stack</code></li>
-    <li><code>hardware/libhardware/include/hardware</code> directory for the HAL interfaces </li>
-    <li><code>vendor/pdk/data/cts</code> directory for the CTS binaries</li>
-  </ul>
-</p>
-<p>In addition, the Android PDK includes the following source directories:</p>
-<ul>
-  <li>abi</li>
-  <li>bionic</li>
-  <li>bootable</li>
-  <li>build</li>
-  <li>device</li>
-  <li>external (Chromium and Webkit are not included)</li>
-  <li>hardware</li>
-  <li>libnativehelper</li>
-  <li>pdk</li>
-  <li>prebuilt</li>
-  <li>prebuilts</li>
-  <li>system</li>
-</ul>
-
-  <p>The PDK also contains documentation that is split into three different sections:</p>
-  <ul>
-    <li><a href="{@docRoot}guide/getting_started.html">Getting Started</a> - Explains how to download the PDK source, how the Android build system works, and how to configure a build for your specific product.</li>
-    <li><a href="{@docRoot}guide/hal.html">The Hardware Abstraction Layer</a> - Explains the various HALs provided by Android and the interfaces (C header files) that define them. </li>
-      <li><a href="{@docRoot}guide/reference/files.html">HAL reference</a> - A quick reference for the various HAL interfaces.</li>
-  </ul>
-
-<h3 id="cts">Compatibility Test Suite</h3>
-<p>CTS binaries for ARM, MIPS, and x86 are provided in the corresponding directories in <code>vendor/pdk/data/cts</code>. Only the ARM
-  variant is Google-verified as there is no Nexus device running on any other architecture. Not all of the CTS tests since the
-  complete Android platform is not present. The following CTS tests should work:</p>
-
-<ul>
-      <li>android.bluetooth</li>
-      <li>android.graphics</li>
-      <li>android.graphics2</li>
-      <li>android.hardware</li>
-      <li>android.location</li>
-      <li>android.opengl</li>
-      <li>android.openglperf</li>
-      <li>android.media</li>
-      <li>android.mediastress</li>
-      <li>android.nativemedia.sl</li>
-      <li>android.nativemedia.xa</li>
-      <li>android.net</li>
-      <li>android.renderscript</li>
-    </ul>
-    <p>You can run individual packages such as <code>android.media</code> with:</p>
-    <pre>cts-tradefed run singleCommand cts --skip-device-info --package android.media</pre>
-</ul>
-
-  <p>Because the PDK is missing many components compared to a full Android source tree,
-  there is a PDK test plan that is provided with CTS that limits the tests that are ran when using the PDK. You can run
-  this special test plan with the following command:</p>
-
-  <pre>run cts --plan PDK</pre>
-    
-<p>CTS is always actively under development, so we expect some tests to fail. CTS results
-  for the Galaxy Nexus are provided for you in the
-  the <code>vendor/pdk/data/cts/</code> directory and will show which tests fail on that
-  device. You can safely ignore the failed tests for your devices as well.</p>
-
-  <p>See the <a href="http://source.android.com/compatibility/cts-intro.html">CTS manual</a> for more information on CTS.</p>
-
-<h2 id="inc-ex">PDK Inclusions and Exclusions</h2>
-<p>The PDK is a subset of the complete Android source tree and might be missing things that you might need. Here is a list of what the PDK supports
-  and does not support:</p>
-<ul>
-  <li>Supports building Android apps using the publicly available, standard SDK. Builds with non-public platform APIs are not supported. The JNI build is supported.</li>
-  <li>Supports only <code>en_US</code> locale.</li>
-  <li>Supports only phone layouts. Tablet layouts are not included.</li>
-  <li>Enables support for software navigation buttons by default, which you can disable by setting <code>qemu.jw.mainkeys=1</code>.</li>
-  <li>Builds all binaries with SMP (symmetric multiprocessing) features enabled. This might have a small performance impact on non-SMP CPUs.</li>
-  <li>Includes a minimal amount of Java libraries. Obtain any additional Java libraries from the publicly released Android source tree.</li>
-  <li>Contains a minimum number of applications. Build and install necessary applications as needed.</li>
-  <li>Does not support media streaming.</li>
-  <li>Does not include non-Latin fonts. (set by <code>MINIMAL_FONT_FOOTPRINT</code> variable in <code>BoardConfig.mk</code>).
-  An app might crash if it requires such fonts. </li>
-  <li>Does not support replacing framework resources by using the overlay mechanism.
-    This means all configurations controlled by framework resources are fixed.</li>   
-  <li>Does not support NFC</li>
-  <li>Does not support DRM</li>
-</ul>
-
-<h2 id="knownissues">Support and Known Issues</h2>
-<p>
-For questions or to report issues related with the PDK, send a message to the <a href="https://groups.google.com/a/google.com/forum/?fromgroups#!forum/android-pdk-feedback">android-pdk@google.com</a> mailing list.</p>
-
-<p>The following list describes the known issues with the PDK:</p>
-<ul>
-  <li>After running the CTS (Compatibility Test Suite), <code>android.process.acore</code> crashes. This is caused by
-some missing components in PDK and does not affect the operation of CTS tests.</li>
-</p>
diff --git a/src/compatibility/compatibility_toc.cs b/src/compatibility/compatibility_toc.cs
index ed83355..1e81dcf 100644
--- a/src/compatibility/compatibility_toc.cs
+++ b/src/compatibility/compatibility_toc.cs
@@ -1,19 +1,19 @@
 <!--
-    Copyright 2010 The Android Open Source Project     
+    Copyright 2010 The Android Open Source Project
 
-    Licensed under the Apache License, Version 2.0 (the "License");    
-    you may not use this file except in compliance with the License.   
-    You may obtain a copy of the License at    
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
 
         http://www.apache.org/licenses/LICENSE-2.0
 
-    Unless required by applicable law or agreed to in writing, software    
-    distributed under the License is distributed on an "AS IS" BASIS,    
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
-    See the License for the specific language governing permissions and    
-    limitations under the License.   
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
 -->
-<?cs # Table of contents for Dev pdk.?>
+<?cs # Table of contents for compatibility.?>
 <ul id="nav">
 <!-- Compatibility -->
   <li class="nav-section">
diff --git a/src/devices/build_new_device.jd b/src/devices/build_new_device.jd
deleted file mode 100644
index 7f9cdd2..0000000
--- a/src/devices/build_new_device.jd
+++ /dev/null
@@ -1,411 +0,0 @@
-page.title=Configuring and Building a Product
-@jd:body
-
-<!--
-    Copyright 2010 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-    <ol id="auto-toc">
-    </ol>
-  </div>
-</div>
-
-<p>
-  There are many ways to organize the source files for your device. We'll briefly go over how the
-  Galaxy Nexus implementation was organized as an example, but you can organize your source files
-  and build the way you see fit.
-</p>
-<p>
-  Galaxy Nexus was implemented with a main device configuration named <code>tuna</code> that has
-  two specific variations: <code>maguro</code> for GSM and <code>toro</code> for CDMA. The two
-  device variations inherited common characteristics from <code>tuna</code> by calling
-  <code>tuna</code>'s device Makefile and then defined their own device-specific characteristics.
-  From these device configurations, a product is created with a product definition Makefile that
-  declares product-specific information about the device such as the name and model.
-  You can view the <code>device/samsung/tuna</code>, <code>device/samsung/maguro</code>, and
-  <code>device/samsung/toro</code> directories to see how all of this is setup.
-</p>
-<h2 id="configuring">
-  Configuring a Product
-</h2>
-<p>
-  The following steps describe how to set up products in a way similar to that of the Galaxy Nexus
-  product line:
-</p>
-<ol>
-  <li>Create a <code>device/&lt;company_name&gt;/&lt;device_name&gt;</code> directory for your
-  product. For example, <code>device/samsung/tuna</code>. This directory will contain source code
-  for your device along with the Makefiles to build them.
-  </li>
-
-  <li>Create a <code>device.mk</code> Makefile that declares the files and modules needed for the
-  device. For an example, see <code>device/samsung/tuna/device.mk</code>.
-  </li>
-
-  <li>Create a product definition Makefile to create a specific product based on the device. The
-  following Makefile is taken from <code>device/samsung/tuna/full_tuna.mk</code> as an example.
-  Notice that the product is inheriting from the tuna and full (emulator) devices via their
-  Makefiles, while also declaring the product-specific information such as the name, brand, and model.
-  
-<pre>
-# Inherit from those products. Most specific first.
-$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)
-# This is where we'd set a backup provider if we had one
-#$(call inherit-product, device/sample/products/backup_overlay.mk)
-# Inherit from tuna device
-$(call inherit-product, device/samsung/tuna/device.mk)
-
-# Set those variables here to overwrite the inherited values.
-PRODUCT_NAME := full_tuna
-PRODUCT_DEVICE := tuna
-PRODUCT_BRAND := Android
-PRODUCT_MODEL := Full AOSP on Tuna
-</pre>
-
-    <p>
-      See <a href="{@docRoot}devices/build_new_device.html#prod-def">Product Definition Variables</a> for additional product-specific
-      variables you can add to your Makefiles.
-    </p>    
-  </li>
-
-  <li>Create an <code>AndroidProducts.mk</code> file that points to the product's Makefiles. In
-  this example, only the product definition Makefile is needed. The example below is from
-  <code>device/samsung/tuna/AndroidProducts.mk</code>:
-    <pre>
-#
-# This file should set PRODUCT_MAKEFILES to a list of product makefiles
-# to expose to the build system.  LOCAL_DIR will already be set to
-# the directory containing this file. 
-#
-# This file may not rely on the value of any variable other than
-# LOCAL_DIR; do not use any conditionals, and do not look up the
-# value of any variable that isn't set in this file or in a file that
-# it includes.
-#
-
-PRODUCT_MAKEFILES := \
-    $(LOCAL_DIR)/full_tuna.mk
-</pre>
-  </li>
-
-  <li>Create a <code>BoardConfig.mk</code> Makefile that contains board-specific configurations.
-  For an example, see <code>device/samsung/tuna/BoardConfig.mk</code>.
-  </li>
-
-  <li>Create a <code>vendorsetup.sh</code> file to add your product (a "lunch combo") to the build
-  along with a <a href="{@docRoot}devices/build_system.html#variants">build variant</a> separated by a dash. For example:
-<pre>
-add_lunch_combo &lt;product_name&gt;-userdebug
-</pre>
-  </li>
-
-  <li>At this point, you can create more product variants based on the same device, like how the
-  Galaxy Nexus does with the <code>maguro</code> and <code>toro</code> products. For a complete
-  example, see the Galaxy Nexus implementation in <code>device/samsung/tuna</code>,
-  <code>device/samsung/maguro</code>, and <code>device/samsung/toro</code>.
-  </li>
-
-</ol>
-
-<h3 id="prod-def">
-  Product Definition Variables
-</h3>
-<p>
-  Product-specific variables are defined in the product's Makefile. Variables maintained in a
-  product definition files include:
-</p>
-<table>
-  <tbody>
-    <tr>
-      <th>
-        Parameter
-      </th>
-      <th>
-        Description
-      </th>
-      <th>
-        Example
-      </th>
-    </tr>
-    <tr>
-      <td>
-        PRODUCT_AAPT_CONFIG
-      </td>
-      <td>
-        <code>aapt</code> configurations to use when creating packages
-      </td>
-      <td></td>
-    </tr>
-    <tr>
-      <td>
-        PRODUCT_BRAND
-      </td>
-      <td>
-        The brand (e.g., carrier) the software is customized for, if any
-      </td>
-      <td></td>
-    </tr>
-    <tr>
-      <td>
-        PRODUCT_CHARACTERISTICS
-      </td>
-      <td>
-        <code>aapt</code> characteristics to allow adding variant-specific resources to a package.
-      </td>
-      <td>
-        tablet,nosdcard
-      </td>
-    </tr>
-    <tr>
-      <td>
-        PRODUCT_CONTRIBUTORS_FILE
-      </td>
-      <td>
-        HTML file containing the contributors to the project.
-      </td>
-      <td></td>
-    </tr>
-    <tr>
-      <td>
-        PRODUCT_COPY_FILES
-      </td>
-      <td>
-        List of words like <code>source_path:destination_path</code>. The file at the source path
-        should be copied to the destination path when building this product. The rules for the copy
-        steps are defined in config/Makefile
-      </td>
-      <td></td>
-    </tr>
-    <tr>
-      <td>
-        PRODUCT_DEVICE
-      </td>
-      <td>
-        Name of the industrial design
-      </td>
-      <td>
-        <code>tuna</code>
-      </td>
-    </tr>
-    <tr>
-      <td>
-        PRODUCT_LOCALES
-      </td>
-      <td>
-        A space-separated list of two-letter language code, two-letter country code pairs that
-        describe several settings for the user, such as the UI language and time, date and currency
-        formatting. The first locale listed in PRODUCT_LOCALES is is used if the locale has never
-        been set before.
-      </td>
-      <td>
-        <code>en_GB de_DE es_ES fr_CA</code>
-      </td>
-    </tr>
-    <tr>
-      <td>
-        PRODUCT_MANUFACTURER
-      </td>
-      <td>
-        Name of the manufacturer
-      </td>
-      <td>
-        <code>acme</code>
-      </td>
-    </tr>
-    <tr>
-      <td>
-        PRODUCT_MODEL
-      </td>
-      <td>
-        End-user-visible name for the end product
-      </td>
-      <td></td>
-    </tr>
-    <tr>
-      <td>
-        PRODUCT_NAME
-      </td>
-      <td>
-        End-user-visible name for the overall product. Appears in the Settings &gt; About screen.
-      </td>
-      <td></td>
-    </tr>
-    <tr>
-      <td>
-        PRODUCT_OTA_PUBLIC_KEYS
-      </td>
-      <td>
-        List of Over the Air (OTA) public keys for the product
-      </td>
-      <td></td>
-    </tr>
-    <tr>
-      <td>
-        PRODUCT_PACKAGES
-      </td>
-      <td>
-        Lists the APKs to install.
-      </td>
-      <td>
-        <code>Calendar Contacts</code>
-      </td>
-    </tr>
-    <tr>
-      <td>
-        PRODUCT_PACKAGE_OVERLAYS
-      </td>
-      <td>
-        Indicate whether to use default resources or add any product specific overlays
-      </td>
-      <td>
-        <code>vendor/acme/overlay</code>
-      </td>
-    </tr>
-    <tr>
-      <td>
-        PRODUCT_PROPERTY_OVERRIDES
-      </td>
-      <td>
-        List of property assignments in the format "key=value"
-      </td>
-      <td></td>
-    </tr>
-    <tr>
-      <td>
-        PRODUCT_TAGS
-      </td>
-      <td>
-        list of space-separated words for a given product
-      </td>
-      <td></td>
-    </tr>
-  </tbody>
-</table>
-
-
-<h2 id="building">Building a Product</h2>
-<p>To eventually build your product, add your HAL implementations and drivers to
-  your device's source tree and execute the following commands.</p>
-    <p>
-      For a Fusion build for armv7 with NEON:
-    </p>
-<pre>
-  build/envsetup.sh
-  lunch your_lunch_combo
-  PDK_FUSION_PLATFORM_ZIP=vendor/pdk/mini_armv7a_neon/mini_armv7a_neon-userdebug/platform/platform.zip make -j32
-</pre>
-    <p>
-      For a Fusion build for armv7:
-    </p>
-<pre>
-  build/envsetup.sh
-  lunch your_lunch_combo
-  PDK_FUSION_PLATFORM_ZIP=vendor/pdk/mini_armv7a/mini_armv7a-userdebug/platform/platform.zip make -j32
-</pre>
-    <p>
-      For a non-Fusion build for both architectures, run <code>make</code> like this instead:
-    </p>
-<pre>
-TARGET_BUILD_PDK=true make -j32
-</pre>
-
-<p class="note"><strong>Important:</strong> 
-If you are switching between different lunch combos or between fusion and non-fusion builds,
-run the following command
-to remove any remnants of the test build so that it doesn't interfere
-with your real product's build later on.
-
-<pre>make installclean</pre>
-</p>
-
-    <p>
-      You should find new binaries located in
-      <code>/out/target/product/&lt;device_name&gt;</code>.
-    </p>
-  </li>
-</ol>
-
-
-<h2 id="managing">
-  Managing Makefiles
-</h2>
-<p>
-  Building with the PDK is different from normal product builds that have access to all of the
-  Android sources. Existing product Makefiles require changes to build the product. This section
-  provides an overview of the available workarounds in the PDK to support product builds.
-</p>
-<p>
-  For product Makefiles:
-</p>
-<ul>
-  <li>Use the <code>inherit-product-if-exists</code> macro instead of <code>inherit-product</code>
-  if the target product file does not exist in the PDK.
-  </li>
-  <li>For the <code>PRODUCT_COPY_FILES</code> variable, use the
-  <code>add-to-product-copy-files-if-exists</code> macro, which excludes the component if it does
-  not exist.
-  </li>
-  <li>For an include sentence, use <code>-include</code> to ignore the error if the included file
-  does not exist.
-  </li>
-  <li>You can also check the presence of necessary files and include it in a PDK based build with
-  the <code>$(wildcard ...)</code> macro. For example, the following if statement executes the code
-  block if <code>frameworks/base/Android.mk</code> exists:
-    <pre>
-ifneq ($(wildcard frameworks/base/Android.mk),)
-
-...
-
-endif
-</pre>
-  </li>
-</ul>
-<p>
-  For <code>Android.mk</code> files:
-</p>
-<ul>
-  <li>
-    <code>TARGET_BUILD_PDK</code> is set to true for PDK builds. If you have a component that
-    cannot be built in the PDK build, wrap the code to build the component in an if statement:
-    <pre>
-ifeq ($(TARGET_BUILD_PDK),)
-...
-endif
-</pre>
-  </li>
-  <li>For building Android framework apps, the PDK uses the
-  <code>TARGET_BUILD_JAVA_SUPPORT_LEVEL</code> variable to notify you if building apps is
-  supported. The variable is set to <code>platform</code> if the platform APIs are available. The
-  variable is set to <code>sdk</code> when only SDK based builds are supported. Because the PDK is
-  shared pre-release and is based on a development tree, earlier versions of the PDK may not
-  support a Java build and the variable is set to null. The following statements can enable a Java
-  build only when it is supported:
-    <pre>
-ifneq ($(TARGET_BUILD_JAVA_SUPPORT_LEVEL),)
-...
-endif
-</pre>
-  </li>
-
-  <li style="list-style: none">
-    <p class="note">
-      <strong>Note:</strong> You cannot use <code>TARGET_BUILD_...</code> variables in product
-      definition Makefiles, because these variables are checked after the build reads the product
-      definition Makefiles.
-    </p>
-  </li>
-</ul>
diff --git a/src/devices/build_system.jd b/src/devices/build_system.jd
deleted file mode 100644
index 19fd8a3..0000000
--- a/src/devices/build_system.jd
+++ /dev/null
@@ -1,179 +0,0 @@
-page.title=Building the PDK
-@jd:body
-
-<!--
-    Copyright 2010 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-    <ol id="auto-toc">
-    </ol>
-  </div>
-</div>
-
-<p>Android uses a custom build system to generate tools, binaries, and documentation.</p>
-
-<p>The build system is Make-based and requires a recent version of GNU Make (note that
-  Android uses advanced features of GNU Make that may not yet appear on the GNU Make web site).
-  Before continuing, check your version of make by running <code>% make -v</code>. If you
-  don't have version 3.80 or greater, you need to
-  <a href="http://www.gnu.org/software/make/">upgrade your version of make</a>.
-</p>
-
-
-<h2 id="layers">Build Layers</h2>
-
-<p>The build hierarchy includes the abstraction layers that correspond to the physical makeup of a device. These
-  layers are described in the table below. Each layer relates to the one above it in a one-to-many relationship.
-  For example, an architecture can have more than one board and each board can have more than one device.
-  You may define an element in a given layer as a specialization of an element in the same layer,
-  thus eliminating copying and simplifying maintenance.</p>
- 
-<table>
- <tbody><tr>
-  <th>Layer</th>
-  <th>Example</th>
-  <th>Description</th>
- </tr>
-  <tr>
-    <td>Product</td>
-    <td>myProduct, myProduct_eu, myProduct_eu_fr, j2, sdk</td>
-    <td><p>The product layer defines the feature specification of a shipping product such as the modules to build,
-    locales supported, and the configuration for various locales. In other words, this is the name of the
-    overall product. Product-specific variables are defined in product definition Makefiles. A product 
-     can inherit from other product definitions,
-    which simplifies maintenance. A common method is to create a base product that contains features that apply
-    for all products, then creating product variants based on that base product. For example, you can have
-    two products that differ only by their radios (CDMA vs GSM) inherit from the same base product that does not define a radio.
-    <p>For a full list of product definition variables, see the
-    <a href="{@docRoot}devices/build_new_device.html#prod-def">Product Definition Files</a> section.</p>
-</td>
-
-  </tr>
-  <tr>
-    <td>Device</td>
-    <td>myDevice, myDevice_eu, myDevice_eu_lite</td>
-    <td>The device layer represents the physical layer of plastic on the device (i.e. the industrial design of the device). For example, North American devices probably include QWERTY keyboards whereas devices sold in France probably include AZERTY keyboards.</td>
-  </tr>
-  <tr>
-    <td>Board</td>
-    <td>sardine, trout, goldfish </td>
-    <td>The board layer represents the bare schematics of a product. This includes the peripherals on the board and their
-      configuraiton.</td>
-  </tr>
-  <tr>
-    <td>Arch</td>
-    <td>arm (armv7-a-neon, armv7), x86, 68k </td>
-    <td>The architecture layer describes the processor configuration and ABI (Application Binary Interface) running on the board. </td>
-  </tr>
-</table>
-
-
-<h2 id="variants">Build Variants</h2>
-
-<p> 
-When building for a particular product, it's often useful to have minor
-variations on what is ultimately the final release build.  These are the
-currently-defined build variants:
-</p> 
- 
-<table border=1> 
-<tr> 
-    <td> 
-        <code>eng<code> 
-    </td> 
-    <td> 
-        This is the default flavor. A plain <code>make</code> is the
-        same as <code>make eng</code>.
-        <ul> 
-        <li>Installs modules tagged with: <code>eng</code>, <code>debug</code>,
-            <code>user</code>, and/or <code>development</code>.
-        <li>Installs non-APK modules that have no tags specified.
-        <li>Installs APKs according to the product definition files, in
-            addition to tagged APKs.
-        <li><code>ro.secure=0</code> 
-        <li><code>ro.debuggable=1</code> 
-        <li><code>ro.kernel.android.checkjni=1</code> 
-        <li><code>adb</code> is enabled by default.
-    </td> 
-</tr> 
-<tr>
-    <td>
-        <code>user<code>
-    </td>
-    <td>
-        <code>make user</code>
-        <p> 
-        This is the flavor intended to be the final release bits.
-        <ul> 
-        <li>Installs modules tagged with <code>user</code>.</li>
-        <li>Installs non-APK modules that have no tags specified.</li>
-        <li>Installs APKs according to the product definition files; tags
-            are ignored for APK modules.</li>
-        <li><code>ro.secure=1</code> </li>
-        <li><code>ro.debuggable=0</code> </li>
-        <li><code>adb</code> is disabled by default.</li>
-    </td>
-</tr>
-<tr>
-    <td>
-        <code>userdebug<code> 
-    </td> 
-    <td> 
-        <code>make userdebug</code>
-        <p> 
-        The same as <code>user</code>, except:
-        <ul> 
-        <li>Also installs modules tagged with <code>debug</code>.
-        <li><code>ro.debuggable=1</code> 
-        <li><code>adb</code> is enabled by default.
-    </td> 
-</tr> 
-</table> 
-
-<p class="note"><strong>Note:</strong> 
-If you build one flavor and then want to build another, you should run
-<code>make installclean</code> between the two makes to guarantee that
-you don't pick up files installed by the previous flavor.  <code>make
-clean</code> also suffices, but it takes a lot longer.
-</p>
-
-<h2 id="pdk-build">The PDK Build</h2>
-<p>The PDK build differs from a normal platform build in that it does not contain the entire Android source tree.
-  A <code>platform.zip</code> binary is provided that contains the missing pieces that aren't in the PDK source tree.
-  The PDK supports two different build flavors, Fusion and non-Fusion:
-</p>
-<ul>
-  <li>The Fusion build includes the <code>platform.zip</code>
-  components and allows your device to boot up into a usable Android system with a UI.
-  </li>
-  <li>The non-Fusion build omits the <code>platform.zip</code> components and boots
-  your device without a UI. In this mode,
-  you can <code>adb shell</code> into the device to run command line programs to test your
-  hardware in the early stages of development. This is useful when you only have a few HAL
-  implementations and drivers to test initially.
-  </li>
-</ul>
-
-  <h3 id="running-pdk-build">Running a default PDK build</h3>
-<p>When you have the PDK source synced, you can run a default build for the PDK to verify that your environment
-  is setup correctly. To do this, run the following commands:</p>
-
-<pre>
-source build/envsetup.sh
-lunch mini_armv7a_neon-userdebug
-PDK_FUSION_PLATFORM_ZIP=vendor/pdk/mini_armv7a_neon/mini_armv7a_neon-userdebug/platform/platform.zip make -j32
-</pre>
\ No newline at end of file
diff --git a/src/devices/compatibility.jd b/src/devices/compatibility.jd
deleted file mode 100644
index 3c43041..0000000
--- a/src/devices/compatibility.jd
+++ /dev/null
@@ -1,197 +0,0 @@
-page.title=Overview
-@jd:body
-
-<!--
-    Copyright 2010 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-    <ol id="auto-toc">
-    </ol>
-  </div>
-</div>
-
-
-<p>Welcome to the Android Platform Development Kit (PDK) Guide! The Android PDK allows partners to port 
-  their drivers as well as develop, optimize, and test against an upcoming Android platform release.
-  The Android PDK includes a set of interfaces for the Android hardware abstraction layer (HAL),
-  platform sources for integration, a binary system image, and HAL and integration documentation.
-  In addition, the PDK also ships with the Android Compatibility Test Suite (CTS).
-</p>
-
-<h2 id="arch">Android Low-Level System Architecture</h2>
-<p>Before you begin porting Android to your hardware, it is important to have an
-understanding of how Android works at a high level. Because your drivers and HAL code interact
-with many layers of Android code, this understanding can help you find
-your way through the many layers of code that are available to you through the AOSP
-(Android Open Source Project) source tree as well as the PDK.
-The following diagram shows a system level view of how Android works:
-</p>
-
-<img src="images/system-architecture.png">
-
-<p class="img-caption"><strong>Figure 1.</strong> Android System Architecture</p>
-
-  <h4>Application framework</h4>
-  <p>This is the level that most application developers concern themselves with. You should be
-    aware of the APIs available to developers as many of them map 1:1 to the underlying HAL
-    interfaces and can provide information as to how to implement your driver.
-  </p>
-
-  <h4>Binder IPC</h4>
-  <p>
-  The Binder Inter-Process Communication mechanism allows the application framework to
-  cross process boundaries and call into the Android system services code. This basically allows
-  high level framework APIs to interact with Android's system services. At the application framework level, all
-  of this communication is hidden from the developer and things appear to "just work." 
-  </p>
-
-  <h4>System services</h4>
-  <p>Most of the functionality exposed through the application framework APIs  must
-    communicate with some sort of system service to access the underlying hardware. Services
-    are divided into modular components with focused functionality 
-    such as the Window Manager, Search Service, or Notification Manager. System services are grouped
-    into two buckets: system and media. The system services include things such as the Window or
-    Notification Manager. The media services include all the services involved in playing and
-    recording media.
-  </p>
-  
-<h4>Hardware abstraction layer (HAL)</h4>
-<p>The HAL serves as a standard interface that allows the Android system to call into the device
-  driver layer while being agnostic about the lower-level implementations of your drivers and hardware.
-  You must implement the corresponding HAL (and driver) for the particular piece of hardware that your product
-  provides. Android does not mandate a standard interaction between your HAL implementation and your device drivers, so
-  you have free reign to do what is best for your situation. However, you must abide by the contract
-  defined in each hardware-specific HAL interface for the Android system to be able
-  to correctly interact with your hardware. HAL implementations are typically built into
-  shared library modules (<code>.so</code> files).
-</p>
-<h4>Linux Kernel</h4>
-<p>For the most part, developing your device drivers is the same as developing a typical Linux device driver.
-  Android uses a specialized version of the Linux kernel with a few special additions such as
-  wakelocks, a memory management system that is more agressive in preserving memory,
-  the Binder IPC driver, and other features that are important for a mobile embedded platform like Android.
-  These additions have less to do with driver development than with the system's functionality. The PDK
-  does not provide kernel sources, so you must provide your own. You can use any version of the kernel that
-  you want as long as it supports the required features, such as the binder driver. However, we recommend
-  using the latest version of the Android kernel. For the latest Android kernel, see
-  <a href="http://source.android.com/source/building-kernels.html" >Building Kernels</a>.
-</p>
-
-
-<h2 id="pdk">PDK Components</h2>
-<p>Now that you have a high-level overview of the Android system, we'll go over the PDK and what it provides
-  to port Android to your product. The PDK provides source files needed to implement
-  your product and a platform binary that lets you build a runnable system image. You can then install
-  this barebones image to test your product with the latest builds of Android. The most important source files
-  included in the PDK are located in the:</p>
-
-  <ul>
-    <li><code>frameworks/native</code> directory</li>
-    <li><code>frameworks/av</code> directory for media, camera, DRM, and the audio framework stack</code></li>
-    <li><code>hardware/libhardware/include/hardware</code> directory for the HAL interfaces </li>
-    <li><code>vendor/pdk/data/cts</code> directory for the CTS binaries</li>
-  </ul>
-</p>
-<p>In addition, the Android PDK includes the following source directories:</p>
-<ul>
-  <li>abi</li>
-  <li>bionic</li>
-  <li>bootable</li>
-  <li>build</li>
-  <li>device</li>
-  <li>external (Chromium and Webkit are not included)</li>
-  <li>hardware</li>
-  <li>libnativehelper</li>
-  <li>pdk</li>
-  <li>prebuilt</li>
-  <li>prebuilts</li>
-  <li>system</li>
-</ul>
-
-  <p>The PDK also contains documentation that is split into three different sections:</p>
-  <ul>
-    <li><a href="{@docRoot}guide/getting_started.html">Getting Started</a> - Explains how to download the PDK source, how the Android build system works, and how to configure a build for your specific product.</li>
-    <li><a href="{@docRoot}guide/hal.html">The Hardware Abstraction Layer</a> - Explains the various HALs provided by Android and the interfaces (C header files) that define them. </li>
-      <li><a href="{@docRoot}guide/reference/files.html">HAL reference</a> - A quick reference for the various HAL interfaces.</li>
-  </ul>
-
-<h3 id="cts">Compatibility Test Suite</h3>
-<p>CTS binaries for ARM, MIPS, and x86 are provided in the corresponding directories in <code>vendor/pdk/data/cts</code>. Only the ARM
-  variant is Google-verified as there is no Nexus device running on any other architecture. Not all of the CTS tests since the
-  complete Android platform is not present. The following CTS tests should work:</p>
-
-<ul>
-      <li>android.bluetooth</li>
-      <li>android.graphics</li>
-      <li>android.graphics2</li>
-      <li>android.hardware</li>
-      <li>android.location</li>
-      <li>android.opengl</li>
-      <li>android.openglperf</li>
-      <li>android.media</li>
-      <li>android.mediastress</li>
-      <li>android.nativemedia.sl</li>
-      <li>android.nativemedia.xa</li>
-      <li>android.net</li>
-      <li>android.renderscript</li>
-    </ul>
-    <p>You can run individual packages such as <code>android.media</code> with:</p>
-    <pre>cts-tradefed run singleCommand cts --skip-device-info --package android.media</pre>
-</ul>
-
-  <p>Because the PDK is missing many components compared to a full Android source tree,
-  there is a PDK test plan that is provided with CTS that limits the tests that are ran when using the PDK. You can run
-  this special test plan with the following command:</p>
-
-  <pre>run cts --plan PDK</pre>
-    
-<p>CTS is always actively under development, so we expect some tests to fail. CTS results
-  for the Galaxy Nexus are provided for you in the
-  the <code>vendor/pdk/data/cts/</code> directory and will show which tests fail on that
-  device. You can safely ignore the failed tests for your devices as well.</p>
-
-  <p>See the <a href="http://source.android.com/compatibility/cts-intro.html">CTS manual</a> for more information on CTS.</p>
-
-<h2 id="inc-ex">PDK Inclusions and Exclusions</h2>
-<p>The PDK is a subset of the complete Android source tree and might be missing things that you might need. Here is a list of what the PDK supports
-  and does not support:</p>
-<ul>
-  <li>Supports building Android apps using the publicly available, standard SDK. Builds with non-public platform APIs are not supported. The JNI build is supported.</li>
-  <li>Supports only <code>en_US</code> locale.</li>
-  <li>Supports only phone layouts. Tablet layouts are not included.</li>
-  <li>Enables support for software navigation buttons by default, which you can disable by setting <code>qemu.jw.mainkeys=1</code>.</li>
-  <li>Builds all binaries with SMP (symmetric multiprocessing) features enabled. This might have a small performance impact on non-SMP CPUs.</li>
-  <li>Includes a minimal amount of Java libraries. Obtain any additional Java libraries from the publicly released Android source tree.</li>
-  <li>Contains a minimum number of applications. Build and install necessary applications as needed.</li>
-  <li>Does not support media streaming.</li>
-  <li>Does not include non-Latin fonts. (set by <code>MINIMAL_FONT_FOOTPRINT</code> variable in <code>BoardConfig.mk</code>).
-  An app might crash if it requires such fonts. </li>
-  <li>Does not support replacing framework resources by using the overlay mechanism.
-    This means all configurations controlled by framework resources are fixed.</li>   
-  <li>Does not support NFC</li>
-  <li>Does not support DRM</li>
-</ul>
-
-<h2 id="knownissues">Support and Known Issues</h2>
-<p>
-For questions or to report issues related with the PDK, send a message to the <a href="https://groups.google.com/a/google.com/forum/?fromgroups#!forum/android-pdk-feedback">android-pdk@google.com</a> mailing list.</p>
-
-<p>The following list describes the known issues with the PDK:</p>
-<ul>
-  <li>After running the CTS (Compatibility Test Suite), <code>android.process.acore</code> crashes. This is caused by
-some missing components in PDK and does not affect the operation of CTS tests.</li>
-</p>
diff --git a/src/devices/devices_toc.cs b/src/devices/devices_toc.cs
index 34fe84c..ac5c09e 100644
--- a/src/devices/devices_toc.cs
+++ b/src/devices/devices_toc.cs
@@ -13,7 +13,7 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<?cs # Table of contents for Dev pdk.?>
+<?cs # Table of contents for devices.?>
 <ul id="nav">
 
 <!-- Porting Android -->
@@ -22,7 +22,7 @@
       <a href="<?cs var:toroot ?>devices/index.html">
         <span class="en">Porting</span>
       </a>
-    </div>    
+    </div>
     <ul>
       <li><a href="<?cs var:toroot ?>devices/media.html">Media</a></li>
       <li class="nav-section">
@@ -56,7 +56,7 @@
 <!-- End Porting Android -->
   </li>
 
-  
+
   <li class="nav-section">
     <div class="nav-section-header">
       <a href="<?cs var:toroot ?>devices/tech/index.html">
@@ -134,14 +134,14 @@
           <li><a href="<?cs var:toroot ?>devices/tech/input/validate-keymaps.html">Validate Keymaps</a></li>
         </ul>
       </li>
-      
-      <li>      
+
+      <li>
           <a href="<?cs var:toroot ?>devices/tech/kernel.html">
             <span class="en">Kernel</span>
           </a>
       </li>
-      
-      <li>      
+
+      <li>
           <a href="<?cs var:toroot ?>devices/tech/power.html">
             <span class="en">Power</span>
           </a>
@@ -153,7 +153,7 @@
             </a>
           </div>
           <ul>
-            <li>      
+            <li>
               <a href="<?cs var:toroot ?>devices/tech/security/enhancements42.html">
                 <span class="en">Security Enhancements in Android 4.2</span>
               </a>
@@ -165,7 +165,7 @@
             </li>
           </ul>
       </li>
-      
+
 
       <li class="nav-section">
         <div class="nav-section-header">
diff --git a/src/devices/getting_started.jd b/src/devices/getting_started.jd
deleted file mode 100644
index df4fe89..0000000
--- a/src/devices/getting_started.jd
+++ /dev/null
@@ -1,200 +0,0 @@
-page.title=Overview
-@jd:body
-
-<!--
-    Copyright 2010 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-    <ol id="auto-toc">
-    </ol>
-  </div>
-</div>
-
-<p>Welcome to the Android Platform Development Kit (PDK) Guide! The Android PDK allows partners to port 
-  their drivers as well as develop, optimize, and test against an upcoming Android platform release.
-  The Android PDK includes a set of interfaces for the Android hardware abstraction layer (HAL),
-  platform sources for integration, a binary system image, and HAL and integration documentation.
-  In addition, the PDK also ships with the Android Compatibility Test Suite (CTS).
-</p>
-
-<h2 id="arch">Android Low-Level System Architecture</h2>
-<p>Before you begin porting Android to your hardware, it is important to have an
-understanding of how Android works at a high level. Because your drivers and HAL code interact
-with many layers of Android code, this understanding can help you find
-your way through the many layers of code that are available to you through the AOSP
-(Android Open Source Project) source tree as well as the PDK.
-The following diagram shows a system level view of how Android works:
-</p>
-
-<img src="images/system-architecture.png">
-
-<p class="img-caption"><strong>Figure 1.</strong> Android System Architecture</p>
-
-  <h4>Application framework</h4>
-  <p>This is the level that most application developers concern themselves with. You should be
-    aware of the APIs available to developers as many of them map 1:1 to the underlying HAL
-    interfaces and can provide information as to how to implement your driver.
-  </p>
-
-  <h4>Binder IPC</h4>
-  <p>
-  The Binder Inter-Process Communication mechanism allows the application framework to
-  cross process boundaries and call into the Android system services code. This basically allows
-  high level framework APIs to interact with Android's system services. At the application framework level, all
-  of this communication is hidden from the developer and things appear to "just work." 
-  </p>
-
-  <h4>System services</h4>
-  <p>Most of the functionality exposed through the application framework APIs  must
-    communicate with some sort of system service to access the underlying hardware. Services
-    are divided into modular components with focused functionality 
-    such as the Window Manager, Search Service, or Notification Manager. System services are grouped
-    into two buckets: system and media. The system services include things such as the Window or
-    Notification Manager. The media services include all the services involved in playing and
-    recording media.
-  </p>
-  
-<h4>Hardware abstraction layer (HAL)</h4>
-<p>The HAL serves as a standard interface that allows the Android system to call into the device
-  driver layer while being agnostic about the lower-level implementations of your drivers and hardware.
-  You must implement the corresponding HAL (and driver) for the particular piece of hardware that your product
-  provides. Android does not mandate a standard interaction between your HAL implementation and your device drivers, so
-  you have free reign to do what is best for your situation. However, you must abide by the contract
-  defined in each hardware-specific HAL interface for the Android system to be able
-  to correctly interact with your hardware. HAL implementations are typically built into
-  shared library modules (<code>.so</code> files).
-</p>
-<h4>Linux Kernel</h4>
-<p>For the most part, developing your device drivers is the same as developing a typical Linux device driver.
-  Android uses a specialized version of the Linux kernel with a few special additions such as
-  wakelocks, a memory management system that is more agressive in preserving memory,
-  the Binder IPC driver, and other features that are important for a mobile embedded platform like Android.
-  These additions have less to do with driver development than with the system's functionality. The PDK
-  does not provide kernel sources, so you must provide your own. You can use any version of the kernel that
-  you want as long as it supports the required features, such as the binder driver. However, we recommend
-  using the latest version of the Android kernel. For the latest Android kernel, see
-  <a href="{@docRoot}source/building-kernels.html" >Building Kernels</a>.
-</p>
-
-
-<h2 id="pdk">PDK Components</h2>
-<p>Now that you have a high-level overview of the Android system, we'll go over the PDK and what it provides
-  to port Android to your product. The PDK provides source files needed to implement
-  your product and a platform binary that lets you build a runnable system image. You can then install
-  this barebones image to test your product with the latest builds of Android. The most important source files
-  included in the PDK are located in the:</p>
-
-  <ul>
-    <li><code>frameworks/native</code> directory</li>
-    <li><code>frameworks/av</code> directory for media, camera, DRM, and the audio framework stack</code></li>
-    <li><code>hardware/libhardware/include/hardware</code> directory for the HAL interfaces </li>
-    <li><code>vendor/pdk/data/cts</code> directory for the CTS binaries</li>
-  </ul>
-</p>
-<p>In addition, the Android PDK includes the following source directories:</p>
-<ul>
-  <li>abi</li>
-  <li>bionic</li>
-  <li>bootable</li>
-  <li>build</li>
-  <li>device</li>
-  <li>external (Chromium and Webkit are not included)</li>
-  <li>hardware</li>
-  <li>libnativehelper</li>
-  <li>pdk</li>
-  <li>prebuilt</li>
-  <li>prebuilts</li>
-  <li>system</li>
-</ul>
-
-  <p>The PDK also contains documentation that is split into the following sections:</p>
-  <ul>
-    <li><a href="{@docRoot}devices/getting_started.html">Getting Started</a> - Explains how to download
-    the PDK source, how the Android build system works, and how to configure a build for your specific product.</li>
-    <li><a href="{@docRoot}devices/porting.html">Porting</a> - Explains the various HALs provided by Android
-    and the interfaces (C header files) that define them. This section also provides reference documentation
-    for the various HAL interfaces.</li>
-    <li><a href="{@docRoot}devices/debugtune.html">Debugging and Tuning</a> - Explains the debugging and tuning features of the PDK.</li>
-    <li><a href="{@docRoot}devices/tech/index.html">Technical Information</a> - Explains important concepts of the Android platform.</li>
-  </ul>
-
-<h3 id="cts">Compatibility Test Suite</h3>
-<p>CTS binaries for ARM, MIPS, and x86 are provided in the corresponding directories in <code>vendor/pdk/data/cts</code>. Only the ARM
-  variant is Google-verified as there is no Nexus device running on any other architecture. Not all of the CTS tests since the
-  complete Android platform is not present. The following CTS tests should work:</p>
-
-<ul>
-      <li>android.bluetooth</li>
-      <li>android.graphics</li>
-      <li>android.graphics2</li>
-      <li>android.hardware</li>
-      <li>android.location</li>
-      <li>android.opengl</li>
-      <li>android.openglperf</li>
-      <li>android.media</li>
-      <li>android.mediastress</li>
-      <li>android.nativemedia.sl</li>
-      <li>android.nativemedia.xa</li>
-      <li>android.net</li>
-      <li>android.renderscript</li>
-    </ul>
-    <p>You can run individual packages such as <code>android.media</code> with:</p>
-    <pre>cts-tradefed run singleCommand cts --skip-device-info --package android.media</pre>
-</ul>
-
-  <p>Because the PDK is missing many components compared to a full Android source tree,
-  there is a PDK test plan that is provided with CTS that limits the tests that are ran when using the PDK. You can run
-  this special test plan with the following command:</p>
-
-  <pre>run cts --plan PDK</pre>
-    
-<p>CTS is always actively under development, so we expect some tests to fail. CTS results
-  for the Galaxy Nexus are provided for you in the
-  the <code>vendor/pdk/data/cts/</code> directory and will show which tests fail on that
-  device. You can safely ignore the failed tests for your devices as well.</p>
-
-  <p>See <a href="{@docRoot}compatibility/index.html">Compatibility</a> for more information on CTS.</p>
-
-<h2 id="inc-ex">PDK Inclusions and Exclusions</h2>
-<p>The PDK is a subset of the complete Android source tree and might be missing things that you might need. Here is a list of what the PDK supports
-  and does not support:</p>
-<ul>
-  <li>Supports building Android apps using the publicly available, standard SDK. Builds with non-public platform APIs are not supported. The JNI build is supported.</li>
-  <li>Supports only <code>en_US</code> locale.</li>
-  <li>Supports only phone layouts. Tablet layouts are not included.</li>
-  <li>Enables support for software navigation buttons by default, which you can disable by setting <code>qemu.jw.mainkeys=1</code>.</li>
-  <li>Builds all binaries with SMP (symmetric multiprocessing) features enabled. This might have a small performance impact on non-SMP CPUs.</li>
-  <li>Includes a minimal amount of Java libraries. Obtain any additional Java libraries from the publicly released Android source tree.</li>
-  <li>Contains a minimum number of applications. Build and install necessary applications as needed.</li>
-  <li>Does not support media streaming.</li>
-  <li>Does not include non-Latin fonts. (set by <code>MINIMAL_FONT_FOOTPRINT</code> variable in <code>BoardConfig.mk</code>).
-  An app might crash if it requires such fonts. </li>
-  <li>Does not support replacing framework resources by using the overlay mechanism.
-    This means all configurations controlled by framework resources are fixed.</li>   
-  <li>Does not support NFC</li>
-  <li>Does not support DRM</li>
-</ul>
-
-<h2 id="knownissues">Support and Known Issues</h2>
-<p>
-For questions or to report issues related with the PDK, send a message to the <a href="https://groups.google.com/a/google.com/forum/?fromgroups#!forum/android-pdk-feedback">android-pdk@google.com</a> mailing list.</p>
-
-<p>The following list describes the known issues with the PDK:</p>
-<ul>
-  <li>After running the CTS (Compatibility Test Suite), <code>android.process.acore</code> crashes. This is caused by
-some missing components in PDK and does not affect the operation of CTS tests.</li>
-</p>
diff --git a/src/devices/index.jd b/src/devices/index.jd
index a54d339..d19f23c 100644
--- a/src/devices/index.jd
+++ b/src/devices/index.jd
@@ -27,14 +27,14 @@
   <p>Android provides you with the freedom to implement your own device specifications
   and the drivers to support them. The hardware abstraction layer (HAL) gives you a
   standard way to create software hooks in between the Android
-  platform stack and your hardware. In addition, the Android operating system 
+  platform stack and your hardware. In addition, the Android operating system
   is open-sourced to help you through your device's bringup.</p>
 
   <p>To ensure that your devices maintain a high level of quality and offers a consistent
   experience for your users, they must must also
   pass the tests in the compatibility test suite (CTS). CTS ensures that anyone
   building a device meets a quality standard that ensures apps run reliabaly well
-  and gives users a good experience. For more information, see the 
+  and gives users a good experience. For more information, see the
   <a href="{@docRoot}compatibility/index.html">Compatibility</a> section.</p>
 
  <h2>Android Low-Level System Architecture</h2>
@@ -62,19 +62,19 @@
   The Binder Inter-Process Communication mechanism allows the application framework to
   cross process boundaries and call into the Android system services code. This basically allows
   high level framework APIs to interact with Android's system services. At the application framework level, all
-  of this communication is hidden from the developer and things appear to "just work." 
+  of this communication is hidden from the developer and things appear to "just work."
   </p>
 
   <h4>System services</h4>
   <p>Most of the functionality exposed through the application framework APIs  must
     communicate with some sort of system service to access the underlying hardware. Services
-    are divided into modular components with focused functionality 
+    are divided into modular components with focused functionality
     such as the Window Manager, Search Service, or Notification Manager. System services are grouped
     into two buckets: system and media. The system services include things such as the Window or
     Notification Manager. The media services include all the services involved in playing and
     recording media.
   </p>
-  
+
 <h4>Hardware abstraction layer (HAL)</h4>
 <p>The HAL serves as a standard interface that allows the Android system to call into the device
   driver layer while being agnostic about the lower-level implementations of your drivers and hardware.
@@ -90,9 +90,7 @@
   Android uses a specialized version of the Linux kernel with a few special additions such as
   wakelocks, a memory management system that is more agressive in preserving memory,
   the Binder IPC driver, and other features that are important for a mobile embedded platform like Android.
-  These additions have less to do with driver development than with the system's functionality. The PDK
-  does not provide kernel sources, so you must provide your own. You can use any version of the kernel that
-  you want as long as it supports the required features, such as the binder driver. However, we recommend
+  These additions have less to do with driver development than with the system's functionality. You can use any version of the kernel that you want as long as it supports the required features, such as the binder driver. However, we recommend
   using the latest version of the Android kernel. For the latest Android kernel, see
   <a href="{@docRoot}source/building-kernels.html" >Building Kernels</a>.
 </p>
\ No newline at end of file
diff --git a/src/devices/overview.jd b/src/devices/overview.jd
deleted file mode 100644
index ddb34b9..0000000
--- a/src/devices/overview.jd
+++ /dev/null
@@ -1,198 +0,0 @@
-page.title=Overview
-@jd:body
-
-<!--
-    Copyright 2010 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>
-      In this document
-    </h2>
-    <ol>
-    </ol>
-  </div>
-</div>
-
-<p>Welcome to the Android Platform Development Kit (PDK) Guide! The Android PDK allows partners to port 
-  their drivers as well as develop, optimize, and test against an upcoming Android platform release.
-  The Android PDK includes a set of interfaces for the Android hardware abstraction layer (HAL),
-  platform sources for integration, a binary system image, and HAL and integration documentation.
-  In addition, the PDK also ships with the Android Compatibility Test Suite (CTS).
-</p>
-
-<h2 id="arch">Android Low-Level System Architecture</h2>
-<p>Before you begin porting Android to your hardware, it is important to have an
-understanding of how Android works at a high level. Because your drivers and HAL code interact
-with many layers of Android code, this understanding can help you find
-your way through the many layers of code that are available to you through the AOSP
-(Android Open Source Project) source tree as well as the PDK.
-The following diagram shows a system level view of how Android works:
-</p>
-
-<img src="images/system-architecture.png">
-
-<p class="img-caption"><strong>Figure 1.</strong> Android System Architecture</p>
-
-  <h4>Application framework</h4>
-  <p>This is the level that most application developers concern themselves with. You should be
-    aware of the APIs available to developers as many of them map 1:1 to the underlying HAL
-    interfaces and can provide information as to how to implement your driver.
-  </p>
-
-  <h4>Binder IPC</h4>
-  <p>
-  The Binder Inter-Process Communication mechanism allows the application framework to
-  cross process boundaries and call into the Android system services code. This basically allows
-  high level framework APIs to interact with Android's system services. At the application framework level, all
-  of this communication is hidden from the developer and things appear to "just work." 
-  </p>
-
-  <h4>System services</h4>
-  <p>Most of the functionality exposed through the application framework APIs  must
-    communicate with some sort of system service to access the underlying hardware. Services
-    are divided into modular components with focused functionality 
-    such as the Window Manager, Search Service, or Notification Manager. System services are grouped
-    into two buckets: system and media. The system services include things such as the Window or
-    Notification Manager. The media services include all the services involved in playing and
-    recording media.
-  </p>
-  
-<h4>Hardware abstraction layer (HAL)</h4>
-<p>The HAL serves as a standard interface that allows the Android system to call into the device
-  driver layer while being agnostic about the lower-level implementations of your drivers and hardware.
-  You must implement the corresponding HAL (and driver) for the particular piece of hardware that your product
-  provides. Android does not mandate a standard interaction between your HAL implementation and your device drivers, so
-  you have free reign to do what is best for your situation. However, you must abide by the contract
-  defined in each hardware-specific HAL interface for the Android system to be able
-  to correctly interact with your hardware. HAL implementations are typically built into
-  shared library modules (<code>.so</code> files).
-</p>
-<h4>Linux Kernel</h4>
-<p>For the most part, developing your device drivers is the same as developing a typical Linux device driver.
-  Android uses a specialized version of the Linux kernel with a few special additions such as
-  wakelocks, a memory management system that is more agressive in preserving memory,
-  the Binder IPC driver, and other features that are important for a mobile embedded platform like Android.
-  These additions have less to do with driver development than with the system's functionality. The PDK
-  does not provide kernel sources, so you must provide your own. You can use any version of the kernel that
-  you want as long as it supports the required features, such as the binder driver. However, we recommend
-  using the latest version of the Android kernel. For the latest Android kernel, see
-  <a href="http://source.android.com/source/building-kernels.html" >Building Kernels</a>.
-</p>
-
-
-<h2 id="pdk">PDK Components</h2>
-<p>Now that you have a high-level overview of the Android system, we'll go over the PDK and what it provides
-  to port Android to your product. The PDK provides source files needed to implement
-  your product and a platform binary that lets you build a runnable system image. You can then install
-  this barebones image to test your product with the latest builds of Android. The most important source files
-  included in the PDK are located in the:</p>
-
-  <ul>
-    <li><code>frameworks/native</code> directory</li>
-    <li><code>frameworks/av</code> directory for media, camera, DRM, and the audio framework stack</code></li>
-    <li><code>hardware/libhardware/include/hardware</code> directory for the HAL interfaces </li>
-    <li><code>vendor/pdk/data/cts</code> directory for the CTS binaries</li>
-  </ul>
-</p>
-<p>In addition, the Android PDK includes the following source directories:</p>
-<ul>
-  <li>abi</li>
-  <li>bionic</li>
-  <li>bootable</li>
-  <li>build</li>
-  <li>device</li>
-  <li>external (Chromium and Webkit are not included)</li>
-  <li>hardware</li>
-  <li>libnativehelper</li>
-  <li>pdk</li>
-  <li>prebuilt</li>
-  <li>prebuilts</li>
-  <li>system</li>
-</ul>
-
-  <p>The PDK also contains documentation that is split into three different sections:</p>
-  <ul>
-    <li><a href="{@docRoot}guide/getting_started.html">Getting Started</a> - Explains how to download the PDK source, how the Android build system works, and how to configure a build for your specific product.</li>
-    <li><a href="{@docRoot}guide/hal.html">The Hardware Abstraction Layer</a> - Explains the various HALs provided by Android and the interfaces (C header files) that define them. </li>
-      <li><a href="{@docRoot}guide/reference/files.html">HAL reference</a> - A quick reference for the various HAL interfaces.</li>
-  </ul>
-
-<h3 id="cts">Compatibility Test Suite</h3>
-<p>CTS binaries for ARM, MIPS, and x86 are provided in the corresponding directories in <code>vendor/pdk/data/cts</code>. Only the ARM
-  variant is Google-verified as there is no Nexus device running on any other architecture. Not all of the CTS tests since the
-  complete Android platform is not present. The following CTS tests should work:</p>
-
-<ul>
-      <li>android.bluetooth</li>
-      <li>android.graphics</li>
-      <li>android.graphics2</li>
-      <li>android.hardware</li>
-      <li>android.location</li>
-      <li>android.opengl</li>
-      <li>android.openglperf</li>
-      <li>android.media</li>
-      <li>android.mediastress</li>
-      <li>android.nativemedia.sl</li>
-      <li>android.nativemedia.xa</li>
-      <li>android.net</li>
-      <li>android.renderscript</li>
-    </ul>
-    <p>You can run individual packages such as <code>android.media</code> with:</p>
-    <pre>cts-tradefed run singleCommand cts --skip-device-info --package android.media</pre>
-</ul>
-
-  <p>Because the PDK is missing many components compared to a full Android source tree,
-  there is a PDK test plan that is provided with CTS that limits the tests that are ran when using the PDK. You can run
-  this special test plan with the following command:</p>
-
-  <pre>run cts --plan PDK</pre>
-    
-<p>CTS is always actively under development, so we expect some tests to fail. CTS results
-  for the Galaxy Nexus are provided for you in the
-  the <code>vendor/pdk/data/cts/</code> directory and will show which tests fail on that
-  device. You can safely ignore the failed tests for your devices as well.</p>
-
-  <p>See the <a href="http://source.android.com/compatibility/cts-intro.html">CTS manual</a> for more information on CTS.</p>
-
-<h2 id="inc-ex">PDK Inclusions and Exclusions</h2>
-<p>The PDK is a subset of the complete Android source tree and might be missing things that you might need. Here is a list of what the PDK supports
-  and does not support:</p>
-<ul>
-  <li>Supports building Android apps using the publicly available, standard SDK. Builds with non-public platform APIs are not supported. The JNI build is supported.</li>
-  <li>Supports only <code>en_US</code> locale.</li>
-  <li>Supports only phone layouts. Tablet layouts are not included.</li>
-  <li>Enables support for software navigation buttons by default, which you can disable by setting <code>qemu.jw.mainkeys=1</code>.</li>
-  <li>Builds all binaries with SMP (symmetric multiprocessing) features enabled. This might have a small performance impact on non-SMP CPUs.</li>
-  <li>Includes a minimal amount of Java libraries. Obtain any additional Java libraries from the publicly released Android source tree.</li>
-  <li>Contains a minimum number of applications. Build and install necessary applications as needed.</li>
-  <li>Does not support media streaming.</li>
-  <li>Does not include non-Latin fonts. (set by <code>MINIMAL_FONT_FOOTPRINT</code> variable in <code>BoardConfig.mk</code>).
-  An app might crash if it requires such fonts. </li>
-  <li>Does not support replacing framework resources by using the overlay mechanism.
-    This means all configurations controlled by framework resources are fixed.</li>   
-  <li>Does not support NFC</li>
-  <li>Does not support DRM</li>
-</ul>
-
-<h2 id="knownissues">Support and Known Issues</h2>
-<p>
-For questions or to report issues related with the PDK, send a message to the <a href="https://groups.google.com/a/google.com/forum/?fromgroups#!forum/android-pdk-feedback">android-pdk@google.com</a> mailing list.</p>
-
-<p>The following list describes the known issues with the PDK:</p>
-<ul>
-  <li>After running the CTS (Compatibility Test Suite), <code>android.process.acore</code> crashes. This is caused by
-some missing components in PDK and does not affect the operation of CTS tests.</li>
-</p>
diff --git a/src/devices/porting.jd b/src/devices/porting.jd
deleted file mode 100644
index e0b6eb8..0000000
--- a/src/devices/porting.jd
+++ /dev/null
@@ -1,98 +0,0 @@
-page.title=Porting
-@jd:body
-
-<!--
-    Copyright 2010 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<div id="qv-wrapper">
-  <div id="qv">
-    <h2>In this document</h2>
-    <ol id="auto-toc">
-    </ol>
-  </div>
-</div>
-
-  <p>Android provides you with the freedom to implement your own device specifications
-  and the drivers to support them. The hardware abstraction layer (HAL) gives you a
-  standard way to create software hooks in between the Android
-  platform stack and your hardware. In addition, the Android operating system 
-  is open-sourced to help you through your device's bringup.</p>
-
-  <p>To ensure that your devices maintain a high level of quality and offers a consistent
-  experience for your users, they must must also
-  pass the tests in the compatibility test suite (CTS). CTS ensures that anyone
-  building a device meets a quality standard that ensures apps run reliabaly well
-  and gives users a good experience. For more information, see the 
-  <a href="{@docRoot}compatibility/index.html">Compatibility</a> section.</p>
-
- <h2>Android Low-Level System Architecture</h2>
-
-<p>Before you begin porting Android to your hardware, it is important to have an
-understanding of how Android works at a high level. Because your drivers and HAL code interact
-with many layers of Android code, this understanding can help you find
-your way through the many layers of code that are available to you through the AOSP
-(Android Open Source Project) source tree. The following diagram shows a system
-level view of how Android works:
-</p>
-
-<img src="images/system-architecture.png">
-
-<p class="img-caption"><strong>Figure 1.</strong> Android System Architecture</p>
-
-  <h4>Application framework</h4>
-  <p>This is the level that most application developers concern themselves with. You should be
-    aware of the APIs available to developers as many of them map 1:1 to the underlying HAL
-    interfaces and can provide information as to how to implement your driver.
-  </p>
-
-  <h4>Binder IPC</h4>
-  <p>
-  The Binder Inter-Process Communication mechanism allows the application framework to
-  cross process boundaries and call into the Android system services code. This basically allows
-  high level framework APIs to interact with Android's system services. At the application framework level, all
-  of this communication is hidden from the developer and things appear to "just work." 
-  </p>
-
-  <h4>System services</h4>
-  <p>Most of the functionality exposed through the application framework APIs  must
-    communicate with some sort of system service to access the underlying hardware. Services
-    are divided into modular components with focused functionality 
-    such as the Window Manager, Search Service, or Notification Manager. System services are grouped
-    into two buckets: system and media. The system services include things such as the Window or
-    Notification Manager. The media services include all the services involved in playing and
-    recording media.
-  </p>
-  
-<h4>Hardware abstraction layer (HAL)</h4>
-<p>The HAL serves as a standard interface that allows the Android system to call into the device
-  driver layer while being agnostic about the lower-level implementations of your drivers and hardware.
-  You must implement the corresponding HAL (and driver) for the particular piece of hardware that your product
-  provides. Android does not mandate a standard interaction between your HAL implementation and your device drivers, so
-  you have free reign to do what is best for your situation. However, you must abide by the contract
-  defined in each hardware-specific HAL interface for the Android system to be able
-  to correctly interact with your hardware. HAL implementations are typically built into
-  shared library modules (<code>.so</code> files).
-</p>
-<h4>Linux Kernel</h4>
-<p>For the most part, developing your device drivers is the same as developing a typical Linux device driver.
-  Android uses a specialized version of the Linux kernel with a few special additions such as
-  wakelocks, a memory management system that is more agressive in preserving memory,
-  the Binder IPC driver, and other features that are important for a mobile embedded platform like Android.
-  These additions have less to do with driver development than with the system's functionality. The PDK
-  does not provide kernel sources, so you must provide your own. You can use any version of the kernel that
-  you want as long as it supports the required features, such as the binder driver. However, we recommend
-  using the latest version of the Android kernel. For the latest Android kernel, see
-  <a href="{@docRoot}source/building-kernels.html" >Building Kernels</a>.
-</p>
\ No newline at end of file
diff --git a/src/devices/source.jd b/src/devices/source.jd
deleted file mode 100644
index 0b9bc7a..0000000
--- a/src/devices/source.jd
+++ /dev/null
@@ -1,72 +0,0 @@
-page.title=Getting the Source
-@jd:body
-
-<!--
-    Copyright 2010 The Android Open Source Project
-
-    Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<p>
-  Before you can use the PDK, ensure that your <a href="{@docRoot}source/initializing.html">build environment
-  is set up</a>. When you are done, follow these steps to obtain the Android PDK source:
-</p>
-<ol>
-  <li>
-    <a href=
-    "https://accounts.google.com/SignUp?continue=https%3A%2F%2Faccounts.google.com%2FManageAccount">
-    Create a Google Account</a> with a corporate email address (e.g. @htc.com or @motorola.com and
-    not @gmail.com) for each individual who needs access to the partner source server. This should
-    be a relatively small number of users.
-  </li>
-  <li>Sign into the <a href="https://partner-android-review.googlesource.com">Android Gerrit
-  server</a> with the Google Account you just created and go to <strong>Settings &gt; HTTP Password
-  &gt; Obtain Password</strong> to get a password that you can use to authenticate to the Android
-  source servers. Follow the directions on that page for more information.
-  </li>
-  <li>Send a list of the Google Accounts that were created to Google to add them to our access
-  list.
-  </li>
-  <li>There are four variants of the source that you can sync to. For armv7a, run the following commands:
-<pre>
-repo init -u https://partner-android.googlesource.com/platform/vendor/pdk/mini_armv7a_neon/mini_armv7a_neon-userdebug/manifest.git -b &lt;branch_name&gt;
-repo sync
-</pre>
-<p>For armv7a with NEON support, run the following commands:</p>
-<pre>
-repo init -u https://partner-android.googlesource.com/platform/vendor/pdk/mini_armv7a/mini_armv7a-userdebug/manifest.git -b &lt;branch_name&gt;
-repo sync 
-</pre>
-<p>For MIPS, run the following commands:</p>
-<pre>
-repo init -u https://partner-android.googlesource.com/a/platform/vendor/pdk/mini_mips/mini_mips-userdebug/manifest.git -b &lt;branch_name&gt;
-repo sync 
-</pre>
-<p>For x86, run the following commands:</p>
-<pre>
-repo init -u https://partner-android.googlesource.com/a/platform/vendor/pdk/mini_x86/mini_x86-userdebug/manifest.git -b &lt;branch_name&gt;
-repo sync 
-</pre>
-
-<p>For example, use the <code>jb-mr1-release</code> branch for the PDK release for Jelly Bean MR1.</p>
-</li>
-</ol>
-
-
-<p class="note"><strong>Note:</strong> The PDK repository might be updated many times a day,
-  so it might be a good idea to sync less often if bandwidth is a concern.
-  It is usually more beneficial to sync more frequently at the early development phases of a new platform release
-  as more drastic changes can happen. Additionally, any PDK repository update results in an
-  updated <code>manifest.xml</code> so if you manually change the <code>manifest.xml</code>
-to add your own projects, this blocks syncing of the repository.
-A solution to both these issues is to have a local repository set up that syncs with the PDK
-  repository and then have your developers sync with your local repository and not the main PDK one.</p>
\ No newline at end of file
diff --git a/src/index.jd b/src/index.jd
index d977612..044d738 100644
--- a/src/index.jd
+++ b/src/index.jd
@@ -24,7 +24,7 @@
 
   <div class="landing-banner">
       <h1 itemprop="name" style="margin-bottom:0;">Welcome to the Android Open Source Project!</h1>
-      
+
       <p>
       Android is an open-source software stack for a wide range of devices and a corresponding open-source project led by Google.
       Here you can find the information and source code you need to learn more about the Android platform. From there you can
@@ -62,15 +62,13 @@
       </a>
       <a href="{@docRoot}devices/index.html">
         <h4>Build Devices</h4>
-        <p>The Android PDK lets you build devices with the latest Android platform, before
-          it is released to the public. This gives you a headstart on creating the compelling
-          devices that your customers want.</p>
+        <p>Build devices with the latest Android platform and create
+        create compelling devices that your customers want.</p>
       </a>
 
       <a href="{@docRoot}accessories/index.html">
         <h4>Build Accessories</h4>
-        <p>Sometimes, a device can't do it all. Tap into Android's open accessory standard and
-          build accessories to complement the wide variety of Android-powered devices.</p>
+        <p>Sometimes, a device can't do it all. Tap into Android's open accessory standard and build accessories to complement the wide variety of Android-powered devices.</p>
       </a>
 
       <a href="{@docRoot}compatibility/index.html">
diff --git a/src/source/source_toc.cs b/src/source/source_toc.cs
index 969a4fa..d2b1464 100644
--- a/src/source/source_toc.cs
+++ b/src/source/source_toc.cs
@@ -12,14 +12,14 @@
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
---><?cs # Table of contents for Dev pdk.?>
+--><?cs # Table of contents for source.?>
 <ul id="nav">
   <li class="nav-section">
     <div class="nav-section-header">
       <a href="<?cs var:toroot ?>source/index.html">
         <span class="en">Overview</span>
       </a>
-    </div>    
+    </div>
     <ul>
       <li><a href="<?cs var:toroot ?>source/code-lines.html">Codelines, Branches, and Releases</a></li>
       <li><a href="<?cs var:toroot ?>source/build-numbers.html">Codenames, Tags, and Build Numbers</a></li>
@@ -37,7 +37,7 @@
         </a>
       </div>
        <ul>
-        <li><a href="<?cs var:toroot ?>source/initializing.html">Initializing the Build Environment</a></li>        
+        <li><a href="<?cs var:toroot ?>source/initializing.html">Initializing the Build Environment</a></li>
         <li><a href="<?cs var:toroot ?>source/downloading.html">Downloading the Source</a></li>
         <li><a href="<?cs var:toroot ?>source/building-running.html">Building and Running</a></li>
         <li><a href="<?cs var:toroot ?>source/building-devices.html">Building for Devices</a></li>
