diff --git a/2_device-types/2_1_device-configurations.md b/2_device-types/2_1_device-configurations.md
index 883d049..6b04ddd 100644
--- a/2_device-types/2_1_device-configurations.md
+++ b/2_device-types/2_1_device-configurations.md
@@ -1,132 +1,4 @@
 ## 2.1 Device Configurations
 
-This is a summary of major differences in hardware configuration by device
-type. (Empty cells denote a “MAY”). Not all configurations are covered in this
-table; see relevant hardware sections for more detail.
-
-<table>
- <tr>
-    <th>Category</th>
-    <th>Feature</th>
-    <th>Section</th>
-    <th>Handheld</th>
-    <th>Television</th>
-    <th>Watch</th>
-    <th>Automotive</th>
-    <th>Other</th>
- </tr>
- <tr>
-    <td rowspan="3">Input</td>
-    <td>D-pad</td>
-    <td><a href="#7_2_2_non-touch-navigation">7.2.2. Non-touch Navigation</a></td>
-    <td></td>
-    <td>MUST</td>
-    <td></td>
-    <td></td>
-    <td></td>
- </tr>
- <tr>
-    <td>Touchscreen </td>
-    <td><a href="#7_2_4_touchscreen_input">7.2.4. Touchscreen input</a></td>
-    <td>MUST</td>
-    <td></td>
-    <td>MUST</td>
-    <td></td>
-    <td>SHOULD</td>
- </tr>
- <tr>
-    <td>Microphone </td>
-    <td><a href="#7_8_1_microphone">7.8.1. Microphone</a></td>
-    <td>MUST</td>
-    <td>SHOULD </td>
-    <td>MUST</td>
-    <td>MUST</td>
-    <td>SHOULD</td>
- </tr>
- <tr>
-    <td rowspan="2">Sensors</td>
-    <td>Accelerometer </td>
-    <td><a href="#7_3_1_accelerometer">7.3.1 Accelerometer</a></td>
-    <td>SHOULD</td>
-    <td></td>
-    <td>SHOULD</td>
-    <td></td>
-    <td>SHOULD</td>
- </tr>
- <tr>
-    <td>GPS</td>
-    <td><a href="#7_3_3_gps">7.3.3. GPS</a></td>
-    <td>SHOULD</td>
-    <td></td>
-    <td></td>
-    <td>SHOULD</td>
-    <td></td>
- </tr>
- <tr>
-    <td rowspan="5">Connectivity</td>
-    <td>Wi-Fi</td>
-    <td><a href="#7_4_2_ieee_802.11">7.4.2. IEEE 802.11</a></td>
-    <td>SHOULD</td>
-    <td>SHOULD</td>
-    <td></td>
-    <td>SHOULD</td>
-    <td>SHOULD</td>
- </tr>
- <tr>
-    <td>Wi-Fi Direct</td>
-    <td><a href="#7_4_2_1_wi-fi-direct">7.4.2.1. Wi-Fi Direct</a></td>
-    <td>SHOULD</td>
-    <td>SHOULD</td>
-    <td></td>
-    <td></td>
-    <td>SHOULD</td>
- </tr>
- <tr>
-    <td>Bluetooth</td>
-    <td><a href="#7_4_3_bluetooth">7.4.3. Bluetooth</a></td>
-    <td>SHOULD</td>
-    <td>MUST</td>
-    <td>MUST</td>
-    <td>MUST</td>
-    <td>SHOULD</td>
- </tr>
- <tr>
-    <td>Bluetooth Low Energy</td>
-    <td><a href="#7_4_3_bluetooth">7.4.3. Bluetooth</a></td>
-    <td>SHOULD</td>
-    <td>MUST</td>
-    <td>SHOULD</td>
-    <td>SHOULD</td>
-    <td>SHOULD</td>
- </tr>
- <tr>
-    <td>Cellular radio</td>
-    <td><a href="#7_4_5_minimum_network_capability">
-      7.4.5. Minimum Network Capability</a></td>
-    <td></td>
-    <td></td>
-    <td></td>
-    <td>SHOULD</td>
-    <td></td>
- </tr>
- <tr>
-    <td>USB</td>
-    <td>USB peripheral/host mode</td>
-    <td><a href="#7_7_usb">7.7. USB</a></td>
-    <td>SHOULD</td>
-    <td></td>
-    <td></td>
-    <td>SHOULD</td>
-    <td>SHOULD</td>
- </tr>
- <tr>
-    <td>Output</td>
-    <td>Speaker and/or Audio output ports</td>
-    <td><a href="#7_8_2_audio_output">7.8.2. Audio Output</a></td>
-    <td>MUST</td>
-    <td>MUST</td>
-    <td></td>
-    <td>MUST</td>
-    <td>MUST</td>
- </tr>
-</table>
+For the major differences in hardware configuration by device
+type, see the device-specific requirements that follow in this section.
diff --git a/2_device-types/2_2_handheld-reqs.md b/2_device-types/2_2_handheld-reqs.md
index 871375f..104fb97 100644
--- a/2_device-types/2_2_handheld-reqs.md
+++ b/2_device-types/2_2_handheld-reqs.md
@@ -13,51 +13,301 @@
 The additional requirements in the rest of this section are specific to Android
 Handheld device implementations.
 
+
+<div class="note">
+<b>Note:</b> Requirements that do not apply to Android Tablet devices are marked with an *.
+</div>
+
 ### 2.2.1\. Hardware
 
+**Screen Size (Section 7.1.1.1)**
+
+Handheld device implementations:
+
+*   [H-0-1] MUST have a screen at least 2.5 inches in physical diagonal size.<sup>*</sup>
+
+**Screen Density (Section 7.1.1.3)**
+
+Handheld device implementations:
+
+*    [H-SR] Are STRONGLY RECOMMENDED to provide users an affordance to change
+     the display size.
+
+**Legacy Application Compatibility Mode (Section 7.1.5)**
+
+Handheld device implementations:
+
+*   [H-0-1] MUST include support for legacy application compatibility mode as
+    implemented by the upstream Android open source code. That is, device
+    implementations MUST NOT alter the triggers or thresholds at which
+    compatibility mode is activated, and MUST NOT alter the behavior of the
+    compatibility mode itself.
+
+**Keyboard (Section 7.2.1)**
+
+Handheld device implementations:
+
+*    [H-0-1] MUST include support for third-party Input Method Editor (IME)
+     applications.
+
+**Navigation Keys (Section 7.2.3)**
+
+Handheld device implementations:
+
+*   [H-0-1] MUST provide the Home, Recents, and Back functions.
+
+*   [H-0-2] MUST send both the normal and long press event of the the Back
+    function ([`KEYCODE_BACK`](http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK))
+    to the foreground application.
+
 **Touchscreen Input (Section 7.2.4)**
 
-*   [H-0-1]  Handheld devices MUST have a touchscreen embedded in the device.
+Handheld device implementations:
 
