am b7924821: am 97aa1498: am 734c2a41: Editorial edits

* commit 'b79248215823e694dd9f1d09f0e10e83796f199a':
  Editorial edits
diff --git a/src/accessories/audio.jd b/src/accessories/audio.jd
index 92ce6fe..0b61b3f 100644
--- a/src/accessories/audio.jd
+++ b/src/accessories/audio.jd
@@ -56,7 +56,7 @@
 supported on Android 1.5 (API Level 3) and higher. An Android user can connect to an accessory
 that supports this profile using the system Settings > Bluetooth and play music directly to the
 accessory without the need for a secondary application.</p>
-<p><strong>Note:</strong> If you want to provide a custom application for output to your audio
+<p class="note"><strong>Note:</strong> If you want to provide a custom application for output to your audio
 accessory, note that the Android 3.0 (API Level 11) allows applications to operate an A2DP
 connection using the
 <a href="http://developer.android.com/reference/android/bluetooth/BluetoothA2dp.html"><code>BluetoothA2dp</code></a>
@@ -71,6 +71,12 @@
   (<code>&lt;adk-src&gt;/adk2012/board/library/ADK2/</code>), which includes an example implementation
   of an audio playback accessory using a Bluetooth connection.</li>
 </ul>
-<p><strong>Note:</strong> The ADK 2012 source code includes an open source Bluetooth stack that
+<p class="note"><strong>Note:</strong> The ADK 2012 source code includes an open source Bluetooth stack that
 is built for the Texas Instruments CC2564 chip, but can work with any Bluetooth chip that
 implements a standard Host/Controller Interface (HCI).</p>
+
+<h2 id="midi-over-usb">MIDI over USB and Bluetooth LE</h2>
+<p>Both USB and Bluetooth Low Energy can be used as transports for the
+<a href="http://en.wikipedia.org/wiki/MIDI">MIDI</a> protocol.
+See <a href="{@docRoot}devices/audio/midi.html">MIDI</a> for more information.
+</p>
diff --git a/src/accessories/custom.jd b/src/accessories/custom.jd
index 560f182..f68ab8e 100644
--- a/src/accessories/custom.jd
+++ b/src/accessories/custom.jd
@@ -82,7 +82,7 @@
   <a href="http://developer.android.com/tools/adk/adk2.html#src-download">application source code</a>
   (<code>&lt;adk-src&gt;/adk2012/app/</code>).</li>
 </ul>
-<p><strong>Note:</strong> The ADK 2012 source code includes an open source Bluetooth stack which
+<p class="note"><strong>Note:</strong> The ADK 2012 source code includes an open source Bluetooth stack which
 is built for the Texas Instruments CC2564 chip, but can work with any Bluetooth chip that
 supports a standard Host/Controller Interface (HCI).</p>
 
@@ -92,7 +92,7 @@
 (API Level 16) and higher. Once an Android device connects to an accessory that supports this
 protocol, the Android system treats it as a standard audio output device and routes all audio to
 that accessory. No secondary software application is required on the Android device.</p>
-<p><strong>Note:</strong> Due to the low power output of Android devices, the Android Open Accessory
+<p class="note"><strong>Note:</strong> Due to the low power output of Android devices, the Android Open Accessory
 Protocol requires that accessories act as a USB host, which means that the connecting accessory
 must power the bus.</p>
 <h3 id="next-steps">Next steps</h3>
@@ -105,7 +105,7 @@
   (<code>&lt;adk-src&gt;/adk2012/board/library/ADK2/</code>), which includes an example implementation
   of an audio playback accessory using a USB connection.</li>
 </ul>
-<p><strong>Note:</strong> The AOA 2.0 protocol also supports the
+<p class="note"><strong>Note:</strong> The AOA 2.0 protocol also supports the
 <a href="{@docRoot}accessories/aoa2.html#hid-support">human interface device</a> (HID) protocol through a USB
 connection, enabling accessories such as audio docks to provide hardware play back controls such
 as pause, fast-forward or volume buttons.</p>
diff --git a/src/accessories/headset-spec.jd b/src/accessories/headset-spec.jd
index c9a749e..572bb12 100644
--- a/src/accessories/headset-spec.jd
+++ b/src/accessories/headset-spec.jd
@@ -1,8 +1,8 @@
-page.title=Wired audio headset specification
+page.title=Wired audio headset specification (v1.1)
 @jd:body
 
 <!--
-    Copyright 2014 The Android Open Source Project
+    Copyright 2015 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.
@@ -24,116 +24,68 @@
   </div>
 </div>
 
-<p><em>Version 1.1</em></p>
+<p>This section specifies requirements for headsets and mobile devices to
+function uniformly across the Android ecosystem.</p>
 
-<p>This document specifies the requirements for headsets and mobile devices to
-function uniformly across the Android ecosystem. It is separated into two
-sections beginning with the specifications for the headset
-accessory followed by the specifications for the mobile device.</p>
+<h2 id="headset_accessory_plug_specifications">Headset accessory (plug)
+specifications</h2>
 
-<h2 id=headset_accessory_plug_specifications>Headset Accessory (Plug) Specifications</h2>
+<p>The following requirements apply to headset accessories.</p>
 
-<p>The requirements in the following section apply to the headset accessory.</p>
+<h3 id="functions">Functions</h3>
 
-<h3 id=functions>Functions</h3>
+<table style="width:50%">
+ <tr>
+    <th>Function</th>
+    <th>Accessory Support</th>
+ </tr>
+ <tr>
+    <td>Stereo Audio Out</td>
+    <td>Required</td>
+ </tr>
+ <tr>
+    <td>Audio in (Mic)</td>
+    <td>Required</td>
+ </tr>
+ <tr>
+    <td>Ground</td>
+    <td>Required</td>
+ </tr>
+</table>
+
+<h3 id="control-function_mapping">Control-function mapping</h3>
 
 <table>
  <tr>
-    <th>
-<p><strong>Function</strong></p>
-</th>
-    <th>
-<p><strong>Accessory Support</strong></p>
-</th>
+    <th style="width:33%">Control Function</th>
+    <th style="width:33%">Accessory Support</th>
+    <th style="width:33%">Description</th>
  </tr>
  <tr>
-    <td>
-<p>Stereo Audio Out</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
+    <td>Function A</td>
+    <td>Required</td>
+    <td>Play/pause/hook (Short Press), Trigger Assist (Long Press), Next
+    (Double Press)</td>
  </tr>
  <tr>
-    <td>
-<p>Audio in (Mic)</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
+    <td>Function B</td>
+    <td>Optional</td>
+    <td>Vol+</td>
  </tr>
  <tr>
-    <td>
-<p>Ground</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
+    <td>Function C</td>
+    <td>Optional</td>
+    <td>Vol-</td>
+ </tr>
+ <tr>
+    <td>Function D</td>
+    <td>Optional</td>
+    <td>Reserved (Nexus devices use this to launch Google voice search)
 </td>
  </tr>
 </table>
 
-<h3 id=control-function_mapping>Control-Function Mapping</h3>
-
-<table>
- <tr>
-    <th>
-<p><strong>Control Function</strong></p>
-</th>
-    <th>
-<p><strong>Accessory Support</strong></p>
-</th>
-    <th>
-<p><strong>Description</strong></p>
-</th>
- </tr>
- <tr>
-    <td>
-<p>Function A</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>Play/pause/hook (Short Press), Trigger Assist (Long Press), Next (double press)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p>Function B</p>
-</td>
-    <td>
-<p>Optional</p>
-</td>
-    <td>
-<p>Vol+</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p>Function C</p>
-</td>
-    <td>
-<p>Optional</p>
-</td>
-    <td>
-<p>Vol-</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p>Function D</p>
-</td>
-    <td>
-<p>Optional</p>
-</td>
-    <td>
-<p>Reserved (Nexus devices will use this reserved function to launch Google
-voice search)</p>
-</td>
- </tr>
-</table>
-
-<p><strong>Assign functions to buttons as follows</strong>:</p>
+<p>Assign functions to buttons as follows:</p>
 
 <ul>
   <li> All one-button headsets must implement Function A.
@@ -146,160 +98,93 @@
   </ul>
 </ul>
 
-<h3 id=mechanical>Mechanical</h3>
+<h3 id="mechanical">Mechanical</h3>
 
 <table>
  <tr>
-    <th>
-<p><strong>Function</strong></p>
-</th>
-    <th>
-<p><strong>Accessory Support</strong></p>
-</th>
-    <th>
-<p><strong>Notes</strong></p>
-</th>
+    <th style="width:33%">Function</th>
+    <th style="width:33%">Accessory Support</th>
+    <th style="width:33%">Notes</th>
  </tr>
  <tr>
-    <td>
-<p>4 conductor 3.5mm plug</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>Ref: EIAJ-RC5325A standard</p>
-</td>
+    <td>4 conductor 3.5mm plug</td>
+    <td>Required</td>
+    <td>Ref: EIAJ-RC5325A standard</td>
  </tr>
  <tr>
-    <td>
-<p>CTIA pinout order (LRGM)</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>Except in regions with legal requirements for OMTP pinout</p>
-</td>
+    <td>CTIA pinout order (LRGM)</td>
+    <td>Required</td>
+    <td>Except in regions with legal requirements for OMTP pinout</td>
  </tr>
  <tr>
-    <td>
-<p>OMTP pinout order  (LRMG)</p>
-</td>
-    <td>
-<p>Optional</p>
-</td>
+    <td>OMTP pinout order (LRMG)</td>
+    <td>Optional</td>
     <td></td>
  </tr>
  <tr>
-    <td>
-<p>Microphone</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>Must not be obstructed when operating headset controls</p>
-</td>
+    <td>Microphone</td>
+    <td>Required</td>
+    <td>Must not be obstructed when operating headset controls</td>
  </tr>
 </table>
 
-<h3 id=electrical>Electrical</h3>
+<h3 id="electrical">Electrical</h3>
 
 <table>
  <tr>
-    <th>
-<p><strong>Function</strong></p>
-</th>
-    <th>
-<p><strong>Accessory Support</strong></p>
-</th>
-    <th>
-<p><strong>Description</strong></p>
-</th>
+    <th style="width:33%">Function</th>
+    <th style="width:33%">Accessory Support</th>
+    <th style="width:33%">Description</th>
  </tr>
  <tr>
-    <td>
-<p>Ear speaker impedance</p>
-</td>
-    <td>
-<p><strong>16 ohms or higher</strong></p>
-</td>
-    <td>
-<p>Recommend 32 - 300 ohms</p>
-</td>
+    <td>Ear speaker impedance</td>
+    <td>16 ohms or higher</td>
+    <td>Recommend 32 - 300 ohms</td>
  </tr>
  <tr>
-    <td>
-<p>Mic DC resistance</p>
+    <td>Mic DC resistance</td>
+    <td>1000 ohms or higher
 </td>
-    <td>
-<p><strong>1000 ohms or higher</strong></p>
-</td>
-    <td>
-<p>Mic characteristics must be compliant with section 5.4 “Audio Recording” of
-current Android Compatibility Definition Document (CDD)</p>
-</td>
+    <td>Mic characteristics must be compliant with section 5.4 “Audio
+    Recording” of the current
+    <a href="{@docRoot}compatibility/android-cdd.pdf">Android CDD</a></td>
  </tr>
  <tr>
-    <td>
-<p>Control Function Equivalent impedance*</p>
-
-<p>*Total impedance from positive mic terminal to GND when button is pressed with
-2.2 V mic bias applied through 2.2 kOhm resistor</p>
-</td>
-    <td>
-<p><strong>0 ohm</strong></p>
-</td>
-    <td>
-<p>[Function A]  Play/Pause/Hook</p>
-</td>
+    <td rowspan="4">Control Function Equivalent impedance*</td>
+    <td>0 ohm</td>
+    <td>[Function A] Play/Pause/Hook</td>
  </tr>
  <tr>
-    <td></td>
-    <td>
-<p><strong>240 ohm</strong> +/- 1% resistance</p>
-</td>
-    <td>
-<p>[Function B]</p>
-</td>
+    <td>240 ohm +/- 1% resistance</td>
+    <td>[Function B]</td>
  </tr>
  <tr>
-    <td></td>
-    <td>
-<p><strong>470 ohm</strong> +/- 1% resistance</p>
-</td>
-    <td>
-<p>[Function C] </p>
-</td>
+    <td>470 ohm +/- 1% resistance</td>
+    <td>[Function C]</td>
  </tr>
  <tr>
-    <td></td>
-    <td>
-<p><strong>135 ohm</strong> +/- 1% resistance</p>
-</td>
-    <td>
-<p>[Function D]</p>
-</td>
+    <td>135 ohm +/- 1% resistance</td>
+    <td>[Function D]</td>
  </tr>
 </table>
 
-<p>In the following diagrams, Button A is mapped to Function A, Button B to
+<p><em>*Total impedance from positive mic terminal to GND when button is
+pressed with 2.2 V mic bias applied through 2.2 kOhm resistor</em></p>
+
+<p>In the following diagrams, Button A maps to Function A, Button B to
 Function B, and so on.</p>
 
-<h3 id=reference_headset_test_circuit_1>Reference Headset Test Circuit 1</h3>
+<h3 id="reference_headsets">Reference headset test circuits</h3>
+
+<p>The following diagram for Reference Headset Test Circuit 1 shows the CTIA
+pinout for a 4-segment plug. For the OMTP pinout, switch the positions of the
+MIC and GND segments.</p>
 
 <img src="images/headset-circuit1.png" alt="Reference Headset Test Circuit 1" />
 <p class="img-caption"><strong>Figure 1.</strong> Reference headset test circuit 1</p>
 
-<p class="note"><strong>Note:</strong> The above diagram shows the CTIA pinout
-for a 4-segment plug. For the OMTP pinout, switch the positions of the MIC and
-GND segments.</p>
-
-<h3 id=reference_headset_test_circuit_2>Reference Headset Test Circuit 2</h3>
-
-<p>The second reference circuit shows how the actual resistor values (R1 - R4)
-are altered to meet this specification.</p>
+<p>The following diagram for Reference Headset Test Circuit 2 shows how the
+actual resistor values (R1 - R4) are altered to meet this specification.</p>
 
 <img src="images/headset-circuit2.png" alt="Reference Headset Test Circuit 2" />
 <p class="img-caption"><strong>Figure 2.</strong> Reference headset test circuit 2</p>
@@ -314,293 +199,161 @@
 equivalent impedance value of that button (provided), and Rmic is the
 microphone impedance value.</p>
 
-<p>The example above assumes a 5 kohm microphone impedance (Rmic). Therefore, to
-achieve an equivalent R4 impedance of 135 ohm (ReqD), the actual resistor value
-(R4) needs to be 139 ohms.</p>
+<p>The example above assumes a 5 kohm microphone impedance (Rmic); to achieve
+an equivalent R4 impedance of 135 ohm (ReqD), the actual resistor value (R4)
+must be 139 ohms.</p>
 
-
-<h2 id=mobile_device_jack_specifications>Mobile Device (Jack) Specifications</h2>
+<h2 id="mobile_device_jack_specifications">Mobile device (jack) specifications</h2>
 
 <p class="caution"><strong>Caution:</strong> To achieve compatibility with the
-headset specification above, devices that include a 4 conductor 3.5mm audio
-jack must meet the following specifications. Please see the <em>Analog audio
-ports</em> section of the <a
-href="{@docRoot}compatibility/android-cdd.pdf">Android Compatibility Definition
-Document (CDD)</a> for Android compatibility requirements.</p>
+headset specification, devices that include a 4 conductor 3.5mm audio jack
+must meet the following specifications. For Android compatibility requirements,
+refer to the <em>Analog audio ports</em> section of the <a
+href="{@docRoot}compatibility/android-cdd.pdf">Android CDD</a>.</p>
 
-<p><strong>Headset Jack Functions</strong></p>
+<h3 id="headset_jack_functions">Functions</h3>
+
 <table>
  <tr>
-    <th>
-<p><strong>Function</strong></p>
-</th>
-    <th>
-<p><strong>Device Support</strong></p>
-</th>
+    <th>Function</th>
+    <th>Device Support</th>
  </tr>
  <tr>
-    <td>
-<p>Stereo Audio Out</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
+    <td>Stereo Audio Out</td>
+    <td>Required</td>
  </tr>
  <tr>
-    <td>
-<p>Audio in (Mic)</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
+    <td>Audio in (Mic)</td>
+    <td>Required</td>
  </tr>
  <tr>
-    <td>
-<p>Ground</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
+    <td>Ground</td>
+    <td>Required</td>
  </tr>
 </table>
 
-<h3 id=software_mapping>Software mapping</h3>
+<h3 id="software_mapping">Software mapping</h3>
 
 <table>
  <tr>
-    <th>
-<p><strong>Function</strong></p>
-</th>
-    <th>
-<p><strong>Device Support</strong></p>
-</th>
-    <th>
-<p><strong>Description</strong></p>
-</th>
+    <th style="width:33%">Function</th>
+    <th style="width:33%">Device Support</th>
+    <th style="width:33%">Description</th>
  </tr>
  <tr>
-    <td>
-<p>Function A control event </p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>input event KEY_MEDIA</p>
-
-<p>Android key  KEYCODE_HEADSETHOOK</p>
-</td>
+    <td>Function A control event</td>
+    <td>Required</td>
+    <td>input event KEY_MEDIA
+<p>Android key KEYCODE_HEADSETHOOK</p></td>
  </tr>
  <tr>
-    <td>
-<p>Function D control event</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>input event KEY_VOICECOMMAND</p>
-
-<p>Android key KEYCODE_VOICE_ASSIST</p>
-</td>
+    <td>Function D control event</td>
+    <td>Required</td>
+    <td>input event KEY_VOICECOMMAND
+<p>Android key KEYCODE_VOICE_ASSIST</p></td>
  </tr>
  <tr>
-    <td>
-<p>Function B control event</p>
+    <td>Function B control event</td>
+    <td>Required
 </td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>input event KEY_VOLUMEUP</p>
-
-<p>Android key  VOLUME_UP</p>
-</td>
+    <td>input event KEY_VOLUMEUP
+<p>Android key  VOLUME_UP</p></td>
  </tr>
  <tr>
-    <td>
-<p>Function C control event</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>input event KEY_VOLUMEDOWN</p>
-
-<p>Android key  VOLUME_DOWN</p>
-</td>
+    <td>Function C control event</td>
+    <td>Required</td>
+    <td>input event KEY_VOLUMEDOWN
+<p>Android key VOLUME_DOWN</p></td>
  </tr>
  <tr>
-    <td>
-<p>Headset insertion detection</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>input event SW_JACK_PHYSICAL_INSERT 7</p>
-</td>
+    <td>Headset insertion detection</td>
+    <td>Required</td>
+    <td>input event SW_JACK_PHYSICAL_INSERT 7</td>
  </tr>
  <tr>
-    <td>
-<p>Headset type detection</p>
-</td>
-    <td>
-<p><strong>Mic</strong></p>
-</td>
-    <td>
-<p>input event SW_MICROPHONE_INSERT 4</p>
-</td>
+    <td rowspan="2">Headset type detection</td>
+    <td>Mic</td>
+    <td>input event SW_MICROPHONE_INSERT 4</td>
  </tr>
  <tr>
-    <td>
-<p>Headset type detection</p>
-</td>
-    <td>
-<p><strong>No Mic</strong></p>
-</td>
-    <td>
-<p>input event SW_HEADPHONE_INSERT 2</p>
-</td>
+    <td>No Mic</td>
+    <td>input event SW_HEADPHONE_INSERT 2</td>
  </tr>
  <tr>
-    <td>
-<p>Headset speaker impedance</p>
-</td>
-    <td>
-<p><strong>Required Headphone (low)</strong></p>
-</td>
-    <td>
-<p>Failure mode is to indicate headphones so that limitation would be on</p>
-</td>
+    <td rowspan="2">Headset speaker impedance</td>
+    <td>Required Headphone (low)</td>
+    <td>Failure mode is to indicate headphones so limitation would be on</td>
  </tr>
  <tr>
-    <td>
-<p>Headset speaker impedance</p>
-</td>
-    <td>
-<p><strong>Required Line In (high)</strong></p>
-</td>
-    <td>
-<p>input event SW_LINEOUT_INSERT 6</p>
-</td>
+    <td>Required Line In (high)</td>
+    <td>input event SW_LINEOUT_INSERT 6</td>
  </tr>
 </table>
 
-<h3 id=mechanical11>Mechanical</h3>
+<h3 id="mechanical11">Mechanical</h3>
 
 <table>
  <tr>
-    <th>
-<p><strong>Function</strong></p>
-</th>
-    <th>
-<p><strong>Device Support</strong></p>
-</th>
-    <th>
-<p><strong>Description</strong></p>
-</th>
+    <th style="width:33%">Function</th>
+    <th style="width:33%">Device Support</th>
+    <th style="width:33%">Description</th>
  </tr>
  <tr>
-    <td>
-<p>4 conductor 3.5mm jack</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
+    <td>4 conductor 3.5mm jack</td>
+    <td>Required</td>
     <td></td>
  </tr>
  <tr>
-    <td>
-<p>CTIA pinout order (LRGM)</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>3 Pin & Mono Plug Compatible</p>
-</td>
+    <td>CTIA pinout order (LRGM)</td>
+    <td>Required</td>
+    <td>3 Pin & Mono Plug Compatible</td>
  </tr>
  <tr>
-    <td>
-<p>OMTP pinout order  (LRMG)</p>
-</td>
-    <td>
-<p>Optional but <strong>Strongly Recommended</strong></p>
-</td>
+    <td>OMTP pinout order (LRMG)</td>
+    <td>Optional but strongly recommended</td>
     <td></td>
  </tr>
  <tr>