-More to be added.
+*    [H-0-1] MUST support touchscreen input.
+
+**Accelerometer (Section 7.3.1)**
+
+Handheld device implementations:
+
+*   [H-SR] Are STRONGLY RECOMMENDED to include a 3-axis accelerometer.
+
+If Handheld device implementations include a 3-axis accelerometer, they:
+
+*   [H-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
+
+**Gyroscope (Section 7.3.4)**
+
+If Handheld device implementations include a gyroscope, they:
+
+*   [H-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
+
+**Proximity Sensor (Section 7.3.8 )**
+
+Handheld device implementations that can make a voice call and indicate
+any value other than `PHONE_TYPE_NONE` in `getPhoneType`:
+
+*   SHOULD include a proximity sensor.
+
+**Pose Sensor (Section 7.3.12)**
+
+Handheld device implementations:
+
+*   Are RECOMMENDED to support pose sensor with 6 degrees of freedom.
+
+**Bluetooth (Section 7.4.3)**
+
+Handheld device implementations:
+
+ *   SHOULD include support for Bluetooth and Bluetooth LE.
+
+**Data Saver (Section 7.4.7)**
+
+If Handheld device implementations include a metered connection, they:
+
+*   [H-1-1] MUST provide the data saver mode.
+
+**Minimum Memory and Storage (Section 7.6.1)**
+
+Handheld device implementations:
+
+*   [H-0-1] MUST have at least 4GB of non-volatile storage available for
+    application private data (a.k.a. "/data" partition)
+*   [H-0-2] MUST return “true” for `ActivityManager.isLowRamDevice()` when there
+    is less than 1GB of memory available to the kernel and userspace.
+
+
+If Handheld device implementations are 32-bit:
+
+*    [H-1-1] The memory available to the kernel and userspace MUST
+be at least 512MB if any of the following densities are used:
+     *    280dpi or lower on small/normal screens<sup>*</sup>
+     *    ldpi or lower on extra large screens
+     *    mdpi or lower on large screens
+
+*    [H-2-1] The memory available to the kernel and userspace MUST
+be at least 608MB if any of the following densities are used:
+     *   xhdpi or higher on small/normal screens<sup>*</sup>
+     *   hdpi or higher on large screens
+     *   mdpi or higher on extra large screens
+
+*    [H-3-1] The memory available to the kernel and userspace MUST
+be at least 896MB if any of the following densities are used:
+     *   400dpi or higher on small/normal screens<sup>*</sup>
+     *   xhdpi or higher on large screens
+     *   tvdpi or higher on extra large screens
+
+*     [H-4-1] The memory available to the kernel and userspace MUST
+be at least 1344MB if any of the following densities are used:
+     *   560dpi or higher on small/normal screens<sup>*</sup>
+     *   400dpi or higher on large screens
+     *   xhdpi or higher on extra large screens
+
+If Handheld device implementations are 64-bit:
+
+*    [H-5-1] The memory available to the kernel and userspace MUST
+be at least 816MB if any of the following densities are used:
+     *   280dpi or lower on small/normal screens<sup>*</sup>
+     *   ldpi or lower on extra large screens
+     *   mdpi or lower on large screens
+
+*    [H-6-1] The memory available to the kernel and userspace MUST
+be at least 944MB if any of the following densities are used:
+     *   xhdpi or higher on small/normal screens<sup>*</sup>
+     *   hdpi or higher on large screens
+     *   mdpi or higher on extra large screens
+
+*    [H-7-1] The memory available to the kernel and userspace MUST
+be at least 1280MB if any of the following densities are used:
+     *  400dpi or higher on small/normal screens<sup>*</sup>
+     *  xhdpi or higher on large screens
+     *  tvdpi or higher on extra large screens
+
+*    [H-8-1] The memory available to the kernel and userspace MUST
+be at least 1824MB if any of the following densities are used:
+     *   560dpi or higher on small/normal screens<sup>*</sup>
+     *   400dpi or higher on large screens
+     *   xhdpi or higher on extra large screens
+
+Note that the "memory available to the kernel and userspace" above refers to the
+memory space provided in addition to any memory already dedicated to hardware
+components such as radio, video, and so on that are not under the kernel’s
+control on device implementations.
+
+**Application Shared Storage (Section 7.6.2)**
+
+Handheld device implementations:
+
+*   [H-0-1] MUST NOT provide an application shared storage smaller than 1 GiB.
+
+**USB peripheral mode (Section 7.7.1)**
+
+Handheld device implementations:
+
+*   SHOULD include a USB port supporting peripheral mode.
+
+If handheld device implementations include a USB port supporting peripheral
+mode, they:
+
+*    [H-1-1] MUST implement the Android Open Accessory (AOA) API.<sup>*</sup>
+
+**Microphone (Section 7.8.1)**
+
+Handheld device implementations:
+
+*    [H-0-1] MUST include a microphone.
+
+**Audio Output (Section 7.8.2)**
+
+Handheld device implementations:
+
+*   [H-0-1] MUST have an audio output and declare
+    `android.hardware.audio.output`.
+
+**Virtual Reality Mode (Section 7.9.1)**
+
+If Handheld device implementations include support for the VR mode, they:
+
+*   [H-1-1] MUST declare the `android.software.vr.mode` feature.<sup>*</sup>
+
+
+If device implementations declare `android.software.vr.mode` feature, they:
+
+*   [H-2-1] MUST include an application implementing
+`android.service.vr.VrListenerService`
+that can be enabled by VR applications via
+`android.app.Activity#setVrModeEnabled`.<sup>*</sup>
+
+
+**Virtual Reality High Performance (Section 7.9.2)**
+
+If Handheld device implementations are capable of meeting all the requirements
+to declare the `android.hardware.vr.high_performance` feature flag, they:
+
+*   [H-1-1] MUST declare the `android.hardware.vr.high_performance`
+feature flag.<sup>*</sup>
+
 
 ### 2.2.2\. Multimedia
 
-To be added.
+**Audio Encoding (Section 5.1.1)**
+
+Handheld device implementations MUST support the following audio encoding:
+
+*    [H-0-1] AMR-NB
+*    [H-0-2] AMR-WB
+*    [H-0-3] MPEG-4 AAC Profile (AAC LC)
+*    [H-0-4] MPEG-4 HE AAC Profile (AAC+)
+*    [H-0-5] AAC ELD (enhanced low delay AAC)
+
+
+**Audio Decoding (Section 5.1.2)**
+
+Handheld device implementations MUST support the following audio decoding:
+
+*    [H-0-1] AMR-NB
+*    [H-0-2] AMR-WB
+
+**Video Encoding (Section 5.2)**
+
+Handheld device implementations MUST support the following video encoding and
+make it available to third-party applications:
+
+*    [H-0-1] H.264 AVC
+*    [H-0-2] VP8
+
+**Video Decoding (Section 5.3)**
+
+Handheld device implementations MUST support the following video decoding:
+
+*    [H-0-1] H.264 AVC.
+*    [H-0-2] H.265 HEVC.
+*    [H-0-3] MPEG-4 SP.
+*    [H-0-4] VP8.
+*    [H-0-5] VP9.
 
 ### 2.2.3\. Software
 
 **WebView Compatibility (Section 3.4.1)**
 
-*   [H-0-1] Handheld devices MUST provide a complete implementation of the android.webkit.Webview API.
+Handheld device implementations:
+
+*   [H-0-1] MUST provide a complete implementation of the
+    `android.webkit.Webview` API.
 
 **Browser Compatibility (Section 3.4.2)**
 
-*   [H-0-1] Handheled device implementations MUST include a standalone Browser application for general
+Handheld device implementations:
+
+*   [H-0-1] MUST include a standalone Browser application for general
 user web browsing.
 
 **Launcher (Section 3.8.1)**
 
-*   [H-SR] Handheld device implementations are STRONGLY RECOMMENDED to implement a default launcher
+Handheld device implementations:
+
+*   [H-SR] Are STRONGLY RECOMMENDED to implement a default launcher
     that supports in-app pinning of shortcuts and widgets.
 
-*   [H-SR] Device implementations are STRONGLY RECOMMENDED to implement a default launcher that
+*   [H-SR] Are STRONGLY RECOMMENDED to implement a default launcher that
     provides quick access to the additional shortcuts provided by third-party apps through the
     [ShortcutManager](
     https://developer.android.com/reference/android/content/pm/ShortcutManager.html) API.
 
-*   [H-SR] Handheld devices are STRONGLY RECOMMENDED to include a default
+*   [H-SR] Are STRONGLY RECOMMENDED to include a default
     launcher app that shows badges for the app icons.
 
 **Widgets (Section 3.8.2)**
 
-*   [H-SR] Handheld Device implementations are STRONGLY RECOMMENDED to support
+Handheld device implementations:
+
+*   [H-SR] Are STRONGLY RECOMMENDED to support
     third-party app widgets.
 
 
 **Notifications (Section 3.8.3)**
 
-Android Handheld device implementations:
+Handheld device implementations:
 
 *   [H-0-1] MUST allow third-party apps to notify users
     of notable events through the [`Notification`](
@@ -74,8 +324,10 @@
 
 **Search (Section 3.8.4)**
 
-*   [H-SR] Handheld device implementations are STRONGLY RECOMMENDED to implement
-    an assistant on the device to handle the [Assist action](
+Handheld device implementations:
+
+*   [H-SR] Are STRONGLY RECOMMENDED to implement an assistant on the device to
+    handle the [Assist action](
     http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST).
 
 **Lock Screen Media Control (Section 3.8.10)**
@@ -94,32 +346,110 @@
 
 **Accessibility (Section 3.10)**
 
-*  [H-SR] Android Handheld device implementations MUST support third-party
-   accessibility services.
+Handheld device implementations:
 
-*  [H-SR] Android Handheld device implementations are STRONGLY RECOMMENDED to
-   preload accessibility services on the device comparable with or exceeding
-   functionality of the Switch Access and TalkBack (for languages supported by
-   the preloaded Text-to-speech engine) accessibility services as provided in
-   the [talkback open source project](https://github.com/google/talkback).
+*  [H-SR] MUST support third-party accessibility services.
+
+*  [H-SR] Are STRONGLY RECOMMENDED to preload accessibility services on the
+   device comparable with or exceeding functionality of the Switch Access and
+   TalkBack (for languages supported by the preloaded Text-to-speech engine)
+   accessibility services as provided in the [talkback open source
+   project](https://github.com/google/talkback).
 
 **Text-to-Speech (Section 3.11)**
 
-Android handheld device implementations: 
-
-*   [H-SR] STRONGLY RECOMMENDED to include a TTS engine supporting the
-    languages available on the device.
+Handheld device implementations:
 
 *   [H-0-1] MUST support installation of third-party TTS engines.
 
+*   [H-SR] Are STRONGLY RECOMMENDED to include a TTS engine supporting the
+    languages available on the device.
+
 
 **Quick Settings (Section 3.13)**
 
-*    [H-SR] Android Handheld devices are STRONGLY RECOMMENDED to include a
-     Quick Settings UI component.
+Handheld device implementations:
+
+*    [H-SR] Are STRONGLY RECOMMENDED to include a Quick Settings UI component.
 
 **Companion Device Pairing (Section 3.15)**
 
 If Android handheld device implementations declare `FEATURE_BLUETOOTH` or `FEATURE_WIFI` support, they:
 
 *    [H-1-1] MUST support the companion device pairing feature.
+
+### 2.2.4\. Performance and Power
+
+**User Experience Consistency (Section 8.1)**
+
+For handheld device implementations:
+
+   *   [H-0-1] **Consistent frame latency**. Inconsistent frame latency or a
+delay to render frames MUST NOT happen more often than 5 frames in a second,
+and SHOULD be below 1 frames in a second.
+   *   [H-0-2] **User interface latency**. Device implementations MUST ensure
+low latency user experience by scrolling a list of 10K list entries as defined
+by the Android Compatibility Test Suite (CTS) in less than 36 secs.
+   *   [H-0-3] **Task switching**. When multiple applications have been
+launched, re-launching an already-running application after it has been
+launched MUST take less than 1 second.
+
+**File I/O Access Performance (Section 8.2)**
+
+Handheld device implementations:
+
+   *   [H-0-1] MUST ensure a sequential write performance of at least 5 MB/s.
+   *   [H-0-2] MUST ensure a random write performance of at least 0.5 MB/s.
+   *   [H-0-3] MUST ensure a sequential read performance of at least 15 MB/s.
+   *   [H-0-4] MUST ensure a random read performance of at least 3.5 MB/s.
+
+**Power-Saving Modes (Section 8.3)**
+
+For handheld device implementations:
+
+*   [H-0-1] All Apps exempted from App Standby and Doze power-saving modes
+MUST be made visible to the end user.
+*   [H-0-2] The triggering, maintenance, wakeup algorithms and the use of
+global system settings of App Standby and Doze power-saving modes MUST not
+deviate from the Android Open Source Project.
+
+**Power Consumption Accounting (Sections 8.4)**
+
+Handheld device implementations:
+
+*    [H-0-1] MUST provide a per-component power profile that defines the
+[current consumption value](
+http://source.android.com/devices/tech/power/values.html)
+for each hardware component and the approximate battery drain caused by the
+components over time as documented in the Android Open Source Project site.
+*    [H-0-2] MUST report all power consumption values in milliampere
+hours (mAh).
+*    [H-0-3] MUST report CPU power consumption per each process's UID.
+The Android Open Source Project meets the requirement through the
+`uid_cputime` kernel module implementation.
+*   [H-0-4] MUST make this power usage available via the
+[`adb shell dumpsys batterystats`](
+http://source.android.com/devices/tech/power/batterystats.html)
+shell command to the app developer.
+*    SHOULD be attributed to the hardware component itself if unable to
+attribute hardware component power usage to an application.
+
+If Handheld device implementations include a screen or video output, they:
+
+*   [H-1-1] MUST honor the [`android.intent.action.POWER_USAGE_SUMMARY`](
+http://developer.android.com/reference/android/content/Intent.html#ACTION_POWER_USAGE_SUMMARY)
+intent and display a settings menu that shows this power usage.
+
+### 2.2.5\. Security Model
+
+**Permissions (Sections 9.1)**
+
+Handheld device implementations:
+
+*   [H-0-1] MUST allow third-party apps to access the usage statistics via the
+    `android.permission.PACKAGE_USAGE_STATS` permission and provide a
+    user-accessible mechanism to grant or revoke access to such apps in response
+    to the [`android.settings.ACTION_USAGE_ACCESS_SETTINGS`](
+    https://developer.android.com/reference/android/provider/Settings.html#ACTION&lowbar;USAGE&lowbar;ACCESS&lowbar;SETTINGS)
+    intent.
+
diff --git a/2_device-types/2_3_television-reqs.md b/2_device-types/2_3_television-reqs.md
index 39ff09e..7eeabd4 100644
--- a/2_device-types/2_3_television-reqs.md
+++ b/2_device-types/2_3_television-reqs.md
@@ -19,15 +19,189 @@
 
 ### 2.3.1\. Hardware
 
-To be added.
+**Non-touch Navigation (Section 7.2.2)**
+
+Television device implementations:
+
+*    [T-0-1] MUST support [D-pad](https://developer.android.com/reference/android/content/res/Configuration.html#NAVIGATION_DPAD).
+
+**Navigation Keys (Section 7.2.3)**
+
+Television device implementations:
+
+*   [T-0-1] MUST provide the Home and Back functions.
+*   [T-0-2] MUST send both the normal and long press event of the the Back
+    function
+    ([`KEYCODE_BACK`](http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK))
+    to the foreground application.
+
+**Button Mappings (Section 7.2.6.1)**
+
+Television device implementations:
+
+*    [T-0-1] MUST include support for game controllers and declare the
+`android.hardware.gamepad` feature flag.
+
+**Remote Control (Section 7.2.7)**
+
+Television device implementations:
+
+*    SHOULD provide a remote control from which users can access
+[non-touch navigation](#7_2_2_non-touch_navigation) and
+[core navigation keys](#7_2_3_navigation_keys) inputs.
+
+**Gyroscope (Section 7.3.4)**
+
+If Television device implementations include a gyroscope, they:
+
+*   [T-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
+
+**Bluetooth (Section 7.4.3)**
+
+Television device implementations:
+
+*    [T-0-1] MUST support Bluetooth and Bluetooth LE.
+
+**Minimum Memory and Storage (Section 7.6.1)**
+
+Television device implementations:
+
+*   [T-0-1] MUST have at least 4GB of non-volatile storage available for
+    application private data (a.k.a. "/data" partition)
+
+**Microphone (Section 7.8.1)**
+
+Television device implementations:
+
+*   SHOULD include a microphone.
+
+**Audio Output (Section 7.8.2)**
+
+Television device implementations:
+
+*   [T-0-1] MUST have an audio output and declare
+    `android.hardware.audio.output`.
 
 ### 2.3.2\. Multimedia
 
-To be added.
+**Audio Encoding (Section 5.1)**
+
+Television device implementations MUST support the following audio encoding:
+
+*    [T-0-1] MPEG-4 AAC Profile (AAC LC)
+*    [T-0-2] MPEG-4 HE AAC Profile (AAC+)
+*    [T-0-3] AAC ELD (enhanced low delay AAC)
+
+
+**Video Encoding (Section 5.2)**
+
+Television device implementations MUST support the following video encoding:
+
+*    [T-0-1] H.264 AVC
+*    [T-0-2] VP8
+
+**H-264 (Section 5.2.2)**
+
+Television device implementations are:
+
+*   [T-SR] STRONGLY RECOMMENDED to support H.264 encoding of 720p and 1080p
+resolution videos.
+*   [T-SR] STRONGLY RECOMMENDED to support H.264 encoding of 1080p resolution
+video at 30 frame-per-second (fps).
+
+**Video Decoding (Section 5.3)**
+
+Television device implementations MUST support the following video decoding:
+
+*    [T-0-1] H.264 AVC
+*    [T-0-2] H.265 HEVC
+*    [T-0-3] MPEG-4 SP
+*    [T-0-4] VP8
+*    [T-0-5] VP9
+
+Television device implementations are STRONGLY RECOMMENDED to support the
+following video decoding:
+
+*    [T-SR] MPEG-2
+
+**H.264 (Section 5.3.4)**
+
+If Television device implementations support H.264 decoders, they:
+
+*   [T-1-1] MUST support High Profile Level 4.2 and the HD 1080p (at 60 fps)
+decoding profile.
+*   [T-1-2] MUST be capable of decoding videos with both HD profiles as
+indicated in the following table and encoded with either the Baseline Profile,
+Main Profile, or the High Profile Level 4.2
+
+**H.265 (HEVC) (Section 5.3.5)**
+
+If Television device implementations support H.265 codec and the HD 1080p
+decoding profile, they:
+
+*   [T-1-1] MUST support the Main Profile Level 4.1 Main tier.
+*   [T-SR]  Are STRONGLY RECOMMENDED to support 60 fps video frame rate
+for HD 1080p.
+
+If Television device implementations support H.265 codec and the UHD decoding
+profile, then:
+
+*   [T-2-1] The codec MUST support Main10 Level 5 Main Tier profile.
+
+**VP8 (Section 5.3.6)**
+
+If Television device implementations support VP8 codec, they:
+
+*   [T-1-1] MUST support the HD 1080p60 decoding profile.
+
+If Television device implementations support VP8 codec and support 720p, they:
+
+*   [T-2-1] MUST support the HD 720p60 decoding profile.
+
+
+**VP9 (Section 5.3.7)**
+
+If Television device implementations support VP9 codec and the UHD video
+decoding, they:
+
+*   [T-1-1] MUST support 8-bit color depth and SHOULD support VP9 Profile 2
+(10-bit).
+
+If Television device implementations support VP9 codec, the 1080p profile and
+VP9 hardware decoding, they:
+
+*   [T-2-1] MUST support 60 fps for 1080p.
+
+**Secure Media (Section 5.8)**
+
+If device implementations are Android Television devices and support 4K
+resolution, they:
+
+*    [T-1-1] MUST support HDCP 2.2 for all wired external displays.
+
+If Television device implementations don't support 4K resolution, they:
+
+*    [T-2-1] MUST support HDCP 1.4 for all wired external displays.
+
+Television device implementations:
+
+*    [T-SR] Are STRONGLY RECOMMENDED to support simulataneous decoding of secure
+     streams. At minimum, simultaneous decoding of two steams is STRONGLY
+     RECOMMENDED.
+
+**Audio Output Volume (Section 5.5.3)**
+
+Television device implementations:
+
+*   [T-0-1] MUST include support for system Master Volume and digital audio
+output volume attenuation on supported outputs,
+except for compressed audio passthrough output (where no audio decoding is done
+on the device).
+
 
 ### 2.3.3\. Software
 
-Android Television device implementations:
+Television device implementations:
 
 *    [T-0-1] MUST declare the features
      [`android.software.leanback`](http://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_LEANBACK)
@@ -35,7 +209,9 @@
 
 **WebView compatibility (Section 3.4.1)**
 
-*    [T-0-1] Television devices MUST provide a complete implementation of the android.webkit.Webview API.
+Television device implementations:
+
+*    [T-0-1] MUST provide a complete implementation of the `android.webkit.Webview` API.
 
 
 **Lock Screen Media Control (Section 3.8.10)**
@@ -46,13 +222,16 @@
 
 **Multi-windows (Section 3.8.14)**
 
-*   [T-SR] Android Television device implementations are STRONGLY RECOMMENDED to
-    support picture-in-picture (PIP) mode multi-window.
+Television device implementations:
+
+*   [T-SR] Are STRONGLY RECOMMENDED to support picture-in-picture (PIP) mode
+    multi-window.
 
 **Accessibility (Section 3.10)**
 
-*   [T-SR] Android Television device implementations MUST support third-party
-    accessibility services.
+Television device implementations:
+
+*   [T-SR] MUST support third-party accessibility services.
 
 *   [T-SR] Android Television device implementations are STRONGLY RECOMMENDED to
     preload accessibility services on the device comparable with or exceeding
@@ -73,6 +252,58 @@
 
 **TV Input Framework (Section 3.12)**
 
-To be added.
+Television device implementations:
+
+*    [T-0-1] MUST support TV Input Framework.
 
 
+### 2.2.4\. Performance and Power
+
+
+**User Experience Consistency (Section 8.1)**
+
+For Television device implementations:
+
+   *   [T-0-1] **Consistent frame latency**. Inconsistent frame latency or a
+delay to render frames MUST NOT happen more often than 5 frames in a second,
+and SHOULD be below 1 frames in a second.
+
+**File I/O Access Performance (Section 8.2)**
+
+Television device implementations:
+
+   *   [T-0-1] MUST ensure a sequential write performance of at least 5MB/s.
+   *   [T-0-2] MUST ensure a random write performance of at least 0.5MB/s.
+   *   [T-0-3] MUST ensure a sequential read performance of at least 15MB/s.
+   *   [T-0-4] MUST ensure a random read performance of at least 3.5MB/s.
+
+**Power-Saving Modes (Section 8.3)**
+
+For Television device implementations:
+
+*   [T-0-1] All Apps exempted from App Standby and Doze power-saving modes
+MUST be made visible to the end user.
+*   [T-0-2] The triggering, maintenance, wakeup algorithms and the use of
+global system settings of App Standby and Doze power-saving modes MUST not
+deviate from the Android Open Source Project.
+
+**Power Consumption Accounting (Sections 8.4)**
+
+Television device implementations:
+
+*    [T-0-1] MUST provide a per-component power profile that defines the
+[current consumption value](
+http://source.android.com/devices/tech/power/values.html)
+for each hardware component and the approximate battery drain caused by the
+components over time as documented in the Android Open Source Project site.
+*    [T-0-2] MUST report all power consumption values in milliampere
+hours (mAh).
+*    [T-0-3] MUST report CPU power consumption per each process's UID.
+The Android Open Source Project meets the requirement through the
+`uid_cputime` kernel module implementation.
+*    SHOULD be attributed to the hardware component itself if unable to
+attribute hardware component power usage to an application.
+*   [T-0-4] MUST make this power usage available via the
+[`adb shell dumpsys batterystats`](
+http://source.android.com/devices/tech/power/batterystats.html)
+shell command to the app developer.
diff --git a/2_device-types/2_4_watch-reqs.md b/2_device-types/2_4_watch-reqs.md
index 500aab8..2523460 100644
--- a/2_device-types/2_4_watch-reqs.md
+++ b/2_device-types/2_4_watch-reqs.md
@@ -15,15 +15,67 @@
 
 ### 2.4.1\. Hardware
 
-To be added.
+**Screen Size (Section 7.1.1.1)**
+
+Watch device implementations:
+
+*   [W-0-1] MUST have a screen with the physical diagonal size in the range from
+    1.1 to 2.5 inches.
+
+**Navigation Keys (Section 7.2.3)**
+
+Watch device implementations:
+
+*   [W-0-1] MUST have the Home function available to the user, and the Back
+    function except for when it is in `UI_MODE_TYPE_WATCH`.
+
+**Touchscreen Input (Section 7.2.4)**
+
+Watch device implementations:
+
+*    [W-0-2] MUST support touchscreen input.
+
+**Accelerometer (Section 7.3.1)**
+
+Watch device implementations:
+
+*   [W-SR] Are STRONGLY RECOMMENDED to include a 3-axis accelerometer.
+
+**Bluetooth (Section 7.4.3)**
+
+Watch device implementations:
+
+*    [W-0-1] MUST support Bluetooth.
+
+
+**Minimum Memory and Storage (Section 7.6.1)**
+
+Watch device implementations:
+
+*   [W-0-1] MUST have at least 1GB of non-volatile storage available for
+    application private data (a.k.a. "/data" partition)
+*   [W-0-2] MUST have at least 416MB memory available to the kernel and
+    userspace.
+
+**Microphone (Section 7.8.1)**
+
+Watch device implementations:
+
+*    [W-0-1] MUST include a microphone.
+
+**Audio Output (Section 7.8.1)**
+
+Watch device implementations:
+
+*   MAY but SHOULD NOT have audio output.
 
 ### 2.4.2\. Multimedia
 
-To be added.
+No additional requirements.
 
 ### 2.4.3\. Software
 
-Android Watch device implementations:
+Watch device implementations:
 
 *   [W-0-1] MUST declare the feature android.hardware.type.watch.
 *   [W-0-2] MUST support uiMode =
@@ -32,19 +84,20 @@
 
 **Search (Section 3.8.4)**
 
-*   [W-SR] Watch device implementations are STRONGLY RECOMMENDED to implement
-    an assistant on the device to handle the [Assist action](
+Watch device implementations:
+
+*   [W-SR] Are STRONGLY RECOMMENDED to implement an assistant on the device to
+    handle the [Assist action](
     http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST).
 
 
 **Accessibility (Section 3.10)**
 
-*   [W-1-1] Android Watch device implementations that declare the
-    `android.hardware.audio.output` feature flag MUST support third-party
-    accessibility services.
+Watch device implementations that declare the `android.hardware.audio.output` feature flag:
 
-*   [W-SR] Android Watch device implementations that declare `android.hardware.
-    audio.output` are STRONGLY RECOMMENDED to preload accessibility services on
+*   [W-1-1]  MUST support third-party accessibility services.
+
+*   [W-SR] Are STRONGLY RECOMMENDED to preload accessibility services on
     the device comparable with or exceeding functionality of the Switch Access
     and TalkBack (for languages supported by the preloaded Text-to-speech
     engine) accessibility services as provided in the [talkback open source
@@ -52,10 +105,10 @@
 
 **Text-to-Speech (Section 3.11)**
 
-If device implementations report the feature android.hardware.audio.output,
+If Watch device implementations report the feature android.hardware.audio.output,
 they:
 
-*   [W-SR] STRONGLY RECOMMENDED to include a TTS engine supporting the
+*   [W-SR] Are STRONGLY RECOMMENDED to include a TTS engine supporting the
     languages available on the device.
 
 *   [W-0-1] MUST support installation of third-party TTS engines.
diff --git a/2_device-types/2_5_automotive-reqs.md b/2_device-types/2_5_automotive-reqs.md
index d6f4271..65e09b8 100644
--- a/2_device-types/2_5_automotive-reqs.md
+++ b/2_device-types/2_5_automotive-reqs.md
@@ -2,33 +2,181 @@
 
 **Android Automotive implementation** refers to a vehicle head unit running
 Android as an operating system for part or all of the system and/or
-infotainment functionality. Android Automotive implementations:
+infotainment functionality.
 
 Android device implementations are classified as an Automotive if they declare
 the feature `android.hardware.type.automotive` or meet all the following
 criteria.
 
-*   are embedded as part of, or pluggable to, an automotive vehicle.
-*   are using a screen in the driver's seat row as the primary display.
+*   Are embedded as part of, or pluggable to, an automotive vehicle.
+*   Are using a screen in the driver's seat row as the primary display.
 
 The additional requirements in the rest of this section are specific to Android
 Automotive device implementations.
 
 ### 2.5.1\. Hardware
 
-Android Automotive device implementations:
+**Screen Size (Section 7.1.1.1)**
 
-*   [A-0-1] MUST have a screen with the physical diagonal length equal to or greater
-    than 6 inches.
+Automotive device implementations:
 
-More to be added.
+*   [A-0-1] MUST have a screen at least 6 inches in physical diagonal size.
+*   [A-0-2] MUST have a screen size layout of at least 750 dp x 480 dp.
+
+**Navigation Keys (Section 7.2.3)**
+
+Automotive device implementations:
+
+*   [A-0-1] MUST provide the Home function and MAY provide Back and Recent
+    functions.
+*   [A-0-2] MUST send both the normal and long press event of the the Back
+    function
+    ([`KEYCODE_BACK`](http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK))
+    to the foreground application.
+
+**Accelerometer (Section 7.3.1)**
+
+Automotive device implementations:
+
+*   [A-SR] Are STRONGLY RECOMMENDED to include a 3-axis accelerometer.
+
+If Automotive device implementations include a 3-axis accelerometer, they:
+
+*   [A-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
+*   [A-1-2] MUST comply with the Android
+    [car sensor coordinate system](
+    http://source.android.com/devices/sensors/sensor-types.html#auto_axes).
+
+**GPS (Section 7.3.3)**
+
+If Automotive device implementations include a GPS/GNSS receiver and report
+the capability to applications through the `android.hardware.location.gps`
+feature flag:
+
+*   [A-1-1] GNSS technology generation MUST be the year "2017" or newer.
+
+**Gyroscope (Section 7.3.4)**
+
+If Automotive device implementations include a gyroscope, they:
+
+*   [A-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
+
+**Android Automotive-only sensors (Section 7.3.11)**
+**Current Gear (Section 7.3.11.1)**
+
+Automotive device implementations:
+
+*    SHOULD provide current gear as `SENSOR_TYPE_GEAR`.
+
+**Day Night Mode (Section 7.3.11.2)**
+
+Automotive device implementations:
+
+*    [A-0-1] MUST support day/night mode defined as `SENSOR_TYPE_NIGHT`.
+*    [A-0-2] The value of the `SENSOR_TYPE_NIGHT` flag MUST be consistent with
+     dashboard day/night mode and SHOULD be based on ambient light sensor input.
+*    The underlying ambient light sensor MAY be the same as
+[Photometer](#7_3_7_photometer).
+
+**Driving Status (Section 7.3.11.3)**
+
+Automotive device implementations:
+
+*    [A-0-1] MUST support driving status defined as
+     `SENSOR_TYPE_DRIVING_STATUS`, with a default value of
+     `DRIVE_STATUS_UNRESTRICTED` when the vehicle is fully stopped and parked.
+     It is the responsibility of device manufacturers to configure
+     `SENSOR_TYPE_DRIVING_STATUS` in compliance with all laws and regulations
+     that apply to markets where the product is shipping.
+
+**Wheel Speed (Section 7.3.11.4)**
+
+Automotive device implementations:
+
+*    [A-0-1] MUST provide vehicle speed defined as `SENSOR_TYPE_CAR_SPEED`.
+
+**Bluetooth (Section 7.4.3)**
+
+Automotive device implementations:
+
+*    [A-0-1] MUST support Bluetooth and SHOULD support Bluetooth LE.
+
+*    [A-0-2] Android Automotive implementations MUST support the following
+     Bluetooth profiles:
+     * Phone calling over Hands-Free Profile (HFP).
+     * Media playback over Audio Distribution Profile (A2DP).
+     * Media playback control over Remote Control Profile (AVRCP).
+     * Contact sharing using the Phone Book Access Profile (PBAP).
+*    SHOULD support Message Access Profile (MAP).
+
+**Minimum Network Capability (Section 7.4.5)**
+
+Automotive device implementations:
+
+*   SHOULD include support for cellular network based data connectivity.
+
+**Minimum Memory and Storage (Section 7.6.1)**
+
+Automotive device implementations:
+
+*   [A-0-1] MUST have at least 4GB of non-volatile storage available for
+    application private data (a.k.a. "/data" partition)
+
+**USB peripheral mode (Section 7.7.1)**
+
+Automotive device implementations:
+
+*   SHOULD include a USB port supporting peripheral mode.
+
+**Microphone (Section 7.8.1)**
+
+Automotive device implementations:
+
+*    [A-0-1] MUST include a microphone.
+
+**Audio Output (Section 7.8.2)**
+
+Automotive device implementations:
+
+*   [A-0-1] MUST have an audio output and declare
+    `android.hardware.audio.output`.
 
 ### 2.5.2\. Multimedia
 
-To be added.
+**Audio Encoding (Section 5.1)**
+
+Automotive device implementations MUST support the following audio encoding:
+
+*    [A-1-1] MPEG-4 AAC Profile (AAC LC)
+*    [A-1-2] MPEG-4 HE AAC Profile (AAC+)
+*    [A-1-3] AAC ELD (enhanced low delay AAC)
+
+**Video Encoding (Section 5.2)**
+
+Automotive device implementations MUST support the following video encoding:
+
+*    [A-0-1] H.264 AVC
+*    [A-0-2] VP8
+
+**Video Decoding (Section 5.3)**
+
+Automotive device implementations MUST support the following video decoding:
+
+*    [A-0-1] H.264 AVC
+*    [A-0-2] MPEG-4 SP
+*    [A-0-3] VP8
+*    [A-0-4] VP9
+
+Automotive device implementations are STRONGLY RECOMMENDED to support the
+following video decoding:
+
+*    [A-SR] H.265 HEVC
+
 
 ### 2.5.3\. Software
 
+Automotive device implementations:
+
 *   [A-0-1] MUST declare the feature android.hardware.type.automotive.
 *   [A-0-2] MUST support uiMode =
     [UI_MODE_TYPE_CAR](http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_CAR).
@@ -37,7 +185,9 @@
 
 **WebView Compatibility (Section 3.4.1)**
 
-*   [A-0-1] Automobile devices MUST provide a complete implementation of the android.webkit.Webview API.
+Automotive device implementations:
+
+*   [A-0-1] MUST provide a complete implementation of the `android.webkit.Webview API`.
 
 **Notifications (Section 3.8.3)**
 
@@ -49,12 +199,69 @@
 
 **Search (Section 3.8.4)**
 
-*   [A-0-1] Android Automotive implementations MUST implement an assistant on
-    the device to handle the [Assist action](
+Automotive device implementations:
+
+*   [A-0-1] MUST implement an assistant on the device to handle the 
+    [Assist action](
     http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST).
 
 
 **Media UI (Section 3.14)**
 
-*   [A-0-1] Automotive implementations MUST include a UI framework to support
-    third-party apps using the media APIs as described in section 3.14.
+Automotive device implementations:
+
+*   [A-0-1] MUST include a UI framework to support third-party apps using the
+    media APIs as described in section 3.14.
+
+### 2.2.4\. Performance and Power
+
+**Power-Saving Modes (Section 8.3)**
+
+For Automotive device implementations:
+
+*   [A-0-1] All Apps exempted from App Standby and Doze power-saving modes
+MUST be made visible to the end user.
+*   [A-0-2] The triggering, maintenance, wakeup algorithms and the use of
+global system settings of App Standby and Doze power-saving modes MUST not
+deviate from the Android Open Source Project.
+
+**Power Consumption Accounting (Sections 8.4)**
+
+Automotive device implementations:
+
+*    [A-0-1] MUST provide a per-component power profile that defines the
+[current consumption value](
+http://source.android.com/devices/tech/power/values.html)
+for each hardware component and the approximate battery drain caused by the
+components over time as documented in the Android Open Source Project site.
+*    [A-0-2] MUST report all power consumption values in milliampere
+hours (mAh).
+*    [A-0-3] MUST report CPU power consumption per each process's UID.
+The Android Open Source Project meets the requirement through the
+`uid_cputime` kernel module implementation.
+*    SHOULD be attributed to the hardware component itself if unable to
+attribute hardware component power usage to an application.
+*   [A-0-4] MUST make this power usage available via the
+[`adb shell dumpsys batterystats`](
+http://source.android.com/devices/tech/power/batterystats.html)
+shell command to the app developer.
+
+### 2.2.5\. Security Model
+
+**Multi-User Support (Section 9.5)**
+
+If Automotive device implementations include multiple users, they:
+
+*   [A-1-1] MUST include a guest account that allows all functions provided
+by the vehicle system without requiring a user to log in.
+
+**Automotive Vehicle System Isolation (Section 9.14)**
+
+Automotive device implementations:
+
+*    [A-0-1] MUST gatekeep messages from Android framework vehicle subsystems,
+e.g., whitelisting permitted message types and message sources.
+*    [A-0-2] MUST watchdog against denial of service attacks from the Android
+framework or third-party apps. This guards against malicious software flooding
+the vehicle network with traffic, which may lead to malfunctioning vehicle
+subsystems.
diff --git a/2_device-types/2_6_tablet-reqs.md b/2_device-types/2_6_tablet-reqs.md
new file mode 100644
index 0000000..387d53b
--- /dev/null
+++ b/2_device-types/2_6_tablet-reqs.md
@@ -0,0 +1,45 @@
+## 2.6\. Tablet Requirements
+
+An **Android Tablet device** refers to an Android device implementation that is
+typically used by holding in both hands and not in a clamshell form-factor.
+
+Android device implementations are classified as a Tablet if they meet all the
+following criteria:
+
+*   Have a power source that provides mobility, such as a battery.
+*   Have a physical diagonal screen size in the range of 7 to 18 inches.
+
+Tablet device implementations have similar requirements to handheld device
+implementations. The exceptions are in indicated by and \* in that section
+and noted for reference in this section.
+
+### 2.4.1\. Hardware
+
+**Screen Size (Section 7.1.1.1)**
+
+Tablet device implementations:
+
+*   [Ta-0-1] MUST have a screen in the range of 7 to 18 inches.
+
+**Minimum Memory and Storage (Section 7.6.1)**
+
+The screen densities listed for small/normal screens in the handheld
+requirements are not applicable to tablets.
+
+**USB peripheral mode (Section 7.7.1)**
+
+If handheld device implementations include a USB port supporting peripheral
+mode, they:
+
+*   MAY implement the Android Open Accessory (AOA) API.
+
+**Virtual Reality Mode (Section 7.9.1)**
+
+**Virtual Reality High Performance (Section 7.9.2)**
+
+Virtual reality requirements are not applicable to tablets.
+
+
+
+
+
diff --git a/3_software/3_12_tv-input-framework.md b/3_software/3_12_tv-input-framework.md
index 9676250..0bca402 100644
--- a/3_software/3_12_tv-input-framework.md
+++ b/3_software/3_12_tv-input-framework.md
@@ -5,9 +5,6 @@
 content to Android Television devices. TIF provides a standard API to create
 input modules that control Android Television devices.
 
-*    [T-0-1] Android Television device implementations MUST support TV Input
-Framework.
-
 If device implementations support TIF, they:
 
 *    [C-1-1] MUST declare the platform feature `android.software.live_tv`.
diff --git a/3_software/3_2_soft-api-compatibility.md b/3_software/3_2_soft-api-compatibility.md
index 3837b1c..b86a590 100644
--- a/3_software/3_2_soft-api-compatibility.md
+++ b/3_software/3_2_soft-api-compatibility.md
@@ -252,15 +252,15 @@
 components, or at least a handler, for all the public intent filter patterns
 defined by the the following core Android applications in AOSP:
 
-   *   Desk Clock
-   *   Browser
-   *   Calendar
-   *   Contacts
-   *   Gallery
-   *   GlobalSearch
-   *   Launcher
-   *   Music
-   *   Settings
+     *   Desk Clock
+     *   Browser
+     *   Calendar
+     *   Contacts
+     *   Gallery
+     *   GlobalSearch
+     *   Launcher
+     *   Music
+     *   Settings
 
 #### 3.2.3.2\. Intent Resolution
 
@@ -433,4 +433,4 @@
 *   [C-3-1] Only the owner of that display, system, and activities that are
     already on that display MUST be able to launch to it. Everyone can launch to
     a display that has [android.view.Display.FLAG_PUBLIC](https://developer.android.com/reference/android/view/Display.html#FLAG_PUBLIC)
-    flag.
\ No newline at end of file
+    flag.
diff --git a/5_multimedia/5_1_media-codecs.md b/5_multimedia/5_1_media-codecs.md
index 781376e..c8d569c 100644
--- a/5_multimedia/5_1_media-codecs.md
+++ b/5_multimedia/5_1_media-codecs.md
@@ -4,27 +4,6 @@
 
 See more details in [5.1.3. Audio Codecs Details](#5_1_3_audio_codecs_details).
 
-Handheld device implementations MUST support the following audio encoding:
-
-*    [H-0-1] AMR-NB
-*    [H-0-2] AMR-WB
-*    [H-0-3] MPEG-4 AAC Profile (AAC LC)
-*    [H-0-4] MPEG-4 HE AAC Profile (AAC+)
-*    [H-0-5] AAC ELD (enhanced low delay AAC)
-
-
-Television device implementations MUST support the following audio encoding:
-
-*    [T-0-1] MPEG-4 AAC Profile (AAC LC)
-*    [T-0-2] MPEG-4 HE AAC Profile (AAC+)
-*    [T-0-3] AAC ELD (enhanced low delay AAC)
-
-Automotive device implementations MUST support the following audio encoding:
-
-*    [A-1-1] MPEG-4 AAC Profile (AAC LC)
-*    [A-1-2] MPEG-4 HE AAC Profile (AAC+)
-*    [A-1-3] AAC ELD (enhanced low delay AAC)
-
 If device implementations declare `android.hardware.microphone`,
 they MUST support the following audio encoding:
 
@@ -35,10 +14,6 @@
 
 See more details in [5.1.3. Audio Codecs Details](#5_1_3_audio_codecs_details).
 
-Handheld device implementations MUST support the following decoding.
-
-*    [H-0-1] AMR-NB
-*    [H-0-2] AMR-WB
 
 If device implementations declare support for the
 `android.hardware.audio.output` feature, they:
diff --git a/5_multimedia/5_2_video-encoding.md b/5_multimedia/5_2_video-encoding.md
index 4f97c1e..3bc9d79 100644
--- a/5_multimedia/5_2_video-encoding.md
+++ b/5_multimedia/5_2_video-encoding.md
@@ -1,22 +1,5 @@
 ## 5.2\. Video Encoding
 
-Handheld device implementations MUST support the following encoding and make it
-available to third-party applications.
-
-*    [H-0-1] H.264 AVC
-*    [H-0-2] VP8
-
-Television device implementations MUST support the following encoding.
-
-*    [T-0-1] H.264 AVC
-*    [T-0-2] VP8
-
-Automotive device implementations MUST support the following encoding:
-
-*    [A-0-1] H.264 AVC
-*    [A-0-2] VP8
-
-
 If device implementations support any video encoder and make it available
 to third-party apps, they:
 
@@ -60,14 +43,6 @@
 
 ### 5.2.2\. H-264
 
-Television device implementations are:
-
-*   [T-SR] STRONGLY RECOMMENDED to support H.264 encoding of 720p and 1080p
-resolution videos.
-*   [T-SR] STRONGLY RECOMMENDED to support H.264 encoding of 1080p resolution
-video at 30 frame-per-second (fps).
-
-
 If device implementations support H.264 codec, they:
 
 *   [C-1-1] MUST support Baseline Profile Level 3.
diff --git a/5_multimedia/5_3_video-decoding.md b/5_multimedia/5_3_video-decoding.md
index 255d503..0d09bab 100644
--- a/5_multimedia/5_3_video-decoding.md
+++ b/5_multimedia/5_3_video-decoding.md
@@ -1,32 +1,5 @@
 ## 5.3\. Video Decoding
 
-Handheld device implementations:
-
-*    [H-0-1] MUST support decoding of H.264 AVC.
-*    [H-0-2] MUST support decoding of H.265 HEVC.
-*    [H-0-3] MUST support decoding of MPEG-4 SP.
-*    [H-0-4] MUST support decoding of VP8.
-*    [H-0-5] MUST support decoding of VP9.
-
-Television device implementations:
-
-*    [T-0-1] MUST support decoding of H.264 AVC.
-*    [T-0-2] MUST support decoding of H.265 HEVC.
-*    [T-0-3] MUST support decoding of MPEG-4 SP.
-*    [T-0-4] MUST support decoding of VP8.
-*    [T-0-5] MUST support decoding of VP9.
-*    [T-SR] Are Strongly Recommended to support MPEG-2 decoding.
-
-
-Automotive device implementations:
-
-*    [A-0-1] MUST support decoding of H.264 AVC.
-*    [A-0-2] MUST support decoding of MPEG-4 SP.
-*    [A-0-3] MUST support decoding of VP8.
-*    [A-0-4] MUST support decoding of VP9.
-*    [A-SR] Are Strongly Recommended to support H.265 HEVC decoding.
-
-
 If device implementations support VP8, VP9, H.264, or H.265 codecs, they:
 
 *   [C-1-1] MUST support dynamic video resolution and frame rate switching
@@ -83,13 +56,6 @@
 *   [C-2-2] MUST support the HD 1080p video encoding profiles in the following
 table.
 
-If Television device implementations support H.264 decoders, they:
-
-*   [T-1-1] MUST support High Profile Level 4.2 and the HD 1080p (at 60 fps)
-decoding profile.
-*   [T-1-2] MUST be capable of decoding videos with both HD profiles as
-indicated in the following table and encoded with either the Baseline Profile,
-Main Profile, or the High Profile Level 4.2
 
 <table>
  <tr>
@@ -124,6 +90,7 @@
 
 ### 5.3.5\. H.265 (HEVC)
 
+
 If device implementations support H.265 codec, they:
 
 *   [C-1-1] MUST support the Main Profile Level 3 Main tier and the SD video
@@ -138,18 +105,6 @@
 *   [C-2-1] Device implementations MUST support at least one of H.265 or VP9
 decoding of 720, 1080 and UHD profiles.
 
-If Television device implementations support H.265 codec and the HD 1080p
-decoding profile, they:
-
-*   [T-1-1] MUST support the Main Profile Level 4.1 Main tier.
-*   [T-SR] STRONGLY RECOMMENDED to support 60 fps video frame rate
-for HD 1080p.
-
-If Television device implementations support H.265 codec and the UHD decoding
-profile, then:
-
-*   [T-2-1] The codec MUST support Main10 Level 5 Main Tier profile.
-
 <table>
  <tr>
     <th></th>
@@ -204,15 +159,6 @@
 *   [C-2-2] Device implementations MUST support 1080p profiles in the
 following table.
 
-If Television device implementations support VP8 codec, they:
-
-*   [T-1-1] MUST support the HD 1080p60 decoding profile.
-
-If Television device implementations support VP8 codec and support 720p, they:
-
-*   [T-2-1] MUST support the HD 720p60 decoding profile.
-
-
 
 <table>
  <tr>
@@ -265,17 +211,6 @@
 *   [C-3-1] Device implementations MUST support at least one of VP9 or H.265
 decoding of the 720, 1080 and UHD profiles.
 
-If Television device implementations support VP9 codec and the UHD video
-decoding, they:
-
-*   [T-1-1] MUST support 8-bit color depth and SHOULD support VP9 Profile 2
-(10-bit).
-
-If Television device implementations support VP9 codec, the 1080p profile and
-VP9 hardware decoding, they:
-
-*   [T-2-1] MUST support 60 fps for 1080p.
-
 <table>
  <tr>
     <th></th>
@@ -309,4 +244,4 @@
     <td>5 Mbps</td>
     <td>20 Mbps</td>
  </tr>
-</table>
\ No newline at end of file
+</table>
diff --git a/5_multimedia/5_5_audio-playback.md b/5_multimedia/5_5_audio-playback.md
index 363197e..b0e6d45 100644
--- a/5_multimedia/5_5_audio-playback.md
+++ b/5_multimedia/5_5_audio-playback.md
@@ -10,14 +10,14 @@
 *   [C-1-1] MUST allow playback of raw audio content with the following
 characteristics:
 
-   *   **Format**: Linear PCM, 16-bit
-   *   **Sampling rates**: 8000, 11025, 16000, 22050, 32000, 44100
-   *   **Channels**: Mono, Stereo
+     *   **Format**: Linear PCM, 16-bit
+     *   **Sampling rates**: 8000, 11025, 16000, 22050, 32000, 44100
+     *   **Channels**: Mono, Stereo
 
 *   SHOULD allow playback of raw audio content with the following
 characteristics:
 
-   *   **Sampling rates**: 24000, 48000
+     *   **Sampling rates**: 24000, 48000
 
 ### 5.5.2\. Audio Effects
 
@@ -40,13 +40,6 @@
 
 ### 5.5.3\. Audio Output Volume
 
-Television device implementations:
-
-*   [T-0-1] MUST include support for system Master Volume and digital audio
-output volume attenuation on supported outputs,
-except for compressed audio passthrough output (where no audio decoding is done
-on the device).
-
 Automotive device implementations:
 
 *   SHOULD allow adjusting audio volume
diff --git a/5_multimedia/5_8_secure-media.md b/5_multimedia/5_8_secure-media.md
index 5df157e..e75a775 100644
--- a/5_multimedia/5_8_secure-media.md
+++ b/5_multimedia/5_8_secure-media.md
@@ -17,15 +17,3 @@
 
 *    [C-3-1] MUST support HDCP 1.2 or higher for all wired external displays.
 
-If device implementations are Android Television devices and support 4K
-resolution, they:
-
-*    [T-1-1] MUST support HDCP 2.2 for all wired external displays.
-
-If Television device implementations don't support 4K resolution, they:
-
-*    [T-2-1] MUST support HDCP 1.4 for all wired external displays.
-
-*    [T-SR] Television device implementations are STRONGLY RECOMMENDED to
-support simulataneous decoding of secure streams. At minimum, simultaneous
-decoding of two steams is STRONGLY RECOMMENDED.
\ No newline at end of file
diff --git a/7_hardware-compatibility/7_1_display-and-graphics.md b/7_hardware-compatibility/7_1_display-and-graphics.md
index b9b8d0f..ece4f9f 100644
--- a/7_hardware-compatibility/7_1_display-and-graphics.md
+++ b/7_hardware-compatibility/7_1_display-and-graphics.md
@@ -23,18 +23,6 @@
 
 #### 7.1.1.1\. Screen Size
 
-*   [H-0-1] Handheld device implementations MUST have a screen at least 2.5
-    inches in physical diagonal size.
-
-*   [A-0-1] Android Automotive devices MUST have a screen at least 6 inches
-    in physical diagonal size.
-
-*   [A-0-2] Android Automotive devices MUST have a screen size layout of
-at least 750 dp x 480 dp.
-
-*   [W-0-1] Android Watch device implementations MUST have a screen with the
-    physical diagonal size in the range from 1.1 to 2.5 inches.
-
 The Android UI framework supports a variety of different logical screen layout
 sizes, and allows applications to query the current configuration's screen
 layout size via `Configuration.screenLayout` with the `SCREENLAYOUT_SIZE_MASK`
@@ -130,8 +118,6 @@
      supported compatible screen size (320 dp width), device implementations SHOULD
      report the next lowest standard Android framework density.
 
-*    [H-SR] Device implementations are STRONGLY RECOMMENDED to provide users an
-     affordance to change the display size.
 
 If there is an affordance to change the display size of the device:
 
@@ -355,12 +341,6 @@
 applications not developed for old versions of Android that pre-date
 screen-size independence.
 
-*   [H-0-1] Handheld device implementations MUST include support
-    for legacy application compatibility mode as implemented by the upstream
-    Android open source code. That is, device implementations MUST NOT alter the
-    triggers or thresholds at which compatibility mode is activated, and MUST
-    NOT alter the behavior of the compatibility mode itself.
-
 ### 7.1.6\. Screen Technology
 
 The Android platform includes APIs that allow applications to render rich
@@ -386,4 +366,4 @@
 
 *   [C-1-1] MUST implement the [`DisplayManager`](
     https://developer.android.com/reference/android/hardware/display/DisplayManager.html)
-    system service and API as described in the Android SDK documentation.
\ No newline at end of file
+    system service and API as described in the Android SDK documentation.
diff --git a/7_hardware-compatibility/7_2_input-devices.md b/7_hardware-compatibility/7_2_input-devices.md
index 66fda1d..993db39 100644
--- a/7_hardware-compatibility/7_2_input-devices.md
+++ b/7_hardware-compatibility/7_2_input-devices.md
@@ -8,11 +8,6 @@
 
 ### 7.2.1\. Keyboard
 
-*    [H-0-1]  Handheld device implementations MUST include support for
-third-party Input Method Editor (IME) applications.
-*    [T-0-1] Television device implementations  MUST include support for
-third-party Input Method Editor (IME) applications.
-
 If device implementations include support for third-party
 Input Method Editor (IME) applications, they:
 
@@ -34,10 +29,6 @@
 Android includes support for d-pad, trackball, and wheel as mechanisms for
 non-touch navigation.
 
-Television device implementations:
-
-*    [T-0-1] MUST support [D-pad](https://developer.android.com/reference/android/content/res/Configuration.html#NAVIGATION_DPAD).
-
 Device implementations:
 
 *   [C-0-1] MUST report the correct value for
@@ -61,25 +52,6 @@
 or a distinct portion of the touch screen, are essential to the Android
 navigation paradigm and therefore:
 
-*   [H-0-1] Android Handheld device implementations MUST provide the Home,
-    Recents, and Back functions.
-*   [H-0-2] Android Handheld device implementations MUST send both the normal
-    and long press event of the the Back function ([`KEYCODE_BACK`](http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK))
-    to the foreground application.
-*   [T-0-1] Android Television device implementations MUST provide the Home
-    and Back functions.
-*   [T-0-2] Android Television device implementations MUST send both the normal
-    and long press event of the the Back function ([`KEYCODE_BACK`](http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK))
-    to the foreground application.
-*   [W-0-1] Android Watch device implementations MUST have the Home function
-    available to the user, and the Back function except for when it is in
-    `UI_MODE_TYPE_WATCH`.
-*   [A-0-1] Automotive device implementations MUST provide the Home function
-    and MAY provide Back and Recent functions.
-*   [A-0-2] Automotive device implementations MUST send both the normal
-    and long press event of the the Back function ([`KEYCODE_BACK`](http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK))
-    to the foreground application.
-
 *   [C-0-1] MUST provide the Home function.
 *   SHOULD provide buttons for the Recents and Back function.
 
@@ -145,9 +117,6 @@
 the system does not require any additional affordances to indicate the objects
 being manipulated.
 
-*    [H-0-1] Handheld device implementations MUST support touchscreen input.
-*    [W-0-2] Watch device implementations MUST support touchscreen input.
-
 Device implementations:
 
 *    SHOULD have a pointer input system of some kind
@@ -236,10 +205,6 @@
 
 #### 7.2.6.1\. Button Mappings
 
-Television device implementations:
-*    [T-0-1] MUST include support for game controllers and declare the
-`android.hardware.gamepad` feature flag.
-
 If device implementations declare the `android.hardware.gamepad` feature flag,
 they:
 *    [C-1-1] MUST have embed a controller or ship with a separate controller
@@ -381,8 +346,5 @@
 
 ### 7.2.7\. Remote Control
 
-Television device implementations:
+See [Section 2.3.1](#2_3_1_hardware) for device-specific requirements.
 
-*    SHOULD provide a remote control from which users can access
-[non-touch navigation](#7_2_2_non-touch_navigation) and
-[core navigation keys](#7_2_3_navigation_keys) inputs.
\ No newline at end of file
diff --git a/7_hardware-compatibility/7_3_sensors.md b/7_hardware-compatibility/7_3_sensors.md
index 2090341..7e43ea1 100644
--- a/7_hardware-compatibility/7_3_sensors.md
+++ b/7_hardware-compatibility/7_3_sensors.md
@@ -82,25 +82,6 @@
 ### 7.3.1\. Accelerometer
 
 *   Device implementations SHOULD include a 3-axis accelerometer.
-*   [H-SR] Handheld device implementations are STRONGLY RECOMMENDED to
-    include a 3-axis accelerometer.
-*   [A-SR] Automotive device implementations are STRONGLY RECOMMENDED to
-    include a 3-axis accelerometer.
-*   [W-SR] Watch device implementations are STRONGLY RECOMMENDED to
-    include a 3-axis accelerometer.
-
-
-
-If Handheld device implementations include a 3-axis accelerometer, they:
-
-*   [H-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
-
-If Automotive device implementations include a 3-axis accelerometer, they:
-
-*   [A-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
-*   [A-1-2] MUST comply with the Android
-    [car sensor coordinate system](
-    http://source.android.com/devices/sensors/sensor-types.html#auto_axes).
 
 If device implementations include a 3-axis accelerometer, they:
 
@@ -253,12 +234,6 @@
 additional mandatory requirements for devices reporting the year "2016" or
 "2017" through the Test API `LocationManager.getGnssYearOfHardware()`.
 
-If Automotive device implementations include a GPS/GNSS receiver and report
-the capability to applications through the `android.hardware.location.gps`
-feature flag:
-
-*   [A-1-1] GNSS technology generation MUST be the year "2017" or newer.
-
 If device implementations include a GPS/GNSS receiver and report the capability
 to applications through the `android.hardware.location.gps` feature flag and the
 `LocationManager.getGnssYearOfHardware()` Test API reports the year "2016" or
@@ -318,19 +293,6 @@
 when device is stationary at room temperature.
 *   SHOULD report events up to at least 200 Hz.
 
-If Handheld device implementations include a gyroscope, they:
-
-*   [H-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
-
-If Automotive device implementations include a gyroscope, they:
-
-*   [A-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
-
-If Television device implementations include a gyroscope, they:
-
-*   [T-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
-
-
 If device implementations include a gyroscope, an accelerometer sensor and a
 magnetometer sensor, they:
 
@@ -385,9 +347,6 @@
 ### 7.3.8\. Proximity Sensor
 
 *   Device implementations MAY include a proximity sensor.
-*   Handheld device implementations that can make a voice call and indicate
-any value other than `PHONE_TYPE_NONE` in `getPhoneType`
-SHOULD include a proximity sensor.
 
 If device implementations include a proximity sensor, they:
 
@@ -583,40 +542,22 @@
 Automotive-specific sensors are defined in the
 `android.car.CarSensorManager API`.
 
-
 #### 7.3.11.1\. Current Gear
 
-*    Android Automotive implementations SHOULD provide current gear as
-`SENSOR_TYPE_GEAR`.
+See [Section 2.5.1](#2_5_1_hardware) for device-specific requirements.
 
 #### 7.3.11.2\. Day Night Mode
 
-Automotive device implementations:
-
-*    [A-0-1] MUST support day/night mode
-defined as `SENSOR_TYPE_NIGHT`.
-*    [A-0-2] The value of the `SENSOR_TYPE_NIGHT` flag MUST be consistent with
-dashboard day/night mode and SHOULD be based on ambient light sensor input.
-
-*    The underlying ambient light sensor MAY be the same as
-[Photometer](#7_3_7_photometer).
+See [Section 2.5.1](#2_5_1_hardware) for device-specific requirements.
 
 #### 7.3.11.3\. Driving Status
 
-Automotive device implementations:
-
-*    [A-0-1] MUST support driving status
-defined as `SENSOR_TYPE_DRIVING_STATUS`, with a default value of
-`DRIVE_STATUS_UNRESTRICTED` when the vehicle is fully stopped and parked. It is
-the responsibility of device manufacturers to configure
-`SENSOR_TYPE_DRIVING_STATUS` in compliance with all
-laws and regulations that apply to markets where the product is shipping.
+See [Section 2.5.1](#2_5_1_hardware) for device-specific requirements.
 
 #### 7.3.11.4\. Wheel Speed
 
-Automotive device implementations:
+See [Section 2.5.1](#2_5_1_hardware) for device-specific requirements.
 
-*    [A-0-1] MUST provide vehicle speed defined as `SENSOR_TYPE_CAR_SPEED`.
 
 ## 7.3.12\. Pose Sensor
 
@@ -624,10 +565,6 @@
 
 *   MAY support pose sensor with 6 degrees of freedom.
 
-Handheld device implementations are:
-
-*   RECOMMENDED to support this sensor.
-
 If device implementations support pose sensor with 6 degrees of freedom, they:
 
 *   [C-1-1] MUST implement and report [`TYPE_POSE_6DOF`](
diff --git a/7_hardware-compatibility/7_4_data-connectivity.md b/7_hardware-compatibility/7_4_data-connectivity.md
index b8869d0..9cd6ae4 100644
--- a/7_hardware-compatibility/7_4_data-connectivity.md
+++ b/7_hardware-compatibility/7_4_data-connectivity.md
@@ -162,10 +162,6 @@
 
 ### 7.4.3\. Bluetooth
 
-*    [W-0-1] Watch device implementations MUST support Bluetooth.
-*    [T-0-1] Television device implementations MUST support Bluetooth and
-Bluetooth LE.
-
 If device implementations support Bluetooth Audio profile, they:
 
 *    SHOULD support Advanced Audio Codecs and Bluetooth Audio Codecs
@@ -188,17 +184,6 @@
 *    SHOULD implement relevant Bluetooth profiles such as
      A2DP, AVCP, OBEX, etc. as appropriate for the device.
 
-Automotive device implementations:
-*    [A-0-1] Automotive device implementations MUST support Bluetooth and
-SHOULD support Bluetooth LE.
-*    [A-0-2] Android Automotive implementations MUST support the following
-Bluetooth profiles:
-
-     * Phone calling over Hands-Free Profile (HFP).
-     * Media playback over Audio Distribution Profile (A2DP).
-     * Media playback control over Remote Control Profile (AVRCP).
-     * Contact sharing using the Phone Book Access Profile (PBAP).
-*    SHOULD support Message Access Profile (MAP).
 
 If device implementations include support for Bluetooth Low Energy, they:
 
@@ -413,10 +398,6 @@
 
 *   [SR] STRONGLY RECOMMENDED to provide the data saver mode.
 
-If Handheld device implementations include a metered connection, they:
-
-*   [H-1-1] MUST provide the data saver mode.
-
 If device implementations provide the data saver mode, they:
 
 *   [C-1-1] MUST support all the APIs in the `ConnectivityManager`
diff --git a/7_hardware-compatibility/7_6_memory-and-storage.md b/7_hardware-compatibility/7_6_memory-and-storage.md
index 674da7f..c4f8fab 100644
--- a/7_hardware-compatibility/7_6_memory-and-storage.md
+++ b/7_hardware-compatibility/7_6_memory-and-storage.md
@@ -10,97 +10,6 @@
     downloading individual files of at least 100MB in size to the default
     “cache” location.
 
-Television device implementations:
-
-*   [T-0-1] MUST have at least 4GB of non-volatile storage available for
-    application private data (a.k.a. "/data" partition)
-
-Automotive device implementations:
-
-*   [A-0-1] MUST have at least 4GB of non-volatile storage available for
-    application private data (a.k.a. "/data" partition)
-
-Watch device implementations:
-
-*   [W-0-1] MUST have at least 1GB of non-volatile storage available for
-    application private data (a.k.a. "/data" partition)
-*   [W-0-2] MUST have at least 416MB memory available to the kernel and
-    userspace.
-
-Handheld device implementations:
-
-*   [H-0-1] MUST have at least 4GB of non-volatile storage available for
-    application private data (a.k.a. "/data" partition)
-*   [H-0-2] MUST return “true” for `ActivityManager.isLowRamDevice()` when there
-    is less than 1GB of memory available to the kernel and userspace.
-
-
-If Handheld device implementations are 32-bit:
-
-*   [H-1-1] The memory available to the kernel and userspace MUST
-be at least: 512MB if any of the following densities are used:
-
-   *   280dpi or lower on small/normal screens
-   *   ldpi or lower on extra large screens
-   *   mdpi or lower on large screens
-
-*   [H-2-1] The memory available to the kernel and userspace MUST
-be at least: 608MB if any of the following densities are used:
-
-   *   xhdpi or higher on small/normal screens
-   *   hdpi or higher on large screens
-   *   mdpi or higher on extra large screens
-
-*   [H-3-1] The memory available to the kernel and userspace MUST
-be at least: 896MB if any of the following densities are used:
-
-   *   400dpi or higher on small/normal screens
-   *   xhdpi or higher on large screens
-   *   tvdpi or higher on extra large screens
-
-*    [H-4-1] The memory available to the kernel and userspace MUST
-be at least: 1344MB if any of the following densities are used:
-
-   *   560dpi or higher on small/normal screens
-   *   400dpi or higher on large screens
-   *   xhdpi or higher on extra large screens
-
-If Handheld device implementations are 64-bit:
-
-*   [H-5-1] The memory available to the kernel and userspace MUST
-be at least: 816MB if any of the following densities are used:
-
-   *   280dpi or lower on small/normal screens
-   *   ldpi or lower on extra large screens
-   *   mdpi or lower on large screens
-
-
-*   [H-6-1] The memory available to the kernel and userspace MUST
-be at least: 944MB if any of the following densities are used:
-
-   *   xhdpi or higher on small/normal screens
-   *   hdpi or higher on large screens
-   *   mdpi or higher on extra large screens
-
-*   [H-7-1] The memory available to the kernel and userspace MUST
-be at least: 1280MB if any of the following densities are used:
-
-   *  400dpi or higher on small/normal screens
-   *  xhdpi or higher on large screens
-   *  tvdpi or higher on extra large screens
-
-*    [H-8-1] The memory available to the kernel and userspace MUST
-be at least: 1824MB if any of the following densities are used:
-
-   *   560dpi or higher on small/normal screens
-   *   400dpi or higher on large screens
-   *   xhdpi or higher on extra large screens
-
-Note that the "memory available to the kernel and userspace" above refers to the
-memory space provided in addition to any memory already dedicated to hardware
-components such as radio, video, and so on that are not under the kernel’s
-control on device implementations.
-
 ### 7.6.2\. Application Shared Storage
 
 Device implementations:
@@ -119,10 +28,6 @@
     permission on this shared storage as documented in the SDK. Shared storage
     MUST otherwise be writable by any application that obtains that permission.
 
-Android handheld device implementations:
-
-*   [H-0-1] MUST NOT provide an application shared storage smaller than 1GiB.
-
 Device implementations MAY meet the above requirements using either:
 
 * a user-accessible removable storage, such as a Secure Digital (SD) card slot.
diff --git a/7_hardware-compatibility/7_7_usb.md b/7_hardware-compatibility/7_7_usb.md
index 0d4965c..77f3b82 100644
--- a/7_hardware-compatibility/7_7_usb.md
+++ b/7_hardware-compatibility/7_7_usb.md
@@ -6,11 +6,6 @@
 
 ### 7.7.1\. USB peripheral mode
 
-If handheld device implementations include a USB port supporting peripheral
-mode, they:
-
-*    [H-1-1] MUST implement the Android Open Accessory (AOA) API.
-
 If device implementations include a USB port supporting peripheral mode:
 
 *    [C-1-1] The port MUST be connectable to a USB host that has a standard
@@ -68,12 +63,12 @@
 [`android.hardware.usb.host`](http://developer.android.com/guide/topics/connectivity/usb/host.html).
 *   [C-1-2] MUST implement support to connect standard USB peripherals,
 in other words, they MUST either:
-   *   Have an on-device type C port or ship with cable(s) adapting an on-device
-   proprietary port to a standard USB type-C port (USB Type-C device).
-   *   Have an on-device type A or ship with cable(s) adapting an on-device
-   proprietary port to a standard USB type-A port.
-   *   Have an on-device micro-AB port, which SHOULD ship with a cable adapting
-   to a standard type-A port.
+     *   Have an on-device type C port or ship with cable(s) adapting an on-device
+     proprietary port to a standard USB type-C port (USB Type-C device).
+     *   Have an on-device type A or ship with cable(s) adapting an on-device
+     proprietary port to a standard USB type-A port.
+     *   Have an on-device micro-AB port, which SHOULD ship with a cable adapting
+     to a standard type-A port.
 *   [C-1-3] MUST NOT ship with an adapter converting from USB type A or
 micro-AB ports to a type-C port (receptacle).
 *   [SR] STRONGLY RECOMMENDED to implement the [USB audio class](
@@ -99,10 +94,10 @@
 and the [Voice Command Usage Request](http://www.usb.org/developers/hidpage/Voice_Command_Usage.pdf)
 to the [`KeyEvent`](https://developer.android.com/reference/android/view/KeyEvent.html)
 constants as below:
-        *   Usage Page (0xC) Usage ID (0x0CD): `KEYCODE_MEDIA_PLAY_PAUSE`
-        *   Usage Page (0xC) Usage ID (0x0E9): `KEYCODE_VOLUME_UP`
-        *   Usage Page (0xC) Usage ID (0x0EA): `KEYCODE_VOLUME_DOWN`
-        *   Usage Page (0xC) Usage ID (0x0CF): `KEYCODE_VOICE_ASSIST`
+       *   Usage Page (0xC) Usage ID (0x0CD): `KEYCODE_MEDIA_PLAY_PAUSE`
+       *   Usage Page (0xC) Usage ID (0x0E9): `KEYCODE_VOLUME_UP`
+       *   Usage Page (0xC) Usage ID (0x0EA): `KEYCODE_VOLUME_DOWN`
+       *   Usage Page (0xC) Usage ID (0x0CF): `KEYCODE_VOICE_ASSIST`
 
 
 If device implementations include a USB port supporting host mode and
@@ -126,4 +121,4 @@
 http://www.usb.org/developers/docs/).
 *   SHOULD implement the Try.\* model that is most appropriate for the
 device form factor. For example a handheld device SHOULD implement the
-Try.SNK model.
\ No newline at end of file
+Try.SNK model.
diff --git a/7_hardware-compatibility/7_8_audio.md b/7_hardware-compatibility/7_8_audio.md
index 0279da4..32288e3 100644
--- a/7_hardware-compatibility/7_8_audio.md
+++ b/7_hardware-compatibility/7_8_audio.md
@@ -2,11 +2,6 @@
 
 ### 7.8.1\. Microphone
 
-
-*    [H-0-1] Handheld device implementations MUST include a microphone.
-*    [W-0-1] Watch device implementations MUST include a microphone.
-*    [A-0-1] Automotive device implementations MUST include a microphone.
-
 If device implementations include a microphone, they:
 
 *   [C-1-1] MUST report the `android.hardware.microphone` feature constant.
@@ -44,13 +39,6 @@
 *   [C-2-1] MUST NOT report the `android.hardware.audio output` feature.
 *   [C-2-2] MUST implement the Audio Output related APIs as no-ops at least.
 
-*   [H-0-1] Handheld device implementations MUST have an audio output and
-declare `android.hardware.audio.output`.
-*   [T-0-1] Television device implementations MUST have an audio output and
-declare `android.hardware.audio.output`.
-*   [A-0-1] Automotive device implementations MUST have an audio output and
-declare `android.hardware.audio.output`.
-*   Watch device implementations MAY but SHOULD NOT have audio output.
 
 For the purposes of this section, an "output port" is a
 [physical interface](https://en.wikipedia.org/wiki/Computer_port_%28hardware%29)
diff --git a/7_hardware-compatibility/7_9_virtual-reality.md b/7_hardware-compatibility/7_9_virtual-reality.md
index e9f9257..393058c 100644
--- a/7_hardware-compatibility/7_9_virtual-reality.md
+++ b/7_hardware-compatibility/7_9_virtual-reality.md
@@ -12,26 +12,8 @@
 a feature which handles stereoscopic rendering of notifications and disables
 monocular system UI components while a VR application has user focus.
 
-If Handheld device implementations include support for the VR mode, they:
-
-*   [H-1-1] MUST declare the `android.software.vr.mode` feature.
-
-If device implementations declare `android.software.vr.mode` feature, they:
-
-*   [H-2-1] MUST include an application implementing
-`android.service.vr.VrListenerService`
-that can be enabled by VR applications via
-`android.app.Activity#setVrModeEnabled`.
-
 ### 7.9.2\. Virtual Reality High Performance
 
-
-If Handheld device implementations are capable of meeting all the requirements
-to declare the `android.hardware.vr.high_performance` feature flag, they:
-
-*   [H-1-1] MUST declare the `android.hardware.vr.high_performance`
-feature flag.
-
 If device implementations identify the support of high performance VR
 for longer user periods through the `android.hardware.vr.high_performance`
 feature flag, they:
diff --git a/8_performance-and-power/8_1_user-experience-consistency.md b/8_performance-and-power/8_1_user-experience-consistency.md
index 9728f44..85f8a14 100644
--- a/8_performance-and-power/8_1_user-experience-consistency.md
+++ b/8_performance-and-power/8_1_user-experience-consistency.md
@@ -6,15 +6,3 @@
 MAY have measurable requirements for the user interface latency and task
 switching as described in [section 2](#2_device-types).
 
-   *   [H-0-1] **Consistent frame latency**. Inconsistent frame latency or a
-delay to render frames MUST NOT happen more often than 5 frames in a second,
-and SHOULD be below 1 frames in a second.
-   *   [H-0-2] **User interface latency**. Device implementations MUST ensure
-low latency user experience by scrolling a list of 10K list entries as defined
-by the Android Compatibility Test Suite (CTS) in less than 36 secs.
-   *   [H-0-3] **Task switching**. When multiple applications have been
-launched, re-launching an already-running application after it has been
-launched MUST take less than 1 second.
-   *   [T-0-1] **Consistent frame latency**. Inconsistent frame latency or a
-delay to render frames MUST NOT happen more often than 5 frames in a second,
-and SHOULD be below 1 frames in a second.
diff --git a/8_performance-and-power/8_2_file-io-access-performance.md b/8_performance-and-power/8_2_file-io-access-performance.md
index 7508aff..c667ec5 100644
--- a/8_performance-and-power/8_2_file-io-access-performance.md
+++ b/8_performance-and-power/8_2_file-io-access-performance.md
@@ -7,7 +7,6 @@
 described in [section 2](#2_device-type) for the following read
 and write operations:
 
-
 *    **Sequential write performance**. Measured by writing a 256MB file using
 10MB write buffer.
 *    **Random write performance**. Measured by writing a 256MB file using 4KB
@@ -17,16 +16,3 @@
 *    **Random read performance**. Measured by reading a 256MB file using 4KB
 write buffer.
 
-Handheld device implementations:
-
-   *   [H-0-1] MUST ensure a sequential write performance of at least 5MB/s.
-   *   [H-0-2] MUST ensure a random write performance of at least 0.5MB/s.
-   *   [H-0-3] MUST ensure a sequential read performance of at least 15MB/s.
-   *   [H-0-4] MUST ensure a random read performance of at least 3.5MB/s.
-
-Television device implementations:
-
-   *   [T-0-1] MUST ensure a sequential write performance of at least 5MB/s.
-   *   [T-0-2] MUST ensure a random write performance of at least 0.5MB/s.
-   *   [T-0-3] MUST ensure a sequential read performance of at least 15MB/s.
-   *   [T-0-4] MUST ensure a random read performance of at least 3.5MB/s.
\ No newline at end of file
diff --git a/8_performance-and-power/8_3_power-saving-modes.md b/8_performance-and-power/8_3_power-saving-modes.md
index a6a5bf3..6268303 100644
--- a/8_performance-and-power/8_3_power-saving-modes.md
+++ b/8_performance-and-power/8_3_power-saving-modes.md
@@ -2,25 +2,6 @@
 
 Android includes App Standby and Doze power-saving modes to optimize battery
 usage.
-
-*   [H-0-1] All Apps exempted from App Standby and Doze power-saving modes
-MUST be made visible to the end user.
-*   [H-0-2] The triggering, maintenance, wakeup algorithms and the use of
-global system settings of App Standby and Doze power-saving modes MUST not
-deviate from the Android Open Source Project.
-
-*   [T-0-1] All Apps exempted from App Standby and Doze power-saving modes
-MUST be made visible to the end user.
-*   [T-0-2] The triggering, maintenance, wakeup algorithms and the use of
-global system settings of App Standby and Doze power-saving modes MUST not
-deviate from the Android Open Source Project.
-
-*   [A-0-1] All Apps exempted from App Standby and Doze power-saving modes
-MUST be made visible to the end user.
-*   [A-0-2] The triggering, maintenance, wakeup algorithms and the use of
-global system settings of App Standby and Doze power-saving modes MUST not
-deviate from the Android Open Source Project.
-
 *   [SR] All Apps exempted from these modes are STRONGLY RECOMMENDED to be made
 visible to the end user.
 *   [SR] The triggering, maintenance, wakeup algorithms and the use of
diff --git a/8_performance-and-power/8_4_power-consumption-accounting.md b/8_performance-and-power/8_4_power-consumption-accounting.md
index 0628b10..0e688fe 100644
--- a/8_performance-and-power/8_4_power-consumption-accounting.md
+++ b/8_performance-and-power/8_4_power-consumption-accounting.md
@@ -4,62 +4,6 @@
 app developer both the incentives and the tools to optimize the power usage
 pattern of the application.
 
-Handheld device implementations:
-
-*    [H-0-1] MUST provide a per-component power profile that defines the
-[current consumption value](
-http://source.android.com/devices/tech/power/values.html)
-for each hardware component and the approximate battery drain caused by the
-components over time as documented in the Android Open Source Project site.
-*    [H-0-2] MUST report all power consumption values in milliampere
-hours (mAh).
-*    [H-0-3] MUST report CPU power consumption per each process's UID.
-The Android Open Source Project meets the requirement through the
-`uid_cputime` kernel module implementation.
-*    SHOULD be attributed to the hardware component itself if unable to
-attribute hardware component power usage to an application.
-*   [H-0-4] MUST make this power usage available via the
-[`adb shell dumpsys batterystats`](
-http://source.android.com/devices/tech/power/batterystats.html)
-shell command to the app developer.
-
-Television device implementations:
-
-*    [T-0-1] MUST provide a per-component power profile that defines the
-[current consumption value](
-http://source.android.com/devices/tech/power/values.html)
-for each hardware component and the approximate battery drain caused by the
-components over time as documented in the Android Open Source Project site.
-*    [T-0-2] MUST report all power consumption values in milliampere
-hours (mAh).
-*    [T-0-3] MUST report CPU power consumption per each process's UID.
-The Android Open Source Project meets the requirement through the
-`uid_cputime` kernel module implementation.
-*    SHOULD be attributed to the hardware component itself if unable to
-attribute hardware component power usage to an application.
-*   [T-0-4] MUST make this power usage available via the
-[`adb shell dumpsys batterystats`](
-http://source.android.com/devices/tech/power/batterystats.html)
-shell command to the app developer.
-
-Automotive device implementations:
-
-*    [A-0-1] MUST provide a per-component power profile that defines the
-[current consumption value](
-http://source.android.com/devices/tech/power/values.html)
-for each hardware component and the approximate battery drain caused by the
-components over time as documented in the Android Open Source Project site.
-*    [A-0-2] MUST report all power consumption values in milliampere
-hours (mAh).
-*    [A-0-3] MUST report CPU power consumption per each process's UID.
-The Android Open Source Project meets the requirement through the
-`uid_cputime` kernel module implementation.
-*    SHOULD be attributed to the hardware component itself if unable to
-attribute hardware component power usage to an application.
-*   [A-0-4] MUST make this power usage available via the
-[`adb shell dumpsys batterystats`](
-http://source.android.com/devices/tech/power/batterystats.html)
-shell command to the app developer.
 
 Device implementations:
 
@@ -81,9 +25,4 @@
 attribute hardware component power usage to an application.
 
 
-If Handheld device implementations include a screen or video output, they:
-
-*   [H-1-1] MUST honor the [`android.intent.action.POWER_USAGE_SUMMARY`](
-http://developer.android.com/reference/android/content/Intent.html#ACTION_POWER_USAGE_SUMMARY)
-intent and display a settings menu that shows this power usage.
 
diff --git a/9_security-model/9_14_automotive-system-isolation.md b/9_security-model/9_14_automotive-system-isolation.md
index a1d5276..046ebd4 100644
--- a/9_security-model/9_14_automotive-system-isolation.md
+++ b/9_security-model/9_14_automotive-system-isolation.md
@@ -6,11 +6,5 @@
 
 The data exchange can be secured by implementing security features below the
 Android framework layers to prevent malicious or unintentional interaction with
-these subsystems. Automotive device implementations:
+these subsystems.
 
-*    [A-0-1] MUST gatekeep messages from Android framework vehicle subsystems,
-e.g., whitelisting permitted message types and message sources.
-*    [A-0-2] MUST watchdog against denial of service attacks from the Android
-framework or third-party apps. This guards against malicious software flooding
-the vehicle network with traffic, which may lead to malfunctioning vehicle
-subsystems.
\ No newline at end of file
diff --git a/9_security-model/9_1_permissions.md b/9_security-model/9_1_permissions.md
index 5fed443..0e8e5bb 100644
--- a/9_security-model/9_1_permissions.md
+++ b/9_security-model/9_1_permissions.md
@@ -38,14 +38,6 @@
    *   the runtime permissions are associated with an intent pattern
        for which the preinstalled application is set as the default handler
 
-Handheld device implementations:
-
-*   [H-0-1] MUST allow third-party apps to access the usage statistics via the
-    `android.permission.PACKAGE_USAGE_STATS` permission and provide a
-    user-accessible mechanism to grant or revoke access to such apps in response
-    to the [`android.settings.ACTION_USAGE_ACCESS_SETTINGS`](
-    https://developer.android.com/reference/android/provider/Settings.html#ACTION&lowbar;USAGE&lowbar;ACCESS&lowbar;SETTINGS)
-    intent.
 
 If device implementations include a pre-installed app or wish to allow
 third-party apps to access the usage statistics, they:
@@ -64,4 +56,4 @@
     [`android.settings.ACTION_USAGE_ACCESS_SETTINGS`](
     https://developer.android.com/reference/android/provider/Settings.html#ACTION&lowbar;USAGE&lowbar;ACCESS&lowbar;SETTINGS)
     intent pattern but MUST implement it as a no-op, that is to have an
-    equivalent behavior as when the user is declined for access.
\ No newline at end of file
+    equivalent behavior as when the user is declined for access.
diff --git a/9_security-model/9_5_multi-user-support.md b/9_security-model/9_5_multi-user-support.md
index 4f201e5..d266b0c 100644
--- a/9_security-model/9_5_multi-user-support.md
+++ b/9_security-model/9_5_multi-user-support.md
@@ -9,11 +9,6 @@
 http://developer.android.com/reference/android/os/Environment.html)
 for primary external storage.
 
-If Automotive device implementations include multiple users, they:
-
-*   [A-1-1] MUST include a guest account that allows all functions provided
-by the vehicle system without requiring a user to log in.
-
 If device implementations include multiple users, they:
 
 *   [C-1-1] MUST meet the following requirements related to