-    <td>
-<p>Headset detect sequence</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>Plug insert notification must only be triggered after all contacts on plug are
-touching their relevant segments. This will prevent unreliable headset
-detection due to slow insertion. </p>
-</td>
+    <td>Headset detect sequence</td>
+    <td>Required</td>
+    <td>Plug insert notification must be triggered only after all contacts on
+    plug are touching their relevant segments (this prevents unreliable headset
+    detection due to slow insertion.</td>
  </tr>
 </table>
 
-<h3 id=electrical12>Electrical</h3>
+<h3 id="electrical12">Electrical</h3>
 
-<h4 id=general>General</h4>
+<h4 id="general">General</h4>
 
 <table>
  <tr>
-    <th>
-<p><strong>Function</strong></p>
-</th>
-    <th>
-<p><strong>Device Support</strong></p>
-</th>
-    <th>
-<p><strong>Notes</strong></p>
-</th>
+    <th style="width:33%">Function</th>
+    <th style="width:33%">Device Support</th>
+    <th style="width:33%">Notes</th>
  </tr>
  <tr>
-    <td>
-<p>Maximum output voltage drive</p>
-</td>
-    <td>
-<p>150mV </p>
-</td>
-    <td>
-<p>&gt;= 150mV on 32 ohm</p>
-
-<p>Test conditions: EN50332-2</p>
-</td>
+    <td>Maximum output voltage drive</td>
+    <td>150mV</td>
+    <td>&gt;= 150mV on 32 ohm
+<p>Test conditions: EN50332-2</p></td>
  </tr>
  <tr>
-    <td>
-<p>Mic bias resistance </p>
-</td>
-    <td>
-<p>Required</p>
-</td>
-    <td>
-<p>Flexible on detection method used and microphone bias resistor selection.
-Require that all button resistance value ranges specified below be detected and
-related to their respective function</p>
-</td>
+    <td>Mic bias resistance</td>
+    <td>Required</td>
+    <td>Flexible on detection method used and microphone bias resistor
+    selection. Require that all button resistance value ranges specified below
+    be detected and related to their respective function</td>
  </tr>
  <tr>
-    <td>
-<p>Mic bias voltage</p>
-</td>
-    <td>
-<p>1.8V - 2.9V</p>
-</td>
-    <td>
-<p>To guarantee compatibility to common microphone capsules.</p>
-</td>
+    <td>Mic bias voltage</td>
+    <td>1.8V - 2.9V</td>
+    <td>To guarantee compatibility to common microphone capsules.</td>
  </tr>
 </table>
 
-<h4 id=function_impedance_and_threshold_detection>Function Impedance and Threshold Detection</h4>
+<h4 id="function_impedance_and_threshold_detection">Function impedance and
+threshold detection</h4>
 
 <p>Devices must detect the following resistor ladder on the accessories. The
 accessories will be tested to the standardized circuit diagram in the diagram
@@ -609,89 +362,49 @@
 bias applied through 2.2 kOhm resistor. This is the same effective resistance
 as the button detection circuit with the microphone in parallel with the button
 resistor.</p>
+
 <table>
  <tr>
-    <th>
-<p><strong>Button Impedance Level</strong></p>
-</th>
-    <th>
-<p><strong>Device Support</strong></p>
-</th>
-    <th>
-<p><strong>Notes</strong></p>
-</th>
+    <th style="width:40%">Button Impedance Level</th>
+    <th style="width:20%">Device Support</th>
+    <th style="width:40%">Notes</th>
  </tr>
  <tr>
-    <td>
-<p><strong>70 ohm or less</strong></p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>[Function A]</p>
-</td>
+    <td>70 ohm or less</td>
+    <td>Required</td>
+    <td>[Function A]</td>
  </tr>
  <tr>
-    <td>
-<p><strong>110 - 180 ohm </strong></p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>[Function D]</p>
-</td>
+    <td>110 - 180 ohm</td>
+    <td>Required</td>
+    <td>[Function D]</td>
  </tr>
  <tr>
-    <td>
-<p><strong>210 - 290 ohm</strong></p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>[Function B]</p>
-</td>
+    <td>210 - 290 ohm</td>
+    <td>Required</td>
+    <td>[Function B]</td>
  </tr>
  <tr>
-    <td>
-<p><strong>360 - 680 ohm </strong></p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>[Function C]</p>
-</td>
+    <td>360 - 680 ohm</td>
+    <td>Required</td>
+    <td>[Function C]</td>
+ </tr>
+ </table>
+
+ <table>
+ <tr>
+    <th style="width:40%">Headset Speaker Impedance Level</th>
+    <th style="width:20%">Device Support</th>
+    <th style="width:40%">Notes</th>
  </tr>
  <tr>
-    <td>
-<p><strong>Headset speaker impedance level</strong></p>
-</td>
-    <td></td>
-    <td></td>
+    <td>Low Threshold Detection</td>
+    <td>Required</td>
+    <td>Headphone (low) &lt; 1 Kohm</td>
  </tr>
  <tr>
-    <td>
-<p>Low Threshold Detection</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>Headphone (low) &lt; 1 Kohm</p>
-</td>
+    <td>High Threshold Detection</td>
+    <td>Required</td>
+    <td>Line In (high) &gt; 5 Kohm</td>
  </tr>
- <tr>
-    <td>
-<p>High Threshold Detection</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>Line In (high) &gt; 5 Kohm</p>
-</td>
- </tr>
-</table>
+</table>
\ No newline at end of file
diff --git a/src/accessories/images/headset-circuit1.png b/src/accessories/images/headset-circuit1.png
index f3e622a..d6f7421 100644
--- a/src/accessories/images/headset-circuit1.png
+++ b/src/accessories/images/headset-circuit1.png
Binary files differ
diff --git a/src/accessories/images/headset-circuit2.png b/src/accessories/images/headset-circuit2.png
index ff6b541..6700c45 100644
--- a/src/accessories/images/headset-circuit2.png
+++ b/src/accessories/images/headset-circuit2.png
Binary files differ
diff --git a/src/compatibility/5.1/versions.jd b/src/compatibility/5.1/versions.jd
index 52a7f90..e27d574 100644
--- a/src/compatibility/5.1/versions.jd
+++ b/src/compatibility/5.1/versions.jd
@@ -11,8 +11,9 @@
 <p>Because subsequent releases of the Android software may revise this string,
 but not change any API behavior, such releases may not be accompanied by a new
 Compatibility Definition Document. This page lists the versions that are
-allowable by an Android 5.0-based system. The only permitted values for
+allowable by an Android 5.1-based system. The only permitted values for
 <code>android.os.Build.VERSION.RELEASE</code> for Android 5.1 are:</p>
 <ul>
 <li>5.1</li>
+<li>5.1.1</li>
 </ul>
diff --git a/src/compatibility/compatibility_toc.cs b/src/compatibility/compatibility_toc.cs
index 6d4b69e..c0115e9 100644
--- a/src/compatibility/compatibility_toc.cs
+++ b/src/compatibility/compatibility_toc.cs
@@ -24,9 +24,21 @@
     </div>
     <ul>
       <li><a href="<?cs var:toroot ?>compatibility/overview.html">Overview</a></li>
-      <li><a href="<?cs var:toroot ?>compatibility/cts-intro.html">Compatibility Test Suite</a></li>
-      <li><a href="<?cs var:toroot ?>compatibility/cts-development.html">CTS Development</a></li>
       <li><a href="<?cs var:toroot ?>compatibility/android-cdd.pdf">Compatibility Definition Document (CDD)</a></li>
+      <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>compatibility/cts/index.html">
+            <span class="en">Compatibility Test Suite</span>
+          </a>
+        </div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>compatibility/cts/setup.html">Set up CTS</a></li>
+          <li><a href="<?cs var:toroot ?>compatibility/cts/run.html">Run CTS</a></li>
+          <li><a href="<?cs var:toroot ?>compatibility/cts/verifier.html">Run CTS Verifier</a></li>
+          <li><a href="<?cs var:toroot ?>compatibility/cts/interpret.html">Interpret Results</a></li>
+          <li><a href="<?cs var:toroot ?>compatibility/cts/development.html">Develop CTS</a></li>
+        </ul>
+      </li>
       <li><a href="<?cs var:toroot ?>compatibility/downloads.html">Downloads</a></li>
       <li><a href="<?cs var:toroot ?>compatibility/contact-us.html">Contact Us</a></li>
     </ul>
diff --git a/src/compatibility/contact-us.jd b/src/compatibility/contact-us.jd
index 6c590f5..e77b115 100644
--- a/src/compatibility/contact-us.jd
+++ b/src/compatibility/contact-us.jd
@@ -2,24 +2,24 @@
 @jd:body
 
 <!--
-    Copyright 2015 The Android Open Source Project     
+    Copyright 2015 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.
 -->
 <p>This page describes the
 contact methods for inquiries regarding the Android compatibility program,
 including the Compatibility Definition Document (CDD) and Compatibility Test
-Suite (CTS). See the <a href="{@docRoot}community/index.html">Community</a>
+Suite (CTS). See the <a href="{@docRoot}source/community.html">Community</a>
 page for communication channels regarding other topics.</p>
 
 <h2
@@ -38,7 +38,7 @@
 </ul>
 
 <p>To make best use of this list, please first read <a
-href="{@docRoot}source/community/index.html#getting-the-most-from-our-lists">Getting
+href="{@docRoot}source/community.html#getting-the-most-from-our-lists">Getting
 the Most from Our Lists</a> on the Community page. Users looking for help with
 Android devices should contact their carrier or manufacturer for help.</p>
 
@@ -49,4 +49,4 @@
 href="mailto:android-partnerships@google.com">android-partnerships@google.com</a>
 
 <p>While we read every message received, we cannot respond to each of them. We
-promise to contact you if we can help!</p>
+promise to contact you if we can help!</p>
\ No newline at end of file
diff --git a/src/compatibility/cts-development.jd b/src/compatibility/cts-development.jd
deleted file mode 100644
index 4631aca..0000000
--- a/src/compatibility/cts-development.jd
+++ /dev/null
@@ -1,109 +0,0 @@
-page.title=CTS Development
-@jd:body
-
-<!--
-    Copyright 2013 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.   
--->
-
-<h2 id="initializing-your-repo-client">Initializing Your Repo Client</h2>
-<p>Follow the <a href="{@docRoot}source/downloading.html">instructions</a>
-to get and build the Android source code but specify <code>-b android-4.3_r1</code>
-when issuing the <code>repo init</code> command. This assures that your CTS
-changes will be included in the next CTS release and beyond.</p>
-<h2 id="setting-up-eclipse">Setting Up Eclipse</h2>
-<p>Follow the <a href="{@docRoot}source/using-eclipse.html">instructions</a>
-to setup Eclipse but execute the following command to generate the
-<code>.classpath</code> file rather than copying the one from the development
-project:</p>
-<pre><code>cd /path/to/android/root
-./cts/development/ide/eclipse/genclasspath.sh &gt; .classpath
-chmod u+w .classpath
-</code></pre>
-<p>This <code>.classpath</code> file will contain both the Android framework
-packages and the CTS packages.</p>
-<h2 id="building-and-running-cts">Building and Running CTS</h2>
-<p>Execute the following commands to build CTS and start the interactive
-CTS console:</p>
-<pre><code>cd /path/to/android/root
-make cts
-cts-tradefed
-</code></pre>
-<p>At the cts-tf console, enter e.g.:</p>
-<pre><code>run cts --plan CTS
-</code></pre>
-<h2 id="writing-cts-tests">Writing CTS Tests</h2>
-<p>CTS tests use JUnit and the Android testing APIs. Review the 
-<a href="https://developer.android.com/guide/topics/testing/testing_android.html">Testing and Instrumentation</a>
-tutorial while perusing the existing tests under the
-<code>cts/tests/tests</code> directory. You will see that CTS tests mostly follow the same
-conventions used in other Android tests.</p>
-<p>Since CTS runs across many production devices, the tests must follow
-these rules:</p>
-<ul>
-<li>Must take into account varying screen sizes, orientations, and keyboard layouts.</li>
-<li>Only use public API methods. In other words, avoid all classes, methods, and fields that are annotated with the "hide" annotation.</li>
-<li>Avoid relying upon particular view layouts or depend on the dimensions of assets that may not be on some device.</li>
-<li>Don't rely upon root privileges.</li>
-</ul>
-<h3 id="test-naming-and-location">Test Naming and Location</h3>
-<p>Most CTS test cases target a specific class in the Android API. These tests
-have Java package names with a <code>cts</code> suffix and class
-names with the <code>Test</code> suffix. Each test case consists of
-multiple tests, where each test usually exercises a particular API method of
-the API class being tested. These tests are arranged in a directory structure
-where tests are grouped into different categories like "widgets" and "views."</p>
-<p>For example, the CTS test for <code>android.widget.TextView</code> is
-<code>android.widget.cts.TextViewTest</code> found under the
-<code>cts/tests/tests/widget/src/android/widget/cts</code> directory with its
-Java package name as <code>android.widget.cts</code> and its class name as
-<code>TextViewTest</code>. The <code>TextViewTest</code> class has a test called <code>testSetText</code>
-that exercises the "setText" method and a test named "testSetSingleLine" that
-calls the <code>setSingleLine</code> method. Each of those tests have <code>@TestTargetNew</code>
-annotations indicating what they cover.</p>
-<p>Some CTS tests do not directly correspond to an API class but are placed in
-the most related package possible. For instance, the CTS test,
-<code>android.net.cts.ListeningPortsTest</code>, is in the <code>android.net.cts</code>, because it
-is network related even though there is no <code>android.net.ListeningPorts</code> class.
-You can also create a new test package if necessary. For example, there is an
-"android.security" test package for tests related to security. Thus, use your
-best judgement when adding new tests and refer to other tests as examples.</p>
-<p>Finally, a lot of tests are annotated with @TestTargets and @TestTargetNew.
-These are no longer necessary so do not annotate new tests with these.</p>
-<h3 id="new-test-packages">New Test Packages</h3>
-<p>When adding new tests, there may not be an existing directory to place your
-test. In that case, refer to the example under <code>cts/tests/tests/example</code> and
-create a new directory. Furthermore, make sure to add your new package's
-module name from its <code>Android.mk</code> to <code>CTS_COVERAGE_TEST_CASE_LIST</code> in
-<code>cts/CtsTestCaseList.mk</code>. This Makefile is used by <code>build/core/tasks/cts.mk</code>
-to glue all the tests together to create the final CTS package.</p>
-<h3 id="test-stubs-and-utilities">Test Stubs and Utilities</h3>
-<p>Some tests use additional infrastructure like separate activities
-and various utilities to perform tests. These are located under the
-<code>cts/tests/src</code> directory. These stubs aren't separated into separate test
-APKs like the tests, so the <code>cts/tests/src</code> directory does not have additional
-top level directories like "widget" or "view." Follow the same principle of
-putting new classes into a package with a name that correlates to the purpose
-of your new class. For instance, a stub activity used for testing OpenGL like
-<code>GLSurfaceViewStubActivity</code> belongs in the <code>android.opengl.cts</code> package under
-the <code>cts/tests/src/android/opengl</code> directory.</p>
-<h2 id="other-tasks">Other Tasks</h2>
-<p>Besides adding new tests there are other ways to contribute to CTS:</p>
-<ul>
-<li>Fix or remove tests annotated with BrokenTest and KnownFailure.</li>
-</ul>
-<h2 id="submitting-your-changes">Submitting Your Changes</h2>
-<p>Follow the <a href="{@docRoot}source/submit-patches.html">Android Contributors' Workflow</a>
-to contribute changes to CTS. A reviewer
-will be assigned to your change, and your change should be reviewed shortly!</p>
diff --git a/src/compatibility/cts-intro.jd b/src/compatibility/cts-intro.jd
deleted file mode 100644
index d9dcc99..0000000
--- a/src/compatibility/cts-intro.jd
+++ /dev/null
@@ -1,166 +0,0 @@
-page.title=Compatibility Test Suite
-@jd:body
-
-<!--
-    Copyright 2014 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.   
--->
-
-<h2 id="how-does-the-cts-work">How does the CTS work?</h2>
-
-<div class="figure" style="width:383px">
-  <img src="{@docRoot}images/cts-0.png" alt="CTS flow" height="340px" id="figure1" />
-  <p class="img-caption">
-    <strong>Figure 1.</strong> How to use CTS
-  </p>
-</div>
-
-<p>The CTS is an automated testing harness that includes two major software components:</p>
-<ul>
-<li>
-<p>The CTS test harness runs on your desktop machine and manages test execution.</p>
-</li>
-<li>
-<p>Individual test cases are executed on attached mobile devices or on an
-emulator. The test cases are written in Java as JUnit tests and packaged as
-Android .apk files to run on the actual device target.</p>
-</li>
-</ul>
-<h2 id="workflow">Workflow</h2>
-<p>This section summarizes CTS setup. Please refer to the <a href="android-cts-manual.pdf">
-CTS User Manual</a> for detailed instructions.</p>
-<ol>
-<li>
-<p><a href="downloads.html">Download</a> the CTS and CTS media files.</p>
-</li>
-<li>
-<p>Attach at least one device (or emulator) to your machine.</p>
-</li>
-<li>
-<p>For CTS versions 2.1 R2 through 4.2 R4, set up your device (or emulator) to run the accessibility tests:</p>
-<ol>
-<li>
-<code>adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk</code>
-</li>
-<li>
-<p>On the device, enable Settings &gt; Accessibility &gt; Accessibility &gt; Delegating Accessibility Service</p>
-</li>
-</ol>
-</li>
-<li>
-<p>For CTS 2.3 R4 and beyond, set up your device to run the device administration tests:</p>
-<ol>
-<li>
-<code>adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk</code>
-</li>
-<li>
-<p>On the device, enable the two <code>android.deviceadmin.cts.CtsDeviceAdminReceiver*</code> device
-administrators under Settings &gt; Location &amp; security &gt; Select device administrators</p>
-<p><strong>Note</strong>: Make sure the <code>android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver</code>
-stays disabled in the same menu.</p>
-</li>
-</ol>
-</li>
-<li>
-<p>For CTS 2.3 R12 and beyond, the CTS media files must be copied to the device's external storage. Check section 4.2 of the latest CTS manual for further details on copying these files:</p>
-<ol>
-<li>
-<p>Unzip the CTS Media zip file.</p>
-</li>
-<li>
-<p>Run the following command. If no resolution is specified, the default maximum resolution of
-480x360 is assumed:</p>
-<code>copy_media.sh [720x480|1280x720|1920x1080|all] [-s serial]</code>
-</li>
-</ol>
-</li>
-<li>
-<p>Launch the CTS. The CTS test harness loads the test plan onto the attached devices. For each test in the test harness:</p>
-<ul>
-<li>
-<p>The test harness pushes an .apk file to each device, executes the test through instrumentation, and records test results.</p>
-</li>
-<li>
-<p>The test harness removes the .apk file from each device.</p>
-</li>
-</ul>
-</li>
-<li>
-<p>Once all the tests are executed, view the test results in your browser and
-use them to adjust your design. You can continue to run the CTS throughout your development process.</p>
-</li>
-</ol>
-<h2 id="types-of-test-cases">Types of test cases</h2>
-<p>The CTS includes the following types of test cases:</p>
-<ul>
-<li>
-<p><em>Unit tests</em> test atomic units of code within the Android platform; e.g. a single class, such as java.util.HashMap.</p>
-</li>
-<li>
-<p><em>Functional tests</em> test a combination of APIs together in a higher-level use-case.</p>
-</li>
-<li>
-<p><em>Reference application tests</em> instrument a complete sample application
-to exercise a full set of APIs and Android runtime services.</p>
-</li>
-</ul>
-<p>Future versions of the CTS will include the following types of test cases:</p>
-<ul>
-<li>
-<p><em>Robustness tests</em> test the durability of the system under stress.</p>
-</li>
-<li>
-<p><em>Performance tests</em> test the performance of the system against defined benchmarks, for example rendering frames per second.</p>
-</li>
-</ul>
-<h2 id="areas-covered">Areas Covered</h2>
-<p>The unit test cases cover the following areas to ensure compatibility:</p>
-<table>
-<thead>
-<tr>
-<th>Area</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>Signature tests</td>
-<td>For each Android release, there are XML files describing the signatures of all public APIs contained in the release. The CTS contains a utility to check those API signatures against the APIs available on the device. The results from signature checking are recorded in the test result XML file.</td>
-</tr>
-<tr>
-<td>Platform API Tests</td>
-<td>Test the platform (core libraries and Android Application Framework) APIs as documented in the SDK <a href="https://developer.android.com/reference/classes.html">Class Index</a> to ensure API correctness, including correct class, attribute and method signatures, correct method behavior, and negative tests to ensure expected behavior for incorrect parameter handling.</td>
-</tr>
-<tr>
-<td>Dalvik VM Tests</td>
-<td>The tests focus on testing the Dalvik Executable Format.</td>
-</tr>
-<tr>
-<td>Platform Data Model</td>
-<td>The CTS tests the core platform data model as exposed to application developers through content providers, as documented in the SDK <a href="https://developer.android.com/reference/android/provider/package-summary.html">android.provider</a> package: contacts, browser, settings, etc.</td>
-</tr>
-<tr>
-<td>Platform Intents</td>
-<td>The CTS tests the core platform intents, as documented in the SDK <a href="https://developer.android.com/guide/appendix/g-app-intents.html">Available Intents</a>.</td>
-</tr>
-<tr>
-<td>Platform Permissions</td>
-<td>The CTS tests the core platform permissions, as documented in the SDK <a href="https://developer.android.com/reference/android/Manifest.permission.html">Available Permissions</a>.</td>
-</tr>
-<tr>
-<td>Platform Resources</td>
-<td>The CTS tests for correct handling of the core platform resource types, as documented in the SDK <a href="https://developer.android.com/guide/topics/resources/available-resources.html">Available Resource Types</a>. This includes tests for: simple values, drawables, nine-patch, animations, layouts, styles and themes, and loading alternate resources.</td>
-</tr>
-</tbody>
-</table>
diff --git a/src/compatibility/cts/development.jd b/src/compatibility/cts/development.jd
new file mode 100644
index 0000000..662d94a
--- /dev/null
+++ b/src/compatibility/cts/development.jd
@@ -0,0 +1,189 @@
+page.title=CTS Development
+@jd:body
+
+<!--
+    Copyright 2015 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>
+
+<h2 id="initializing-your-repo-client">Initializing your Repo client</h2>
+<p>Follow the <a href="{@docRoot}source/downloading.html">instructions</a>
+to get and build the Android source code but specify a particular CTS branch
+name, for example<code>-b android-5.0_r2</code>, when issuing the <code>repo
+init</code> command. This assures your CTS changes will be included in the
+next CTS release and beyond.</p>
+
+<h2 id="setting-up-eclipse">Setting up Eclipse</h2>
+
+<p>Follow the <a href="{@docRoot}source/using-eclipse.html">instructions</a>
+to setup Eclipse but execute the following command to generate the
+<code>.classpath</code> file rather than copying the one from the development
+project:</p>
+<pre><code>cd /path/to/android/root
+./cts/development/ide/eclipse/genclasspath.sh &gt; .classpath
+chmod u+w .classpath
+</code></pre>
+
+<p>This <code>.classpath</code> file will contain both the Android framework
+packages and the CTS packages.</p>
+
+<h2 id="building-and-running-cts">Building and running CTS</h2>
+
+<p>Execute the following commands to build CTS and start the interactive
+CTS console:</p>
+<p class="note"><strong>Note:</strong> You may supply one of these other values 
+for <code>TARGET_PRODUCT</code> to build for different architectures:
+<code>aosp_x86_64</code> or <code>aosp_mips</code></p>
+<pre><code>cd <em>/path/to/android/root</em>
+make cts -j32 TARGET_PRODUCT=aosp_arm64
+cts-tradefed
+</code></pre>
+
+<p>At the cts-tf console, enter e.g.:</p>
+<pre><code>run cts --plan CTS
+</code></pre>
+
+<h2 id="writing-cts-tests">Writing CTS tests</h2>
+
+<p>CTS tests use JUnit and the Android testing APIs. Review the 
+<a href="https://developer.android.com/tools/testing/testing_android.html">Testing and Instrumentation</a>
+tutorial while perusing the existing tests under the
+<code>cts/tests</code> directory. You will see that CTS tests mostly follow the same
+conventions used in other Android tests.</p>
+<p>Since CTS runs across many production devices, the tests must follow
+these rules:</p>
+<ul>
+<li>Must take into account varying screen sizes, orientations, and keyboard layouts.</li>
+<li>Only use public API methods. In other words, avoid all classes, methods, and fields that are annotated with the "hide" annotation.</li>
+<li>Avoid relying upon particular view layouts or depend on the dimensions of assets that may not be on some device.</li>
+<li>Don't rely upon root privileges.</li>
+</ul>
+
+<h3 id="test-naming-and-location">Test naming and location</h3>
+
+<p>Most CTS test cases target a specific class in the Android API. These tests
+have Java package names with a <code>cts</code> suffix and class
+names with the <code>Test</code> suffix. Each test case consists of
+multiple tests, where each test usually exercises a particular API method of
+the API class being tested. These tests are arranged in a directory structure
+where tests are grouped into different categories like "widgets" and "views."</p>
+
+<p>For example, the CTS test for <code>android.widget.TextView</code> is
+<code>android.widget.cts.TextViewTest</code> found under the
+<code>cts/tests/tests/widget/src/android/widget/cts</code> directory with its
+Java package name as <code>android.widget.cts</code> and its class name as
+<code>TextViewTest</code>. The <code>TextViewTest</code> class has a test called <code>testSetText</code>
+that exercises the "setText" method and a test named "testSetSingleLine" that
+calls the <code>setSingleLine</code> method. Each of those tests have <code>@TestTargetNew</code>
+annotations indicating what they cover.</p>
+
+<p>Some CTS tests do not directly correspond to an API class but are placed in
+the most related package possible. For instance, the CTS test,
+<code>android.net.cts.ListeningPortsTest</code>, is in the <code>android.net.cts</code>, because it
+is network related even though there is no <code>android.net.ListeningPorts</code> class.
+You can also create a new test package if necessary. For example, there is an
+"android.security" test package for tests related to security. Thus, use your
+best judgement when adding new tests and refer to other tests as examples.</p>
+
+<p>Finally, a lot of tests are annotated with @TestTargets and @TestTargetNew.
+These are no longer necessary so do not annotate new tests with these.</p>
+<h3 id="new-test-packages">New sample packages</h3>
+<p>When adding new tests, there may not be an existing directory to place your
+test. In that case, refer to the example under <code>cts/tests/tests/example</code> and
+create a new directory. Furthermore, make sure to add your new package's
+module name from its <code>Android.mk</code> to <code>CTS_COVERAGE_TEST_CASE_LIST</code> in
+<code>cts/CtsTestCaseList.mk</code>. This Makefile is used by <code>build/core/tasks/cts.mk</code>
+to glue all the tests together to create the final CTS package.</p>
+
+<h2 id="Fix-remove-tests">Fix or remove tests</h2>
+<p>Besides adding new tests there are other ways to contribute to CTS: Fix or
+remove tests annotated with "BrokenTest" or "KnownFailure."</p>
+<h2 id="submitting-your-changes">Submitting your changes</h2>
+<p>Follow the <a href="{@docRoot}source/submit-patches.html">Submitting Patches workflow</a>
+to contribute changes to CTS. A reviewer
+will be assigned to your change, and your change should be reviewed shortly!</p>
+
+<h2 id="release-schedule">Release schedule and branch information</h2>
+
+<p>CTS releases follow this schedule.</p>
+
+<p class="note"><strong>Note</strong>: This schedule is tentative and may be
+updated from time to time as CTS for the given Android version matures.</p>
+
+<table>
+<tr>
+  <th>Version</th>
+  <th>Branch</th>
+  <th>Frequency</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>5.1</td>
+  <td>lollipop-mr1-cts-dev</td>
+  <td>Monthly</td>
+</tr>
+<tr>
+  <td>5.0</td>
+  <td>lollipop-cts-dev</td>
+  <td>Monthly</td>
+</tr>
+<tr>
+  <td>4.4</td>
+  <td>kitkat-cts-dev</td>
+  <td>Odd month (Jan, Mar, etc.)</td>
+</tr>
+<tr>
+  <td>4.3</td>
+  <td>jb-mr2-cts-dev</td>
+  <td>First month of each quarter</td>
+</tr>
+<tr>
+  <td>4.2</td>
+  <td>jb-mr1.1-cts-dev</td>
+  <td>First month of each quarter</td>
+</tr>
+</table>
+
+<h3 id="important-dates">Important Dates during month of the release</h3>
+
+<ul>
+  <li><strong>End of 1st Week</strong>: Code Freeze.  At this point,
+submissions on the current branch will no longer be accepted and will not be
+included in the next version of CTS.  Once we have chosen a candidate for
+release, the branch will again be open and accepting new submissions.
+
+  <li><strong>Second or third week</strong>: CTS is published in the Android
+Open Source Project (AOSP).
+</ul>
+
+<h3 id="auto-merge">Auto-merge flow</h3>
+
+<p>CTS development branches have been setup so that changes submitted to each
+branch will automatically merge as below:<br>
+jb-dev-> jb-mr1.1-cts-dev -> jb-mr2-cts-dev  -> kitkat-cts-dev ->
+lollipop-cts-dev -> lollipop-mr1-cts-dev -> &lt;private-development-branch for
+Android M&gt;</p>
+
+<p>If a changelist (CL) fails to merge correctly, the author of the CL will get
+an email with instructions on how to resolve the conflict. In most of the
+cases, the author of the CL can use the instructions to skip the auto-merge of
+the conflicting CL.</p>
diff --git a/src/compatibility/cts/images/camera-printed-target.png b/src/compatibility/cts/images/camera-printed-target.png
new file mode 100644
index 0000000..d405c50
--- /dev/null
+++ b/src/compatibility/cts/images/camera-printed-target.png
Binary files differ
diff --git a/src/compatibility/cts/images/cts-0.png b/src/compatibility/cts/images/cts-0.png
new file mode 100644
index 0000000..4264e4c
--- /dev/null
+++ b/src/compatibility/cts/images/cts-0.png
Binary files differ
diff --git a/src/compatibility/cts/images/cts-test-report.png b/src/compatibility/cts/images/cts-test-report.png
new file mode 100644
index 0000000..892daef
--- /dev/null
+++ b/src/compatibility/cts/images/cts-test-report.png
Binary files differ
diff --git a/src/compatibility/cts/images/cts-test-summary.png b/src/compatibility/cts/images/cts-test-summary.png
new file mode 100644
index 0000000..ff35afc
--- /dev/null
+++ b/src/compatibility/cts/images/cts-test-summary.png
Binary files differ
diff --git a/src/compatibility/cts/images/cts-verifier-icon.png b/src/compatibility/cts/images/cts-verifier-icon.png
new file mode 100644
index 0000000..52f07f3
--- /dev/null
+++ b/src/compatibility/cts/images/cts-verifier-icon.png
Binary files differ
diff --git a/src/compatibility/cts/images/cts-verifier-menu.png b/src/compatibility/cts/images/cts-verifier-menu.png
new file mode 100644
index 0000000..f0ab680
--- /dev/null
+++ b/src/compatibility/cts/images/cts-verifier-menu.png
Binary files differ
diff --git a/src/compatibility/cts/images/path-saved-report.png b/src/compatibility/cts/images/path-saved-report.png
new file mode 100644
index 0000000..5269c2a
--- /dev/null
+++ b/src/compatibility/cts/images/path-saved-report.png
Binary files differ
diff --git a/src/compatibility/cts/images/screen-lock-test.png b/src/compatibility/cts/images/screen-lock-test.png
new file mode 100644
index 0000000..3ffb96e
--- /dev/null
+++ b/src/compatibility/cts/images/screen-lock-test.png
Binary files differ
diff --git a/src/compatibility/cts/images/verifier-save-icon.png b/src/compatibility/cts/images/verifier-save-icon.png
new file mode 100644
index 0000000..f04478d
--- /dev/null
+++ b/src/compatibility/cts/images/verifier-save-icon.png
Binary files differ
diff --git a/src/compatibility/cts/images/video-verifier.png b/src/compatibility/cts/images/video-verifier.png
new file mode 100644
index 0000000..72f62fe
--- /dev/null
+++ b/src/compatibility/cts/images/video-verifier.png
Binary files differ
diff --git a/src/compatibility/cts/index.jd b/src/compatibility/cts/index.jd
new file mode 100644
index 0000000..7b154e5
--- /dev/null
+++ b/src/compatibility/cts/index.jd
@@ -0,0 +1,124 @@
+page.title=Compatibility Test Suite
+@jd:body
+
+<!--
+    Copyright 2015 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>
+
+<h2 id="how-does-the-cts-work">How does the CTS work?</h2>
+
+<p>The CTS is an automated testing harness that includes two major software components:</p>
+<ul>
+<li>
+<p>The CTS tradefed test harness runs on your desktop machine and manages test execution.</p>
+</li>
+<li>
+<p>Individual test cases are executed on the Device Under Test (DUT). The test
+cases are written in Java as JUnit tests and packaged as
+Android .apk files to run on the actual device target.</p>
+</li>
+</ul>
+
+<p>The CTS Verifier is a tool for manual testing and includes the following software components:</p>
+<ul>
+<li>
+<p>The CTS verifier app that is executed on the DUT and collects the results.<p>
+</li>
+<li>
+<p>The executable(s) or script(s) that are executed on the desktop machine to
+provide data or additional control for some test cases in the CTS Verifier
+app.</p>
+</li>
+</ul>
+
+<h2 id="workflow">Workflow</h2>
+
+<div class="figure" style="width:383px">
+  <img src="images/cts-0.png" alt="CTS flow" height="340px" id="figure1" />
+  <p class="img-caption">
+    <strong>Figure 1.</strong> How to use CTS
+  </p>
+</div>
+
+<p>This diagram summarizes CTS workflow. Please refer to the subpages of this
+section starting with <a href="setup.html">Setup</a> for detailed
+instructions.</p>
+
+<h2 id="types-of-test-cases">Types of test cases</h2>
+<p>The CTS includes the following types of test cases:</p>
+<ul>
+<li>
+<p><em>Unit tests</em> test atomic units of code within the Android platform; e.g. a single class, such as java.util.HashMap.</p>
+</li>
+<li>
+<p><em>Functional tests</em> test a combination of APIs together in a higher-level use-case.</p>
+</li>
+</ul>
+<p>Future versions of the CTS will include the following types of test cases:</p>
+<ul>
+<li>
+<p><em>Robustness tests</em> test the durability of the system under stress.</p>
+</li>
+<li>
+<p><em>Performance tests</em> test the performance of the system against defined benchmarks, for example rendering frames per second.</p>
+</li>
+</ul>
+<h2 id="areas-covered">Areas covered</h2>
+<p>The unit test cases cover the following areas to ensure compatibility:</p>
+<table>
+<thead>
+<tr>
+<th>Area</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>Signature tests</td>
+<td>For each Android release, there are XML files describing the signatures of all public APIs contained in the release. The CTS contains a utility to check those API signatures against the APIs available on the device. The results from signature checking are recorded in the test result XML file.</td>
+</tr>
+<tr>
+<td>Platform API Tests</td>
+<td>Test the platform (core libraries and Android Application Framework) APIs as documented in the SDK <a href="https://developer.android.com/reference/classes.html">Class Index</a> to ensure API correctness, including correct class, attribute and method signatures, correct method behavior, and negative tests to ensure expected behavior for incorrect parameter handling.</td>
+</tr>
+<tr>
+<td>Dalvik Tests</td>
+<td>The tests focus on testing the Dalvik Executable Format.</td>
+</tr>
+<tr>
+<td>Platform Data Model</td>
+<td>The CTS tests the core platform data model as exposed to application developers through content providers, as documented in the SDK <a href="https://developer.android.com/reference/android/provider/package-summary.html">android.provider</a> package: contacts, browser, settings, etc.</td>
+</tr>
+<tr>
+<td>Platform Intents</td>
+<td>The CTS tests the core platform intents, as documented in the SDK <a href="https://developer.android.com/guide/appendix/g-app-intents.html">Available Intents</a>.</td>
+</tr>
+<tr>
+<td>Platform Permissions</td>
+<td>The CTS tests the core platform permissions, as documented in the SDK <a href="https://developer.android.com/reference/android/Manifest.permission.html">Available Permissions</a>.</td>
+</tr>
+<tr>
+<td>Platform Resources</td>
+<td>The CTS tests for correct handling of the core platform resource types, as documented in the SDK <a href="https://developer.android.com/guide/topics/resources/available-resources.html">Available Resource Types</a>. This includes tests for: simple values, drawables, nine-patch, animations, layouts, styles and themes, and loading alternate resources.</td>
+</tr>
+</tbody>
+</table>
diff --git a/src/compatibility/cts/interpret.jd b/src/compatibility/cts/interpret.jd
new file mode 100644
index 0000000..c8468d1
--- /dev/null
+++ b/src/compatibility/cts/interpret.jd
@@ -0,0 +1,65 @@
+page.title=Interpreting CTS results
+@jd:body
+
+<!--
+    Copyright 2015 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>The CTS test results are placed in the file:</p>
+<pre>
+$CTS_ROOT/android-cts/repository/results/&lt;start_time>.zip
+</pre>
+
+<p>If you have built the CTS yourself, <em>$CTS_ROOT</em> will resemble the
+path <em>out/host/linux-x86/cts</em> but differ by platform. This reflects the
+path where you have uncompressed the prebuilt official CTS <a
+href="{@docRoot}compatibility/downloads.html">downloaded</a> from this site.</p>
+
+<p>Inside the zip, the testResult.xml file contains the actual results—open
+this file in any web browser (HTML5 compatible browser recommended) to view the
+test results. It will resemble the following screenshots.</p>
+
+<img src="images/cts-test-summary.png" alt="CTS test summary" id="figure1" />
+<p class="img-caption">
+  <strong>Figure 1.</strong> CTS test summary
+</p>
+
+<p>The Device Information section provides details about the device, firmware
+(make, model, firmware build, platform), and device hardware (screen
+resolution, keypad, screen type).  To access device information, click the link
+above Test Summary.</p>
+
+<p>The <em>Test Summary</em> section provides executed test plan details, like
+the CTS plan name and execution start and end times. It also presents an
+aggregate summary of the number of tests that passed, failed, timed out, or
+could not be executed.</p>
+<p>The next section also provides a summary of tests passed per package.</p>
+
+<img src="images/cts-test-report.png" alt="CTS detailed test report" id="figure2" />
+<p class="img-caption">
+  <strong>Figure 2.</strong> CTS test report
+</p>
+
+<p>This is followed by details of the the actual tests that were executed. The
+report lists the test package, test suite, test case, and the executed tests.
+It shows the result of the test execution—pass, fail, timed out, or not
+executed. In the event of a test failure details are provided to help diagnose
+the cause.</p>
+
+<p>Further, the stack trace of the failure is available in the XML file but is
+not included in the report to ensure brevity—viewing the XML file with a text
+editor should provide details of the test failure (search for the
+<em>&lt;Test&gt;</em> tag corresponding to the failed test and look within it
+for the <em>&lt;StackTrace&gt;</em> tag).</p>
diff --git a/src/compatibility/cts/run.jd b/src/compatibility/cts/run.jd
new file mode 100644
index 0000000..ba44a3e
--- /dev/null
+++ b/src/compatibility/cts/run.jd
@@ -0,0 +1,179 @@
+page.title=Running CTS tests
+@jd:body
+
+<!--
+    Copyright 2015 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>
+
+<h2 id=cts_tradefed>Using the CTS tradefed</h2>
+<p>See the <a
+href="{@docRoot}devices/tech/test_infra/tradefed/index.html">Trade Federation
+Overview</a> for an explanation of the Trade Federation (tradefed or TF for
+short) continuous test framework.</p>
+
+<p>To run a test plan:</p>
+<ol>
+  <li>Connect at least one device.
+  <li>Press the <strong>home</strong> button to set the device to the home screen at the start of CTS.
+  <li>While a device is running tests, it must not be used for any other tasks
+    and must be kept in a stationary position (to avoid triggering sensor activity)
+    with the cameras pointing at an object that could be focused.
+  <li>Do not press any keys on the device while the CTS is running. Pressing keys
+    or touching the screen of a test device will interfere with the running tests
+    and may lead to test failures.
+  <li>Launch the CTS console by running the <em>cts-tradefed</em> script from
+    the folder where the CTS package has been unzipped, e.g.
+    <code>$ ./android-cts/tools/cts-tradefed</code>
+  <li>You may start the default test plan (containing all of the test packages) by
+    appending: <code>run cts --plan CTS</code> This will kick off all the CTS tests required for compatibility.
+    Enter <code>list plans</code> to see a list of test plans in the repository.
+    Enter <code>list packages</code> to see a list of test packages in the repository.
+    See the CTS command
+    reference or type help for a complete list of supported commands.
+  <li>Alternately, you may run the CTS plan of your choosing from the command line
+    using: <code>cts-tradefed run cts --plan
+      <plan_name>
+      </code>
+  <li>View test progress and results reported on the console.
+  <li>If your device is Android 5.0 or later and declares support for an ARM and a
+    x86 ABI, you should run both the ARM and x86 CTS packages.
+</ol>
+<h2 id=selecting_cts_plans>Selecting CTS plans</h2>
+<p>The following test plans are available:</p>
+<ul>
+  <li><em>CTS</em>—all tests required for compatibility. </li>
+  <li><em>Signature</em>—the signature verification of all public APIs </li>
+  <li><em>Android</em>—tests for the Android APIs </li>
+  <li><em>Java</em>—tests for the Java core library </li>
+  <li><em>VM</em>—tests for ART or Dalvik </li>
+  <li><em>Performance</em>—performance tests for your implementation </li>
+</ul>
+<p>These can be executed with the <code>run cts</code> command.</p>
+<h2 id=cts_reference>CTS Console command reference</h2>
+<table>
+  <tbody>
+    <tr>
+      <th>Host</th>
+      <th> </th>
+    </tr>
+    <tr>
+      <td><code>help</code></td>
+      <td>Display a summary of the most commonly used commands</td>
+    </tr>
+    <tr>
+      <td><code>help all</code></td>
+      <td>Display the complete list of available commands</td>
+    </tr>
+    <tr>
+      <td><code>exit</code></td>
+      <td>Gracefully exit the CTS console. Console will close when all currently running tests are finished</td>
+    </tr>
+    <tr>
+      <th>Run</th>
+      <th> </th>
+    </tr>
+    <tr>
+      <td><code>run cts</code></td>
+      <td>Run the specified tests and displays progress information. One of --plan, --package, --class or --continue-session-id needs to be specified
+        <p>The CTS console can accept other commands while tests are in progress </p>
+        <p>If no devices are connected, the CTS desktop machine (or host) will wait for a device to be connected before starting tests </p>
+        <p>If more than one device is connected, the CTS host will choose a device automatically</p></td>
+    </tr>
+    <tr>
+      <td><code>--plan &lt;test_plan_name&gt;</code></td>
+      <td>Run the specified test plan</td>
+    </tr>
+    <tr>
+      <td><code>-- package/-p &lt;test_package_name&gt;  [--package/-p &lt;test_package2&gt;...]</code></td>
+      <td>Run the specified test packages</td>
+    </tr>
+    <tr>
+      <td><code>--class/-c &lt;class_name&gt; [--method/-m &lt;test_method_name&gt;</code></td>
+      <td>Run the specified test class and/or method</td>
+    </tr>
+    <tr>
+      <td><code>--continue-session-id</code></td>
+      <td>Run all not executed tests from previous CTS session; the sessions testResult.xml will be updated with the new results</td>
+    </tr>
+    <tr>
+      <td><code>--shards &lt;number_of_shards&gt;</code></td>
+      <td>Shard a CTS run into given number of independent chunks, to run on multiple devices in parallel</td>
+    </tr>
+    <tr>
+      <td><code>--serial/-s &lt;deviceID&gt;</code></td>
+      <td>Run CTS on the specific device</td>
+    </tr>
+    <tr>
+      <td><code>-t &lt;class_name&gt;#&lt;test_method_name&gt;</code></td>
+      <td>Run a specific test method</td>
+    </tr>
+    <tr>
+      <td><code>--abi 32|64</code></td>
+      <td>On 64-bit devices, run the test against only the 32-bit or 64-bit ABI</td>
+    </tr>
+    <tr>
+      <th>List</th>
+      <th> </th>
+    </tr>
+    <tr>
+      <td><code>list packages</code></td>
+      <td>List all available test packages in the repository</td>
+    </tr>
+    <tr>
+      <td><code>list plans</code></td>
+      <td>List all available test plans in the repository</td>
+    </tr>
+    <tr>
+      <td><code>list invocations</code></td>
+      <td>List 'run' commands currently being executed on devices</td>
+    </tr>
+    <tr>
+      <td><code>list commands</code></td>
+      <td>List all 'run' commands currently in the queue waiting to be assigned to devices</td>
+    </tr>
+    <tr>
+      <td><code>list results</code></td>
+      <td>List CTS results currently stored in repository</td>
+    </tr>
+    <tr>
+      <td><code>list devices</code></td>
+      <td>List currently connected devices and their state
+        <p> </p>
+        <p>'Available' devices are functioning, idle devices, available for running tests</p>
+        <p> </p>
+        <p>'Unavailable' devices are devices visible via adb, but are not responding to adb commands and won't be allocated for tests</p>
+        <p> </p>
+        <p>'Allocated' devices are devices currently running tests</td>
+    </tr>
+    <tr>
+      <th>Add</th>
+      <th> </th>
+    </tr>
+    <tr>
+      <td><code>add derivedplan --plan &lt;plan_name&gt;<br>
+        --result/-r<br>
+        [pass | fail | timeout | notExecuted]<br>
+        [--session/-s &lt;session_id&gt;]</code></td>
+      <td>Create a plan derived from given result session; use this option to rerun reports and validate test issues</td>
+    </tr>
+  </tbody>
+</table>
diff --git a/src/compatibility/cts/setup.jd b/src/compatibility/cts/setup.jd
new file mode 100644
index 0000000..dc93278
--- /dev/null
+++ b/src/compatibility/cts/setup.jd
@@ -0,0 +1,177 @@
+page.title=Setting up CTS
+@jd:body
+
+<!--
+    Copyright 2015 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>
+
+<h2 id=desktop_setup>Desktop machine setup</h2>
+<h3 id=adb>Android Debug Bridge (ADB)</h3>
+<p>Before running the CTS, make sure you have a recent version of Android Debug
+Bridge (adb) installed and the <code>adb</code> location added to the system
+path of your machine.</p>
+
+<p>To install ADB, download the <a
+href="http://developer.android.com/sdk/index.html#Other">Android SDK Tools</a>
+package for your operating system, open it, and follow the instructions in the
+included README file. For troubleshooting information, see <a
+href="http://developer.android.com/sdk/installing/index.html?pkg=tools">Installing
+the Stand-alone SDK Tools</a>.</p>
+
+<p>Ensure <code>adb</code> is in your system path. The following command
+assumes you've opened the package archive in your home directory:</p>
+<hr>
+<pre>
+export PATH=$PATH:$HOME/android-sdk-linux/platform-tools
+</pre>
+
+<p class="note"><strong>Note:</strong> Please ensure your starting path and
+directory name are correct.</p>
+
+<h3 id=JDK>Java Development Kit (JDK)</h3>
+<p>You need to install the proper version of the <a
+href="{@docRoot}source/initializing.html#installing-the-jdk">Java Development Kit (JDK)</a>:</p>
+
+<ul>
+  <li>CTS 5.0 and later: Java 7
+  <li>CTS 4.4 and earlier: Java 6
+</ul>
+
+<h3 id=CTS_files>CTS files</h3>
+
+<p><a href="{@docRoot}compatibility/downloads.html">Download</a> and open the CTS
+packages matching your devices' Android version and all the Application Binary
+Interfaces (ABIs) your devices support.</p>
+
+<p>Download and open the latest version of the <a
+href="{@docRoot}compatibility/downloads.html#cts-media-files">CTS Media
+Files</a>.</p>
+
+<h3 id=system_detect>Device detection</h3>
+<p>Follow the step to <a
+href="http://developer.android.com/tools/device.html#setting-up">set up your
+system to detect your device</a>, such as creating a <code>udev</code> rules
+file for Ubuntu Linux.</p>
+
+<h2 id=device_setup>Android device setup</h2>
+
+<h3 id=user_builds>User builds</h3>
+<p>To prevent test timeouts and other failures, your device should be running a
+<strong>user build (Android 4.0 and later)</strong> from <a
+href="{@docRoot}source/build-numbers.html">Codenames, Tags, and Build
+Numbers</a> of source.android.com.<br>
+<p class="note"><strong>Note:</strong> CTS should be executed on consumer
+(user build) devices only.</p>
+</ol>
+
+<h3 id=storage_requirements>Storage requirements</h3>
+<p>The CTS media stress tests require video clips to be on external storage
+(<code>/sdcard</code>). Most of the clips are from <a
+href="https://peach.blender.org/">Big Buck Bunny</a> which is copyrighted by
+the Blender Foundation under the <a
+href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 license.</a></p>
+<p>The required space depends on the maximum video playback resolution supported
+  by the device (See section 5 in the compatibility definition document for the
+  platform version of the required resolutions.) Note that the video playback
+  capabilities of the device under test will be checked via the <code>android.media.CamcorderProfile</code> APIs for earlier versions of Android and the <code>android.media.MediaCodecInfo.CodecCapabilities</code> APIs from Android 5.0.</p>
+<p>Here are the storage requirements by maximum video playback resolution:</p>
+<ul>
+  <li>480x360: 98MB
+  <li>720x480: 193MB
+  <li>1280x720: 606MB
+  <li>1920x1080: 1863MB
+</ul>
+
+<h3 id=screen_storage>Screen and storage</h3>
+<ol>
+<li>Any device that does not have an embedded screen needs to be connected to a screen.</li>
+<li>If the device has a memory card slot, plug in an empty SD card. <em>Use an
+SD card that supports Ultra High Speed (UHS) Bus with SDHC or SDXC capacity or
+one with at least speed class 10 or higher to ensure it can pass the CTS.</em>
+<p class="warning"><strong>Warning:</strong> CTS may modify/erase data on the SD card plugged into the device.</p>
+</li>
+<li>If the device has SIM card slots, plug in an activated SIM card to each slot.</li>
+</li>
+</ol>
+
+<h2 id=config_device>Android device configuration</h2>
+<ol>
+  <li>Factory data reset the device: <strong>Settings > Backup &amp; reset > Factory data reset</strong>
+    <p class="warning"><strong>Warning:</strong> This will erase all user data from the device.</em></p>
+  <li>Set your device’s language to English (<strong>United States</strong>) from: <strong>Settings > Language
+    & input > Language</strong>
+  <li>Turn on the location setting if there is a GPS or Wi-Fi / Cellular network
+    feature on the device: <strong>Settings &gt; Location</strong>
+  <li>Connect to a Wi-Fi network  that supports IPv6 and has an
+    internet connection: <strong>Settings > Wi-Fi</strong>
+    <p class="note"><strong>Note:</strong> If you don’t have access to a native IPv6 network, an IPv6 carrier network,
+      or a VPN to pass some tests depending on IPv6, you may instead use a Wi-Fi
+      access point and an IPv6 tunnel. See Wikipedia <a href="http://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers">list of IPv6 tunnel brokers</a>.</p>
+  <li>Make sure no lock pattern or password is set on the device: <strong>Settings > Security > Screen
+    lock = 'None'</strong>
+  <li>Enable <strong>USB debugging</strong> on your device: <strong>Settings &gt; Developer options &gt; USB debugging</strong>.
+       <p class="note"><strong>Note:</strong> On Android 4.2 and later, <strong>Developer
+        options</strong> is hidden by default. To make them available, go
+        to <strong>Settings &gt; About phone</strong> and tap <strong>Build number</strong>
+        seven times. Return to the previous screen to find <strong>Developer
+        options</strong>. See <a
+        href="http://developer.android.com/tools/device.html#developer-device-options">Enabling
+        On-device Developer Options</a> for additional details.</p>
+  <li>Select: <strong>Settings > Developer options > Stay Awake</strong>
+  <li>Select: <strong>Settings > Developer options > Allow mock locations</strong>
+  <li>Launch the browser and dismiss any startup/setup screen.
+  <li>Connect the desktop machine that will be used to test the device with a USB cable
+    <p class="note"><strong>Note:</strong> When you connect a device running Android 4.2.2 or later
+    to your computer, the system shows a dialog asking whether to accept an RSA key that allows
+    debugging through this computer. Select <em>Allow USB debugging</em>.</p>
+  <li> Install and configure helper apps on the device.
+<p class="note"><strong>Note:</strong> For CTS versions 2.1 R2 through 4.2 R4</em>, set up your device (or emulator)
+to run the accessibility tests with:<br>
+<code>adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk</code><br>
+On the device, enable: <strong>Settings > Accessibility > Accessibility >
+Delegating Accessibility Service</strong></p>
+<p class="note"><strong>Note:</strong> For CTS 2.3 R4 and beyond on devices that declare the
+<code>android.software.device_admin feature</code>, set up your device to run
+the device administration tests with:<br>
+<code>adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk</code><br>
+On the device, enable only the two
+<code>android.deviceadmin.cts.CtsDeviceAdminReceiver*</code> device
+administrators under: <strong>Settings > Security > Select device
+administrators</strong>. Make sure the
+<code>android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver</code> and any
+other preloaded device administrators stay disabled in the same menu.</p>
+<li>Copy the CTS media files to the device as follows:
+<p class="note"><strong>Note:</strong> For CTS 2.3 R12 and beyond, if the
+device supports video codecs, the CTS media files must be copied to the
+device.</p>
+<ul>
+  <li>Navigate (cd) to the path the media files are downloaded and unzipped to.
+  <li>Change the file permissions: <code>chmod u+x copy_media.sh</code>
+  <li>Run <code>copy_media.sh</code>:
+    <ul>
+      <li>To copy clips up to a resolution of 720x480, run: <code>./copy_media.sh 720x480</code>
+      <li>If you are not sure about the maximum resolution, try <code>./copy_media.sh all</code> so that all files are copied.
+      <li>If there are multiple devices under adb, add the -s (serial) option to the end.
+        For example, to copy up to 720x480 to the device with serial 1234567, run: <code>./copy_media.sh 720x480 -s 1234567</code>
+    </ul>
+</ul>
+</ol>
diff --git a/src/compatibility/cts/verifier.jd b/src/compatibility/cts/verifier.jd
new file mode 100644
index 0000000..25e0a54
--- /dev/null
+++ b/src/compatibility/cts/verifier.jd
@@ -0,0 +1,203 @@
+page.title=Using CTS Verifier
+@jd:body
+
+<!--
+    Copyright 2015 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>The Android Compatibility Test Suite Verifier (CTS Verifier) is a supplement to
+  the Compatibility Test Suite (CTS). While CTS checks those APIs and functions
+  that can be automated, CTS Verifier provides tests for those APIs and functions
+  that cannot be tested on a stationary device without manual input, like audio
+  quality, touchscreen, accelerometer, camera, etc.</p>
+<h2 id=test_preparation>Test preparation</h2>
+<p>The device must have verified Android API compatibility by successfully passing
+  the Compatibility Test Suite.</p>
+<h3 id=hardware_requirements>Hardware requirements</h3>
+<ul>
+  <li> A Linux computer with USB 2.0 compatible port
+  <li> A second Android device with a known compatible Bluetooth, Wi-Fi direct, and
+    NFC Host Card Emulation (HCE) implementation
+</ul>
+<h3 id=setup>Setup</h3>
+<ul>
+  <li>Install the <a href="http://developer.android.com/sdk/index.html">Android
+SDK</a> on the Linux computer <li>Download the appropriate <a
+href="{@docRoot}compatibility/downloads.html">CTS Verifier.apk</a> for the
+version of Android under test.
+  <li>Install CTS Verifier.apk to the <em>Device Under Test</em> (DUT). <br>
+    <code>adb install -r CtsVerifier.apk</code>
+  <li>Ensure that the device has its system data and time set correctly.
+</ul>
+<h2 id=cts_test_procedure>CTS Verifier test procedure</h2>
+<ol>
+  <li>After the CTS Verifier.apk has been installed, launch the CTS Verifier
+    application:
+
+<img src="images/cts-verifier-icon.png" alt="CTS Verifier icon in launcher" id="figure1" />
+<p class="img-caption">
+  <strong>Figure 1.</strong> CTS Verifier icon
+</p>
+
+  <li>Once opened, the CTS Verifier displays a list of all test sets available for
+    manual verification:
+
+<img src="images/cts-verifier-menu.png" alt="CTS Verifier menu of tests" id="figure2" />
+<p class="img-caption">
+  <strong>Figure 2.</strong> CTS Verifier menu of tests
+</p>
+
+  <li>Each test contains a set of common elements (in some tests, Pass/Fail is
+    determined automatically):
+    <ul>
+      <li><em>Info</em>—a set of instructions to run the test. This will appear as a popup the first
+        time each test is opened or whenever the <strong>Info</strong> button (?) is pressed.
+      <li><em>Pass</em>—If the DUT meets the test requirements per the instructions from Info, press
+        the <strong>Pass</strong> button (✓).
+      <li><em>Fail</em>—If the DUT does not meet the test requirements per the instructions from Info,
+        press the <strong>Fail</strong> button (!).
+    </ul>
+
+<img src="images/video-verifier.png" alt="Streaming video quality verifier" id="figure3" />
+<p class="img-caption">
+  <strong>Figure 3.</strong> Video quality verifier
+</p>
+
+</ol>
+
+<h2 id=specific_test_requirements>Specific test requirements</h2>
+<h3 id=usb_accessory>USB Accessory</h3>
+<p>In order to run the USB Accessory test, you need a Linux computer to run the
+  USB desktop machine (host) program.</p>
+<ol>
+  <li>Connect the DUT to a computer.
+  <li>Execute the cts-usb-accessory program on the computer found in the CTS Verifier
+    package.
+  <li>A popup message will appear on the DUT. Select <strong>OK</strong> and go into the USB Accessory Test in the CTS Verifier application.
+<br>
+<img src="images/screen-lock-test.png" alt="CTS Verifier screen lock test" id="figure4" />
+<p class="img-caption">
+  <strong>Figure 4.</strong> Screen lock test
+</p>
+
+  <li>Output similar to below will appear on the computer’s console. 
+</ol>
+<pre>
+out/host/linux-x86/cts-verifier/android-cts-verifier$ <strong>./cts-usb-accessory</strong>
+CTS USB Accessory Tester
+Found possible Android device (413c:2106) - attempting to switch to accessory
+mode...
+Failed to read protocol version
+Found Android device in accessory mode (18d1:2d01)...
+[RECV] Message from Android device #0
+[SENT] Message from Android accessory #0
+[RECV] Message from Android device #1
+[SENT] Message from Android accessory #1
+[RECV] Message from Android device #2
+[SENT] Message from Android accessory #2
+[RECV] Message from Android device #3
+[SENT] Message from Android accessory #3
+[RECV] Message from Android device #4
+[SENT] Message from Android accessory #4
+[RECV] Message from Android device #5
+[SENT] Message from Android accessory #5
+[RECV] Message from Android device #6
+[SENT] Message from Android accessory #6
+[RECV] Message from Android device #7
+[SENT] Message from Android accessory #7
+[RECV] Message from Android device #8
+[SENT] Message from Android accessory #8
+[RECV] Message from Android device #9
+[SENT] Message from Android accessory #9
+[RECV] Message from Android device #10
+[SENT] Message from Android accessory #10
+</pre>
+<h3 id=camera_field_of_view_calibration>Camera field of view calibration</h3>
+<p>This field of view calibration procedure is designed to be a quick way to
+  determine the device field of view with moderate accuracy.
+<p><strong>Setup</strong> - Print the <a
+href="{@docRoot}compatibility/calibration-pattern.pdf">calibration-pattern.pdf</a>
+target file and mount it on a rigid backing. Print on 11” x 17” or A3. Orient
+the camera device and the printed target as shown in the diagram below:</p>
+
+<img src="images/camera-printed-target.png" alt="Camera printed target" id="figure5" />
+<p class="img-caption">
+  <strong>Figure 5.</strong> Camera printed target
+</p>
+
+<p><strong>Setting the target width</strong> - Measure the distance between the
+solid lines on the target pattern in centimeters to account for printing
+inaccuracies (~38 cm).</p>
+<ol>
+  <li>Start the calibration application.
+  <li>Press the setup button and select “Marker distance” to enter the distance.
+  <li>Measure and enter the distance to the target pattern (~100 cm).
+  <li>Press the back button to return to the calibration preview.
+</ol>
+<p><strong>Calibration process</strong> - Verify that the device and target are
+placed as shown in the figure and the correct distances have been entered into
+the setup dialog.The preview will display the image with a vertical line
+overlaid onto it. This line should align with the center line of the target
+pattern. The transparent grid can be used with the other vertical lines to
+ensure that the optical axis is orthogonal to the target.</p>
+<ol>
+  <li>Select an image resolution to test from the selector at the bottom left.
+  <li>Tap the screen to take a photo and enter the calibration mode (described
+    below).
+  <li>Hit the back button and repeat for all supported image resolutions.
+</ol>
+<p><strong>Calibration test (per resolution)</strong> In the calibration mode, the photo will be displayed with two vertical lines
+  overlaid onto the image.These lines should align with the vertical lines on the target pattern within a
+  few pixels. If they do not, then the reported field of view for that mode is
+  inaccurate (assuming the setup is correct).Adjust the slider at the bottom of the screen until the overlay aligns with the
+  target pattern as closely as possible. The displayed field of view will be a
+  close approximation to the correct value when the overlay and the target
+  pattern image are aligned. The reported field of view should be within +/-1
+  degree of the calibration value.</p>
+<h2 id=exporting_test_reports>Exporting test reports</h2>
+<ol>
+  <li>After all tests are completed, tap the <strong>Save (disk)</strong> icon.
+<br>
+<img src="images/verifier-save-icon.png" alt="CTS Verifier Save icon" id="figure6" />
+<p class="img-caption">
+  <strong>Figure 6.</strong> CTS Verifier Save icon
+</p>
+
+  <li>A path to the saved report will be displayed in pop-up (e.g.
+<code>/mnt/sdcard/ctsVerifierReports/ctsVerifierReport-date-time.zip</code>).
+Record the path.
+<br>
+<img src="images/path-saved-report.png" alt="CTS Verifier path to saved report " id="figure7" />
+<p class="img-caption">
+  <strong>Figure 7.</strong> CTS Verifier path to saved report
+</p>
+
+  <li>Connect the device via USB to a computer with the SDK installed.
+  <li>From the computer’s SDK installation, run <code>adb pull
+    <CTS Verifier report path>
+    </code> to download the report from the device.
+    <ul>
+  <li>To download all reports run : <code>adb pull /mnt/sdcard/ctsVerifierReports/ .</code>
+  <li>The name of the reports are time-stamped based on the DUT’s system time.
+  <li>To clear results after they have been selected, select <strong>Menu > Clear</strong>. This will
+    clear the Pass/Fail results.
+</ol>
diff --git a/src/compatibility/downloads.jd b/src/compatibility/downloads.jd
index 0d729f2..f6b2b20 100644
--- a/src/compatibility/downloads.jd
+++ b/src/compatibility/downloads.jd
@@ -27,10 +27,29 @@
 <p>Thank you for your interest in Android Compatibility! The links below give
 you access to key documents and information about the program.</p>
 
+<h2 id="android-51">Android 5.1</h2>
+<p>Android 5.1 is the release of the development milestone code-named Lollipop-MR1.
+The source code for the following tests can be synced with the
+'android-cts-5.1_r1' tag in the open source tree.</p>
+<ul>
+<li><a
+href="https://dl.google.com/dl/android/cts/android-cts-5.1_r1-linux_x86-arm.zip">Android
+5.1 R1 Compatibility Test Suite (CTS) - ARM</a></li>
+<li><a
+href="https://dl.google.com/dl/android/cts/android-cts-5.1_r1-linux_x86-x86.zip">Android
+5.1 R1 Compatibility Test Suite (CTS) - x86</a></li>
+<li><a
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-5.1_r1-linux_x86-arm.zip">Android
+5.1 R1 CTS Verifier - ARM</a></li>
+<li><a
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-5.1_r1-linux_x86-x86.zip">Android
+5.1 R1 CTS Verifier - x86</a></li>
+</ul>
+
 <h2 id="android-50">Android 5.0</h2>
 <p>Android 5.0 is the release of the development milestone code-named Lollipop.
 The source code for the following tests can be synced with the
-'android-cts-5.0_r2' tag in the open-source tree.</p>
+'android-cts-5.0_r2' tag in the open source tree.</p>
 <ul>
 <li><a href="5.0/android-5.0-cdd.pdf">Android 5.0 Compatibility Definition
 Document (CDD)</a></li>
@@ -51,7 +70,7 @@
 <h2 id="android-44">Android 4.4</h2>
 <p>Android 4.4 is the release of the development milestone code-named
 KitKat. Source code for Android 4.4 is found in the
-'android-4.4.4_r1' branch in the open-source tree.</p>
+'android-4.4.4_r1' branch in the open source tree.</p>
 <ul>
 <li><a href="4.4/android-4.4-cdd.pdf">Android 4.4 Compatibility Definition
 Document (CDD)</a></li>
@@ -71,7 +90,7 @@
 
 <h2 id="android-43">Android 4.3</h2>
 <p>Android 4.3 is the release of the development milestone code-named
-Jelly Bean-MR2. Source code for Android 4.3 is found in the 'android-4.3_r2.2-cts' branch in the open-source tree.</p>
+Jelly Bean-MR2. Source code for Android 4.3 is found in the 'android-4.3_r2.2-cts' branch in the open source tree.</p>
 <ul>
 <li><a href="4.3/android-4.3-cdd.pdf">Android 4.3 Compatibility Definition Document (CDD)</a></li>
 <li><a
@@ -84,7 +103,7 @@
 
 <h2 id="android-42">Android 4.2</h2>
 <p>Android 4.2 is the release of the development milestone code-named
-Jelly Bean-MR1. Source code for Android 4.2 is found in the 'android-4.2.2_r1' branch in the open-source tree.</p>
+Jelly Bean-MR1. Source code for Android 4.2 is found in the 'android-4.2.2_r1' branch in the open source tree.</p>
 <ul>
 <li><a href="4.2/android-4.2-cdd.pdf">Android 4.2 Compatibility Definition Document (CDD)</a></li>
 <li><a href="https://dl.google.com/dl/android/cts/android-cts-4.2_r4-linux_x86-arm.zip">Android 4.2 R4 Compatibility Test Suite (CTS)</a></li>
@@ -93,7 +112,7 @@
 <h2 id="android-41">Android 4.1</h2>
 <p>Android 4.1 is the release of the development milestone code-named Jelly
 Bean. The source code of the Compatibility Test Suite revisions below is
-available at the 'android-cts-4.1_r4' tag in the open-source tree.</p>
+available at the 'android-cts-4.1_r4' tag in the open source tree.</p>
 <ul>
 <li><a href="4.1/android-4.1-cdd.pdf">Android 4.1 Compatibility Definition Document (CDD)</a></li>
 <li><a href="https://dl.google.com/dl/android/cts/android-cts-4.1_r4-linux_x86-arm.zip">Android 4.1 R4 Compatibility Test Suite (CTS)</a></li>
@@ -102,7 +121,7 @@
 <h2 id="android-403">Android 4.0.3</h2>
 <p>Android 4.0.3 is the release of the development milestone code-named
 Ice Cream Sandwich. Android 4.0.3 is the current version of Android. Source code for
-Android 4.0.3 is found in the 'android-4.0.3_r1' branch in the open-source tree.</p>
+Android 4.0.3 is found in the 'android-4.0.3_r1' branch in the open source tree.</p>
 <ul>
 <li><a href="4.0/android-4.0-cdd.pdf">Android 4.0 Compatibility Definition Document (CDD)</a></li>
 <li><a href="https://dl.google.com/dl/android/cts/android-cts-4.0.3_r3-linux_x86-arm.zip">Android 4.0.3 R3 Compatibility Test Suite (CTS)</a></li>
@@ -111,7 +130,7 @@
 <h2 id="android-23">Android 2.3</h2>
 <p>Android 2.3 is the release of the development milestone code-named
 Gingerbread. Source code for Android 2.3 is found in the 'gingerbread' branch in 
-the open-source tree.</p>
+the open source tree.</p>
 <ul>
 <li><a href="2.3/android-2.3.3-cdd.pdf">Android 2.3 Compatibility Definition Document (CDD)</a></li>
 <li><a href="https://dl.google.com/dl/android/cts/android-cts-2.3_r13-linux_x86-arm.zip">Android 2.3 R13 Compatibility Test Suite (CTS)</a></li>
@@ -120,7 +139,7 @@
 <h2 id="android-22">Android 2.2</h2>
 <p>Android 2.2 is the release of the development milestone code-named
 FroYo. Source code for Android 2.2 is found in the 'froyo' branch in the
-open-source tree.</p>
+open source tree.</p>
 <ul>
 <li><a href="2.2/android-2.2-cdd.pdf">Android 2.2 Compatibility Definition Document (CDD)</a></li>
 <li><a href="https://dl.google.com/dl/android/cts/android-cts-2.2_r8-linux_x86-arm.zip">Android 2.2 R8 Compatibility Test Suite (CTS)</a></li>
@@ -128,7 +147,7 @@
 <h2 id="android-21">Android 2.1</h2>
 <p>Android 2.1 is the release of the development milestone code-named
 Eclair. Source code for Android 2.1 is found in the 'eclair' branch in the
-open-source tree. Note that for technical reasons, there is no compatibility
+open source tree. Note that for technical reasons, there is no compatibility
 program for Android 2.0 or 2.0.1, and new devices must use Android 2.1.</p>
 <ul>
 <li><a href="2.1/android-2.1-cdd.pdf">Android 2.1 Compatibility Definition Document (CDD)</a></li>
@@ -137,7 +156,7 @@
 <h2 id="android-16">Android 1.6</h2>
 <p>Android 1.6 was the release of the development milestone code-named Donut.
 Android 1.6 was obsoleted by Android 2.1. Source code for Android 1.6 is found
-in the 'donut' branch in the open-source tree.</p>
+in the 'donut' branch in the open source tree.</p>
 <ul>
 <li><a href="1.6/android-1.6-cdd.pdf">Android 1.6 Compatibility Definition Document (CDD)</a></li>
 <li><a href="https://dl.google.com/dl/android/cts/android-cts-1.6_r1-x86.zip">Android 1.6 R1 Compatibility Test Suite (CTS)</a></li>
diff --git a/src/compatibility/images/compat-ecosystem.png b/src/compatibility/images/compat-ecosystem.png
new file mode 100644
index 0000000..4b166d1
--- /dev/null
+++ b/src/compatibility/images/compat-ecosystem.png
Binary files differ
diff --git a/src/compatibility/index.jd b/src/compatibility/index.jd
index b3c375a..6b29fa3 100644
--- a/src/compatibility/index.jd
+++ b/src/compatibility/index.jd
@@ -2,77 +2,94 @@
 @jd:body
 
 <!--
-    Copyright 2015 The Android Open Source Project     
+    Copyright 2015 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.
 -->
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
 
-<p>Android's purpose is to establish an open platform for developers to build innovative apps.
-The Android Compatibility program defines the technical details of the Android platform and provides
-tools used by OEMs to ensure that developers' apps run on a variety of devices. The Android SDK
-provides built-in tools that developers use to clearly state the device features their apps
-require. And Google Play shows apps only to those devices that can properly run them.
-</p>
+<p>Android's purpose is to establish an open platform for developers to build
+innovative apps.</p>
+<ul>
+<li>The Android Compatibility program defines technical details of the
+Android platform and provides tools for OEMs to ensure developer applications
+run on a variety of devices.</li>
+<li>The Android SDK provides built-in tools for developers to clearly state the
+device features requires by their applications.
+<li>Google Play shows applications only to those devices that can properly run
+those applications.</li></li>
 
-<h2 id="why-build-compatible-android-devices">Why build compatible Android devices?</h2>
-<h3 id="users-want-a-customizable-device">Users want a customizable device.</h3>
+<h2 id="why-build-compatible-android-devices">Why build compatible Android
+devices?</h2>
+
+<h3 id="users-want-a-customizable-device">Users want customizable devices</h3>
+
+<div class="figure">
+  <img src="images/compat-ecosystem.png" alt="Compatibility ecosystem" id="figure1" />
+  <p class="img-caption">
+    <strong>Figure 1.</strong> The Android ecosystem thrives with device compatibility
+  </p>
+</div>
+
 <p>A mobile phone is a highly personal, always-on, always-present gateway to
 the Internet. We haven't met a user yet who didn't want to customize it by
 extending its functionality. That's why Android was designed as a robust
 platform for running aftermarket applications.</p>
-<h3 id="developers-outnumber-us-all">Developers outnumber us all.</h3>
-<p>No device manufacturer can hope to write all the software that a person could
-conceivably need. We need third-party developers to write the apps users want;
-so the Android Open Source Project aims to make it as easy and open as
-possible for developers to build apps.</p>
-<h3 id="everyone-needs-a-common-ecosystem">Everyone needs a common ecosystem.</h3>
-<p>Every line of code developers write to work around a particular phone's bug
-is a line of code that didn't add a new feature. The more compatible phones
-there are, the more apps there will be. By building a fully compatible Android
-device, you benefit from the huge pool of apps written for Android, while
-increasing the incentive for developers to build more of those apps.</p>
-<h2 id="android-compatibility-is-free-and-its-easy">Android compatibility is free, and it's easy.</h2>
-<p>If you are building a mobile device, you can follow these steps to make
-sure your device is compatible with Android. For more details about the
-Android compatibility program in general, see <a href="overview.html">the program overview</a>.</p>
-<p>Building a compatible device is a three-step process:</p>
+
+<h3 id="developers-outnumber-us-all">Developers outnumber us all</h3>
+<p>No device manufacturer can write all the software a user could conceivably
+need. We need third-party developers to write the apps users want, so the
+Android Open Source Project (AOSP) aims to make application development as easy
+and open as possible.</p>
+
+<h3 id="everyone-needs-a-common-ecosystem">Everyone needs a common ecosystem</h3>
+<p>Every line of code developers write to work around a bug is a line of code
+that didn't add a new feature. The more compatible mobile devices are, the more
+applications we'll have to run on those devices. By building a fully compatible
+Android device, you benefit from the huge pool of apps written for Android while
+increasing the incentive for developers to build more apps.</p>
+
+<h2 id="android-compatibility-is-free-and-its-easy">Android compatibility is
+free, and it's easy</h2>
+<p>To build an Android-compatible mobile device, follow this three-step
+process:</p>
 <ol>
-<li>
-<p><em>Obtain the <a href="{@docRoot}source/index.html">Android software source
-code</a></em>.
-    This is the source code for the Android platform that you port to your hardware.</p>
-</li>
-<li>
-<p><em>Comply with the <a href="{@docRoot}compatibility/android-cdd.pdf">Android
-Compatibility Definition Document (CDD)</a></em>.
-    The CDD enumerates the software and hardware requirements of a compatible Android device.</p>
-</li>
-<li>
-<p><em>Pass the <a href="{@docRoot}compatibility/cts-intro.html">Compatibility
-Test Suite (CTS)</a></em>.
-    Use the CTS as an ongoing aid to compatibility during the development process.</p>
-</li>
+<li><em>Obtain the <a href="{@docRoot}source/index.html">Android software source
+code</a></em>. This is the source code for the Android platform that you port
+to your hardware.</li>
+<li><em>Comply with the <a href="{@docRoot}compatibility/android-cdd.pdf">Android
+Compatibility Definition Document (CDD)</a></em>. The CDD enumerates the
+software and hardware requirements of a compatible Android device.</li>
+<li><em>Pass the <a href="{@docRoot}compatibility/cts-intro.html">Compatibility
+Test Suite (CTS)</a></em>. Use the CTS as an ongoing aid to evaluate
+compatibility during the development process.</li>
 </ol>
 
-<p>After complying with the CDD and passing the CTS, your device is now Android
-compatible. Android apps in the ecosystem will have a consistent experience on
-your device.</p>
+<p>After complying with the CDD and passing the CTS, your device is Android
+compatible, meaning Android apps in the ecosystem provide a consistent
+experience when running on your device. For details about the Android
+compatibility program, see the <a href="overview.html">program overview</a>.</p>
 
-<h2 id="licensing-gms">Licensing Google Mobile Services</h2>
-<p>If you've built an Android compatible device, you may wish to inquire about
-licensing Google’s proprietary suite of apps that run on top of Android -
-Google Mobile Services (GMS, which include Google Play, YouTube, Google Maps,
-Gmail, and more). Google Mobile Services is not part of the Android Open Source
-Project and is available only through a license with Google. Please visit the
-‘contact’ us section for more information on how to inquire about a GMS
-license.</p>
+<h2 id="licensing-gms">Licensing Google Mobile Services (GMS)</h2>
+<p>After building an Android compatible device, consider licensing Google Mobile
+Services (GMS), Google’s proprietary suite of apps (Google Play, YouTube, Google
+Maps, Gmail, and more ) that run on top of Android. GMS is not part of the
+Android Open Source Project and is available only through a license with Google.
+For information on how to request a GMS license, see
+<a href="contact-us.html">Contact Us</a>.</p>
\ No newline at end of file
diff --git a/src/compatibility/overview.jd b/src/compatibility/overview.jd
index ac0fb9f..0a1bfca 100644
--- a/src/compatibility/overview.jd
+++ b/src/compatibility/overview.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project     
+    Copyright 2015 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.   
@@ -16,10 +16,17 @@
     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>The Android compatibility program makes it easy for mobile device
 manufacturers to develop compatible Android devices.</p>
-<h1 id="program-goals">Program goals</h1>
+<h2 id="program-goals">Program goals</h2>
 <p>The Android compatibility program works for the benefit of the entire
 Android community, including users, developers, and device manufacturers.</p>
 <p>Each group depends on the others. Users want a wide selection of devices
@@ -79,7 +86,7 @@
 the source code tree, there is a separate CTS and CDD for each version as
 well. The CDD, CTS, and source code are -- along with your hardware and your
 software customizations -- everything you need to create a compatible device.</p>
-<h1 id="compatibility-definition-document-cdd">Compatibility Definition Document</h1>
+<h2 id="compatibility-definition-document-cdd">Compatibility Definition Document</h2>
 <p>For each release of the Android platform, a detailed CDD will be provided. The CDD represents the "policy"
 aspect of Android compatibility.</p>
 <p>No test suite, including CTS, can truly be comprehensive. For instance, the
@@ -99,9 +106,9 @@
 start by checking out the source code for that version, and then read the
 corresponding CDD and stay within its guidelines. For additional details,
 simply examine <a href="/compatibility/android-cdd.pdf">the latest CDD</a>.</p>
-<h1 id="compatibility-test-suite-cts">Compatibility Test Suite</h1>
-<p>The CTS is a free, commercial-grade test suite, available for
-<a href="downloads.html">download</a>.
+<h2 id="compatibility-test-suite-cts">Compatibility Test Suite</h2>
+<p>The <a href="cts/index.html">CTS</a> is a free, commercial-grade test suite,
+available for <a href="downloads.html">download</a>.
 The CTS represents the "mechanism" of compatibility.</p>
 <p>The CTS runs on a desktop machine and executes test cases directly on
 attached devices or an emulator. The CTS is a set of unit tests designed to be
@@ -109,11 +116,11 @@
 the engineers building a device. Its intent is to reveal incompatibilities
 early on, and ensure that the software remains compatible throughout the
 development process.</p>
-<h1 id="compatibility-test-suite-verifier-cts-verifier">Compatibility Test Suite Verifier (CTS Verifier)</h1>
+<h2 id="compatibility-test-suite-verifier-cts-verifier">Compatibility Test Suite Verifier (CTS Verifier)</h2>
 <p>The Compatibility Test Suite Verifier (CTS Verifier) is a supplement to the
 CTS available for <a href="downloads.html">download</a>.
 CTS Verifier provides tests for APIs and functions that cannot be tested on a
 stationary device without manual input (e.g. audio quality, accelerometer, etc).</p>
-<p>For details on the CTS, consult the <a href="cts-intro.html">CTS introduction</a>.</p>
+<p>For details on the CTS, consult the <a href="cts/index.html">CTS introduction</a>.</p>
 
 
diff --git a/src/devices/audio/images/venn.png b/src/devices/audio/images/venn.png
new file mode 100644
index 0000000..1db4f53
--- /dev/null
+++ b/src/devices/audio/images/venn.png
Binary files differ
diff --git a/src/devices/audio/latency.jd b/src/devices/audio/latency.jd
index 59c3f73..a45bf20 100644
--- a/src/devices/audio/latency.jd
+++ b/src/devices/audio/latency.jd
@@ -50,4 +50,8 @@
   <td>Round-trip audio latency results</td>
   <td><a href="latency_measurements.html">Audio Latency Measurements</a></td>
 </tr>
+<tr>
+  <td>Applications</td>
+  <td><a href="latency_app.html">Audio Latency for App Developers</a></td>
+</tr>
 </table>
diff --git a/src/devices/audio/latency_app.jd b/src/devices/audio/latency_app.jd
new file mode 100644
index 0000000..22e3984
--- /dev/null
+++ b/src/devices/audio/latency_app.jd
@@ -0,0 +1,174 @@
+page.title=Audio Latency for App Developers
+@jd:body
+
+<!--
+    Copyright 2015 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>For the lowest audio latency possible, we recommend you use Android native audio
+based on OpenSL ES 1.0.1.</p>
+
+<h2 id=implementation>Implementation checklist</h2>
+
+<p>To use Android native audio:</p>
+
+<ol>
+
+<li>
+Download and install the
+<a href="https://developer.android.com/tools/sdk/ndk/index.html">Android NDK</a>.
+In the rest of this document, we'll assume <code>NDKroot</code> is the
+directory where you installed NDK.
+</li>
+
+<li>
+Read the <a href="#supporting">supporting documentation.</a>
+</li>
+
+<li>
+Check for API level 9 or higher.
+</li>
+
+<li>
+Check for feature
+<a href="http://developer.android.com/guide/topics/manifest/uses-feature-element.html#hw-features">android.hardware.audio.low_latency.</a>
+</li>
+
+<li>
+Use the recommended native buffer size and sample rate returned by
+<a href="http://developer.android.com/reference/android/media/AudioManager.html#getProperty(java.lang.String)">android.media.AudioManager.getProperty(java.lang.String)</a>
+<p> <strong>Note</strong>: the same buffer size and sample rate should also be used for input.</p>
+</li>
+
+<li>
+Usually an OpenSL ES buffer count of 1 is sufficient.
+</li>
+
+<li>
+Keep your callback handlers short, without bursty CPU usage or unbounded blocking.  Avoid
+<a href="avoiding_pi.html">priority inversion.</a>
+</li>
+
+<li>
+Consider using
+<a href="avoiding_pi.html#nonBlockingAlgorithms">non-blocking algorithms</a>
+to communicate between input and output callback handlers,
+and between the callback handlers and the rest of your application.
+</li>
+
+</ol>
+
+<h2 id=supporting>Supporting documentation</h2>
+
+<h3 id=opensl_es_1_0_1>OpenSL ES 1.0.1</h3>
+
+<p>
+Use a PDF viewer to review the
+<a href="https://www.khronos.org/registry/sles/specs/OpenSL_ES_Specification_1.0.1.pdf">OpenSL 1.0.1 Specification.</a>
+This is a rather long reference, and not all of it will be relevant to you; but you
+will need to consult it for details on the API.
+</p>
+
+<p class="note">
+<strong>Note</strong>: this document describes the full OpenSL ES 1.0.1, but Android
+native audio is actually based on a subset of OpenSL ES 1.0.1 with some Android-specific extensions.
+</p>
+
+<p>
+Documents describing later versions of OpenSL ES, such as 1.1,
+are not relevant to Android.
+</p>
+
+<h3 id=opensl_es_for_android>OpenSL ES for Android</h3>
+
+<p>
+The document "OpenSL ES for Android" is provided in the NDK installation,
+and is not currently available online.  Open this link in a browser:
+</p>
+
+<pre>
+NDKroot/docs/Additional_library_docs/opensles/index.html
+</pre>
+
+<p>
+You’ll want to skim the whole
+document, but pay special attention to the "Performance" subsection of the
+"Programming notes" section.
+</p>
+
+<p>
+Section "Supported features from OpenSL ES 1.0.1"
+describes the subset supported by Android.
+</p>
+
+<p>
+Section "Android extensions" describes Android-specific extensions
+that aren't included in base OpenSL ES 1.0.1.
+</p>
+
+<h3 id=relationship>Relationship with OpenSL ES 1.0.1</h3>
+
+<p>
+This Venn diagram shows the relationship between
+Android native audio and OpenSL ES 1.0.1.
+</p>
+
+<img src="images/venn.png" alt="Venn diagram" id="figure1" />
+<p class="img-caption">
+  <strong>Figure 1.</strong> Venn diagram
+</p>
+
+<h2 id=resources>Other resources</h2>
+
+<h3 id=source_android_com>source.android.com</h3>
+
+<p>
+The site <a href="{@docRoot}">source.android.com</a>
+is primarily designed for OEMs building Android
+devices, and the SoC vendors who supply components to these OEMs.
+</p>
+
+<p>
+However, there is a wealth of useful information about latency at this site, so
+you may want to review it.  See the articles at
+<a href="latency.html">Audio Latency.</a>
+</p>
+
+<h3 id=android_ndk>android-ndk</h3>
+
+<p>
+If you have questions about how to use Android native audio, you can ask at the discussion group
+<a href="https://groups.google.com/forum/#!forum/android-ndk">android-ndk.</a>
+</p>
+
+<h3 id=videos>Videos</h3>
+
+<dl>
+
+<dt><a href="https://www.youtube.com/watch?v=d3kfEeMZ65c">Google I/O 2013 - High performance audio on Android</a></dt>
+<dd>The whole video is about latency.</dd>
+
+<dt><a href="https://www.youtube.com/watch?v=92fgcUNCHic">Google I/O 2014 - Building great multi-media experiences on Android</a></dt>
+<dd>The first 14 minutes are about audio in general and input latency in particular.</dd>
+
+</dl>
diff --git a/src/devices/audio/latency_measure.jd b/src/devices/audio/latency_measure.jd
index f6b1d3e..6285ff9 100644
--- a/src/devices/audio/latency_measure.jd
+++ b/src/devices/audio/latency_measure.jd
@@ -67,12 +67,10 @@
 <ol>
   <li>Run an app that periodically pulses the LED at
   the same time it outputs audio. 
-
-  <p class="note"><b>Note:</b> To get useful results, it is crucial to use the correct
+  <p class="note"><strong>Note:</strong> To get useful results, it is crucial to use the correct
   APIs in the test app so that you're exercising the fast audio output path.
   See <a href="latency_design.html">Design For Reduced Latency</a> for
-  background.
-  </p>
+  background.</p>
   </li>
   <li>Place a light sensor next to the LED.</li>
   <li>Connect the probes of a dual-channel oscilloscope to both the wired headphone
diff --git a/src/devices/audio/latency_measurements.jd b/src/devices/audio/latency_measurements.jd
index e66b5f9..8055890 100644
--- a/src/devices/audio/latency_measurements.jd
+++ b/src/devices/audio/latency_measurements.jd
@@ -331,6 +331,16 @@
   <td>38</td>
 </tr>
 
+</tr>
+  <td>Nexus 9</td>
+  <td>5.1.1</td>
+  <td>LMY47X</td>
+  <td>48000</td>
+  <td>256</td>
+  <td>5.3</td>
+  <td>32</td>
+</tr>
+
 <tr>
   <td>Nexus 6</td>
   <td>5.0.1</td>
diff --git a/src/devices/audio/midi.jd b/src/devices/audio/midi.jd
new file mode 100644
index 0000000..38428c7
--- /dev/null
+++ b/src/devices/audio/midi.jd
@@ -0,0 +1,161 @@
+page.title=MIDI
+@jd:body
+
+<!--
+    Copyright 2015 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>
+<a href="http://en.wikipedia.org/wiki/MIDI">MIDI</a> (Musical Instrument Digital Interface)
+is a standard protocol for inter-connecting computers with musical instruments, stage lighting,
+and other time-oriented media.
+</p>
+
+<p>
+The physical <a href="http://en.wikipedia.org/wiki/Transport_layer">transport layer</a>
+specified in original MIDI 1.0 is a current loop with
+<a href="http://en.wikipedia.org/wiki/DIN_connector">5-pin DIN</a> connector.
+</p>
+
+<p>
+Since MIDI 1.0, additional transports have been defined, including MIDI over USB
+and a proposed draft for MIDI over
+<a href="http://en.wikipedia.org/wiki/Bluetooth_low_energy">Bluetooth Low Energy</a> (BLE.)
+</p>
+
+<p>
+Strictly speaking, MIDI is unrelated to audio. But since MIDI is commonly used with
+music, this article is placed in the audio section.
+</p>
+
+<h2 id="for-android">MIDI for Android</h2>
+
+<p>
+Android 3.1 and later support
+<a href="http://en.wikipedia.org/wiki/USB_On-The-Go">USB On-The-Go</a>,
+which permits an Android device to act as USB host to drive USB
+peripherals. The USB host mode APIs introduced in Android 3.1 permit
+developers to implement MIDI over USB at the application level, but until
+recently there have been no built-in platform APIs for MIDI.
+</p>
+
+<p>
+Beginning with the Android M release, device makers can enable optional MIDI support in the platform.
+Supported transports include USB, draft BLE, and virtual (inter-app).
+</p>
+
+<p>
+For details on application programming with the new MIDI APIs,
+first download the
+<a href="https://developer.android.com/preview/download.html#docs">preview reference</a>
+and then see the <code>android.media.midi</code> package.
+</p>
+
+<p>
+The remainder of this article discusses how an Android device maker can
+enable MIDI support in the platform.
+</p>
+
+<h2 id="transport">Enabling transports</h2>
+
+<h3 id="usb-host">USB host mode</h3>
+
+<p>
+To enable MIDI for USB host mode, first support USB host mode in general, and
+then enable <code>CONFIG_SND_RAWMIDI</code> in your kernel configuration.
+</p>
+
+<h3 id="usb-peripheral">USB peripheral mode</h3>
+
+<p>
+To enable MIDI for USB peripheral mode, you may need to apply patches
+to your Linux kernel to integrate the
+<code>drivers/usb/gadget/f_midi.c</code> into the USB gadget
+driver. As of this writing, these patches are available for Linux kernel version
+3.10. These patches have not yet been updated for
+<a href="http://en.wikipedia.org/wiki/Configfs">ConfigFs</a>
+(a new architecture
+for USB gadget drivers), nor are they merged at upstream
+<a href="http://kernel.org"</a>kernel.org</a>.
+</p>
+
+<p>
+The patches are shown in commit order for the <code>tegra</code> tree:
+</p>
+<ol>
+<li><a href="https://android.googlesource.com/kernel/tegra/+/261230ce54cfc119efe643fc1d128e431d1678d3"</a>261230ce54cfc119efe643fc1d128e431d1678d3</a></li>
+<li><a href="https://android.googlesource.com/kernel/tegra/+/3f048135f3028e503d9d6e32b602e362bd9f374f"</a>3f048135f3028e503d9d6e32b602e362bd9f374f</a></li>
+<li><a href="https://android.googlesource.com/kernel/tegra/+/ae2019d83ecf14454315240c16dc3136212f0da2"</a>ae2019d83ecf14454315240c16dc3136212f0da2</a></li>
+</ol>
+
+<p>
+In addition, the end user must also check the box for MIDI
+in the <em>Settings</em> dialog for <em>Select USB configuration</em>,
+or by pulling down from the top of screen while attached
+to the USB host, and choosing <strong>MIDI</strong> for "Use USB for ...".
+</p>
+
+<h3 id="ble">BLE</h3>
+
+<p>
+MIDI over BLE is always enabled.
+As this transport is in draft status, it is subject to change.
+</p>
+
+<h3 id="virtual">Virtual (inter-app)</h3>
+
+<p>
+The virtual (inter-app) transport is always enabled.
+</p>
+
+<h2 id="claim-feature">Claiming the feature</h2>
+
+<p>
+Applications can screen for the presence of MIDI support using the
+<code>android.software.midi</code> feature.
+</p>
+
+<p>
+To claim MIDI support, add this line to your <code>device.mk</code>:
+</p>
+<pre>
+PRODUCT_COPY_FILES += \
+frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software.midi.xml
+</pre>
+
+<p>
+See the
+<a href="{@docRoot}compatibility/android-cdd.pdf">Android Compatibility Definition Document (CDD)</a>
+for information
+on requirements to claim the feature.
+</p>
+
+<h2 id="hostDebugging">Debugging while in host mode</h2>
+
+<p>
+While in USB host mode, Android Debug Bridge (adb) debugging over USB is unavailable.
+See section <a href="http://developer.android.com/tools/help/adb.html#wireless">Wireless usage</a>
+of
+<a href="http://developer.android.com/tools/help/adb.html">Android Debug Bridge</a>
+for an alternative.
+</p>
diff --git a/src/devices/audio/usb.jd b/src/devices/audio/usb.jd
index b885f60..5395560 100644
--- a/src/devices/audio/usb.jd
+++ b/src/devices/audio/usb.jd
@@ -67,7 +67,7 @@
 </p>
 
 <p>
-<b>Note:</b> the terms <i>device</i> or <i>accessory</i> are common synonyms for
+<p class="note"><strong>Note:</strong> The terms <i>device</i> and <i>accessory</i> are common synonyms for
 <i>peripheral</i>.  We avoid those terms here, as they could be confused with
 Android <a href="http://en.wikipedia.org/wiki/Mobile_device">device</a>
 or the Android-specific concept called
@@ -452,7 +452,7 @@
 <p>
 Which design is better?  The answer depends on your needs.
 Each has advantages and disadvantages.
-<b>Note:</b> this is an artificial comparison, since
+<p class="note"><strong>Note:</strong> This is an artificial comparison, since
 a real Android device would probably have both options available.
 </p>
 
diff --git a/src/devices/camera/images/ape_fwk_camera.png b/src/devices/camera/images/ape_fwk_camera.png
index 102461e..cb8831b 100644
--- a/src/devices/camera/images/ape_fwk_camera.png
+++ b/src/devices/camera/images/ape_fwk_camera.png
Binary files differ
diff --git a/src/devices/camera/images/camera-hal-overview.png b/src/devices/camera/images/camera-hal-overview.png
index fed29e7..3f39356 100644
--- a/src/devices/camera/images/camera-hal-overview.png
+++ b/src/devices/camera/images/camera-hal-overview.png
Binary files differ
diff --git a/src/devices/camera/images/camera-ops-flow.png b/src/devices/camera/images/camera-ops-flow.png
index 7326782..2d5cd4f 100644
--- a/src/devices/camera/images/camera-ops-flow.png
+++ b/src/devices/camera/images/camera-ops-flow.png
Binary files differ
diff --git a/src/devices/camera/images/camera_block.png b/src/devices/camera/images/camera_block.png
index b7a58eb..29b92e9 100644
--- a/src/devices/camera/images/camera_block.png
+++ b/src/devices/camera/images/camera_block.png
Binary files differ
diff --git a/src/devices/camera/images/camera_hal.png b/src/devices/camera/images/camera_hal.png
index 28fa927..ffb1406 100644
--- a/src/devices/camera/images/camera_hal.png
+++ b/src/devices/camera/images/camera_hal.png
Binary files differ
diff --git a/src/devices/camera/images/camera_model.png b/src/devices/camera/images/camera_model.png
index 50cbabc..a8810c6 100644
--- a/src/devices/camera/images/camera_model.png
+++ b/src/devices/camera/images/camera_model.png
Binary files differ
diff --git a/src/devices/camera/images/camera_simple_model.png b/src/devices/camera/images/camera_simple_model.png
index fd0fac0..625dd8f 100644
--- a/src/devices/camera/images/camera_simple_model.png
+++ b/src/devices/camera/images/camera_simple_model.png
Binary files differ
diff --git a/src/devices/camera/images/crop-region-11-ratio.png b/src/devices/camera/images/crop-region-11-ratio.png
index 8e28230..f6406d7 100644
--- a/src/devices/camera/images/crop-region-11-ratio.png
+++ b/src/devices/camera/images/crop-region-11-ratio.png
Binary files differ
diff --git a/src/devices/camera/images/crop-region-169-ratio.png b/src/devices/camera/images/crop-region-169-ratio.png
index 62837e2..d190858 100644
--- a/src/devices/camera/images/crop-region-169-ratio.png
+++ b/src/devices/camera/images/crop-region-169-ratio.png
Binary files differ
diff --git a/src/devices/camera/images/crop-region-43-ratio.png b/src/devices/camera/images/crop-region-43-ratio.png
index f48046b..420068b 100644
--- a/src/devices/camera/images/crop-region-43-ratio.png
+++ b/src/devices/camera/images/crop-region-43-ratio.png
Binary files differ
diff --git a/src/devices/camera/images/crop-region-43-square-ratio.png b/src/devices/camera/images/crop-region-43-square-ratio.png
index 3794dbe..9257dda 100644
--- a/src/devices/camera/images/crop-region-43-square-ratio.png
+++ b/src/devices/camera/images/crop-region-43-square-ratio.png
Binary files differ
diff --git a/src/devices/camera/index.jd b/src/devices/camera/index.jd
index 1e5cab8..9bf74df 100644
--- a/src/devices/camera/index.jd
+++ b/src/devices/camera/index.jd
@@ -30,7 +30,7 @@
 camera framework APIs in <a href="http://developer.android.com/reference/android/hardware/package-summary.html">android.hardware</a> to your underlying camera driver and hardware. The camera subsystem includes implementations for camera pipeline components while the camera HAL provides interfaces for use in implementing your version of these components.</p>
 
 <h2 id="architecture">Architecture</h2>
-<p>The following figure and list describe the components involved and where to find the source for each:
+<p>The following figure and list describe the HAL components:
 </p>
 
 <img src="images/ape_fwk_camera.png" alt="Android camera architecture" id="figure1" />
diff --git a/src/devices/devices_toc.cs b/src/devices/devices_toc.cs
index 45ddd70..10a5dbb 100644
--- a/src/devices/devices_toc.cs
+++ b/src/devices/devices_toc.cs
@@ -46,11 +46,13 @@
               <li><a href="<?cs var:toroot ?>devices/audio/testing_circuit.html">Light Testing Circuit</a></li>
               <li><a href="<?cs var:toroot ?>devices/audio/loopback.html">Audio Loopback Dongle</a></li>
               <li><a href="<?cs var:toroot ?>devices/audio/latency_measurements.html">Measurements</a></li>
+              <li><a href="<?cs var:toroot ?>devices/audio/latency_app.html">Applications</a></li>
             </ul>
           </li>
           <li><a href="<?cs var:toroot ?>devices/audio/avoiding_pi.html">Priority Inversion</a></li>
           <li><a href="<?cs var:toroot ?>devices/audio/src.html">Sample Rate Conversion</a></li>
           <li><a href="<?cs var:toroot ?>devices/audio/debugging.html">Debugging</a></li>
+          <li><a href="<?cs var:toroot ?>devices/audio/midi.html">MIDI</a></li>
           <li><a href="<?cs var:toroot ?>devices/audio/usb.html">USB Digital Audio</a></li>
           <li><a href="<?cs var:toroot ?>devices/audio/tv.html">TV Audio</a></li>
         </ul>
@@ -215,6 +217,21 @@
       </li>
 
       <li class="nav-section">
+        <div class="nav-section-header">
+          <a href="<?cs var:toroot ?>devices/tech/admin/index.html">
+          <span class="en">Device Administration</span></a>
+        </div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>devices/tech/admin/implement.html">Implementation</a></li>
+          <li><a href="<?cs var:toroot ?>devices/tech/admin/multi-user.html">Multiple Users</a></li>
+          <li><a href="<?cs var:toroot ?>devices/tech/admin/managed-profiles.html">Managed Profiles</a></li>
+          <li><a href="<?cs var:toroot ?>devices/tech/admin/provision.html">Provisioning</a></li>
+          <li><a href="<?cs var:toroot ?>devices/tech/admin/multiuser-apps.html">Multiuser Apps</a></li>
+          <li><a href="<?cs var:toroot ?>devices/tech/admin/testing-setup.html">Testing Setup</a></li>
+        </ul>
+      </li>
+
+      <li class="nav-section">
         <div class="nav-section-header empty">
           <a href="<?cs var:toroot ?>devices/halref/index.html">
             <span class="en">HAL File Reference</span>
@@ -222,20 +239,6 @@
         </div>
       </li>
 
-      <li><a href="<?cs var:toroot ?>devices/tech/kernel.html">Kernel</a></li>
-
-      <li class="nav-section">
-        <div class="nav-section-header">
-            <a href="<?cs var:toroot ?>devices/tech/ram/index.html">
-              <span class="en">RAM</span>
-            </a>
-        </div>
-        <ul>
-          <li><a href="<?cs var:toroot ?>devices/tech/ram/low-ram.html">Low RAM</a></li>
-          <li><a href="<?cs var:toroot ?>devices/tech/ram/procstats.html">Viewing RAM Usage Data</a></li>
-        </ul>
-      </li>
-
       <li class="nav-section">
         <div class="nav-section-header">
             <a href="<?cs var:toroot ?>devices/tech/ota/index.html">
@@ -251,14 +254,12 @@
         </ul>
       </li>
 
-      <li><a href="<?cs var:toroot ?>devices/tech/netstats.html">Viewing Network Data</a></li>
-
       <li class="nav-section">
         <div class="nav-section-header">
           <a href="<?cs var:toroot ?>devices/tech/power/index.html"><span class="en">Power</span></a>
         </div>
         <ul>
-          <li><a href="<?cs var:toroot ?>devices/tech/power/batterystats.html">Viewing Battery Usage Data</a></li>
+          <li><a href="<?cs var:toroot ?>devices/tech/power/batterystats.html">Battery Usage Data</a></li>
         </ul>
       </li>
 
@@ -331,6 +332,29 @@
           </ul>
         </li>
       </ul>
+
+      <li class="nav-section">
+        <div class="nav-section-header">
+            <a href="<?cs var:toroot ?>devices/tech/resources.html">
+              <span class="en">System Resources</span>
+            </a>
+        </div>
+        <ul>
+          <li><a href="<?cs var:toroot ?>devices/tech/kernel.html">Kernel Configuration</a></li>
+          <li><a href="<?cs var:toroot ?>devices/tech/netstats.html">Network Usage Data</a></li>
+          <li class="nav-section">
+            <div class="nav-section-header">
+                <a href="<?cs var:toroot ?>devices/tech/ram/index.html">
+                  <span class="en">RAM</span>
+                </a>
+            </div>
+            <ul>
+              <li><a href="<?cs var:toroot ?>devices/tech/ram/low-ram.html">Low RAM Configuration</a></li>
+              <li><a href="<?cs var:toroot ?>devices/tech/ram/procstats.html">RAM Usage Data</a></li>
+            </ul>
+          </li>
+        </ul>
+
       <li class="nav-section">
         <div class="nav-section-header">
           <a href="<?cs var:toroot ?>devices/tech/test_infra/tradefed/index.html">
diff --git a/src/devices/graphics/architecture.jd b/src/devices/graphics/architecture.jd
index 75623cc..77593f2 100644
--- a/src/devices/graphics/architecture.jd
+++ b/src/devices/graphics/architecture.jd
@@ -55,7 +55,7 @@
 out in a few places.</p>
 
 <p>At various points I will refer to source code from the AOSP sources or from
-Grafika.  Grafika is a Google open-source project for testing; it can be found at
+Grafika.  Grafika is a Google open source project for testing; it can be found at
 <a
 href="https://github.com/google/grafika">https://github.com/google/grafika</a>.
 It's more "quick hack" than solid example code, but it will suffice.</p>
@@ -158,10 +158,12 @@
 primary component of which is a BufferQueue - for which SurfaceFlinger acts as
 the consumer.  A Binder object for the producer side is passed through the
 WindowManager to the app, which can then start sending frames directly to
-SurfaceFlinger.  (Note: The WindowManager uses the term "window" instead of
+SurfaceFlinger.</p>
+
+<p class="note"><strong>Note:</strong> The WindowManager uses the term "window" instead of
 "layer" for this and uses "layer" to mean something else.  We're going to use the
 SurfaceFlinger terminology.  It can be argued that SurfaceFlinger should really
-be called LayerFlinger.)</p>
+be called LayerFlinger.</p>
 
 <p>For most apps, there will be three layers on screen at any time: the "status
 bar" at the top of the screen, the "navigation bar" at the bottom or side, and
@@ -272,10 +274,11 @@
 layer's name is indicative of its original role: On a device with
 <code>/dev/graphics/fb0</code> and no overlays, all composition would be done
 with GLES, and the output would be written to the framebuffer.  On recent devices there
-generally is no simple framebuffer, so the FB_TARGET layer is a scratch buffer.
-(Note: This is why screen grabbers written for old versions of Android no
-longer work: They're trying to read from The Framebuffer, but there is no such
-thing.)</p>
+generally is no simple framebuffer, so the FB_TARGET layer is a scratch buffer.</p>
+
+<p class="note"><strong>Note:</strong> This is why screen grabbers written for old versions of Android no
+longer work: They're trying to read from the Framebuffer, but there is no such
+thing.</p>
 
 <p>The overlay planes have another important role: they're the only way to display
 DRM content.  DRM-protected buffers cannot be accessed by SurfaceFlinger or the
diff --git a/src/devices/input/getevent.jd b/src/devices/input/getevent.jd
index 8bf4093..fd39dbb 100644
--- a/src/devices/input/getevent.jd
+++ b/src/devices/input/getevent.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -16,6 +16,14 @@
     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>The <code>getevent</code> tool runs on the device and provides information about input
 devices and a live dump of kernel input events.</p>
 <p>It is very useful tool for ensuring that device drivers are reporing the
diff --git a/src/devices/input/input-device-configuration-files.jd b/src/devices/input/input-device-configuration-files.jd
index 877053c..ffe9ba4 100644
--- a/src/devices/input/input-device-configuration-files.jd
+++ b/src/devices/input/input-device-configuration-files.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -16,6 +16,14 @@
     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>Input device configuration files (<code>.idc</code> files) contain device-specific
 configuration properties that affect the behavior of input devices.</p>
 <p>Input device configuration files are typically not necessary for standard
diff --git a/src/devices/input/key-character-map-files.jd b/src/devices/input/key-character-map-files.jd
index 6872cdb..d485707 100644
--- a/src/devices/input/key-character-map-files.jd
+++ b/src/devices/input/key-character-map-files.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -16,6 +16,14 @@
     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>Key character map files (<code>.kcm</code> files) are responsible for mapping combinations
 of Android key codes with modifiers to Unicode characters.</p>
 <p>Device-specific key layout files are <em>required</em> for all internal (built-in)
diff --git a/src/devices/input/key-layout-files.jd b/src/devices/input/key-layout-files.jd
index d353d08..2b7cd53 100644
--- a/src/devices/input/key-layout-files.jd
+++ b/src/devices/input/key-layout-files.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -16,6 +16,14 @@
     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>Key layout files (<code>.kl</code> files) are responsible for mapping Linux key codes
 and axis codes to Android key codes and axis codes and specifying associated
 policy flags.</p>
diff --git a/src/devices/input/keyboard-devices.jd b/src/devices/input/keyboard-devices.jd
index 74bafaa..267ae42 100644
--- a/src/devices/input/keyboard-devices.jd
+++ b/src/devices/input/keyboard-devices.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -16,6 +16,14 @@
     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 supports a variety of keyboard devices including special function
 keypads (volume and power controls), compact embedded QWERTY keyboards,
 and fully featured PC-style external keyboards.</p>
diff --git a/src/devices/input/overview.jd b/src/devices/input/overview.jd
index 118fabf..11cdf97 100644
--- a/src/devices/input/overview.jd
+++ b/src/devices/input/overview.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -16,6 +16,14 @@
     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>The Android input subsystem nominally consists of an event pipeline
 that traverses multiple layers of the system.</p>
 <h2 id="input-pipeline">Input Pipeline</h2>
diff --git a/src/devices/input/touch-devices.jd b/src/devices/input/touch-devices.jd
index 298ba15..bb78d35 100644
--- a/src/devices/input/touch-devices.jd
+++ b/src/devices/input/touch-devices.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -16,6 +16,14 @@
     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 supports a variety of touch screens and touch pads, including
 stylus-based digitizer tablets.</p>
 <p>Touch screens are touch devices that are associated with a display such that
diff --git a/src/devices/input/validate-keymaps.jd b/src/devices/input/validate-keymaps.jd
index 6a907a1..4a099d4 100644
--- a/src/devices/input/validate-keymaps.jd
+++ b/src/devices/input/validate-keymaps.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -16,6 +16,14 @@
     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>The Android framework has a small tool called <code>validatekeymaps</code> to validate the
 syntax of input device configuration files, key layout files, key character
 maps files and virtual key definition files.</p>
diff --git a/src/devices/sensors/sensor-types.jd b/src/devices/sensors/sensor-types.jd
index 7ebac25..baa2f76 100644
--- a/src/devices/sensors/sensor-types.jd
+++ b/src/devices/sensors/sensor-types.jd
@@ -608,7 +608,7 @@
   Gyroscope</p>
 <p>Reporting-mode: <em><a href="report-modes.html#continuous">Continuous</a></em></p>
 <p><code>getDefaultSensor(SENSOR_TYPE_ORIENTATION)</code> <em>returns a non-wake-up sensor</em></p>
-<p>Note: This is an older sensor type that has been deprecated in the Android SDK.
+<p class="note"><strong>Note:</strong> This is an older sensor type that has been deprecated in the Android SDK.
   It has been replaced by the rotation vector sensor, which is more clearly
   defined. Use the rotation vector sensor over the orientation sensor whenever
   possible.</p>
diff --git a/src/devices/sensors/versioning.jd b/src/devices/sensors/versioning.jd
index 130c58c..8fb2af0 100644
--- a/src/devices/sensors/versioning.jd
+++ b/src/devices/sensors/versioning.jd
@@ -129,12 +129,12 @@
 <p>For continuous sensors, set it to the maximum sampling period allowed in
 microseconds.</p>
 
-<p>Note:</p>
+<p>The following are applicable for <code>period_ns</code>, <code>maxDelay</code>, and <code>minDelay</code>:</p>
 <ul>
 <li><code>period_ns</code> is in nanoseconds whereas
 <code>maxDelay</code>/<code>minDelay</code> are in microseconds.</li>
-<li><code>maxDelay </code>should always fit within a 32-bit signed integer. It
-is declared as 64 bit on 64 bit architectures only for binary compatibility reasons.</li>
+<li><code>maxDelay</code> should always fit within a 32-bit signed integer. It
+is declared as 64-bit on 64-bit architectures only for binary compatibility reasons.</li>
 </ul>
 
 <p><em>flags</em>: This field defines the reporting mode of the sensor and whether the sensor is
diff --git a/src/devices/storage/config-example.jd b/src/devices/storage/config-example.jd
index 347d8d5..fd55db8 100644
--- a/src/devices/storage/config-example.jd
+++ b/src/devices/storage/config-example.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -16,6 +16,13 @@
     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>Below are examples of external storage configurations as of Android 4.4
 for various typical devices. Only the relevant portions of the configuration
diff --git a/src/devices/storage/index.jd b/src/devices/storage/index.jd
index e8786ec..894e85b 100644
--- a/src/devices/storage/index.jd
+++ b/src/devices/storage/index.jd
@@ -16,6 +16,13 @@
     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>
 
 <img style="float: right; margin: 0px 15px 15px 15px;" src="images/ape_fwk_hal_extstor.png" alt="Android external storage HAL icon"/>
 
diff --git a/src/devices/tech/admin/images/multi-user-perms.png b/src/devices/tech/admin/images/multi-user-perms.png
new file mode 100644
index 0000000..f955ddc
--- /dev/null
+++ b/src/devices/tech/admin/images/multi-user-perms.png
Binary files differ
diff --git a/src/devices/tech/admin/implement.jd b/src/devices/tech/admin/implement.jd
new file mode 100644
index 0000000..03ce93c
--- /dev/null
+++ b/src/devices/tech/admin/implement.jd
@@ -0,0 +1,147 @@
+page.title=Implementing Device Administration
+@jd:body
+
+<!--
+    Copyright 2015 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>This page walks you through the many features in Android 5.0 and higher
+platform release that need to be enabled and validated on devices to make them
+ready for managed profile and device owner user cases that are essential to using
+them in a corporate environment. In addition to the related Android Open Source
+Project (AOSP) code, there are a number of additional components required for a
+device to function with managed profiles.</p>
+
+<h2 id=requirements>Requirements</h2>
+
+<p>The following uses-feature need to be defined:</p>
+
+<pre>
+android.software.managed_users
+android.software.device_admin
+</pre>
+
+<p>Confirm with: <code>adb shell pm list features</code></p>
+
+<p>It should not be a low-RAM device, meaning <code>ro.config.low_ram</code>
+should not be defined. The framework automatically limits the number of users
+to 1 when the <code>low_ram</code> flag is defined.</p>
+
+<p>By default, only applications that are essential for correct operation of the
+profile should be enabled as part of provisioning a managed device.</p>
+
+<p>OEMs must ensure the managed profile or device has all required applications by
+modifying:</p>
+
+<pre>
+vendor_required_apps_managed_profile.xml
+vendor_required_apps_managed_device.xml
+</pre>
+
+<p>Here are examples from a Nexus device:</p>
+
+<code>packages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_device.xml</code>
+
+<pre>
+&lt;resources&gt;
+  &lt;!-- A list of apps to be retained on the managed device --&gt;
+  &lt;string-array name="vendor_required_apps_managed_device"&gt;
+    &lt;item&gt;com.android.vending&lt;/item&gt; &lt;!--­Google Play --&gt;
+    &lt;item&gt;com.google.android.gms&lt;/item&gt; &lt;!--­Required by Play --&gt;
+    &lt;item&gt;com.google.android.contacts&lt;/item&gt; &lt;!--­Google or OEM Contacts­--&gt;
+    &lt;item&gt;com.google.android.googlequicksearchbox&lt;/item&gt; &lt;!--­Google Launcher --&gt;
+    &lt;item&gt;com.google.android.launcher&lt;/item&gt; &lt;!--­Google Launcher or OEM Launcher --&gt;
+    &lt;item&gt;com.google.android.dialer&lt;/item&gt; &lt;!--­Google or OEM dialer to enable making phone calls --&gt;
+  &lt;/string-array&gt;
+&lt;/resources&gt;
+</pre>
+
+<code>
+packages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_profile.xml
+</code>
+
+<pre>
+&lt;resources&gt;
+    &lt;!-- A list of apps to be retained in the managed profile. This includes any Google experience apps required. --&gt;
+    &lt;string-array name="vendor_required_apps_managed_profile"&gt;
+        &lt;item&gt;com.android.vending&lt;/item&gt; &lt;!-- Google Play --&gt;
+        &lt;item&gt;com.google.android.gms&lt;/item&gt; &lt;!-- Required by Play --&gt;
+        &lt;item&gt;com.google.android.contacts&lt;/item&gt; &lt;!-- Google or OEM Contacts --&gt;
+    &lt;/string-array&gt;
+&lt;/resources&gt;
+</pre>
+
+<h3 id=launcher>Launcher</h3>
+
+<p>The launcher must support badging applications with the icon badge provided
+in the Android Open Source Project (AOSP) to represent the managed applications
+and other badge user interface elements such as recents and notifications.</p> 
+
+<p>Update the Launcher to support badging. If you use <a
+href="https://android.googlesource.com/platform/packages/apps/Launcher3/">launcher3</a>
+in AOSP as-is, then you likely already support this badging feature.
+</p>
+
+<h3 id=nfc>NFC</h3>
+
+<p>On devices with NFC, NFC must be enabled in the Android Setup Wizard and
+configured to accept managed provisioning intents:</p>
+
+<code>packages/apps/Nfc/res/values/provisioning.xml</code>
+
+<pre>
+&lt;bool name="enable_nfc_provisioning"&gt;true&lt;/bool&gt;
+&lt;item>application/com.android.managedprovisioning&lt;/item&gt;
+</pre>
+
+<h3 id=setup_wizard>Setup Wizard</h3>
+
+<p>The Android Setup Wizard needs to support device owner provisioning. When it
+opens, it needs to check if another process (such as device owner provisioning)
+has already finished the user setup. If this is the case, it needs to fire a
+home intent and finish the setup wizard. </p>
+
+<p>This intent will be caught by the provisioning application, which will then
+hand over control to the newly set device owner. This can be achieved by adding
+the following to your setup wizard’s main activity:</p>
+
+<pre>
+&#64;Override
+   protected void onStart() {
+        super.onStart();
+
+        // When returning to a setup wizard activity, check to see if another setup process
+        // has intervened and, if so, complete an orderly exit
+        boolean completed = Settings.Secure.getInt(getContentResolver(),
+                Settings.Secure.USER_SETUP_COMPLETE, 0) != 0;
+        if (completed) { 
+           startActivity(new Intent(Intent.ACTION_MAIN, null)
+                .addCategory(Intent.CATEGORY_HOME)
+                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+                        | Intent.FLAG_ACTIVITY_CLEAR_TASK
+                        | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED));
+           finish();
+       }
+
+       ...
+   }
+</pre>
diff --git a/src/devices/tech/admin/index.jd b/src/devices/tech/admin/index.jd
new file mode 100644
index 0000000..7798355
--- /dev/null
+++ b/src/devices/tech/admin/index.jd
@@ -0,0 +1,62 @@
+page.title=Device Administration
+@jd:body
+
+<!--
+    Copyright 2015 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>Devices running Android 5.0 and later with the managed_users feature
+declared can be used in a <a href="http://www.android.com/work/">corporate
+environment</a> under the auspices of each company’s information technology (IT)
+department. This is possible with the introduction of <a href="multi-user.html">multiple
+users</a>, <a href="managed-profiles.html">managed profiles</a>, and enterprise
+mobility management (EMM) applications, as well as enhancements to default
+<a
+href="{@docRoot}devices/tech/security/encryption/index.html">encryption</a>,
+<a
+href="{@docRoot}devices/tech/security/verifiedboot/index.html">verified
+boot</a>, and <a
+href="{@docRoot}devices/tech/security/selinux/index.html">SELinux</a>.</p>
+
+<p>With these enhancements, either users or their IT departments may create
+managed profiles that separate corporate employer data from personal user
+information. Follow the documents within this section of the site to properly
+implement corporate device administration.</p>
+
+<h2 id=summary>Summary</h2>
+
+<p>Follow this flow to employ device administration:</p>
+
+<ol>
+  <li>Gain an understanding of key concepts, such as <a
+href="multi-user.html">multiple users</a> and <a
+href="managed-profiles.html">managed profiles</a>.
+  <li><a href="implement.html">Implement device administration</a> via custom
+overlay files.
+  <li><a href="testing-setup.html">Test</a> and validate your devices with EMM providers and applications.
+</ol>
+
+<h2 id=supporting_documentation>Supporting documentation</h2>
+
+<p><a href="http://developer.android.com/guide/topics/admin/device-admin.html">Device Administration API</a></p>
+
+<p><a href="https://developer.android.com/training/enterprise/index.html">Building Apps for Work</a></p>
diff --git a/src/devices/tech/admin/managed-profiles.jd b/src/devices/tech/admin/managed-profiles.jd
new file mode 100644
index 0000000..c36510e
--- /dev/null
+++ b/src/devices/tech/admin/managed-profiles.jd
@@ -0,0 +1,170 @@
+page.title=Employing Managed Profiles
+@jd:body
+
+<!--
+    Copyright 2015 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>A <em>managed profile</em> or <em>work profile</em> is an Android <a
+href="multi-user.html">user</a> with some additional special properties around
+management and visual aesthetic.</p>
+
+<h2 id=purpose>DevicePolicyManager APIs</h2>
+
+<p>Android 5.x or newer offers a greatly improved DevicePolicyManager with dozens of new
+APIs to support both corporate-owned and bring your own device (BYOD)
+administration use cases. Examples include app restrictions, silent
+installation of certificates, and cross-profile sharing intent access control.
+You may use the sample Device Policy Client (DPC) app, <a
+href="https://developer.android.com/samples/BasicManagedProfile/index.html">BasicManagedProfile.apk</a>,
+as a starting point. See <a
+href="https://developer.android.com/training/enterprise/work-policy-ctrl.html">Building
+a Work Policy Controller</a> for additional details.
+
+<h2 id=purpose>Purpose</h2>
+
+<p>The primary goal of a managed profile is to create a segregated and secure
+space for managed (for example, corporate) data to reside. The administrator of
+the profile has full control over scope, ingress, and egress of data as well as
+its lifetime. These policies offer great powers and therefore fall upon the
+managed profile instead of the device administrator.</p>
+
+<ul>
+  <li><strong>Creation</strong> - Managed profiles can be created by any application in the primary user. The
+user is notified of managed profile behaviors and policy enforcement before
+creation.
+  <li><strong>Management</strong> - Management is performed by applications that programmatically invoke APIs in
+the <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html">DevicePolicyManager</a> class to restrict use. Such applications are referred to as <em>profile owners</em> and are defined at initial profile setup. Policies unique to managed profile
+involve app restrictions, updatability, and intent behaviors.
+  <li><strong>Visual treatment</strong> - Applications, notifications, and widgets from the managed profile are always
+badged and typically made available inline with user interface (UI) elements
+from the primary user.
+</ul>
+
+<h2 id=data_segregation>Data Segregation </h2>
+
+<h3 id=applications>Applications</h3>
+
+<p>Applications are scoped with their own segregated data when the same app exists
+in the primary user and managed profile. Generally, applications cannot
+communicate directly with one another across the profile-user boundary and act
+independently of one another.</p>
+
+<h3 id=accounts>Accounts</h3>
+
+<p>Accounts in the managed profile are distinctly unique from the primary user.
+There is no way to access credentials across the profile-user boundary. Only
+apps in their respective context are able to access their respective accounts.</p>
+
+<h3 id=intents>Intents</h3>
+
+<p>The administrator controls whether intents are resolved in/out of managed
+profile or not. Applications from the managed profile are default scoped to
+stay within the managed profile exception of the Device Policy API.</p>
+
+<h3 id=settings>Settings</h3>
+
+<p>Enforcement of settings is generally scoped to the managed profile with a few
+exceptions. Specifically, lockscreen and encryption settings are still scoped
+to the device and shared between the primary user and managed profile.
+Otherwise, a profile owner does not have any device administrator privileges
+outside the managed profile.</p>
+
+<p>Managed profiles are implemented as a new kind of secondary user, such that:</p>
+
+<pre>
+uid = 10000 * userid + appid
+</pre>
+
+
+<p>They have separate app data like regular users:</p>
+
+<pre>
+/data/user/&lt;userid&gt;
+</pre>
+
+<p>The UserId is calculated for all system requests using <code>Binder.getCallingUid()</code>, and all system state and responses are separated by userId. You may consider
+instead using <code>Binder.getCallingUserHandle</code> rather than <code>getCallingUid</code> to avoid confusion between uid and userId.</p>
+
+<p>The AccountManagerService maintains a separate list of accounts for each user.</p>
+
+<p>The main differences between a managed profile and a regular secondary user are
+as follows:</p>
+
+<ul>
+  <li> The managed profile is associated with its parent user and started alongside
+the primary user at boot time.
+  <li> Notifications for managed profiles are enabled by ActivityManagerService
+allowing the managed profile to share the activity stack with the primary user.
+  <li> Some other system services shared are: IME, A11Y services, Wi-Fi, and NFC.
+  <li> New Launcher APIs allow launchers to display badged apps and whitelisted
+widgets from the managed profile alongside apps in the primary profile without
+switching users.
+</ul>
+
+<h2 id=device_administration>Device administration</h2>
+
+<p>Android device administration includes two new types of device administrators for
+enterprises:</p>
+
+<ul>
+  <li><em>Profile owner</em>—Designed for bring your own device (BYOD) environments
+  <li><em>Device Owner</em>—Designed for corp-liable environments
+</ul>
+
+<p>The majority of the new device administrator APIs that have been added for
+Android 5.0 are available only to profile or device owners. Traditional device
+administrators remain but are applicable to the simpler consumer-only case
+(e.g. find my device).</p>
+
+<h3 id=profile_owners>Profile owners</h3>
+
+<p>A Device Policy Client (DPC) app typically functions as the profile owner. The
+DPC app is typically provided by an enterprise mobility management (EMM)
+partner, such as Google Apps Device Policy.</p>
+
+<p>The profile owner app creates a managed profile on the device by sending the
+<code>ACTION_PROVISION_MANAGED_PROFILE</code> intent. This profile is
+distinguished by the appearance of badged instances of
+apps, as well as personal instances. That badge, or Android device
+administration icon, identifies which apps are work apps.</p>
+
+<p>The EMM has control only over the managed profile (not personal space) with some
+exceptions, such as enforcing the lock screen.</p>
+
+<h3 id=device_owners>Device owners</h3>
+
+<p>The device owner can be set only in an unprovisioned device:</p>
+
+<ul>
+  <li>Can be provisioned only at initial device setup
+  <li>Enforced disclosure always displayed in quick-settings
+</ul>
+
+<p>Device owners can conduct some tasks profile owners cannot, and here are a few examples:</p>
+
+<ul>
+  <li>Wipe device data
+  <li>Disable Wi-Fi/ BT
+  <li>Control <code>setGlobalSetting</code>
+  <li><code>setLockTaskPackages</code> (the ability to whitelist packages that can pin themselves to the foreground)
+</ul>
diff --git a/src/devices/tech/admin/multi-user.jd b/src/devices/tech/admin/multi-user.jd
new file mode 100644
index 0000000..8319be0
--- /dev/null
+++ b/src/devices/tech/admin/multi-user.jd
@@ -0,0 +1,162 @@
+page.title=Supporting Multiple Users
+@jd:body
+
+<!--
+    Copyright 2015 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>This document describes the Android multi-user feature. It allows more than one
+user on a single Android device by separating their accounts and application
+data. For instance, parents may let their children use the family tablet. Or a
+critical team might share a mobile device for on-call duty.</p>
+
+<h1 id=definitions>Definitions</h1>
+
+<p>Before supporting multiple Android users, you should understand the basic
+concepts involved. Here are the primary terms used when describing Android
+users and accounts:</p>
+
+<ul>
+  <li><em>User</em> - Each user is intended to be used by a different physical person. Each user
+has distinct application data and some unique settings, as well as a user
+interface to explicitly switch between users. A user can run in the background
+when another user is active; the system manages shutting down users to conserve
+resources when appropriate. Secondary users can be created either directly via
+the primary user interface or from a <a
+href="https://developer.android.com/guide/topics/admin/device-admin.html">Device
+Administration</a> application.
+  <li><em>Account</em> - Accounts are contained within a user but are not defined by a user. Nor is a
+user defined by or linked to any given account. Users and profiles contain
+their own unique accounts but are not required to have accounts to be
+functional. The list of accounts differs by user. See the <a href="https://developer.android.com/reference/android/accounts/Account.html">Account class</a> definition.
+  <li><em>Profile<strong></em> </strong>- A profile has separated app data but shares some system-wide settings (for
+example, Wi-Fi and Bluetooth). A profile is a subset of and tied to the
+existence of a user. A user can have multiple profiles. They are created
+through a <a href="https://developer.android.com/guide/topics/admin/device-admin.html">Device
+Administration</a> application. A profile always has an immutable
+association to a ‘parent’ user, defined by the user that created the profile.
+Profiles do not live beyond the lifetime of the creating user.
+  <li><em>App</em> - An application’s data exists within each associated user. App data is
+sandboxed from other applications within the same user. Apps within the same
+user can interact with each other via IPC. See <a href="https://developer.android.com/training/enterprise/index.html">Building Apps for Work</a>.
+</ul>
+
+<h2 id=user_types>User types</h2>
+
+<ul>
+  <li><em>Primary</em> - The first user added to a device. The primary user cannot be removed except
+by factory reset. This user also has some special privileges and settings only
+it can set. The primary user is always running even when other users are in the
+foreground.
+  <li><em>Secondary</em> - Any user added to the device other than the primary user. They can be
+removed by either themselves or the primary user and cannot impact other users
+on a device. Secondary users can run in the background and will continue to
+have network connectivity when they do.
+  <li><em>Guest<strong></em> </strong>- A guest user is a temporary secondary user with an explicit option to quick
+delete the guest user when its usefulness is over. There can be only one guest
+user at a time.
+</ul>
+
+<h2 id=profile_types>Profile types</h2>
+
+<ul>
+  <li><em>Managed<strong></em> </strong>- Managed profiles are created by an application to contain work data and
+apps. They are managed exclusively by the ‘profile owner’, the app who created
+the corp profile. Launcher, notifications and recent tasks are shared by the
+primary user and the corp profile.
+  <li><em>Restricted</em> - Restricted profiles use the accounts based off the primary user. The Primary
+user can control what apps are available on the restricted profile. Restricted
+profiles are available only on tablets.
+</ul>
+
+<h1 id=effects>Effects</h1>
+
+<p>When users are added to a device, some functionality will be curtailed when
+another user is in the foreground. Since app data is separated by user, the
+state of those apps differs by user. For example, email destined for an account
+of a user not currently in focus won’t be available until that user and account
+are active on the device.</p>
+
+<p>The default state is only the primary user has full access to phone calls and
+texts. The secondary user may receive inbound calls but cannot send or receive
+texts. The primary user must enable these functions for others.</p>
+
+ <p class="note"><strong>Note</strong>: To enable or disable the phone and SMS functions for a secondary user, go to
+Settings > Users, select the user, and switch the <em>Allow phone calls and SMS</em> setting to off.</p>
+
+<p>Please note, some restrictions exist when a secondary user is in background.
+For instance, the background secondary user will not be able to display the
+user interface or make Bluetooth services active. Finally, background secondary
+users will be halted by the system process if the device needs additional
+memory for operations in the foreground user.</p>
+
+<p>Here are aspects of behavior to keep in mind when employing multiple users on
+an Android device:</p>
+
+<ul>
+  <li>Notifications appear for all accounts of a single user at once.
+  <li>Notifications for other users do not appear until they are active.
+  <li>Each user gets his or her own workspace to install and place apps.
+  <li>No user has access to the app data of another user.
+  <li>Any user can affect the installed apps for all users.
+  <li>The primary user can remove apps or even the entire workspace established by
+secondary users.
+</ul>
+
+<h1 id=implementation>Implementation</h1>
+
+<h2 id=managing_users>Managing users</h2>
+
+<p>Management of users and profiles (with the exception of restricted profiles) is
+performed by applications that programmatically invoke API in the <code>DevicePolicyManager</code> class to restrict use.</p>
+
+<p>Schools and enterprises may employ users and profiles to manage the lifetime
+and scope of apps and data on devices. They may use the types outlined above in
+conjunction with the <a href="http://developer.android.com/reference/android/os/UserManager.html">UserManager API</a> to build unique solutions tailored to their use cases.</p>
+
+<h2 id=applying_the_overlay>Applying the overlay</h2>
+
+<p>The multi-user feature is disabled by default in the Android 5.0 release. To
+enable it, device manufacturers must define a resource overlay that replaces
+the following values in frameworks/base/core/res/res/values/config.xml:</p>
+
+<pre>
+&lt;!--  Maximum number of supported users --&gt;
+&lt;integer name="config_multiuserMaximumUsers"&gt;1&lt;/integer&gt;
+&lt;!--  Whether Multiuser UI should be shown --&gt;
+&lt;bool name="config_enableMultiUserUI"&gt;false&lt;/bool&gt;
+</pre>
+
+<p>To apply this overlay and enable guest and secondary users on the device, use the
+<code>DEVICE_PACKAGE_OVERLAYS</code> feature of the Android build system to:</p>
+
+<ul>
+  <li> Replace the value for <code>config_multiuserMaximumUsers</code> with one greater than 1
+  <li> Replace the value of <code>config_enableMultiUserUI</code> with: <code>true</code>
+</ul>
+
+<p>Device manufacturers may decide upon the maximum number of users.</p>
+
+<p>That said, if device manufacturers or others have modified settings, they need
+to ensure SMS and telephony work as defined in the <a
+href="{@docRoot}compatibility/android-cdd.pdf">Android Compatibility Definition
+Document</a> (CDD).</p>
diff --git a/src/devices/tech/admin/multiuser-apps.jd b/src/devices/tech/admin/multiuser-apps.jd
new file mode 100644
index 0000000..6577bcf
--- /dev/null
+++ b/src/devices/tech/admin/multiuser-apps.jd
@@ -0,0 +1,104 @@
+page.title=Building Multiuser-Aware Apps
+@jd:body
+
+<!--
+    Copyright 2015 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>When a device supports <a href="multi-user.html">multiple users</a>, its apps must be made aware of these distinct users.</p>
+
+<p>Certain apps need to have some components run as singletons and can accept
+requests from any user. Only system apps can currently use this feature.</p>
+
+<p>This facility:</p>
+
+<ul>
+  <li>Conserves resources
+  <li>Arbitrates one or more shared resources across users
+  <li>Reduces network overhead by using a single server connection
+</ul>
+
+<p>See the diagram below for a depiction of permissions flow with multiple users.</p>
+
+<p><img src="images/multi-user-perms.png" alt="Multiple users permissions flow" />
+<p class="img-caption"><strong>Figure 1.</strong> Multiple users permissions</p>
+
+<h2 id=enabling_a_singleton_component>Enabling a singleton component</h2>
+
+<p>To identify an app as a singleton, Add <code>android:singleUser=”true”</code> to your service or provider in the Android manifest.</p>
+
+<p>The system will instantiate that component in the process running as user 0
+only. Any requests to connect to that provider or service from any user will be
+routed to the process in user 0. If this is the only component in your app,
+only one instance of your app will run.</p>
+
+<p>Activities in your package will still be launched in a separate process for
+each user, with the UID being in the UID range for that user (such as 1010034).</p>
+
+<h2 id=interacting_with_users>Interacting with users</h2>
+
+<h3 id=perms_required>Set permissions</h3>
+
+<p>These permissions are required</p>
+
+<pre>
+INTERACT_ACROSS_USERS (signature|system)
+INTERACT_ACROSS_USERS_FULL (signature)
+</pre>
+
+<h3 id=apis>Employ APIs</h3>
+
+<p>Use the following APIs to make apps aware of multiple users.</p>
+
+<ol>
+  <li> Extract the user handle from incoming Binder calls:
+  <ul>
+    <li> <code>int userHandle = UserHandle.getCallingUserId()</code>
+  </ul>
+  <li> Use new, protected APIs to start services, activities, broadcasts on a specific
+user: 
+  <ul>
+    <li><code>Context.startActivityAsUser(Intent, UserHandle)</code>
+    <li><code>Context.bindServiceAsUser(Intent, …, UserHandle)</code>
+    <li><code>Context.sendBroadcastAsUser(Intent, … , UserHandle)</code>
+    <li><code>Context.startServiceAsUser(Intent, …, UserHandle)
+UserHandle</code> can be an explicit user or one of the special handles: <code>UserHandle.CURRENT</code> or <code>UserHandle.ALL</code>. <code>CURRENT</code> indicates the user that is currently in the foreground. You can use <code>ALL</code> when you want to send a broadcast to all users.
+  </ul>
+  <li>Communicate with components in your own app:
+<code>(INTERACT_ACROSS_USERS)</code>
+Or with components in other apps:
+<code>(INTERACT_ACROSS_USERS_FULL)</code>
+  <li>You may need to create proxy components that run in the user’s process that
+then access the <code>singleUser</code> component in user 0.
+  <li>Query users and their handles with the new <code>UserManager</code> system service:
+  <ul>
+    <li><code>UserManager.getUsers()</code>
+    <li><code>UserManager.getUserInfo()</code>
+    <li><code>UserManager.supportsMultipleUsers()</code>
+    <li><code>UserManager.getUserSerialNumber(int userHandle)</code> - a non-recycled number that corresponds to a user handle.
+    <li><code>UserManager.getUserHandle(int serialNumber)</code>
+    <li><code>UserManager.getUserProfiles() </code>- returns the collection of self and managed profiles, if any.
+  </ul>
+  <li>Register to listen to specific or all users and the callbacks with new APIs on
+ContentObserver, PackageMonitor, BroadcastReceiver that provide additional
+information about which user has caused the callback.
+</ol>
diff --git a/src/devices/tech/admin/provision.jd b/src/devices/tech/admin/provision.jd
new file mode 100644
index 0000000..62b898e
--- /dev/null
+++ b/src/devices/tech/admin/provision.jd
@@ -0,0 +1,168 @@
+page.title=Provisioning for Device Administration
+@jd:body
+
+<!--
+    Copyright 2015 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>This page describes the process for deploying devices to corporate users.</p>
+
+<p>Device owner provisioning can be accomplished over NFC or with an activation
+code. See <a href="implement.html">Implementing Device Administration</a> for
+the complete list of requirements.</p>
+
+<p>Download the <a
+href="https://github.com/googlesamples/android-NfcProvisioning">NfcProvisioning
+APK</a> and <a
+href="https://github.com/googlesamples/android-DeviceOwner">Android-DeviceOwner
+APK</a>.</p>
+
+<h2 id=managed_provisioning>Managed Provisioning</h2>
+
+<p>Managed Provisioning is a framework UI flow to ensure users are adequately
+informed of the implications of setting a device owner or managed profile. You can
+think of it as a setup wizard for managed profiles.</p>
+
+<p class="note"><strong>Note:</strong> Remember, the device owner can be set
+only from an unprovisioned device. If
+<code>Settings.Secure.USER_SETUP_COMPLETE</code> has ever been set, then the
+device is considered provisioned & device owner cannot be set.</p>
+
+<p>Please note, devices that enable default encryption offer considerably
+simpler/quicker device administration provisioning flow. The managed provisioning
+component:</p>
+
+<ul>
+  <li>Encrypts the device</li>
+  <li>Creates the managed profile</li>
+  <li>Disables non-required applications</li>
+  <li>Sets the enterprise mobility management (EMM) app as profile owner</li>
+</ul>
+
+<p>In turn, the EMM app:</p>
+
+<ul>
+  <li>Adds user accounts</li>
+  <li>Enforces device compliance</li>
+  <li>Enables any additional system applications</li>
+</ul>
+
+<p>In this flow, managed provisioning triggers device encryption. The framework
+  copies the EMM app into the managed profile as part of managed provisioning.
+  The instance of the EMM app inside of the managed profile gets a callback from the
+framework when provisioning is done.</p>
+
+<p>The EMM can then add accounts and enforce policies; it then calls
+<code>setProfileEnabled()</code>, which makes the launcher icons visible.</p>
+
+<h2 id=profile_owner_provisioning>Profile Owner Provisioning</h2>
+
+<p>Profile owner provisioning assumes the user of the device oversees its
+management (and not a company IT department). To enable, profile owner
+provisioning, you must send an intent with appropriate extras. See the <a href="https://developer.android.com/samples/BasicManagedProfile/index.html">BasicManagedProfile.apk</a> for an example.</p>
+
+<p>Mobile Device Management (MDM) applications trigger the creation of the managed
+profile by sending an intent with action:</p>
+
+<p><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/admin/DevicePolicyManager.java">DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE</a></p>
+
+<p>Here is a sample intent that will trigger the creation of the managed profile
+and set the DeviceAdminSample as the profile owner:</p>
+
+<pre>
+adb shell am start -a android.app.action.PROVISION_MANAGED_PROFILE \
+          -c android.intent.category.DEFAULT \
+	      -e wifiSsid $(printf '%q' \"GoogleGuest\") \
+          -e deviceAdminPackage "com.google.android.deviceadminsample" \
+	      -e android.app.extra.deviceAdminPackageName $(printf '%q'
+                        .DeviceAdminSample\$DeviceAdminSampleReceiver) \
+	      -e android.app.extra.DEFAULT_MANAGED_PROFILE_NAME "My Organisation"
+</pre>
+
+<h2 id=device_owner_provisioning_via_nfc>Device Owner Provisioning via NFC</h2>
+
+<p>Device owner provisioning via NFC is similar to the profile owner method but
+requires more bootstrapping before managed provisioning.</p>
+
+<p>To use this method, <a href="http://developer.android.com/guide/topics/connectivity/nfc/nfc.html">NFC bump</a> the device from the first page of setup wizard (SUW). This offers a low-touch
+flow and configures Wi-Fi, installs the DPC, and sets the DPC as device owner.</p>
+
+<p>Here is the typical NFC bundle:</p>
+
+<pre>
+                EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME
+                EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_LOCATION
+                EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM
+                EXTRA_PROVISIONING_WIFI_SSID
+                EXTRA_PROVISIONING_WIFI_SECURITY_TYPE
+</pre>
+
+<p>The device must have NFC configured to accept the managed provisioning mimetype
+from SUW:</p>
+
+<pre>
+/packages/apps/Nfc/res/values/provisioning.xml
+
+      &lt;bool name="enable_nfc_provisioning"&gt;true&lt;/bool&gt;
+      &lt;item&gt;application/com.android.managedprovisioning&lt;/item&gt;
+</pre>
+
+<h2 id=device_owner_provisioning_with_activation_code>Device Owner Provisioning with Activation Code</h2>
+
+<p>Select <em>Add Work Account</em> from the setup wizard. This triggers a
+lookup of the EMM from Android servers.</p>
+
+<p>The device installs the EMM app and starts provisioning flow. As an extra
+option, Android device administration supports the option of using email
+address with a six-digit activation code to bootstrap the process as part of
+setup wizard.</p>
+
+<h2 id=emm_benefits>EMM benefits</h2>
+
+<p>An EMM can help by conducting these tasks for you:</p>
+
+<ul>
+  <li>Provision managed profile
+  <li>Apply security policies
+  <ul>
+    <li>Set password complexity
+    <li>Lockdowns: disable screenshots, sharing from managed profile, etc.
+  </ul>
+  <li>Configure enterprise connectivity
+  <ul>
+    <li>Use WifiEnterpriseConfig to configure corporate Wi-Fi
+    <li>Configure VPN on the device
+    <li>Use DPM.setApplicationRestrictions() to configure corporate VPN
+  </ul>
+  <li>Enable corporate app Single Sign-On (SSO)
+  <ul>
+    <li>Install desired corporate apps
+    <li>Use DPM.installKeyPair()to silently install corp client certs
+    <li>Use DPM.setApplicationRestrictions() to configure hostnames, cert alias’ of
+corporate apps
+  </ul>
+</ul>
+
+<p>Managed provisioning is just one piece of the EMM end-to-end workflow, with the
+  end goal being to make corporate data accessible to apps in the managed profile.</p>
+
+<p>See <a href="https://docs.google.com/document/d/1xWdZHjsDB_4FWQcHfPh84EuTvljoMgrc2JINGMBtDQg/edit#">Manual Setup for Device Owner Testing</a> for testing instructions.</p>
diff --git a/src/devices/tech/admin/testing-setup.jd b/src/devices/tech/admin/testing-setup.jd
new file mode 100644
index 0000000..678c04b
--- /dev/null
+++ b/src/devices/tech/admin/testing-setup.jd
@@ -0,0 +1,93 @@
+page.title=Setting up Device Testing
+@jd:body
+
+<!--
+    Copyright 2015 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>These are the essential elements that must exist for OEM devices to ensure
+minimal support for managed profiles:</p>
+
+<ul>
+  <li>Profile Owner as described in <a
+href="https://developer.android.com/training/enterprise/app-compatibility.html">Ensuring
+Compatibility with Managed Profiles</a>
+  <li>Device Owner
+  <li>Activation Code Provisioning
+  </ul>
+<p>See <a href="implement.html">Implementing Device Administration</a> for the complete list of requirements.</p>
+
+<h2 id=summary>Summary</h2>
+<p>To test your device administration features:</p>
+
+<ol>
+  <li>For device owner, use the  <a
+href="https://developer.android.com/samples/BasicManagedProfile/index.html">BasicManagedProfile.apk</a>
+test app.
+  <li>Consider working with other enterprise mobility management (EMM) providers
+directly.
+</ol>
+
+<h2 id=set_up_the_device_owner_for_testing>Set up the device owner for testing</h2>
+<ol>
+  <li>Device MUST be built with <strong>userdebug</strong> or <strong>eng</strong> build.
+  </li>
+  <li>Factory reset the target device (and continue with the next steps in the
+    meantime).
+  </li>
+      <li>Download <a
+        href="http://developer.android.com/downloads/samples/BasicManagedProfile.zip">BasicManagedProfile.zip</a>. (Also see the <a
+        href="http://developer.android.com/samples/BasicManagedProfile/index.html">BasicManagedProfile</a> documentation.)</li>
+      <li>Unzip the file.
+      <li>Navigate (<code>cd</code>) to the unzipped directory.</li>
+      <li>If you don't have it, download the <a href="http://developer.android.com/sdk/index.html#Other">Android SDK Tools</a> package.</li>
+      <li>Create a file with the name <code>local.properties</code> containing the following single
+        line:<br>
+        <code>sdk.dir=<em>&lt;path to your android SDK folder&gt;</em></code><br>
+      <li>On Linux and Mac OS, run:<br>
+        <code>./gradlew assembleDebug</code><br>
+        Or on windows run:<br>
+        <code>gradlew.bat assembleDebug</code></li>
+      <li>If the build is unsuccessful because you have an outdated android SDK, run:<br>
+        <code><em>&lt;your android sdk folder&gt;</em>/tools/android update sdk -u -a</code></li>
+      <li>Wait for factory reset to complete if it hasn’t yet.<br>
+	<p class="Caution"><strong>Caution</strong>: Stay on the first screen
+        after factory reset and do not finish the setup wizard.</li>
+      <li>Install the BasicManagedProfile app by running the following command:<br>
+        <code>adb install ./Application/build/outputs/apk/Application-debug.apk </code>
+      </li>
+  <li>Set this app as the device owner by running this command:<br><code>$ adb shell am start -a
+    com.android.managedprovisioning.ACTION_PROVISION_MANAGED_DEVICE --es
+    android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME
+    com.example.android.basicmanagedprofile</code>
+  </li>
+  <li>Go through device owner setup on the device (encrypt, select Wi-Fi, etc.)</li>
+</ol>
+
+<h2 id=verify_the_device_owner_was_correctly_setup>Verify the device owner was correctly setup</h2>
+<ol>
+  <li>Go to <em>Settings > Security > Device Administrators</em>.
+  </li>
+  <li>Confirm the BasicManagedProfile is in the list and verify it cannot be
+    disabled. (This signifies it is a device owner.)
+  </li>
+</ol>
diff --git a/src/devices/tech/dalvik/dalvik-bytecode.jd b/src/devices/tech/dalvik/dalvik-bytecode.jd
index 5695440..f449bce 100644
--- a/src/devices/tech/dalvik/dalvik-bytecode.jd
+++ b/src/devices/tech/dalvik/dalvik-bytecode.jd
@@ -174,7 +174,7 @@
   <td>nop</td>
   <td>&nbsp;</td>
   <td>Waste cycles.
-    <p><b>Note:</b>
+    <p class="note"><strong>Note:</strong>
     Data-bearing pseudo-instructions are tagged with this opcode, in which
     case the high-order byte of the opcode unit indicates the nature of
     the data. See "<code>packed-switch-payload</code> Format",
@@ -209,7 +209,7 @@
   <td><code>A:</code> destination register pair (4 bits)<br/>
     <code>B:</code> source register pair (4 bits)</td>
   <td>Move the contents of one register-pair to another.
-    <p><b>Note:</b>
+    <p class="note"><strong>Note:</strong>
     It is legal to move from <code>v<i>N</i></code> to either
     <code>v<i>N-1</i></code> or <code>v<i>N+1</i></code>, so implementations
     must arrange for both halves of a register pair to be read before
@@ -222,7 +222,7 @@
   <td><code>A:</code> destination register pair (8 bits)<br/>
     <code>B:</code> source register pair (16 bits)</td>
   <td>Move the contents of one register-pair to another.
-    <p><b>Note:</b>
+    <p class="note"><strong>Note:</strong>
     Implementation considerations are the same as <code>move-wide</code>,
     above.</p>
   </td>
@@ -233,7 +233,7 @@
   <td><code>A:</code> destination register pair (16 bits)<br/>
     <code>B:</code> source register pair (16 bits)</td>
   <td>Move the contents of one register-pair to another.
-    <p><b>Note:</b>
+    <p class="note"><strong>Note:</strong>
     Implementation considerations are the same as <code>move-wide</code>,
     above.</p>
   </td>
@@ -425,7 +425,7 @@
   <td>monitor-exit vAA</td>
   <td><code>A:</code> reference-bearing register (8 bits)</td>
   <td>Release the monitor for the indicated object.
-    <p><b>Note:</b>
+    <p class="note"><strong>Note:</strong>
     If this instruction needs to throw an exception, it must do
     so as if the pc has already advanced past the instruction.
     It may be useful to think of this as the instruction successfully
@@ -446,7 +446,7 @@
     <code>B:</code> type index (16 bits)</td>
   <td>Throw a <code>ClassCastException</code> if the reference in the
     given register cannot be cast to the indicated type.
-    <p><b>Note:</b> Since <code>A</code> must always be a reference
+    <p class="note"><strong>Note:</strong> Since <code>A</code> must always be a reference
     (and not a primitive value), this will necessarily fail at runtime
     (that is, it will throw an exception) if <code>B</code> refers to a
     primitive type.</p>
@@ -461,7 +461,7 @@
   <td>Store in the given destination register <code>1</code>
     if the indicated reference is an instance of the given type,
     or <code>0</code> if not.
-    <p><b>Note:</b> Since <code>B</code> must always be a reference
+    <p class="note"><strong>Note:</strong> Since <code>B</code> must always be a reference
     (and not a primitive value), this will always result
     in <code>0</code> being stored if <code>C</code> refers to a primitive
     type.</td>
@@ -547,7 +547,7 @@
   <td>goto +AA</td>
   <td><code>A:</code> signed branch offset (8 bits)</td>
   <td>Unconditionally jump to the indicated instruction.
-    <p><b>Note:</b>
+    <p class="note"><strong>Note:</strong>
     The branch offset must not be <code>0</code>. (A spin
     loop may be legally constructed either with <code>goto/32</code> or
     by including a <code>nop</code> as a target before the branch.)</p>
@@ -558,7 +558,7 @@
   <td>goto/16 +AAAA</td>
   <td><code>A:</code> signed branch offset (16 bits)<br/></td>
   <td>Unconditionally jump to the indicated instruction.
-    <p><b>Note:</b>
+    <p class="note"><strong>Note:</strong>
     The branch offset must not be <code>0</code>. (A spin
     loop may be legally constructed either with <code>goto/32</code> or
     by including a <code>nop</code> as a target before the branch.)</p>
@@ -640,7 +640,7 @@
     <code>C:</code> signed branch offset (16 bits)</td>
   <td>Branch to the given destination if the given two registers' values
     compare as specified.
-    <p><b>Note:</b>
+    <p class="note"><strong>Note:</strong>
     The branch offset must not be <code>0</code>. (A spin
     loop may be legally constructed either by branching around a
     backward <code>goto</code> or by including a <code>nop</code> as
@@ -661,7 +661,7 @@
     <code>B:</code> signed branch offset (16 bits)</td>
   <td>Branch to the given destination if the given register's value compares
     with 0 as specified.
-    <p><b>Note:</b>
+    <p class="note"><strong>Note:</strong>
     The branch offset must not be <code>0</code>. (A spin
     loop may be legally constructed either by branching around a
     backward <code>goto</code> or by including a <code>nop</code> as
@@ -723,7 +723,7 @@
     <code>C:</code> instance field reference index (16 bits)</td>
   <td>Perform the identified object instance field operation with
     the identified field, loading or storing into the value register.
-    <p><b>Note:</b> These opcodes are reasonable candidates for static linking,
+    <p class="note"><strong>Note:</strong> These opcodes are reasonable candidates for static linking,
     altering the field argument to be a more direct offset.</p>
   </td>
 </tr>
@@ -750,7 +750,7 @@
     <code>B:</code> static field reference index (16 bits)</td>
   <td>Perform the identified object static field operation with the identified
     static field, loading or storing into the value register.
-    <p><b>Note:</b> These opcodes are reasonable candidates for static linking,
+    <p class="note"><strong>Note:</strong> These opcodes are reasonable candidates for static linking,
     altering the field argument to be a more direct offset.</p>
   </td>
 </tr>
@@ -788,7 +788,7 @@
     <code>interface</code> method, that is, on an object whose concrete
     class isn't known, using a <code>method_id</code> that refers to
     an <code>interface</code>.</p>
-    <p><b>Note:</b> These opcodes are reasonable candidates for static linking,
+    <p class="note"><strong>Note:</strong> These opcodes are reasonable candidates for static linking,
     altering the method argument to be a more direct offset
     (or pair thereof).</p>
   </td>
@@ -955,7 +955,7 @@
   <td>Perform the indicated binary op on the indicated register (first
     argument) and literal value (second argument), storing the result in
     the destination register.
-    <p><b>Note:</b>
+    <p class="note"><strong>Note:</strong>
     <code>rsub-int</code> does not have a suffix since this version is the
     main opcode of its family. Also, see below for details on its semantics.
     </p>
@@ -982,7 +982,7 @@
   <td>Perform the indicated binary op on the indicated register (first
     argument) and literal value (second argument), storing the result
     in the destination register.
-    <p><b>Note:</b> See below for details on the semantics of
+    <p class="note"><strong>Note:</strong> See below for details on the semantics of
     <code>rsub-int</code>.</p>
   </td>
 </tr>
@@ -1031,7 +1031,7 @@
 </tbody>
 </table>
 
-<p><b>Note:</b> The total number of code units for an instance of this
+<p class="note"><strong>Note:</strong> The total number of code units for an instance of this
 table is <code>(size * 2) + 4</code>.</p>
 
 <h2 id="sparse-switch">sparse-switch-payload format</h2>
@@ -1071,7 +1071,7 @@
 </tbody>
 </table>
 
-<p><b>Note:</b> The total number of code units for an instance of this
+<p class="note"><strong>Note:</strong> The total number of code units for an instance of this
 table is <code>(size * 4) + 2</code>.</p>
 
 <h2 id="fill-array">fill-array-data-payload format</h2>
@@ -1108,13 +1108,13 @@
 </tbody>
 </table>
 
-<p><b>Note:</b> The total number of code units for an instance of this
+<p class="note"><strong>Note:</strong> The total number of code units for an instance of this
 table is <code>(size * element_width + 1) / 2 + 4</code>.</p>
 
 
 <h2 id="math">Mathematical operation details</h2>
 
-<p><b>Note:</b> Floating point operations must follow IEEE 754 rules, using
+<p class="note"><strong>Note:</strong> Floating point operations must follow IEEE 754 rules, using
 round-to-nearest and gradual underflow, except where stated otherwise.</p>
 
 <table class="math">
diff --git a/src/devices/tech/dalvik/dex-format.jd b/src/devices/tech/dalvik/dex-format.jd
index bd167fb..5315db1 100644
--- a/src/devices/tech/dalvik/dex-format.jd
+++ b/src/devices/tech/dalvik/dex-format.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -275,7 +275,7 @@
                         = "dex\n035\0"
 </pre>
 
-<p><b>Note:</b> At least a couple earlier versions of the format have
+<p class="note"><strong>Note:</strong> At least a couple earlier versions of the format have
 been used in widely-available public software releases. For example,
 version <code>009</code> was used for the M3 releases of the
 Android platform (November&ndash;December 2007),
@@ -306,10 +306,10 @@
 <p>The constant <code>NO_INDEX</code> is used to indicate that
 an index value is absent.</p>
 
-<p><b>Note:</b> This value isn't defined to be
+<p class="note"><strong>Note:</strong> This value isn't defined to be
 <code>0</code>, because that is in fact typically a valid index.</p>
 
-<p><b>Also Note:</b> The chosen value for <code>NO_INDEX</code> is
+<p>The chosen value for <code>NO_INDEX</code> is
 representable as a single byte in the <code>uleb128p1</code> encoding.</p>
 
 <pre>
@@ -381,8 +381,8 @@
   <td>&nbsp;</td>
   <td>&nbsp;</td>
   <td><code>synchronized</code>: associated lock automatically acquired
-    around call to this method. <b>Note:</b> This is only valid to set when
-    <code>ACC_NATIVE</code> is also set.</td>
+    around call to this method. <p class="note"><strong>Note:</strong> This is only valid to set when
+    <code>ACC_NATIVE</code> is also set. </p></td>
 </tr>
 <tr>
   <td>ACC_VOLATILE</td>
@@ -482,8 +482,8 @@
   <td>0x20000</td>
   <td>&nbsp;</td>
   <td>&nbsp;</td>
-  <td>declared <code>synchronized</code>. <b>Note:</b> This has no effect on
-    execution (other than in reflection of this flag, per se).
+  <td>declared <code>synchronized</code>. <p class="note"><strong>Note:</strong> This has no effect on
+    execution (other than in reflection of this flag, per se).</p>
   </td>
 </tr>
 </tbody>
@@ -1567,7 +1567,7 @@
     followed by a byte of value <code>0</code>. See
     "MUTF-8 (Modified UTF-8) Encoding" above for details and
     discussion about the data format.
-    <p><b>Note:</b> It is acceptable to have a string which includes
+    <p class="note"><strong>Note:</strong> It is acceptable to have a string which includes
     (the encoded form of) UTF-16 surrogate code units (that is,
     <code>U+d800</code> &hellip; <code>U+dfff</code>)
     either in isolation or out-of-order with respect to the usual
@@ -1897,7 +1897,7 @@
 </tbody>
 </table>
 
-<p><b>Note:</b> All elements' <code>field_id</code>s and
+<p class="note"><strong>Note:</strong> All elements' <code>field_id</code>s and
 <code>method_id</code>s must refer to the same defining class.</p>
 
 <h3 id="encoded-field-format">encoded_field format</h3>
@@ -2381,7 +2381,7 @@
     to indicate that that value is unknown. (If <code>sig_idx</code> is
     <code>-1</code>, though, the same data could be represented more
     efficiently using the opcode <code>DBG_START_LOCAL</code>.)
-    <p><b>Note:</b> See the discussion under
+    <p class="note"><strong>Note:</strong> See the discussion under
     "<code>dalvik.annotation.Signature</code>" below for caveats about
     handling signatures.</p>
   </td>
@@ -2538,7 +2538,7 @@
 </tbody>
 </table>
 
-<p><b>Note:</b> All elements' <code>field_id</code>s and
+<p class="note"><strong>Note:</strong> All elements' <code>field_id</code>s and
 <code>method_id</code>s must refer to the same defining class.</p>
 
 <h3 id="field-annotation">field_annotation format</h3>
diff --git a/src/devices/tech/index.jd b/src/devices/tech/index.jd
index 62a1f59..10c42ab 100644
--- a/src/devices/tech/index.jd
+++ b/src/devices/tech/index.jd
@@ -30,14 +30,6 @@
 are looking to modify, contribute to, or port the Android software. This is
 "under the hood" information intended for engineers.</p>
 
-<h2 id="accessory-protocol-information">Accessories</h2>
-<p>Android devices can connect to hardware accessories, such as audio docks,
-keyboards and custom hardware, through USB or Bluetooth. This section
-describes the Android Open Accessory protocol (AOAP) for accessory hardware
-builders.</p>
-<p><a href="{@docRoot}accessories/index.html">&raquo; Accessory Protocol
-Information</a></p>
-
 <h2 id="art-technical-information">ART</h2>
 <p>The Android runtime (ART) is the heart of Android. It's a fast, ahead-of-time
 compiled runtime with modern garbage collection designed to scale.
@@ -61,6 +53,13 @@
 <p><a href="{@docRoot}devices/tech/debug/index.html">&raquo; Debugging
 Information</a></p>
 
+<h2 id="admin-information">Device Administration</h2>
+<p>Since Android 5.0, the platform supports use cases in a corporate
+environment under the auspices of each company’s information technology (IT)
+department.</p>
+<p><a href="{@docRoot}devices/tech/admin/index.html">&raquo; Device
+administration information</a></p>
+
 <h2 id="HAL-technical-information">HAL File Reference</h2>
 <p>Android's Hardware Abstraction Layer (HAL) provides the interface between
 software APIs and hardware drivers. This section contains the commented code
@@ -109,4 +108,4 @@
 slot into environments with existing build, test, and reporting
 infrastructures.</p>
 <p><a href="{@docRoot}devices/tech/test_infra/tradefed/index.html">
-&raquo; Trade Federation Testing Infrastructure Overview</a></p>
\ No newline at end of file
+&raquo; Trade Federation Testing Infrastructure Overview</a></p>
diff --git a/src/devices/tech/kernel.jd b/src/devices/tech/kernel.jd
index 637c5c4..e3f89bb 100644
--- a/src/devices/tech/kernel.jd
+++ b/src/devices/tech/kernel.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -16,7 +16,18 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<p>The kernel configuration settings in this document are meant to be used as a base for an Android kernel configuration. All devices should have the options in android-base configuration enabled. While not mandatory, the options in android-recommended configuration enable advanced Android 
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
+
+<p>The kernel configuration settings in this document are meant to be used as a
+base for an Android kernel configuration. All devices should have the options
+in android-base configuration enabled. While not mandatory, the options in
+android-recommended configuration enable advanced Android 
 features.</p>
 
 <p>
diff --git a/src/devices/tech/power/index.jd b/src/devices/tech/power/index.jd
index c3a6a9a..c64676f 100644
--- a/src/devices/tech/power/index.jd
+++ b/src/devices/tech/power/index.jd
@@ -91,8 +91,7 @@
 nominal voltage using an external power monitor, such as a bench power supply or specialized
 battery-monitoring tools (such as Monsoon Solution Inc. Power Monitor and Power Tool software).</p>
 
-<p class="note">
-<strong>Note:</strong> Manufacturers often supply information about the current consumed by an
+<p class="note"><strong>Note:</strong> Manufacturers often supply information about the current consumed by an
 individual component. Use this information if it accurately represents the current drawn from the
 device battery in practice. However, validate manufacturer-provided values before
 using those values in your device power profile.</p>
diff --git a/src/devices/tech/resources.jd b/src/devices/tech/resources.jd
new file mode 100644
index 0000000..dade1a7
--- /dev/null
+++ b/src/devices/tech/resources.jd
@@ -0,0 +1,20 @@
+page.title=System Resources
+@jd:body
+
+<!--
+    Copyright 2015 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> The following sections contain information, documentation, tips and tricks about Android system resources.</p>
diff --git a/src/devices/tech/security/images/android_software_stack.png b/src/devices/tech/security/images/android_software_stack.png
new file mode 100644
index 0000000..170ea33
--- /dev/null
+++ b/src/devices/tech/security/images/android_software_stack.png
Binary files differ
diff --git a/src/devices/tech/security/images/device_states.png b/src/devices/tech/security/images/device_states.png
deleted file mode 100644
index 319c345..0000000
--- a/src/devices/tech/security/images/device_states.png
+++ /dev/null
Binary files differ
diff --git a/src/devices/tech/security/images/dm-verity_mgmt.png b/src/devices/tech/security/images/dm-verity_mgmt.png
index f67b93f..2c2854e 100644
--- a/src/devices/tech/security/images/dm-verity_mgmt.png
+++ b/src/devices/tech/security/images/dm-verity_mgmt.png
Binary files differ
diff --git a/src/devices/tech/security/images/permissions_check.png b/src/devices/tech/security/images/permissions_check.png
new file mode 100644
index 0000000..0dc2e02
--- /dev/null
+++ b/src/devices/tech/security/images/permissions_check.png
Binary files differ
diff --git a/src/devices/tech/security/images/verified_boot.png b/src/devices/tech/security/images/verified_boot.png
index 592aee8..b1c5cb6 100644
--- a/src/devices/tech/security/images/verified_boot.png
+++ b/src/devices/tech/security/images/verified_boot.png
Binary files differ
diff --git a/src/devices/tech/security/index.jd b/src/devices/tech/security/index.jd
index 1c67377..cb5c881 100644
--- a/src/devices/tech/security/index.jd
+++ b/src/devices/tech/security/index.jd
@@ -64,7 +64,7 @@
   the components below are properly secured. With the exception of a small amount
   of Android OS code running as root, all code above the Linux Kernel is
   restricted by the Application Sandbox.</p>
-<p><img alt="Figure 1: Android software stack" src="images/image00.png" /></p>
+<p><img alt="Figure 1: Android software stack" src="images/android_software_stack.png" /></p>
 <p><em>Figure 1: Android software stack.</em></p>
 <p>The main Android platform building blocks are:</p>
 <ul>
diff --git a/src/devices/tech/security/overview/acknowledgements.jd b/src/devices/tech/security/overview/acknowledgements.jd
index 19e79ec..35e8cbc 100644
--- a/src/devices/tech/security/overview/acknowledgements.jd
+++ b/src/devices/tech/security/overview/acknowledgements.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2014 The Android Open Source Project
+    Copyright 2015 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.
@@ -16,6 +16,14 @@
     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>The Android Security Team would like to thank the following people and
 parties for helping to improve Android security. They have done this either by
 finding and responsibly reporting security vulnerabilities to <a
diff --git a/src/devices/tech/security/overview/app-security.jd b/src/devices/tech/security/overview/app-security.jd
index 3f2811c..f25f067 100644
--- a/src/devices/tech/security/overview/app-security.jd
+++ b/src/devices/tech/security/overview/app-security.jd
@@ -239,7 +239,7 @@
   choose to share this information can use Android OS permission checks to
   protect the data from third-party applications.</p>
 <img alt="Access to sensitive user data available only through protected
-APIs" src="../images/image03.png" id="figure2" />
+APIs" src="../images/permissions_check.png" id="figure2" />
 <p class="img-caption">
   <strong>Figure 2.</strong> Access to sensitive user data is available only through protected APIs
 </p>
@@ -339,7 +339,7 @@
   </li>
 </ul>
 <p><img alt="Architecture of Digital Rights Management on Android
-platform" src="../images/image02.png" id="figure3" /></p>
+platform" src="../../../images/ape_fwk_drm_2.png" id="figure3" /></p>
 <p class="img-caption">
   <strong>Figure 3.</strong> Architecture of Digital Rights Management on Android platform
 </p>
diff --git a/src/devices/tech/security/overview/index.jd b/src/devices/tech/security/overview/index.jd
index e23d734..6b00c55 100644
--- a/src/devices/tech/security/overview/index.jd
+++ b/src/devices/tech/security/overview/index.jd
@@ -39,11 +39,11 @@
     and security resources, with appropriate security controls integrated into the
     architecture of the system.</li>
   <li><strong>Penetration Testing and Code Review</strong>: During the development of the
-    platform, Android-created and open-source components are subject to vigorous
+    platform, Android-created and open source components are subject to vigorous
     security reviews. These reviews are performed by the Android Security Team,
     Google’s Information Security Engineering team, and independent security
     consultants. The goal of these reviews is to identify weaknesses and possible
-    vulnerabilities well before the platform is open-sourced, and to simulate the
+    vulnerabilities well before the platform is open sourced, and to simulate the
     types of analysis that will be performed by external security experts upon
     release.</li>
   <li><strong>Open Source and Community Review</strong>: The Android Open Source Project enables
diff --git a/src/devices/tech/security/verifiedboot/dm-verity.jd b/src/devices/tech/security/verifiedboot/dm-verity.jd
index f86c1b2..0b03dda 100644
--- a/src/devices/tech/security/verifiedboot/dm-verity.jd
+++ b/src/devices/tech/security/verifiedboot/dm-verity.jd
@@ -189,6 +189,9 @@
 
 <p>And this table describes those metadata fields.</p>
 
+<p class="table-caption" id="table1">
+  <strong>Table 1.</strong> Verity metadata fields</p>
+
 <table>
 <tr>
 <th>Field</th>
@@ -233,3 +236,11 @@
 <td>0</td>
 </tr>
 </table>
+
+<h3 id="optimize">Optimizing dm-verity</h3>
+
+<p>To get the best performance out of dm-verity, you should:</p>
+  <ul>
+    <li>In the kernel, turn on NEON SHA-2 for ARMv7 and the SHA-2 extensions for ARMv8.
+    <li>Experiment with different read-ahead and prefetch_cluster settings to find the best configuration for your device.
+  </ul>
diff --git a/src/devices/tech/security/verifiedboot/verified-boot.jd b/src/devices/tech/security/verifiedboot/verified-boot.jd
index c96d930..19a95a4 100644
--- a/src/devices/tech/security/verifiedboot/verified-boot.jd
+++ b/src/devices/tech/security/verifiedboot/verified-boot.jd
@@ -41,6 +41,9 @@
 
 <h2 id=glossary>Glossary</h2>
 
+<p class="table-caption" id="table1">
+  <strong>Table 1.</strong> Glossary of terms related to verified boot</p>
+
 <table>
  <tr>
     <td>
@@ -65,7 +68,7 @@
 </td>
     <td>
 <p>The device state indicates how freely software can be flashed to the device.
-Device states are LOCKED, UNLOCKED, or VERIFIED.</p>
+Device states are LOCKED and UNLOCKED.</p>
 </td>
  </tr>
  <tr>
@@ -94,38 +97,39 @@
 must be used to verify the boot image.</p>
 </td>
  </tr>
- <tr>
-    <td>
-<p>User provided keystore</p>
-</td>
-    <td>
-<p>The user keystore is a keystore flashed to the device via <code>fastboot 
-flash keystore &lt;path&gt;</code>.</p>
-</td>
- </tr>
 </table>
 
 <h2 id=overview>Overview</h2>
 
 <p>In addition to device state - which already exists in devices and controls
 whether the bootloader allows new software to be flashed - we introduce the
-concept of boot state that indicates the state of device integrity. We also
-add a third device state, which allows developers for example, to flash the
-software more frequently without a data wipe while still benefiting from
-verification.</p>
+concept of boot state that indicates the state of device integrity.</p>
+
+<h3 id=classes>Classes</h3>
+
+<p>We define two implementation classes for verified boot depending on how
+fully the device implements this specification, as follows:</p>
+
+<p><strong>Class A</strong>  implements verified boot with full chain of trust
+up to verified partitions. This implementation must support the LOCKED device
+state, and GREEN and RED boot states.</p>
+
+<p><strong>Class B</strong> implements Class A and additionally supports the
+UNLOCKED device state and the ORANGE boot state.</p>
 
 <h3 id=verification_keys>Verification keys</h3>
 
 <p>Bootloader integrity must be verified using a hardware root of trust. For
-verifying boot and recovery images, the bootloader must have a fixed OEM key
-available to it. It must always attempt to verify the boot image using the OEM
-key and only try other possible keys if this verification fails.</p>
+verifying boot and recovery partitions, the bootloader must have a fixed OEM key
+available to it. It must always attempt to verify the boot partition using the OEM
+key first and try other possible keys only if this verification fails.</p>
 
-<p>It must be possible for the user to flash alternative image verification keys
-to the device, and the bootloader must try verification using these keys if
-verification using the OEM key fails. However, using an image signed with the
-user-provided keystore must result in a notification to be shown, as described
-below.</p>
+<p>In Class B implementations, it must be possible for the user to flash
+software signed with other keys when the device is UNLOCKED. If the device is
+then LOCKED and verification using the OEM key fails, the bootloader must try
+verification using the certificate embedded in the partition signature.
+However, using a partition signed with anything other than the OEM key must
+result in a notification or a warning, as described below.</p>
 
 <h3 id=boot_state>Boot state</h3>
 
@@ -133,103 +137,62 @@
 attempt:</p>
 
 <ul>
-  <li> GREEN, indicating a full chain of trust extending from the bootloader to the
-system partition, including the bootloader, boot partition, and system
-partition.
+  <li>GREEN, indicating a full chain of trust extending from the bootloader to
+verified partitions, including the bootloader, boot partition, and all verified
+partitions.
+
+  <li>YELLOW, indicating the boot partition has been verified using the
+embedded certificate, and the signature is valid. The bootloader is required to
+display a notification and the fingerprint of the public key during boot.
+
+  <li>ORANGE, indicating a device may be freely modified. Device integrity is
+left to the user to verify out-of-band. The bootloader must display a warning
+to the user before allowing the boot process to continue.
+
+  <li>RED, indicating the device has failed verification. The bootloader must
+display a warning to the user before allowing the boot process to continue.
 </ul>
 
-<ul>
-  <li> YELLOW, indicating a chain of trust starting from a user-provided keystore
-and extending up. To enable users to acquire trust in their keystore,
-bootloaders are required to display a partial hash of the verifying keystore
-during boot.
-</ul>
+<p>The recovery partition must also be verified in the exact same way.</p>
 
-<ul>
-  <li> ORANGE, indicating a device may be freely modified. Device integrity is
-left to the user to verify out-of-band.
-</ul>
+<h3 id=device_state>Device state</h3>
 
-<ul>
-  <li> RED, indicating the device has failed verification. This must display a
-warning to the user before allowing the boot process to continue.
-</ul>
+<p>The device is required to be in one of two states at all times:</p>
 
-<p>The recovery partition must also be verified and should be verified in the
-exact same way.</p>
+<ol>
+  <li>LOCKED, indicating the device cannot be flashed. A LOCKED device must
+boot into the GREEN, YELLOW, or RED states during any attempted boot.
+
+  <li>UNLOCKED, indicating the device may be flashed freely and is not intended
+to be verified. An UNLOCKED device must always boot to the ORANGE boot state.
+</ol>
 
 <img src="../images/verified_boot.png" alt="Verified boot flow" id="figure1" />
 <p class="img-caption"><strong>Figure 1.</strong> Verified boot flow</p>
 
-<h3 id=device_state>Device state</h3>
-
-<p>The device is required to be in one of three states at all times:</p>
-
-<ol>
-  <li>LOCKED, indicating the device cannot currently be flashed. In the image
-above, a LOCKED device must boot into the GREEN state, YELLOW state, or RED
-state during any attempted boot. It must not be possible to alter the user
-keystore in the LOCKED state.
-
-  <li>VERIFIED, indicating someone in physical control of the device may perform
-limited actions intended to change the state of the device but may not break
-its current chain of trust. In the image above, a VERIFIED device must boot
-into the GREEN state, YELLOW state, or RED state during each attempted boot. It
-must not be possible to alter the user keystore in the VERIFIED state. It must
-be possible to:
-   <ol>
-    <li> Flash the following partitions:
-    <ol>
-      <li> bootloader
-      <li> boot partition
-      <li> system partition
-      <li> vendor partition
-      <li> recovery partition
-    </ol>
-    <li> Erase the following partitions:
-    <ol>
-      <li> userdata
-      <li> cache
-    </ol>
-   </ol>
-
-<p>Boot and recovery image signatures may be verified during the flashing process,
-and the bootloader may reject images that do not validate against the OEM key
-or the user-provided keystore at this point. However, signatures must also be
-verified again at every boot.
-
-  <li>UNLOCKED, indicating the device may be flashed freely and is not intended
-to be verified.
-</ol>
-
 <h2 id=detailed_design>Detailed design</h2>
 
 <p>Achieving full chain of trust requires support from both the bootloader and the
-software on the boot partition, specifically <code>init</code>, which is responsible for
-mounting additional partitions. Verification metadata must also be appended to the
-system partition and any additional partitions whose integrity should be
-verified.</p>
+software on the boot partition, which is responsible for mounting further
+partitions. Verification metadata must also be appended to the system partition
+and any additional partitions whose integrity should be verified.</p>
 
 <h3 id=bootloader_requirements>Bootloader requirements</h3>
 
-<p>The bootloader is the guardian of the device state, manages the user-provided
-keystore, and is responsible for initializing the TEE and binding its root of
-trust.</p>
+<p>The bootloader is the guardian of the device state and is responsible for
+initializing the TEE and binding its root of trust.</p>
 
 <p>Most importantly, the bootloader must verify the integrity of the boot and/or
 recovery partition before moving execution to the kernel and display the
-warnings or notifications in the section <a href="#boot_state">Boot state</a>.</p>
+warnings specified in the section <a href="#boot_state">Boot state</a>.</p>
 
-<h4 id=changing_device_state><strong>Changing device state</strong></h4>
+<h4 id=changing_device_state>Changing device state</h4>
 
 <p>State changes are performed using the <code>fastboot flashing [unlock |
-verified | lock]</code> command. And to protect user data, <strong>all</strong>
+lock]</code> command. And to protect user data, <strong>all</strong>
 state transitions require a data wipe. Note the user must be asked for
 confirmation before data is deleted.</p>
 
-<img src="../images/device_states.png" alt="Changing device states" id="figure2" />
-<p class="img-caption"><strong>Figure 2.</strong> Changing device states</p>
-
 <ol>
   <li>The UNLOCKED to LOCKED transition is anticipated when a user buys a used
 development device. As a result of locking the device, the user should have
@@ -237,20 +200,13 @@
 
   <li>The LOCKED to UNLOCKED transition is expected in the case where a developer
 wishes to disable verification on the device.
-
-  <li>The LOCKED to VERIFIED transition is expected in the case where a developer
-wishes to do development on the device and doesn’t want to wipe data frequently.
-
-  <li>The VERIFIED to LOCKED transition is idempotent with the above.
-
-  <li>The UNLOCKED to VERIFIED transition is anticipated when a user wishes to put a
-development device in a more secure state but may not want to prevent
-themselves from flashing new system images.
-
-  <li> The VERIFIED to UNLOCKED transition is idempotent with the above.
 </ol>
 
 <p>Requirements for <code>fastboot</code> commands that alter device state are listed in the table below:</p>
+
+<p class="table-caption" id="table2">
+  <strong>Table 2.</strong> <code>fastboot</code> commands</p>
+
 <table>
  <tr>
     <td>
@@ -266,9 +222,8 @@
 flashing lock</code></td>
     <td>
 <ul>
-  <li>Wipe data after asking the user for confirmation     
+  <li>Wipe data after asking the user for confirmation
   <li>Clear a write-protected bit indicating the device is unlocked
-  <li>Clear a write-protected bit indicating the device is verified
 </ul>
 </td>
  </tr>
@@ -278,21 +233,8 @@
 flashing unlock</code></td>
     <td>
 <ul>
-  <li>Wipe data after asking the user for confirmation     
+  <li>Wipe data after asking the user for confirmation
   <li>Set a write-protected bit indicating the device is unlocked
-  <li>Clear a write-protected bit indicating the device is verified
-</ul>
-</td>
- </tr>
- <tr>
-    <td>
-<code>
-flashing verified</code></td>
-    <td>
-<ul>
-  <li>Wipe data after asking the user for confirmation     
-  <li>Clear a write-protected bit indicating the device is unlocked
-  <li>Set a write-protected bit indicating the device is verified
 </ul>
 </td>
  </tr>
@@ -300,6 +242,10 @@
 
 <p>When altering partition contents, the bootloader must check the bits set by
 the above commands as described in the following table:</p>
+
+<p class="table-caption" id="table3">
+  <strong>Table 3.</strong> <code>fastboot</code> command requirements</p>
+
 <table>
  <tr>
     <td>
@@ -314,128 +260,110 @@
 <code>
 flash &lt;partition&gt;</code></td>
     <td>
-<ul>
-  <li>If the bit set by <code>flashing unlock</code> is set, flash the partition as normal    
-  <li>If this bit is not set, check the bit set by <code>flashing verified</code>
-    <ul>
-      <li>If this bit is not set, exit with an error
-      <li>If this bit is set and &lt;partition&gt; is on the list provided in
-          the section <a href="#device_state">Device state</a>, flash the partition as normal.
-   </ul>
-</ul>
+    <p>If the bit set by <code>flashing unlock</code> is set, flash the
+      partition. Otherwise, do not allow flashing.<p>
     </td>
  </tr>
 </table>
 
-<p>The same checks should be performed for any <code>fastboot</code> command that can be used to change the contents of partitions.</p>
+<p>The same checks should be performed for any <code>fastboot</code> command
+that can be used to change the contents of partitions.</p>
 
-<h4 id=managing_user_provided_keystore><strong>Managing user-provided keystore</strong></h4>
+<p class="note"><strong>Note</strong>: Class B implementations must support
+changing device state.</p>
 
-<p>Users can flash their own verification keys to the device, which must be
-used to verify the integrity of boot and recovery images if verification
-against the OEM key fails. This allows a developer to change the system
-software frequently, for example,  while still keeping verified boot enabled.</p>
+<h4 id=binding_tee_root_of_trust>Binding TEE root of trust</h4>
 
-<p>The bootloader is responsible for maintaining the integrity of the user
-keystore. It must not be possible to change the contents of the keystore unless
-the device is UNLOCKED. When the user flashes a new keystore to the device, the
-bootloader must sign it using the TEE and store the signed keystore. Before
-using keys from the keystore, the bootloader must use the TEE to verify the
-signature.</p>
-
-<p>Requirements for <code>fastboot</code> commands used to manage the user-provided keystore are listed in the table
-below:</p>
-<table>
- <tr>
-    <td>
-<p><strong><code>fastboot</code> command</strong></p>
-</td>
-    <td>
-<p>Requirements</p>
-</td>
- </tr>
- <tr>
-    <td>
-<code>
-flash keystore &lt;filename&gt;</code></td>
-    <td>
-<ul>
-  <li>Check the bit set by <code>flashing unlock</code>; if not set, exit with an error 
-  <li>Validate the given keystore against the format provided in section <a href="#keystore_format">Keystore format</a>
-  <li>Pass the keystore to the TEE for signing
-  <li>Write the signed keystore to the write-protected user keystore storage
-      area (location to be determined by the OEM)
-</ul>
-</td>
- </tr>
- <tr>
-    <td>
-<code>
-erase keystore</code></td>
-    <td>
-<ul>
-  <li>Check the bit set by <code>flashing unlock</code>; if not set, exit with an error
-  <li>Erase the keystore stored in the write-protected user keystore storage area
-</ul>
-    </td>
- </tr>
-</table>
-
-<h4 id=binding_tee_root_of_trust><strong>Binding TEE root of trust</strong></h4>
-
-<p>After the bootloader has initialized the TEE and performed boot image
-verification steps, it must pass the following information to the TEE Keymaster
-as the root of trust:</p>
+<p>If TEE is available, the bootloader should pass the following information to
+the TEE to bind the Keymaster root of trust, after partition verification and
+TEE initialization:</p>
 
 <ol>
-  <li>The public key that was used to sign the boot image
-  <li>The current device state (LOCKED, VERIFIED, or UNLOCKED)
+  <li>the public key that was used to sign the boot partition
+  <li>the current device state (LOCKED or UNLOCKED)
 </ol>
 
-<p>This changes the keys derived by the TEE. For disk encryption, for example,
-this prevents user data from being decrypted when the device is booted using a
-potentially untrusted image signed with a different key.</p>
+<p>This changes the keys derived by the TEE. Taking disk encryption as an example,
+this prevents user data from being decrypted when the device state changes.</p>
 
 <p class="note"><strong>Note:</strong> This means if the system software or the
 device state changes, encrypted user data will no longer be accessible as the
 TEE will attempt to use a different key to decrypt the data.</p>
 
-<h4 id=booting_into_recovery><strong>Booting into recovery</strong></h4>
+<h4 id=booting_into_recovery>Booting into recovery</h4>
 
-<p>The recovery image should be verified in exactly the same manner as the boot
-image.</p>
+<p>The recovery partition should be verified in exactly the same manner as the
+boot partition.</p>
+
+<h4 id=comm_boot_state>Communicating boot state</h4>
+
+<p>System software needs to be able to determine the verification status of
+previous stages. The bootloader must specify the current boot state as a
+parameter on the kernel command line (or through the device tree under
+<code>firmware/android/verifiedbootstate</code>) as described in the table
+below:</p>
+
+<p class="table-caption" id="table4">
+  <strong>Table 4.</strong> Kernel command line parameters</p>
+
+<table>
+  <tr>
+    <th>Kernel command line parameter</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td><code>androidboot.verifiedbootstate=green</code></td>
+    <td>Device has booted into GREEN boot state.<br>
+        Boot partition has been verified using the OEM key and it’s valid.</td>
+  </tr>
+  <tr>
+    <td><code>androidboot.verifiedbootstate=yellow</code></td>
+    <td>Device has booted into YELLOW boot state.<br>
+	Boot partition has been verified using the certificate embedded into
+        the signature and it’s valid.</td>
+  </tr>
+  <tr>
+    <td><code>androidboot.verifiedbootstate=orange</code></td>
+    <td>Device has booted into ORANGE boot state.<br>
+        The device is unlocked and no verification has been performed.</td>
+  </tr>
+  <tr>
+    <td><code>androidboot.verifiedbootstate=red</code></td>
+    <td>Device has booted into RED boot state.<br>
+        The device has failed verification.</td>
+  </tr>
+</table>
 
 <h3 id=boot_partition>Boot partition</h3>
 
-<p>Once execution has moved to the boot and/or recovery image, <code>init</code> is responsible
-for setting up verification for further partitions. Due to its large size, the
-system partition cannot be verified similarly to previous parts but must be
-verified in real time as it’s being accessed by using the dm-verity kernel
-driver.</p>
+<p>Once execution has moved to the boot partition, the software there is responsible
+for setting up verification of further partitions. Due to its large size, the
+system partition typically cannot be verified similarly to previous parts but must be
+verified as it’s being accessed instead using the dm-verity kernel driver or a
+similar solution.</p>
 
-<p>When <code>fs_mgr</code> flags in the device’s <code>fstab</code> indicate a partition should be
-verified, <code>init</code> will verify the signed verity metadata appended to the partition
-before mounting it and set up the dm-verity device for the partition.</p>
+<p>If dm-verity is used to verify large partitions, the signature of the verity
+metadata appended to each verified partition must be verified before the
+partition is mounted and dm-verity is set up for it.</p>
 
-<h4 id=managing_dm-verity><strong>Managing dm-verity</strong></h4>
+<h4 id=managing_dm-verity>Managing dm-verity</h4>
 
-<p>By default, dm-verity operates in verifying mode and verifies each block read
-from the device against a hash tree passed to it by <code>init</code> during set up. If it
+<p>By default, dm-verity operates in enforcing mode and verifies each block read
+from the partition against a hash tree passed to it during setup. If it
 comes across a block that fails to verify, it returns an I/O error and makes
 the block with unexpected contents inaccessible to user space. Depending on
 which block is corrupted, this may cause some of the programs that reside on
 the partition to malfunction.</p>
 
-<p>Using a persistent flag, dm-verity can also be configured to function in
-logging mode. This flag is read by <code>init</code> when setting up dm-verity. And if the
-mode flag is set to logging or verity metadata cannot be verified, a warning
-must be displayed to the user, similar to the warning the bootloader shows
-before booting into RED state.</p>
+<p>Using an optional verity table parameter, dm-verity can be configured to
+function in logging mode. If dm-verity is not started in enforcing mode for any
+reason, or verity metadata cannot be verified, a warning must be displayed to
+the user, similar to the one shown before booting into the RED state.</p>
 
-<img src="../images/dm-verity_mgmt.png" alt="dm-verity management" id="figure3" />
-<p class="img-caption"><strong>Figure 3.</strong> dm-verity management</p>
+<img src="../images/dm-verity_mgmt.png" alt="dm-verity management" id="figure2" />
+<p class="img-caption"><strong>Figure 2.</strong> dm-verity management</p>
 
-<h4 id=recovering_from_dm-verity_errors><strong>Recovering from dm-verity errors</strong></h4>
+<h4 id=recovering_from_dm-verity_errors>Recovering from dm-verity errors</h4>
 
 <p>Since the system partition is by far larger than the boot partition, the
 probability of verification errors is also higher. Specifically, there is a
@@ -445,31 +373,32 @@
 
 <p>It’s generally not possible to distinguish disk corruption from malicious
 changes, so any change to the system partition must result in the user being
-notified, and no unverified data must leak to user space until a warning has
+notified; and no unverified data must leak to user space until a warning has
 been shown. However, we must also assume most verification failures are
 not the result of malicious behavior; so the user must also have an option to
 continue using the device without verification.</p>
 
-<p>If dm-verity is in verifying mode and a block of a partition fails to verify,
-it will send a <code>uevent</code> to notify user space of the error. This event must be
-handled by software in the boot partition as potentially any program residing
-on the verified partition may not function anymore. When the event is received,
-the persistent dm-verity state must be updated to set the mode flag to logging
-mode, and the device must be rebooted. When the device restarts,
-<code>init</code> will warn the user of changes to the partition before mounting it.</p>
+<p>When a dm-verity error is detected, the device must be rebooted and
+dm-verity must be started in logging mode during all subsequent restarts until
+any of the verified partitions is reflashed or changed by an OTA update. This
+means dm-verity state should be stored in a persistent flag. When a verified
+partition has been changed, the flag must be cleared and dm-verity must again
+be started in enforcing mode. Anytime dm-verity is not started in enforcing
+mode, a warning must be shown to the user before any of the verified partitions
+are mounted.</p>
 
 <h3 id=verified_partition>Verified partition</h3>
 
 <p>In a verified device, the system partition must always be verified. But any
-other read-only partition can also be set to be verified, as well. Specifically,
-any read-only partition that contains executable code must be verified on a
-verified device. This include the vendor partition, if one exists, for example.</p>
+other read-only partition should also be set to be verified, as well. Any
+read-only partition that contains executable code must be verified on a
+verified device. This includes vendor and OEM partitions, if they exist, for example.</p>
 
 <p>In order for a partition to be verified, signed verity metadata must be
 appended to it. The metadata consists of a hash tree of the partition contents
 and a verity table containing signed parameters and the root of the hash tree.
-If this information is missing or invalid when <code>init</code> attempts to
-mount the device, the user must be warned.</p>
+If this information is missing or invalid when dm-verity is set up for the
+partition, the user must be warned.</p>
 
 <h2 id=implementation_details>Implementation details</h2>
 
@@ -481,7 +410,6 @@
 
 <h3 id=signature_format>Signature format</h3>
 
-
 <p>The signature on an Android verifiable boot image is an ASN.1 DER-encoded
 message, which can be parsed with a decoder similar to the one found at: <a
 href="https://android.googlesource.com/platform/bootable/recovery/+/f4a6ab27b335b69fbc419a9c1ef263004b561265/asn1_decoder.cpp">platform/bootable/recovery/asn1_decoder.cpp</a><br/>
@@ -508,9 +436,9 @@
 <p>The <code>Certificate</code> field is the full X.509 certificate containing
 the public key used for signing, as defined by <a
 href="http://tools.ietf.org/html/rfc5280#section-4.1.1.2">RFC5280</a> section
-4.1. The bootloader must ignore this field and must NOT use the key
-specified in the certificate to verify the signature. Signatures must always be
-verified against the OEM key or the user-provided keystore only.</p>
+4.1. When LOCKED, the bootloader must always use the OEM key for verification
+first, and only boot to YELLOW or RED states if the embedded certificate is
+used for verification instead.</p>
 
 <p>The remaining structure is similar to that defined by <a
 href="http://tools.ietf.org/html/rfc5280#section-4.1.1.2">RFC5280</a> sections
@@ -526,7 +454,8 @@
   <li>Generate the unsigned image.
   <li>0-pad the image to the next page size boundary (omit this step if already
 aligned).
-  <li>Populate the fields of the <code>AuthenticatedAttributes</code> section above based on the padded image and desired target partition.
+  <li>Populate the fields of the <code>AuthenticatedAttributes</code> section
+      above based on the padded image and desired target partition.
   <li>Append the <code>AuthenticatedAttributes</code> structure above to the image.
   <li>Sign the image.
 </ol>
@@ -537,55 +466,23 @@
 a header).
   <li>Read the signature located at the offset above.
   <li>Validate the contents of the <code>AuthenticatedAttributes</code> field.
-If these values do not validate, treat it as a signature validation error.
+      If these values do not validate, treat it as a signature validation error.
   <li>Verify the image and <code>AuthenticatedAttributes</code> sections.
 </ol>
 
-<h3 id=keystore_format>Keystore format</h3>
-
-<p>The Android verified boot keystore format is an ASN.1 DER-encoded document. Its
- specification follows:</p>
-
-<pre>
-AndroidVerifiedBootKeystore DEFINITIONS ::=
-     BEGIN
-          FormatVersion ::= INTEGER
-          KeyBag ::= SEQUENCE {
-               Key  ::= SEQUENCE {
-                    AlgorithmIdentifier  ::=  SEQUENCE {
-                         algorithm OBJECT IDENTIFIER,
-                         parameters ANY DEFINED BY algorithm
-                    OPTIONAL
-                    }
-                    KeyMaterial ::= RSAPublicKey
-               }
-          }
-          Signature ::= AndroidVerifiedBootSignature OPTIONAL
-     END
-</pre>
-
-<p>Where <code>RSAPublicKey</code>, <code>AlgorithmIdentifier</code>, and
-parameters are as specified in <a
-href="http://tools.ietf.org/html/rfc3279#section-2.3.1">RFC3279</a>. Other key
-types specified in RFC3279 section 2.3 may optionally be supported,
-in which case the appropriate type for <code>Key</code> must be used.</p>
-
-<h3 id=keystore_location>Keystore location</h3>
-
-<p>The location of the keystore is not specified here, but that location must be
-known to the bootloader and both readable and writable by it. Reading should
-happen as per the above; writing a new keystore should be accomplished through
-<code>fastboot flash keystore &lt;path&gt;</code>. Sufficient storage must be
-provided for at least one key, with storage for additional keys recommended.</p>
-
 <h3 id=user_experience>User experience</h3>
 
 <p>A user in the GREEN boot state should see no additional user interaction besides that
-required by normal device boot. In other boot states, the user should see a
+required by normal device boot. In other boot states, the user must see a
 warning for at least five seconds. Should the user interact with the device during
-this time, the warning should remain visible until the user agrees to continue.</p>
+this time, the warning must remain visible at least 30 seconds longer, or until
+the user dismisses the warning.</p>
 
 <p>Sample user interaction screens for other states are shown in the following table:</p>
+
+<p class="table-caption" id="table5">
+  <strong>Table 5.</strong> Sample user interaction screens</p>
+
 <table>
  <tr>
     <td>
@@ -601,11 +498,11 @@
 </td>
     <td>
 <img src="../images/boot_yellow1.png" alt="Yellow device state 1" id="figure4" />
-<p class="img-caption"><strong>Figure 4.</strong> Yellow state example 1 UI</p>
+<p class="img-caption"><strong>Figure 3.</strong> Yellow state example 1 UI</p>
 </td>
     <td>
 <img src="../images/boot_yellow2.png" alt="Yellow device state 2" id="figure5" />
-<p class="img-caption"><strong>Figure 5.</strong> Yellow state example 2 UI</p>
+<p class="img-caption"><strong>Figure 4.</strong> Yellow state example 2 UI</p>
 </td>
 
  </tr>
@@ -615,7 +512,7 @@
 </td>
     <td>
 <img src="../images/boot_orange.png" alt="Orange device state" id="figure6" />
-<p class="img-caption"><strong>Figure 6.</strong> Orange state example UI</p>
+<p class="img-caption"><strong>Figure 5.</strong> Orange state example UI</p>
 </td>
  </tr>
  <tr>
@@ -624,7 +521,7 @@
 </td>
     <td>
 <img src="../images/boot_red.png" alt="Red device state" id="figure7" />
-<p class="img-caption"><strong>Figure 7.</strong> Red state example UI</p>
+<p class="img-caption"><strong>Figure 6.</strong> Red state example UI</p>
 </td>
  </tr>
 </table>
diff --git a/src/devices/tech/test_infra/tradefed/full_example.jd b/src/devices/tech/test_infra/tradefed/full_example.jd
index 1be769f..34cd63a 100644
--- a/src/devices/tech/test_infra/tradefed/full_example.jd
+++ b/src/devices/tech/test_infra/tradefed/full_example.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -16,6 +16,13 @@
     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>This tutorial guides you through the construction of a "hello world" Trade Federation test
 configuration, and gives you a hands-on introduction to the Trade Federation framework.  Starting
@@ -336,10 +343,10 @@
 <p>This is accomplished via the <code>@Option</code> annotation. To participate, a Configuration object class
 would apply the <code>@Option</code> annotation to a member field, and provide it a unique name. This would
 allow that member field's value to be populated via a command line option, and would also
-automatically add that option to the configuration help system (Note: not all field types are
-supported: see the
+automatically add that option to the configuration help system.</p>
+<p class="note"><strong>Note:</strong> Not all field types are supported. See the
 <a href="/reference/com/android/tradefed/config/OptionSetter.html">OptionSetter javadoc</a> for a
-description of supported types).</p>
+description of supported types.</p>
 
 <p>Let's add an <code>@Option</code> to the HelloWorldTest:</p>
 <pre><code>@Option(name="my_option",
@@ -435,6 +442,5 @@
 <a href="https://android.googlesource.com/platform/tools/tradefederation/+/master"
 >Trade Federation source code</a> has a lot of useful information that isn't
 exposed in the documentation.  And if all else fails, try asking on the
-<a href="/source/community/index.html">android-platform</a> Google Group, with "Trade Federation"
-in the message subject.</p>
-
+<a href="{@docRoot}source/community.html">android-platform</a> Google Group, with "Trade Federation"
+in the message subject.</p>
\ No newline at end of file
diff --git a/src/devices/tech/test_infra/tradefed/fundamentals/index.jd b/src/devices/tech/test_infra/tradefed/fundamentals/index.jd
index 98ab260..68ff06d 100644
--- a/src/devices/tech/test_infra/tradefed/fundamentals/index.jd
+++ b/src/devices/tech/test_infra/tradefed/fundamentals/index.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -70,6 +70,6 @@
 <p>If you've gotten through everything here and still have unanswered questions, first try taking
 a look at the <a href="https://android.googlesource.com/platform/tools/tradefederation/+/master"
 >Trade Federation source code.</a>.  Beyond that, feel free to try asking on the
-<a href="/source/community/index.html">android-platform</a> Google Group.  For best results, make
+<a href="{@docRoot}source/community.html">android-platform</a> Google Group.  For best results, make
 sure to mention "Trade Federation" (or "tradefed", or "TF") in the message subject.</p>
 
diff --git a/src/devices/tech/test_infra/tradefed/fundamentals/options.jd b/src/devices/tech/test_infra/tradefed/fundamentals/options.jd
index 930be9e..568cd35 100644
--- a/src/devices/tech/test_infra/tradefed/fundamentals/options.jd
+++ b/src/devices/tech/test_infra/tradefed/fundamentals/options.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -16,6 +16,13 @@
     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>Option handling lies at the heart of Trade Federation's modular approach.  In particular, options
 are the mechanism by which the Developer, Integrator, and Test Runner can work together without
@@ -25,7 +32,7 @@
 the Test Runner.  This mechanism works for all Java intrinsic types, as well as for any
 <code>Map</code>s or <code>Collection</code>s of intrinsic types.</p>
 
-<p><em>Note:</em> the option-handling mechanism only works for classes implementing one of the
+<p class="note"><strong>Note:</strong> The option-handling mechanism only works for classes implementing one of the
 interfaces included in the <a href="lifecycle.html">Test Lifecycle</a>, and only when that class is
 <em>instantiated</em> by the lifecycle machinery.</p>
 
diff --git a/src/devices/tech/test_infra/tradefed/index.jd b/src/devices/tech/test_infra/tradefed/index.jd
index dabe07f..64939b2 100644
--- a/src/devices/tech/test_infra/tradefed/index.jd
+++ b/src/devices/tech/test_infra/tradefed/index.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -16,6 +16,14 @@
     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>Trade Federation (tradefed or TF for short) is a continuous test framework designed for running tests
 on Android devices. It's a Java application which runs on a host computer, and communicates to one or
 more Android devices using ddmlib (the library behind DDMS) over adb.</p>
diff --git a/src/images/android_framework_details.png b/src/images/android_framework_details.png
index 618f027..ed83453 100644
--- a/src/images/android_framework_details.png
+++ b/src/images/android_framework_details.png
Binary files differ
diff --git a/src/images/android_framework_small.png b/src/images/android_framework_small.png
index 475f58d..6030881 100644
--- a/src/images/android_framework_small.png
+++ b/src/images/android_framework_small.png
Binary files differ
diff --git a/src/images/cts-0.png b/src/images/cts-0.png
deleted file mode 100644
index cca38c5..0000000
--- a/src/images/cts-0.png
+++ /dev/null
Binary files differ
diff --git a/src/index.jd b/src/index.jd
index 0aa6826..7c3a2d3 100644
--- a/src/index.jd
+++ b/src/index.jd
@@ -25,12 +25,13 @@
   <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 mobile 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
-      create custom variants of the Android software stack, port devices and accessories to the Android platform,
-      and ensure your devices are compatible with the Android compatibility definition.
-      </p>
+<p>
+Android is an open source software stack for a wide range of mobile devices and
+a corresponding open source project led by Google. This site offers the
+information and source code you need to create custom variants of the Android
+stack, port devices and accessories to the Android platform, and ensure your
+devices meet compatibility requirements.
+</p>
 
   </div>
 
@@ -41,60 +42,58 @@
   <div class="landing-docs">
     <div class="col-8">
     <h3>What's New</h3>
-<a href="{@docRoot}devices/tech/debug/dumpsys.html">
-        <h4>Example Dumpsys Diagnostic Output</h4></a>
-        <p>In addition to the aforementioned <strong><a
-        href="{@docRoot}devices/input/diagnostics.html">Input
-        Diagnostics</a></strong>, you can now find Dumpsys examples of usage
-        data for <strong><a href="{@docRoot}devices/tech/ram/procstats.html">RAM
-        (procstats)</a></strong>, <strong><a
-        href="{@docRoot}devices/tech/netstats.html">network (netstats)</a></strong>,
-        and <strong><a
-        href="{@docRoot}devices/tech/power/batterystats.html">battery (batterystats)</a></strong>.</p>
+<a href="{@docRoot}devices/tech/admin/index.html">
+        <h4>Device Administration Introduction</h4></a>
+        <p>A new <strong><a
+        href="{@docRoot}devices/tech/admin/index.html">Device
+        Administration</a></strong> section summarizes use of Android in a corporate
+        environment, including <strong><a
+        href="{@docRoot}devices/tech/admin/implement.html">implementation</a></strong>, <strong><a 
+        href="{@docRoot}devices/tech/admin/provision.html">provisioning</a></strong>,
+        <strong><a
+        href="{@docRoot}devices/tech/admin/testing-setup.html">testing</a></strong>,
+        and more.</p>
 
-<a href="{@docRoot}devices/audio/latency_measurements.html">
-        <h4>Audio Latency Measurements</h4></a>
+<a href="{@docRoot}devices/audio/midi.html">
+        <h4>MIDI and Audio Latency for Developers</h4></a>
         <p>The Android audio team has published <strong><a
-        href="{@docRoot}devices/audio/latency_measurements.html">round-trip audio latency
-        measurements</a></strong> for select Nexus devices to help partners compare their
-        own devices and reduce latency further.</p>
+        href="{@docRoot}devices/audio/latency_app.html">advice to developers
+        for reducing latency</a></strong> and also instructions to partners on
+        implementing the new support for <strong><a
+        href="{@docRoot}devices/audio/midi.html">MIDI</a></strong> protocol now
+        available in AOSP.</p>
 
-<a href="{@docRoot}devices/tech/power/index.html">
-        <h4>Power Profile Details</h4></a>
+<a href="{@docRoot}compatibility/cts/development.html">
+        <h4>CTS Development Release Schedule</h4></a>
+        <p>Compatibility Test Suite (CTS) <strong><a
+        href="{@docRoot}compatibility/cts/development.html#release-schedule">release
+        schedule and branch information</a></strong> has been published,
+        including code freeze dates and auto-merge instructions.</p>
+
+<a href="{@docRoot}devices/tech/resources.html">
+        <h4>System Resources Section</h4></a>
+        <p>A new <strong><a href="{@docRoot}devices/tech/resources.html">System
+        Resources</a></strong> section has been added to contain documentation on the
+        <strong><a href="{@docRoot}devices/tech/kernel.html">kernel</a></strong>, <strong><a
+        href="{@docRoot}devices/tech/netstats.html">network</a></strong>, and
+        <strong><a href="{@docRoot}devices/tech/ram/index.html">RAM</a></strong>.</p>
+
+<a href="{@docRoot}devices/tech/security/verifiedboot/verified-boot.html">
+        <h4>Verified Boot Improvements</h4></a>
         <p><strong><a
-        href="{@docRoot}devices/tech/power/index.html">Power</a></strong>
-        information has been moved and expanded to include details on
-        <code>cpu.awake</code> and <code>cpu.active</code>. The need to create a
-        <code>power_profile.xml</code> file is also emphasized throughout.</p>
+        href="{@docRoot}devices/tech/security/verifiedboot/verified-boot.html#classes">Verifying
+        Boot</a></strong> has been rewritten to remove the VERIFIED state and Keystore
+        format and add details on implementation classes, communicating boot state, and
+        kernel command line parameters. And performance recommendations have been added
+        to <strong><a
+        href="{@docRoot}devices/tech/security/verifiedboot/dm-verity.html#optimize">Implementing
+        dm-verity</a></strong>.</p>
 
-<a href="{@docRoot}source/initializing.html">
-        <h4>Initializing Improvements</h4></a>
-        <p>Build environment <strong><a
-        href="{@docRoot}source/initializing.html#setting-up-a-mac-os-x-build-environment">Initializing</a></strong>
-        instructions now explain how to resize and unmount Mac OS sparse
-        images. And the ccache section has been moved to an optional <strong><a
-        href="{@docRoot}source/initializing.html#optimizing-a-build-environment">Optimizing
-        a build environment</a></strong> section.</p>
-
-<a href="{@docRoot}devices/tech/security/selinux/index.html">
-        <h4>SELinux Permissive Declarations</h4></a>
-        <p>SELinux <strong><a
-        href="{@docRoot}devices/tech/security/selinux/customize.html">Customizing</a></strong>
-        and <strong><a
-        href="{@docRoot}devices/tech/security/selinux/implement.html">Implementing</a></strong>
-        instructions have been updated to recommend using permissive declarations
-        directly as <code>permissive_or_unconfined()</code> has been deprecated.
-        Similarly, <code>BOARD_SEPOLICY_UNION</code> has been removed, so
-        <code>BOARD_SEPOLICY_*</code> variables are suggested insead.</p>
-
-<a href="{@docRoot}devices/bluetooth.html">
-        <h4>Android 5.0 Bluetooth HCI Requirements</h4></a>
-        <p><strong><a
-        href="{@docRoot}devices/Android-5.0-Bluetooth-HCI-Reqs.pdf">Bluetooth
-        Host Controller Interface (HCI) requirements</a></strong> to leverage
-        the Bluetooth Low Energy APIs in Android 5.0 have
-        been published and linked from the <strong><a
-        href="{@docRoot}devices/bluetooth.html">Bluetooth</a></strong> introduction.</p>
+<a href="{@docRoot}source/building.html">
+        <h4>Increased Disk Space Requirements</h4></a>
+        <p>The amount of available disk space required to build Android has
+        been increased to a minimum of 100GB in <strong><a
+        href="{@docRoot}source/building.html">Downloading and Building</a></strong>.</p>
     </div>
 
     <div class="col-8">
@@ -108,7 +107,7 @@
         href="https://android.googlesource.com/">Android Open Source Project (AOSP)
         repository</a></strong> to make your changes available to everyone else
         in the Android ecosystem.</p>
-<a href="{@docRoot}source/index.html"><img border="0" src="images/android_framework_small.png" alt="Android framework summary" style="display:inline;float:left;margin:5px 10px"></a>
+<a href="{@docRoot}source/index.html"><img border="0" src="images/android_framework_small.png" alt="Android framework summary" style="display:inline;float:right;margin:5px 10px;width:42%;height:42%"></a>
       <a href="{@docRoot}devices/index.html">
         <h4>Port Android to Devices</h4></a>
         <p>Port the latest Android platform and
diff --git a/src/source/build-numbers.jd b/src/source/build-numbers.jd
index d116739..185006d 100644
--- a/src/source/build-numbers.jd
+++ b/src/source/build-numbers.jd
@@ -178,10 +178,28 @@
 <th>Supported devices</th>
 </tr>
 <tr>
+  <td>LMY47Z</td>
+  <td>android-5.1.1_r4</td>
+  <td>Lollipop</td>
+  <td>Nexus 6 (For Sprint, USC ONLY)</td>
+</tr>
+<tr>
+  <td>LMY48B</td>
+  <td>android-5.1.1_r3</td>
+  <td>Lollipop</td>
+  <td>Nexus 5</td>
+</tr>
+<tr>
+  <td>LMY47X</td>
+  <td>android-5.1.1_r2</td>
+  <td>Lollipop</td>
+  <td>Nexus 9 (volantis)</td>
+</tr>
+<tr>
   <td>LMY47V</td>
   <td>android-5.1.1_r1</td>
   <td>Lollipop</td>
-  <td>Nexus Player</td>
+  <td>Nexus 7 (flo/grouper), Nexus 10, Nexus Player</td>
 </tr>
 <tr>
   <td>LMY47O</td>
@@ -190,18 +208,36 @@
   <td>Nexus 4, Nexus 7 (flo/deb)</td>
 </tr>
 <tr>
+  <td>LMY47M</td>
+  <td>android-5.1.0_r4</td>
+  <td>Lollipop</td>
+  <td>Nexus 6 (For T-Mobile ONLY)</td>
+</tr>
+<tr>
   <td>LMY47I</td>
   <td>android-5.1.0_r3</td>
   <td>Lollipop</td>
   <td>Nexus 5, Nexus 6</td>
 </tr>
 <tr>
+  <td>LMY47E</td>
+  <td>android-5.1.0_r2</td>
+  <td>Lollipop</td>
+  <td>Nexus 6</td>
+</tr>
+<tr>
   <td>LMY47D</td>
   <td>android-5.1.0_r1</td>
   <td>Lollipop</td>
   <td>Nexus 5, Nexus 6, Nexus 7 (grouper/tilapia), Nexus 10, Nexus Player</td>
 </tr>
 <tr>
+  <td>LRX22L</td>
+  <td>android-5.0.2_r3</td>
+  <td>Lollipop</td>
+  <td>Nexus 9 (volantis/volantisg)</td>
+</tr>
+<tr>
   <td>LRX22G</td>
   <td>android-5.0.2_r1</td>
   <td>Lollipop</td>
diff --git a/src/source/building-devices.jd b/src/source/building-devices.jd
index 06b4352..f0d978e 100644
--- a/src/source/building-devices.jd
+++ b/src/source/building-devices.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -28,31 +28,24 @@
 <a href="building-running.html">Building and Running</a> with
 information that is specific to individual devices.</p>
 
-<p>With the current release, it is possible to build for
-Nexus 4, Nexus 7, and for some variants of Galaxy Nexus.
-The exact level of functionality for each device depends on the availability
-of the relevant proprietary hardware-specific binaries.</p>
-<p>For Nexus 4 and Nexus 7, all configurations can be used,
-and all the hardware is functional.
-Due to hardware differences, do not use 4.1.1 on a Nexus 7 that
+<h2 class="nexus-devices">Nexus devices</h2>
+<p>
+It is possible to build for Nexus devices using the AOSP
+builds and the relevant hardware-specific binaries.
+For a list of available Android builds and the Nexus devices
+they can be installed on, see <a
+href="build-numbers.html#source-code-tags-and-builds">Source
+Code, Tags, and Builds</a>.
+</p>
+
+<p class="note">
+<b>Note:</b> Due to hardware differences, do not use 4.1.1 on a Nexus 7 that
 was originally sold with 4.1.2 or newer.</p>
-<p>All configurations of Nexus 10 "manta" can be used with 4.2.2.
-On those devices, graphics, audio,
-Wi-Fi, Bluetooth, camera, NFC, GPS and orientation sensors are functional.</p>
-<p>The variants of Galaxy Nexus that can be used are the GSM/HSPA+ configuration
-"maguro" (only if it was originally sold with a "yakju" or "takju" operating
-system) and the VZW CDMA/LTE configuration "toro". On those devices, graphics
-and audio are functional, as well as Wi-Fi, Bluetooth, and access to the
-respective cellular networks. NFC and the orientation sensors are functional.</p>
-<p>The Sprint CDMA/LTE configuration "toroplus" of Galaxy Nexus is supported
-experimentally, in the jb-mr1-dev-plus-aosp branch. On that configuration,
-the cellular network is not functional,
-and the other peripherals work like they do on "toro".</p>
+
+<h2 class="other-devices">Other devices</h2>
 <p>The Motorola Xoom can be used in the Wi-Fi configuration "wingray"
 sold in the USA, with Android 4.1.2. Graphics and audio are functional
 as well as Wi-Fi and Bluetooth and the orientation sensors.</p>
-<p>All configurations of Nexus S and Nexus S 4G can be used with Android 4.1.2.
-On those devices all the hardware is functional.</p>
 <p>In addition, <a href="http://pandaboard.org">PandaBoard</a> a.k.a. "panda" can be used
 in the jb-mr1-dev-plus-aosp branch, but is considered experimental.
 The specific details to use a PandaBoard with the Android Open-Source Project
@@ -64,6 +57,7 @@
 <a href="building-running.html">Building and Running</a>, and replace the main <code>make</code> command with</p>
 <pre><code>$ make fastboot adb
 </code></pre>
+
 <h2 id="booting-into-fastboot-mode">Booting into fastboot mode</h2>
 <p>During a cold boot, the following key combinations can be used to boot into fastboot mode,
 which is a mode in the bootloader that can be used to flash the devices:</p>
@@ -181,7 +175,7 @@
 branches can be downloaded from <a
 href="https://developers.google.com/android/nexus/drivers">Google's Nexus
 driver page</a>. These add access to additional hardware capabilities with
-non-open-source code. To instead build the AOSP master branch, use the <a
+non-open source code. To instead build the AOSP master branch, use the <a
 href="https://developers.google.com/android/nexus/blobs-preview">Binaries
 Preview for Nexus Devices</a>.</p>
 <p>When building the master branch for a device, the binaries for the most
diff --git a/src/source/building-dream.jd b/src/source/building-dream.jd
index 1b6d9ac..13ec46a 100644
--- a/src/source/building-dream.jd
+++ b/src/source/building-dream.jd
@@ -58,5 +58,5 @@
 <p>from this point, the fastboot tool (which is put automatically in your path) can be used to flash a device: boot the device into the bootloader by holding the back key while pressing the power key, and run <code>fastboot -w flashall</code>.</p>
 </li>
 </ol>
-<p>Note: these instructions work for the sapphire (ADP2) build target, as
+<p class="note"><strong>Note:</strong> These instructions work for the sapphire (ADP2) build target, as
 well. Simply replace "dream" with "sapphire" above.</p>
diff --git a/src/source/building.jd b/src/source/building.jd
index 408ddb1..78401da 100644
--- a/src/source/building.jd
+++ b/src/source/building.jd
@@ -21,14 +21,15 @@
 build tools available. We welcome reports of successes or failures on other
 distributions.</p>
 
-<p>Before you download and build the Android source, ensure your system meets the following requirements:</p>
+<p>Before you download and build the Android source, ensure your system meets
+the following requirements:</p>
 
 <ul>
 
   <li>A Linux or Mac OS system. It is also possible
   to build Android in a virtual machine on unsupported systems such as Windows.
   If you are running Linux in a virtual machine, you need at
-  least 16GB of RAM/swap and 50GB or more of disk space in order to
+  least 16GB of RAM/swap and 100GB or more of disk space in order to
   build the Android tree. See disk size requirements below.
   </li>
 
@@ -36,8 +37,8 @@
   branch. You can compile older versions on 32-bit systems.
   </li>
 
-  <li>At least 50GB of free disk space for a checkout, 100GB for a single
-  build, and 150GB or more for multiple builds. If you employ ccache, you will
+  <li>At least 100GB of free disk space for a checkout, 150GB for a single
+  build, and 200GB or more for multiple builds. If you employ ccache, you will
   need even more space.</p>
   </li>
 
diff --git a/src/source/code-lines.jd b/src/source/code-lines.jd
index 2e82e7b..3ec8798 100644
--- a/src/source/code-lines.jd
+++ b/src/source/code-lines.jd
@@ -89,7 +89,7 @@
   </li>
   <li>
 	<p>
-	  An <em>upstream</em> project is an open-source project from which the Android stack is
+	  An <em>upstream</em> project is an open source project from which the Android stack is
 	  pulling code. These include obvious projects such as the Linux kernel and WebKit.
 	  Over time we are migrating some of the semi-autonomous Android projects (such as ART,
 	  the Android SDK tools, Bionic, and so on) to work as "upstream" projects. Generally,
@@ -173,7 +173,7 @@
   As a result, Google frequently has possession of confidential information from third parties.
   And we must refrain from revealing sensitive features until we've secured the appropriate
   protections. In addition, there are real risks to the platform arising from having too many
-  platform versions extant at once. For these reasons, we have structured the open-source
+  platform versions extant at once. For these reasons, we have structured the open source
   project -- including third-party contributions -- to focus on the currently-public stable
   version of Android. "Deep development" on the next version of the platform will happen in
   private until it's ready to become an official release.
diff --git a/src/source/community/index.jd b/src/source/community.jd
similarity index 98%
rename from src/source/community/index.jd
rename to src/source/community.jd
index 8845469..ea92fb7 100644
--- a/src/source/community/index.jd
+++ b/src/source/community.jd
@@ -27,7 +27,7 @@
 <ul>
 <li>
 <p><em>android-platform</em>:
-This list is for general discussion about the Android open-source project or
+This list is for general discussion about the Android Open Source Project or
 the platform technologies.</p>
 <ul>
 <li>Subscribe using Google Groups:
@@ -258,4 +258,4 @@
 <p><a href="irc://irc.freenode.net/android-root">#android-root</a> - for
 discussion related to off-label uses of hardware</p>
 </li>
-</ul>
\ No newline at end of file
+</ul>
diff --git a/src/source/developing.jd b/src/source/developing.jd
index 0bbafe2..7788f56 100644
--- a/src/source/developing.jd
+++ b/src/source/developing.jd
@@ -25,7 +25,7 @@
 </div>
 
 <p>To work with the Android code, you will need to use both Git and Repo.  In most situations, you can use Git instead of Repo, or mix Repo and Git commands to form complex commands. Using Repo for basic across-network operations will make your work much simpler, however.</p>
-<p><strong>Git</strong> is an open-source version-control system designed to handle very large projects that are distributed over multiple repositories. In the context of Android, we use Git for local operations such as local branching, commits, diffs, and edits.  One of the challenges in setting up the Android project was figuring out how to best support the outside community--from the hobbiest community to large OEMs building mass-market consumer devices. We wanted components to be replaceable, and we wanted interesting components to be able to grow a life of their own outside of Android. We first chose a distributed revision control system, then further narrowed it down to Git.</p>
+<p><strong>Git</strong> is an open source version-control system designed to handle very large projects that are distributed over multiple repositories. In the context of Android, we use Git for local operations such as local branching, commits, diffs, and edits.  One of the challenges in setting up the Android project was figuring out how to best support the outside community--from the hobbiest community to large OEMs building mass-market consumer devices. We wanted components to be replaceable, and we wanted interesting components to be able to grow a life of their own outside of Android. We first chose a distributed revision control system, then further narrowed it down to Git.</p>
 <p><strong>Repo</strong> is a repository management tool that we built on top of Git. Repo
 unifies the many Git repositories when necessary, does the uploads to our
 <a href="https://android-review.googlesource.com/">revision control system</a>, and
@@ -101,7 +101,8 @@
 <pre><code>$ repo branches
 </code></pre>
 <p>The name of the current branch will be preceded by an asterisk.</p>
-<p><em>Note: A bug might be causing <code>repo sync</code> to reset the local topic branch. If <code>git branch</code> shows * (no branch) after you run <code>repo sync</code>, then run <code>git checkout</code> again.</em></p>
+<p class="note"><strong>Note:</strong> A bug might be causing <code>repo sync</code> to reset the local topic branch. 
+If <code>git branch</code> shows * (no branch) after you run <code>repo sync</code>, then run <code>git checkout</code> again.</p>
 <h2 id="staging-files">Staging files</h2>
 <p>By default, Git notices but does not track the changes you make in a project. In order to tell git to preserve your changes, you must mark them for inclusion in a commit. This is also called "staging". </p>
 <p>You can stage your changes by running</p>
diff --git a/src/source/faqs.jd b/src/source/faqs.jd
index 346ad98..6c01017 100644
--- a/src/source/faqs.jd
+++ b/src/source/faqs.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -44,11 +44,11 @@
 their innovative ideas a reality. We also wanted to make sure there was no
 central point of failure, so no single industry player could restrict or control
 the innovations of any other.  The single most important goal of the Android
-Open Source Project (AOSP) is to make sure that the open-source Android
+Open Source Project (AOSP) is to make sure that the open source Android
 software is implemented as widely and compatibly as possible, to everyone's
 benefit.</p>
-<h3 id="what-kind-of-open-source-project-is-android">What kind of open-source project is Android?</h3>
-<p>Google oversees the development of the core Android open-source platform
+<h3 id="what-kind-of-open-source-project-is-android">What kind of open source project is Android?</h3>
+<p>Google oversees the development of the core Android open source platform
 and works to create robust developer and user communities. For the most part,
 the Android source code is licensed under the permissive Apache Software
 License 2.0, rather than a "copyleft" license. The main reason for this is
@@ -66,7 +66,7 @@
 operation and strikes the business deals necessary to make sure great
 devices running Android actually make it to market.</p>
 <p>By making sure Android is a success with users, we help ensure the
-vitality of Android as a platform and as an open-source project. After all,
+vitality of Android as a platform and as an open source project. After all,
 who wants the source code to an unsuccessful product?</p>
 <p>Google's goal is to ensure a successful ecosystem around Android. Of course, no
 one is required to participate. We opened the Android source code
@@ -84,7 +84,7 @@
 according to the actual needs of real-world devices.</p>
 <h3 id="how-is-the-android-software-developed">How is the Android software developed?</h3>
 <p>Each platform version of Android (such as 1.5, 1.6, and so on) has a
-corresponding branch in the open-source tree. At any given moment, the most
+corresponding branch in the open source tree. At any given moment, the most
 recent such branch will be considered the "current stable" branch version.
 This current stable branch is the one that manufacturers port to their
 devices. This branch is kept suitable for release at all times.</p>
@@ -148,7 +148,7 @@
 around the same time the devices reach users.</p>
 <h3 id="how-does-the-aosp-relate-to-the-android-compatibility-program">How does the AOSP relate to the Android Compatibility Program?</h3>
 <p>The Android Open Source Project maintains the Android software, and
-develops new versions. Since it's open-source, this software can be used for
+develops new versions. Since it's open source, this software can be used for
 any purpose, including to develop devices that are not compatible with other
 devices based on the same source.</p>
 <p>The function of the Android Compatibility Program is to define a baseline
@@ -172,7 +172,7 @@
 in the ART runtime. Similarly, we won't accept contributions such as GPL
 or LGPL libraries that are incompatible with our licensing goals.</p>
 <p>We encourage those interested in contributing source code to contact us
-via the channels listed on the <a href="{@docRoot}source/community/index.html">
+via the channels listed on the <a href="{@docRoot}source/community.html">
 Android Community</a> page prior to beginning any work. You can find more
 information on this topic from the <a href="{@docRoot}source/contributing.html">
 Contributing</a> page.</p>
@@ -187,7 +187,7 @@
 Approvers are typically Google employees, but the same approvers are
 responsible for all submissions, regardless of origin.</p>
 <p>You can find more information on this topic at the <a href="submit-patches.html">Submitting Patches</a> page.</p>
-<a href="#top">Back to top</a>  
+<a href="#top">Back to top</a>
 <h2 id="compatibility">Compatibility</h2>
 <h3 id="what-does-compatibility-mean">What does "compatibility" mean?</h3>
 <p>We define an "Android-compatible device" as one that can run any
@@ -250,7 +250,7 @@
 they must first demonstrate their devices are compatible.</p>
 <h3 id="how-much-does-compatibility-certification-cost">How much does compatibility certification cost?</h3>
 <p>There is no cost to obtain Android compatibility for a device. The
-Compatibility Test Suite is open-source and available to anyone for device testing.</p>
+Compatibility Test Suite is open source and available to anyone for device testing.</p>
 <h3 id="how-long-does-compatibility-take">How long does compatibility take?</h3>
 <p>The process is automated. The Compatibility Test Suite generates a report
 that can be provided to Google to verify compatibility. Eventually we intend
@@ -261,7 +261,7 @@
 for each release. We draft the CDD for a new Android version in consultation
 with various OEMs who provide input on its contents.</p>
 <h3 id="how-long-will-each-android-version-be-supported-for-new-devices">How long will each Android version be supported for new devices?</h3>
-<p>Since Android's code is open-source, we can't prevent someone from using an
+<p>Since Android's code is open source, we can't prevent someone from using an
 old version to launch a device. Instead, Google chooses not to license the
 Google Play client software for use on versions that are considered
 obsolete. This allows anyone to continue to ship old versions of Android,
diff --git a/src/source/index.jd b/src/source/index.jd
index 34531f0..1941ed6 100644
--- a/src/source/index.jd
+++ b/src/source/index.jd
@@ -17,7 +17,7 @@
     limitations under the License.
 -->
 <p>
-Android is an open-source software stack created for a wide array of devices
+Android is an open source software stack created for a wide array of devices
 with different form factors. The primary purposes of Android are to create an
 open software platform available for carriers, OEMs, and developers to make
 their innovative ideas a reality and to introduce a successful,
@@ -47,7 +47,7 @@
 </p>
 <p>The companies that have invested in Android have done so on its merits
 because we believe an open platform is necessary. Android is
-intentionally and explicitly an open-source -- as opposed to a free software --
+intentionally and explicitly an open source -- as opposed to a free software --
 effort; a group of organizations with shared needs has pooled
 resources to collaborate on a single implementation of a shared product.
 The Android philosophy is pragmatic, first and foremost. The objective is
diff --git a/src/source/initializing.jd b/src/source/initializing.jd
index f7863e6..1358081 100644
--- a/src/source/initializing.jd
+++ b/src/source/initializing.jd
@@ -47,7 +47,7 @@
 <p>For Gingerbread (2.3.x) and newer versions, including the <code>master</code>
 branch, a 64-bit environment is required. Older versions can be
 compiled on 32-bit systems.</p>
-<p><strong>Note</strong>: See the <a href="building.html">Downloading and
+<p class="note"><strong>Note:</strong> See the <a href="building.html">Downloading and
 Building</a> page for the list of hardware and software requirements. Then
 follow the detailed instructions for Ubuntu and Mac OS below.</p>
 
@@ -74,7 +74,7 @@
 Java 6: for Gingerbread through KitKat<br/>
 Java 5: for Cupcake through Froyo</p>
 
-<p><strong>Note</strong>: The <code>lunch</code> command in the build step will ensure that the Sun JDK is
+<p class="note"><strong>Note:</strong> The <code>lunch</code> command in the build step will ensure that the Sun JDK is
 used instead of any previously installed JDK.</p>
 
 <h3 id="installing-required-packages-ubuntu-1404">Installing required packages (Ubuntu 14.04)</h3>
@@ -212,7 +212,7 @@
 <pre><code># mount the android file image
 function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }
 </code></pre>
-<p><strong>Note</strong>: If your system created a <code>.dmg.sparseimage</code> file, replace <code>~/android.dmg</code> with <code>~/android.dmg.sparseimage</code>.</p>
+<p class="note"><strong>Note:</strong> If your system created a <code>.dmg.sparseimage</code> file, replace <code>~/android.dmg</code> with <code>~/android.dmg.sparseimage</code>.</p>
 </li>
 <li>
 <p>To unmount it when you execute <code>umountAndroid</code>:</p>
@@ -266,13 +266,11 @@
 </li>
 <li>
 <p>Install MacPorts from <a href="http://www.macports.org/install.php">macports.org</a>.</p>
-<p><em>Note: Make sure that <code>/opt/local/bin</code> appears in your path BEFORE <code>/usr/bin</code>.  If not, add</em> </p>
-<pre><code>export PATH=/opt/local/bin:$PATH
-</code></pre>
-<p><em>to your <code>~/.bash_profile</code>.</em></p>
-
-<p><strong>Note</strong>: If you do not have a <code>.bash_profile</code> file in your home directory, create one.</p>
-
+<p class="note"><strong>Note:</strong> Make sure that <code>/opt/local/bin</code> appears in your path <strong>before</strong> <code>/usr/bin</code>. If not, please add the following to your <code>~/.bash_profile</code> file:</p>
+<pre>
+<code>export PATH=/opt/local/bin:$PATH</code>
+</pre>
+<p class="note"><strong>Note:</strong> If you do not have a <code>.bash_profile</code> file in your home directory, create one.</p>
 </li>
 <li>
 <p>Get make, git, and GPG packages from MacPorts: </p>
diff --git a/src/source/roles.jd b/src/source/roles.jd
index dccd402..34c9e46 100644
--- a/src/source/roles.jd
+++ b/src/source/roles.jd
@@ -51,8 +51,8 @@
 <h2 id="verifier">Verifier</h2>
 <p>"Verifiers" are responsible for testing change requests. After individuals
 have submitted a significant amount of high-quality code to the project, the
-project leads might invite them to become verifiers. <em>Note: at this
-time, verifiers act similarly to approvers.</em></p>
+project leads might invite them to become verifiers.</p>
+<p class="note"><strong>Note:</strong> At this time, verifiers act similarly to approvers.</p>
 <h2 id="approver">Approver</h2>
 <p>"Approvers" are experienced members of the project who have demonstrated their
 design skills and have made significant technical contributions to the
diff --git a/src/source/source_toc.cs b/src/source/source_toc.cs
index 84897f1..b707b43 100644
--- a/src/source/source_toc.cs
+++ b/src/source/source_toc.cs
@@ -1,5 +1,5 @@
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 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.
@@ -78,7 +78,7 @@
 
   <li class="nav-section">
     <div class="nav-section-header empty">
-      <a href="<?cs var:toroot ?>source/community/index.html">
+      <a href="<?cs var:toroot ?>source/community.html">
         <span class="en">Community</span>
       </a>
     </div>
diff --git a/src/source/submit-patches.jd b/src/source/submit-patches.jd
index d78aabc..0298ea9 100644
--- a/src/source/submit-patches.jd
+++ b/src/source/submit-patches.jd
@@ -179,7 +179,7 @@
 <p>To publish your comments so that others using Gerrit will be able to see them, click the Publish Comments button. Your comments will be emailed to all relevant parties for this change, including the change owner, the patch set uploader (if different from the owner), and all current reviewers.</p>
 <p><a name="upstream-projects"></a></p>
 <h1 id="upstream-projects">Upstream Projects</h1>
-<p>Android makes use of a number of other open-source projects, such as the Linux kernel and WebKit, as described in
+<p>Android makes use of a number of other open source projects, such as the Linux kernel and WebKit, as described in
 <a href="{@docRoot}source/code-lines.html">Codelines, Branches, and Releases</a>. For most projects under <code>external/</code>, changes should be made upstream and then the Android maintainers informed of the new upstream release containing these changes. It may also be useful to upload patches that move us to track a new upstream release, though these can be difficult changes to make if the project is widely used within Android like most of the larger ones mentioned below, where we tend to upgrade with every release.</p>
 <p>One interesting special case is bionic. Much of the code there is from BSD, so unless the change is to code that's new to bionic, we'd much rather see an upstream fix and then pull a whole new file from the appropriate BSD. (Sadly we have quite a mix of different BSDs at the moment, but we hope to address that in future, and get into a position where we track upstream much more closely.)</p>
 <h2 id="icu4c">ICU4C</h2>
diff --git a/src/source/using-eclipse.jd b/src/source/using-eclipse.jd
index 4d78c42..33ef381 100644
--- a/src/source/using-eclipse.jd
+++ b/src/source/using-eclipse.jd
@@ -24,10 +24,10 @@
   </div>
 </div>
 <p>This document will help you set up the Eclipse IDE for Android platform development.</p>
-<p><em>Note: if you are looking for information on how to use
+<p class="note"><strong>Note:</strong> If you are looking for information on how to use
 Eclipse to develop applications that run on Android, this is not the right
 page for you. You probably would find <a href="https://developer.android.com/sdk/eclipse-adt.html">the Eclipse page on 
-developer.android.com</a> more useful.</em></p>
+developer.android.com</a> more useful.</p>
 <h2 id="basic-setup">Basic setup</h2>
 <p>First, it's important to make sure the regular Android development system is set up.</p>
 <pre><code>cd /path/to/android/root 
@@ -81,7 +81,7 @@
 </li>
 </ol>
 <p>Once the project workspace is created, Eclipse should start building. In theory, it should build with no errors and you should be set to go. If necessary, uncheck and re-check Project Build Automatically to force a rebuild.</p>
-<p><em>Note:</em> Eclipse sometimes likes to add an <code>import android.R</code> statement at the top of your files that use resources, especially when you ask eclipse to sort or otherwise manage imports. This will cause your make to break. Look out for these erroneous import statements and delete them.</p>
+<p class="note"><strong>Note:</strong> Eclipse sometimes adds an <code>import android.R</code> statement at the top of your files that use resources, especially when you ask eclipse to sort or otherwise manage imports. This will cause your make to break. Look out for these erroneous import statements and delete them.</p>
 <h3 id="when-you-sync">When You Sync</h3>
 <p>Every time you repo sync, or otherwise change files outside of Eclipse (especially the .classpath), you need to refresh Eclipse's view of things:</p>
 <ol>
@@ -230,5 +230,5 @@
 </li>
 </ul>
 <p>If you're still having problems, please contact one of the <a
-href="{@docRoot}source/community/index.html">Android community mailing lists or
+href="{@docRoot}source/community.html">Android community mailing lists or
 IRC channels</a>.</p>
diff --git a/src/source/using-repo.jd b/src/source/using-repo.jd
index 57a93c9..61d40eb 100644
--- a/src/source/using-repo.jd
+++ b/src/source/using-repo.jd
@@ -58,7 +58,7 @@
 <p><code>-b</code>: specify a revision, i.e., a particular manifest-branch.</p>
 </li>
 </ul>
-<p><em>Note: For all remaining Repo commands, the current working directory must either be the parent directory of <code>.repo/</code> or a subdirectory of the parent directory.</em></p>
+<p class="note"><strong>Note:</strong> For all remaining Repo commands, the current working directory must either be the parent directory of <code>.repo/</code> or a subdirectory of the parent directory.</p>
 <h2 id="sync">sync</h2>
 <pre><code>repo sync [<em>&lt;PROJECT_LIST&gt;</em>]
 </code></pre>
@@ -134,7 +134,7 @@
 <pre><code>$ repo download platform/build 23823
 </code></pre>
 <p>A <code>repo sync</code> should effectively remove any commits retrieved via <code>repo download</code>. Or, you can check out the remote branch; e.g., <code>git checkout m/master</code>.</p>
-<p>*Note: There is a slight mirroring lag between when a change is visible on
+<p class="note"><strong>Note:</strong> There is a slight mirroring lag between when a change is visible on
 the web in <a href="https://android-review.googlesource.com/">Gerrit</a> and when
 <code>repo download</code> will be able to find it for all users, because of replication
 delays to all servers worldwide.</p>
@@ -181,7 +181,7 @@
 <p>Begins a new branch for development, starting from the revision specified in the manifest.</p>
 <p>The <code><em>&lt;BRANCH_NAME&gt;</em></code> argument should provide a short description of the change you are trying to make to the projects.If you don't know, consider using the name default.</p>
 <p>The <code><em>&lt;PROJECT_LIST&gt;</em></code> specifies which projects will participate in this topic branch. </p>
-<p><em>Note: "." is a useful shorthand for the project in the current working directory.</em></p>
+<p class="note"><strong>Note:</strong> "." is a useful shorthand for the project in the current working directory.</p>
 <h2 id="status">status</h2>
 <pre><code>repo status [<em>&lt;PROJECT_LIST&gt;</em>]
 </code></pre>